using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Mini.Model.Entity; using Mini.Model; using Mini.Common; using Air.Model.AirAdminViewModel; namespace Mini.Services.Bas { public class BasInnerUserRoleService : IBasInnerUserRoleService { private readonly IAdminRepository _basInnerUserRepository; private readonly IAdminRepository _basInnerUserRoleRepository; private readonly IAdminRepository _basRoleRepository; public BasInnerUserRoleService(IAdminRepository basInnerUserRoleRepository, IAdminRepository basInnerUserRepository, IAdminRepository basRoleRepository) { this._basInnerUserRoleRepository = basInnerUserRoleRepository; this._basInnerUserRepository = basInnerUserRepository; this._basRoleRepository = basRoleRepository; } public BasInnerUserRoleService() { //this._basInnerUserRoleRepository = new EfAdminRepository(); //this._basInnerUserRepository = basInnerUserRepository; //this._basRoleRepository = basRoleRepository; } public IList GetBasInnerUserRoleByUserId(int userId) { if (userId == 0) return null; return _basInnerUserRoleRepository.GetList(p => p.InnerUserId == userId).ToList(); } public IList GetList(ref Pager pager, int? eId, string uName, string roleId) { var queryData = _basInnerUserRepository.Table; if (eId.HasValue) { queryData = queryData.Where(m => m.eid == eId.Value); } if (!string.IsNullOrWhiteSpace(uName)) { queryData = queryData.Where(m => m.uname.Contains(uName)); } if (!string.IsNullOrWhiteSpace(roleId) && roleId != "0") { string[] roleIdStr = roleId.Split(','); int[] roleIds = new int[roleIdStr.Length]; for (int i = 0; i < roleIdStr.Length; i++) { roleIds[i] = Convert.ToInt32(roleIdStr[i]); } queryData = queryData.Where(m => (from a in _basInnerUserRoleRepository.Table where roleIds.Contains(a.RoleId) select a.InnerUserId).Contains(m.uid)); } queryData = queryData.OrderBy(m => m.uid); PagerUtil.SetPager(ref queryData, ref pager);//分页 var list = (from a in queryData select new Bas_InnerUserRoleModel { Eid = a.eid, Uid = a.uid, UName = a.uname, RoleIds = string.Empty, RolesNames = string.Empty }).ToList(); var roleList = _basRoleRepository.Table.ToList(); foreach (var item in list) { var uid = item.Uid; var roleids = (from a in _basInnerUserRoleRepository.Table where a.InnerUserId.Equals(uid) select a.RoleId).ToList(); foreach (var role in roleList.Where(m => roleids.Contains(m.RoleId)))//赋值 { item.RoleIds += role.RoleId + ","; item.RolesNames += "[" + role.RName + "] "; } if (item.RoleIds != null && item.RoleIds.Length > 0) item.RoleIds = item.RoleIds.Substring(0, item.RoleIds.Length - 1); } return list; } public void Save(int user, string roleIds, string pkids) { string[] roleIdStr = roleIds.Split(','); string[] pkIdStr = pkids.Split(','); int[] roleIdArry = new int[roleIdStr.Length]; int[] pkIdArry = new int[pkIdStr.Length]; for (int i = 0; i < pkIdStr.Length; i++) { if (pkIdStr[i] == "" || pkIdStr[i] == "0") continue; pkIdArry[i] = Convert.ToInt32(pkIdStr[i]); int pkid = pkIdArry[i]; for (int n = 0; n < roleIdStr.Length; n++) { if (roleIdStr[n] == "" || roleIdStr[n] == "0") continue; roleIdArry[n] = Convert.ToInt32(roleIdStr[n]); int roleid = roleIdArry[n]; var entry = _basInnerUserRoleRepository.Get(m => m.RoleId.Equals(roleid) && m.InnerUserId.Equals(pkid)); if (entry == null) { var model = new Bas_InnerUserRole(); model.RoleId = roleIdArry[n]; model.InnerUserId = pkIdArry[i]; model.CTime = DateTime.Now; model.CreateUser = user; _basInnerUserRoleRepository.Add(model); } } } //删除 取消的数据 foreach (var entry in (from a in _basInnerUserRoleRepository.GetList() where pkIdArry.Contains(a.InnerUserId) where !roleIdArry.Contains(a.RoleId) select a ).ToList()) { _basInnerUserRoleRepository.Delete(entry); }; } } }