using System; using System.Collections.Generic; using System.Text; using System.Linq; using Txgy.EWS.Server.ICommon; using Txgy.EWS.Server.IService; using Txgy.EWS.Server.Models; using Microsoft.EntityFrameworkCore; namespace Txgy.EWS.Server.Service { public class RoleService : BaseService, IRoleService { public RoleService(IDbConnectionFactory contextFactor) : base(contextFactor) { } public List GetAllUsers(int roleId) { var ids = (from ur in Context.Set() where ur.RoleId == roleId select ur.UserId).ToList(); return (from user in Context.Set() where ids.Contains(user.UserId) select user).ToList(); } public List GetRolesByUserId(int userId) { var roles = (from ur in Context.Set() where ur.UserId == userId select ur.RoleId).ToList(); return (from role in Context.Set() where roles.Contains(role.RoleId) select role).ToList(); } public void Save(string role, string users, string menus) { var value = Newtonsoft.Json.JsonConvert.DeserializeObject(role); var userids = Newtonsoft.Json.JsonConvert.DeserializeObject>(users); var menuids = Newtonsoft.Json.JsonConvert.DeserializeObject>(menus); Context.Entry(value).State = value.RoleId == 0 ? EntityState.Added : EntityState.Modified; if (value.RoleId > 0) { Context.Entry(value).State = EntityState.Modified; // 更新UserRole if (userids != null) { var urs = Context.Set().Where(u => u.RoleId == value.RoleId).ToList(); urs.ForEach(u => Context.Set().Remove(u)); userids.ForEach(u => Context.Set().Add(new UserRole { UserId = u, RoleId = value.RoleId })); } // 更新RoleMenu if (menuids != null) { var ms = Context.Set().Where(u => u.RoleId == value.RoleId).ToList(); ms.ForEach(m => Context.Set().Remove(m)); menuids.ForEach(m => Context.Set().Add(new RoleMenu { MenuId = m, RoleId = value.RoleId })); } } Context.SaveChanges(); } } }