using CRM.Core.Model.Entity; using System; using System.Collections.Generic; using System.Linq; using WX.CRM.Common; namespace CRM.Core.BLL.Base { public class BAS_INNERUSERROLE_BL { #region 用户角色列表信息 public List GetList(string eId, string uName, string roleId) { using (var db = new zxdContext()) { var queryData = db.BAS_INNERUSER.AsQueryable();// if (!string.IsNullOrWhiteSpace(eId)) { decimal ieId = Convert.ToInt32(eId); queryData = queryData.Where(m => m.EID.Equals(ieId)); } if (!string.IsNullOrWhiteSpace(uName)) { queryData = queryData.Where(m => m.UNAME.Contains(uName)); } if (!string.IsNullOrWhiteSpace(roleId) && roleId != "0") { string[] roleIdStr = roleId.Split(','); decimal[] roleIds = new decimal[roleIdStr.Length]; for (int i = 0; i < roleIdStr.Length; i++) { roleIds[i] = Convert.ToDecimal(roleIdStr[i]); } queryData = queryData.Where(m => (from a in db.BAS_INNERUSERROLE where roleIds.Contains(a.ROLEID) select a.INNERUSERID).Contains(m.PKID)); } queryData = queryData.OrderByDescending(m => m.CTIME); List list = (from a in queryData select new BAS_INNERUSERROLE_Extend() { EID = a.EID, PKID = a.PKID, UNAME = a.UNAME, ROLEIDS = "", ROLESNAMES = "" }).ToList(); var roleList = db.BAS_ROLE.ToList(); foreach (var item in list) { decimal pkid = item.PKID; var roleids = (from a in db.BAS_INNERUSERROLE where a.INNERUSERID.Equals(pkid) 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; } } #endregion /// /// 保存员工角色 /// /// 当前操作人员 /// 角色的ID集合(","隔开) /// 员工ID集合(","隔开) /// /// /// 保存员工角色 /// /// 当前操作人员 /// 角色的ID集合(","隔开) /// 员工eID集合(","隔开) /// public bool Save(ref ValidationErrors errors, int user, string roleIds, string eids) { try { using (var db = new zxdContext()) { string[] roleIdStr = roleIds.Split(','); string[] pkIdStr = eids.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 = db.BAS_INNERUSERROLE.FirstOrDefault(m => m.ROLEID == roleid && m.INNERUSERID.Equals(pkid)); if (entry == null) { BAS_INNERUSERROLE model = new BAS_INNERUSERROLE(); model.ROLEID = roleIdArry[n]; model.INNERUSERID = pkIdArry[i]; model.CTIME = DateTime.Now; model.CREATEUSER = user; db.BAS_INNERUSERROLE.Add(model); } } } //删除 取消的数据 foreach (BAS_INNERUSERROLE entry in (from a in db.BAS_INNERUSERROLE where pkIdArry.Contains(a.INNERUSERID) where !roleIdArry.Contains(a.ROLEID) select a )) { db.BAS_INNERUSERROLE.Remove(entry); }; db.SaveChanges(); return true; } } catch (Exception ex) { errors.Add(ex.Message); return false; } } public List GetInneruserRoleByUserId(int userId) { using (var db = new zxdContext()) { return db.BAS_INNERUSERROLE.Where(p => p.INNERUSERID.Equals(userId)).ToList(); } } } public class BAS_INNERUSERROLE_Extend { /// /// 员工ID /// public decimal PKID { get; set; } /// /// 员工工号 /// public decimal EID { get; set; } /// /// 员工名称 /// public string UNAME { get; set; } /// /// 角色名称 /// public string ROLESNAMES { get; set; } /// /// 角色ID /// public string ROLEIDS { get; set; } } }