using System; using System.Collections.Generic; using System.Data; using System.Linq; using WX.CRM.BLL.Util; using WX.CRM.Common; using WX.CRM.IBLL.Base; using WX.CRM.Model.Entity; namespace WX.CRM.BLL.Base { public class BAS_INNERUSER_BL : IBAS_INNERUSER, IBAS_INNERUSER_Q { CACHE_BL cache_BL = new CACHE_BL(); List cacheKeyList = new List() { "cache_select_showbox_list" }; #region 添加 /// /// 添加 /// /// /// public decimal Create(ref ValidationErrors errors, WX.CRM.Model.Entity.BAS_INNERUSER model) { try { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { WX.CRM.Model.Entity.BAS_INNERUSER entry = db.BAS_INNERUSER.FirstOrDefault(m => m.EID == model.EID); if (entry != null) { errors.Add("工号已被占用!"); return 0; } db.Configuration.ValidateOnSaveEnabled = false; model.PKID = new SEQUENCES_BL().Seq_base_get(); model.map_CPASSWORD2 = model.map_CPASSWORD; db.BAS_INNERUSER.Add(model); db.SaveChanges(); ClearCache(); return model.PKID; } } catch (Exception ex) { errors.Add(ex.Message); return 0; } } #endregion #region 修改 /// /// 数据的修改 /// /// /// public bool Update(ref ValidationErrors errors, WX.CRM.Model.Entity.BAS_INNERUSER model) { try { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { //Model.Entity.BAS_INNERUSER entry = db.BAS_INNERUSER.FirstOrDefault(m => m.PKID == model.PKID); //entry.BIRTHDAY = model.BIRTHDAY; //entry.DISMISSTIME = model.DISMISSTIME; //entry.DISMISSTYPE = model.DISMISSTYPE; //entry.EID = model.EID; //entry.ENTRYDATE = model.ENTRYDATE; //entry.GENDER = model.GENDER; //entry.ISDISMISS = model.ISDISMISS; //entry.UNAME = model.UNAME; //entry.UPDATEUSER = model.UPDATEUSER; //entry.UTIME = DateTime.Now; //entry.map_CPASSWORD = model.map_CPASSWORD; WX.CRM.Model.Entity.BAS_INNERUSER nmodel = db.BAS_INNERUSER.FirstOrDefault(m => m.EID == model.EID && m.PKID != model.PKID); if (nmodel != null) { errors.Add("工号已被占用!"); return false; } db.Configuration.ValidateOnSaveEnabled = false; WX.CRM.Model.Entity.BAS_INNERUSER entry = db.BAS_INNERUSER.FirstOrDefault(m => m.PKID == model.PKID); entry.UNAME = model.UNAME; entry.EID = model.EID; entry.GENDER = model.GENDER; entry.BIRTHDAY = model.BIRTHDAY; if (!string.IsNullOrWhiteSpace(model.PASSWORD))//密码为空不修改 entry.PASSWORD = model.PASSWORD; //entry.ISDISMISS = model.ISDISMISS; //entry.DISMISSTIME = model.DISMISSTIME; //entry.DISMISSTYPE = model.DISMISSTYPE; entry.ENTRYDATE = model.ENTRYDATE; entry.UTIME = model.UTIME; entry.UPDATEUSER = model.UPDATEUSER; entry.POSITIVETIME = model.POSITIVETIME; entry.TRUENAME = model.TRUENAME; entry.ISHIDE = model.ISHIDE; //db.BAS_INNERUSER.Attach(model); //db.Entry(entry).State = EntityState.Modified; //离职添加修改日志 //if (entry.ISDISMISS != model.ISDISMISS) //{ // BAS_INNERUSER_EXT_LOG log = new BAS_INNERUSER_EXT_LOG // { // PKID = new SEQUENCES_BL().Seq_base_get(), // UTIME = DateTime.Now, // OPTIONUSER = optionuserid, // INNERUSERID = entry.PKID, // NEWSTATUS = model.ISDISMISS, // OLDSTATUS = entry.ISDISMISS, // EXTENDTYPE = 4 // }; // db.BAS_INNERUSER_EXT_LOG.Add(log); //} db.SaveChanges(); db.Configuration.ValidateOnSaveEnabled = true; ClearCache(); return true; } } catch (Exception ex) { errors.Add(ex.Message); return false; } } public void UpdateDismiss(WX.CRM.Model.Entity.BAS_INNERUSER model, decimal optionuserid) { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { db.Configuration.ValidateOnSaveEnabled = false; WX.CRM.Model.Entity.BAS_INNERUSER entry = db.BAS_INNERUSER.FirstOrDefault(m => m.PKID == model.PKID); if (null == entry) throw new ArgumentException("数据不存在"); //new WhoHasCustomer_DAL().ExecInnerUserDisMiss(entry.PKID);//签约规则表离职状态改为1; entry.ISDISMISS = model.ISDISMISS; entry.DISMISSTIME = model.DISMISSTIME; entry.DISMISSTYPE = model.DISMISSTYPE; entry.UTIME = model.UTIME; entry.UPDATEUSER = model.UPDATEUSER; BAS_INNERUSER_EXT_LOG log = new BAS_INNERUSER_EXT_LOG { PKID = new SEQUENCES_BL().Seq_base_get(), UTIME = DateTime.Now, OPTIONUSER = optionuserid, INNERUSERID = entry.PKID, NEWSTATUS = model.ISDISMISS, OLDSTATUS = entry.ISDISMISS, EXTENDTYPE = 4 }; db.BAS_INNERUSER_EXT_LOG.Add(log); db.SaveChanges(); db.Configuration.ValidateOnSaveEnabled = true; } } #endregion #region 删除 /// /// 删除数据 /// /// /// public bool Delete(ref ValidationErrors errors, decimal id) { try { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { WX.CRM.Model.Entity.BAS_INNERUSERGROUP userGroup = db.BAS_INNERUSERGROUP.FirstOrDefault(m => m.INNERUSERID == id); if (userGroup != null) db.BAS_INNERUSERGROUP.Remove(userGroup); WX.CRM.Model.Entity.BAS_INNERUSER_EXT inneruserExtend = db.BAS_INNERUSER_EXT.FirstOrDefault(m => m.INNERUSERID == id); if (inneruserExtend == null) db.BAS_INNERUSER_EXT.Remove(inneruserExtend); WX.CRM.Model.Entity.BAS_INNERUSER entry = db.BAS_INNERUSER.FirstOrDefault(m => m.PKID == id); if (entry != null) db.BAS_INNERUSER.Remove(entry); ClearCache(); return db.SaveChanges().GetResult(); } } catch (Exception ex) { errors.Add(ex.Message); return false; } } #endregion #region 按照条件查找信息 /// ///按照条件查找信息 /// /// /// /// /// /// /// /// public List GetList(ref Pager pager, string innerGroupId, string innerDeptId, string eId, string uName, string gender, string isDismiss, string dismissType, string dismissTime1, string dismissTime2, string EntryDate1, string EntryDate2, string isfutures, string istrader, string istutor, string isManager, string positiveTime1, string positiveTime2, string otherFilter = "") { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { IQueryable queryData = db.BAS_INNERUSER.AsQueryable(); //只传一个id 找出是否为部门 销售组 或者 对应人员 if(!string.IsNullOrWhiteSpace(otherFilter) && otherFilter != "0") { if (otherFilter.IndexOf(",") == -1)//只有单个userId { List userId = new List(); decimal id = Convert.ToDecimal(otherFilter); var user = db.BAS_INNERUSER.FirstOrDefault(n => n.PKID == id); if (user != null) { queryData = queryData.Where(a => a.PKID == id); } var group = db.BAS_INNERGROUP.FirstOrDefault(n => n.GID == id); if (group != null) { queryData = queryData.Where(a => db.BAS_INNERUSERGROUP.Where(x => x.GID == id).Select(m => m.INNERUSERID).Contains(a.PKID)); } var dept = db.BAS_SALESDEPARTMENT.FirstOrDefault(n => n.SALEDEPTID == id); //找出下级部门和销售组 if (dept != null) { var filterIds = GetDeptIdList(dept); queryData = queryData.Where(a => db.BAS_INNERUSERGROUP.Where(x => filterIds.Contains(x.GID.Value) || filterIds.Contains(x.DEPTID.Value)).Select(m => m.INNERUSERID).Contains(a.PKID)); } } else//含有多个userId { string[] iInnerUserId = otherFilter.Split(','); decimal[] innerUserIds = new decimal[iInnerUserId.Length]; for (int i = 0; i < iInnerUserId.Length; i++) { innerUserIds[i] = Convert.ToDecimal(iInnerUserId[i]); } queryData = queryData.Where(a => innerUserIds.Contains(a.PKID)); } } if (!string.IsNullOrWhiteSpace(innerGroupId) && innerGroupId != "0") { if (innerGroupId.IndexOf(",") == -1)//只有单个groupId { decimal iInnerGroupId = Convert.ToDecimal(innerGroupId); queryData = queryData.Where(a => db.BAS_INNERUSERGROUP.Where(x => x.GID == iInnerGroupId).Select(m => m.INNERUSERID).Contains(a.PKID)); } else//含有多个groupID { string[] iInnerGroupId = innerGroupId.Split(','); decimal[] innerGroupIds = new decimal[iInnerGroupId.Length]; for (int i = 0; i < iInnerGroupId.Length; i++) { innerGroupIds[i] = Convert.ToDecimal(iInnerGroupId[i]); } queryData = queryData.Where(a => db.BAS_INNERUSERGROUP.Where(x => innerGroupIds.Contains(x.GID.Value)).Select(m => m.INNERUSERID).Contains(a.PKID)); } } if (!string.IsNullOrWhiteSpace(innerDeptId) && innerDeptId != "0") { string[] iInnerDeptId = innerDeptId.Split(','); decimal[] innerDeptIds = new decimal[iInnerDeptId.Length]; for (int i = 0; i < iInnerDeptId.Length; i++) { innerDeptIds[i] = Convert.ToDecimal(iInnerDeptId[i]); } var employeeIds = from n in db.BAS_SALESDEPARTMENT join m in db.BAS_EMPLOYEE_DEPARTMENT on n.DEPARTMENT_ID equals m.DEPARTMENT_ID where innerDeptIds.Contains(n.SALEDEPTID) select m.EMPLOYEE_ID; queryData = queryData.Where(a => employeeIds.Contains(a.EMPLOYEE_ID.Value)); } if (!string.IsNullOrWhiteSpace(eId)) { int ieId = Convert.ToInt32(eId); queryData = queryData.Where(m => m.EID == ieId); } if (!string.IsNullOrWhiteSpace(uName)) queryData = queryData.Where(a => a.UNAME.Contains(uName)); if (!string.IsNullOrWhiteSpace(gender) && gender != "0") queryData = queryData.Where(a => a.GENDER == gender); if (!string.IsNullOrWhiteSpace(isDismiss) && isDismiss != "-1") { decimal bisDismiss = decimal.Parse(isDismiss); queryData = queryData.Where(a => a.ISDISMISS == bisDismiss); } if (!string.IsNullOrWhiteSpace(dismissType) && dismissType != "-1") { decimal iDismissType = Convert.ToDecimal(dismissType); queryData = queryData.Where(m => m.DISMISSTYPE == iDismissType); } DateTime dt1; if (!string.IsNullOrWhiteSpace(dismissTime1) && DateTime.TryParse(dismissTime1, out dt1)) queryData = queryData.Where(a => a.map_DISMISSTIME >= dt1); DateTime dt2; DateTime dt7; if (!string.IsNullOrWhiteSpace(dismissTime2) && DateTime.TryParse(dismissTime2, out dt2)) { dt7 = dt2.AddDays(1); queryData = queryData.Where(a => a.map_DISMISSTIME < dt7); } DateTime dt3; if (!string.IsNullOrWhiteSpace(EntryDate1) && DateTime.TryParse(EntryDate1, out dt3)) queryData = queryData.Where(a => a.ENTRYDATE >= dt3); DateTime dt4; DateTime dt8; if (!string.IsNullOrWhiteSpace(EntryDate2) && DateTime.TryParse(EntryDate2, out dt4)) { dt8 = dt4.AddDays(1); queryData = queryData.Where(a => a.ENTRYDATE < dt8); } DateTime dt5; if (!string.IsNullOrWhiteSpace(positiveTime1) && DateTime.TryParse(positiveTime1, out dt5)) queryData = queryData.Where(a => a.POSITIVETIME >= dt5); DateTime dt6; DateTime dt9; if (!string.IsNullOrWhiteSpace(positiveTime2) && DateTime.TryParse(positiveTime2, out dt6)) { dt9 = dt6.AddDays(1); queryData = queryData.Where(a => a.POSITIVETIME < dt9); } if (!string.IsNullOrWhiteSpace(isfutures) && isfutures != "-1") { decimal futuresstatus = Convert.ToDecimal(isfutures); queryData = queryData.Where(m => db.BAS_INNERUSER_EXT.Where(a => a.FXH_FUTURESSTATUS == futuresstatus).Select(x => x.INNERUSERID).Contains(m.PKID)); } if (!string.IsNullOrWhiteSpace(istrader) && istrader != "-1") { decimal traderstatus = Convert.ToDecimal(istrader); queryData = queryData.Where(m => db.BAS_INNERUSER_EXT.Where(a => a.FXH_TRADERSTATUS == traderstatus).Select(x => x.INNERUSERID).Contains(m.PKID)); } if (!string.IsNullOrWhiteSpace(istutor) && istutor != "-1") { decimal tutorstatus = Convert.ToDecimal(istutor); queryData = queryData.Where(m => db.BAS_INNERUSER_EXT.Where(a => a.FXH_TUTORSTATUS == tutorstatus).Select(x => x.INNERUSERID).Contains(m.PKID)); } if (!string.IsNullOrWhiteSpace(isManager) && isManager != "-1") { decimal Managerstatus = Convert.ToDecimal(isManager); queryData = queryData.Where(m => db.BAS_INNERUSER_EXT.Where(a => a.GJS_CUSTOMERMANAGER == Managerstatus).Select(x => x.INNERUSERID).Contains(m.PKID)); } return CreateModelList(queryData, db, pager); } } public List GetList(string isDismiss, bool isLeader) { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { IQueryable queryData = db.BAS_INNERUSER.AsQueryable(); //0:在职,1:离职 if (!string.IsNullOrWhiteSpace(isDismiss) && isDismiss != "-1") { decimal bisDismiss = decimal.Parse(isDismiss); queryData = queryData.Where(a => a.ISDISMISS == bisDismiss); } IQueryable returnData; if (isLeader) { returnData = (from model in queryData join userGroup in db.BAS_INNERUSERGROUP on model.PKID equals userGroup.INNERUSERID into jiontemp from userGroup in jiontemp.DefaultIfEmpty()//左关联(用户组/部门 关系表) join innerGroup in db.BAS_INNERGROUP on userGroup.GID equals innerGroup.GID into jiontemp2 from innerGroup in jiontemp2.DefaultIfEmpty()//左关联(组表) //join innerDepartment in db.BAS_INNERDEPARTMENT on userGroup.DEPTID equals innerDepartment.DEPTID into jiontemp3 //from innerDepartment in jiontemp3.DefaultIfEmpty()//左关联(部门表) where innerGroup.ISSALEDEPT == 1 && !db.BAS_GROUPLEADER.Select(m => m.INNERUSERID).Contains(model.PKID) select new WX.CRM.Model.Entity.BAS_INNERUSER_Extend() { INNERUSER = model, //DEPTNAME = innerDepartment.DEPTNAME, GNAME = innerGroup.GNAME, }); } else { returnData = (from model in queryData join userGroup in db.BAS_INNERUSERGROUP on model.PKID equals userGroup.INNERUSERID into jiontemp from userGroup in jiontemp.DefaultIfEmpty()//左关联(用户组/部门 关系表) join innerGroup in db.BAS_INNERGROUP on userGroup.GID equals innerGroup.GID into jiontemp2 from innerGroup in jiontemp2.DefaultIfEmpty()//左关联(组表) //join innerDepartment in db.BAS_INNERDEPARTMENT on userGroup.DEPTID equals innerDepartment.DEPTID into jiontemp3 //from innerDepartment in jiontemp3.DefaultIfEmpty()//左关联(部门表) where innerGroup.ISSALEDEPT == 1 select new WX.CRM.Model.Entity.BAS_INNERUSER_Extend() { INNERUSER = model, //DEPTNAME = innerDepartment.DEPTNAME, GNAME = innerGroup.GNAME, }); } return returnData.ToList(); } } #endregion #region 获取全部信息 /// /// 获取全部信息 /// /// public List GetList() { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { return db.BAS_INNERUSER.OrderBy(m => m.PKID).ToList(); } } /// /// 获取全部信息 /// /// public List GetList_Group() { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { var userlist = db.BAS_INNERUSER.Where(obj => obj.ISDISMISS != 1); var usergrouplist = db.BAS_INNERUSERGROUP; var grplist = db.BAS_INNERGROUP; var loginlog = db.BAS_LOGINLOG.Where(obj => obj.LOGINTIME >= DateTime.Today); foreach (var user in userlist) { user.BAS_INNERUSERGROUP = usergrouplist.FirstOrDefault(obj => obj.INNERUSERID == user.PKID); if (null != user.BAS_INNERUSERGROUP) { user.map_GID = user.BAS_INNERUSERGROUP.GID; } var login = loginlog.FirstOrDefault(obj => obj.LOGINEID == user.EID); if (null != login && login.TELNUM != null) user.map_FJH = (int)login.TELNUM; } return userlist.ToList(); } } #endregion #region 公用代码 private List CreateModelList(IQueryable queryData, WX.CRM.Model.Entity.crmContext db, Pager pager) { IQueryable modelList = (from model in queryData join userGroup in db.BAS_INNERUSERGROUP on model.PKID equals userGroup.INNERUSERID into jiontemp from userGroup in jiontemp.DefaultIfEmpty()//左关联(用户组/部门 关系表) join innerGroup in db.BAS_INNERGROUP on userGroup.GID equals innerGroup.GID into jiontemp2 from innerGroup in jiontemp2.DefaultIfEmpty()//左关联(组表) join innerDepartment in db.BAS_SALESDEPARTMENT on userGroup.DEPTID equals innerDepartment.SALEDEPTID into jiontemp3 from innerDepartment in jiontemp3.DefaultIfEmpty()//左关联(部门表) join innerExtend in db.BAS_INNERUSER_EXT on model.PKID equals innerExtend.INNERUSERID into jointemp4 from innerExtend in jointemp4.DefaultIfEmpty() select new WX.CRM.Model.Entity.BAS_INNERUSER_Extend() { INNERUSER = model, DEPTID = innerDepartment.DEPARTMENT_ID, //DEPTNAME = innerDepartment.DEPTNAME, GNAME = innerGroup.GNAME, FUTURESSTATUS = innerExtend.FXH_FUTURESSTATUS, TRADERSTATUS = innerExtend.FXH_TRADERSTATUS, TUTORSTATUS = innerExtend.FXH_TUTORSTATUS, MANAGERSTATUS = innerExtend.GJS_CUSTOMERMANAGER, GENERALCUSTOMER = innerExtend.GENERALCUSTOMER, SENIORCUSTOMER = innerExtend.SENIORCUSTOMER }); //如果不排序就直接给pager赋值null if (pager == null) return modelList.ToList(); //排序 if (pager.order == "desc") { switch (pager.sort) { case "map_uName": modelList = modelList.OrderByDescending(c => c.INNERUSER.UNAME); break; case "map_eID": modelList = modelList.OrderByDescending(c => c.INNERUSER.EID); break; case "map_birthday": modelList = modelList.OrderByDescending(c => c.INNERUSER.BIRTHDAY); break; case "map_dismissTime": modelList = modelList.OrderByDescending(c => c.INNERUSER.DISMISSTIME); break; case "map_EntryDate": modelList = modelList.OrderByDescending(c => c.INNERUSER.ENTRYDATE); break; default: modelList = modelList.OrderByDescending(c => c.INNERUSER.CTIME); break; } } else { switch (pager.sort) { case "map_uName": modelList = modelList.OrderBy(c => c.INNERUSER.UNAME); break; case "map_eID": modelList = modelList.OrderBy(c => c.INNERUSER.EID); break; case "map_birthday": modelList = modelList.OrderBy(c => c.INNERUSER.BIRTHDAY); break; case "map_dismissTime": modelList = modelList.OrderBy(c => c.INNERUSER.DISMISSTIME); break; case "map_EntryDate": modelList = modelList.OrderBy(c => c.INNERUSER.ENTRYDATE); break; default: modelList = modelList.OrderBy(c => c.INNERUSER.CTIME); break; } } PagerUtil.SetPager(ref modelList, ref pager);//分页 //部门 角色字段处理 var deptNameList = new CACHE_BL().BuildDepartMentShowText(modelList.Select(n=>n.DEPTID).ToList()); var data = modelList.ToList(); var userIds = data.Select(n => n.INNERUSER).Select(n=>n.PKID).ToList(); var roleIdList = db.BAS_INNERUSERROLE.Where(p => userIds.Contains(p.INNERUSERID)).ToList(); List roleList = db.BAS_ROLE.ToList(); foreach (var item in data) { item.DEPTNAME = deptNameList.FirstOrDefault(n => n.Key == item.DEPTID).Value; foreach(var roleid in roleIdList.Where(n=> n.INNERUSERID == item.INNERUSER.PKID)) { var role = roleList.FirstOrDefault(n => n.ROLEID == roleid.ROLEID); item.ROLESNAMES = item.ROLESNAMES += "[" + role?.RNAME + "] "; } } return data; } #endregion #region 获取单条用户信息 /// /// 获取实体 /// /// /// public WX.CRM.Model.Entity.BAS_INNERUSER GetModel(decimal id) { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { WX.CRM.Model.Entity.BAS_INNERUSER entry = db.BAS_INNERUSER.FirstOrDefault(m => m.PKID == id); return entry; } } #endregion #region 获取单条用户信息 /// /// 获取实体 /// /// /// public WX.CRM.Model.Entity.BAS_INNERUSER GetModelByEid(decimal EID) { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { WX.CRM.Model.Entity.BAS_INNERUSER entry = db.BAS_INNERUSER.FirstOrDefault(m => m.EID == EID); return entry; } } public decimal? GetSaleDeptIdByEid(decimal EID) { using (var db = new crmContext()) { var q = (from a in db.BAS_INNERUSER join c in db.BAS_INNERUSERGROUP on a.PKID equals c.INNERUSERID join d in db.BAS_INNERGROUP on c.GID equals d.GID where a.EID == EID select new { d.SALEDEPTID } ); var list = q.ToList(); if (list == null) { return 0; } else { return list.Select(p => p.SALEDEPTID).FirstOrDefault(); } } } #endregion #region GetUserComBoxUser数据源 public object GetUserComBoxUser(int queryType, string innerUserId, string salegGoupIds, decimal innerDeptId, string isShowDismiss, string roleCodes, string currentRight) { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { List obj = new List(); IQueryable queryable = db.BAS_INNERUSER.AsQueryable(); if (queryType == 3 && !string.IsNullOrEmpty(currentRight))///有特殊权限的,直接查询特殊权限 { string[] nowroles = roleCodes.Replace("][", ",").Replace("]", "").Replace("[", "").Split(','); List list = db.BAS_RIGHT_LEVEL.Where(m => m.RIGHTID == currentRight && nowroles.Contains(m.ROLECODE) && m.STATUS == 1).ToList(); if (list.Count > 0)//发现特权 { innerUserId = ""; queryType = 4; } } //查询单个用户 if (queryType == 3) { if (string.IsNullOrWhiteSpace(innerUserId) || innerUserId == "0") return new object(); decimal iinnerUserid = Convert.ToDecimal(innerUserId); WX.CRM.Model.Entity.BAS_INNERUSER inneruser = null; if (innerDeptId == 0) inneruser = queryable.Where(m => m.PKID == iinnerUserid).FirstOrDefault(); else inneruser = queryable.Where(m => m.PKID == iinnerUserid && (from a in db.BAS_INNERUSERGROUP where a.DEPTID == innerDeptId where a.INNERUSERID == iinnerUserid select a.INNERUSERID).Contains(m.PKID)).FirstOrDefault(); if (inneruser == null) return new object(); obj.Add(new { id = inneruser.PKID, text = string.Format("{0}---{1}", inneruser.EID, inneruser.UNAME) }); } else//获取销售组下的部门 { decimal[] iSaleGroupdIds = OperationUtil.ConvertToDecimal(salegGoupIds.Split(',')); List inneruserList = null; if (innerDeptId == 0) inneruserList = (from a in queryable join m in db.BAS_INNERUSERGROUP on a.PKID equals m.INNERUSERID where iSaleGroupdIds.Contains(m.GID.Value) select a).OrderBy(m => m.ISDISMISS).ThenBy(m => m.EID).ToList(); else inneruserList = (from a in queryable join m in db.BAS_INNERUSERGROUP on a.PKID equals m.INNERUSERID where iSaleGroupdIds.Contains(m.GID.Value) where m.DEPTID == innerDeptId select a).OrderBy(m => m.ISDISMISS).ThenBy(m => m.EID).ToList(); if (!string.IsNullOrEmpty(isShowDismiss))//优先考虑控件参数是否显示离职员工 { if (isShowDismiss != "1")//不显示就做隐藏 { inneruserList = inneruserList.Where(m => m.ISDISMISS == 0).ToList(); } } else { string flag = cache_BL.GetValue_Parameter(WX.CRM.Model.Enum.Parameter.Sys_UserComBoxAllShow); if (!string.IsNullOrWhiteSpace(flag) && flag.Trim() == "0") { inneruserList = inneruserList.Where(m => m.ISDISMISS == 0).ToList(); } } obj = (from a in inneruserList select new { id = a.PKID, text = string.Format("{0}---{1}{2}", a.EID, a.UNAME, a.ISDISMISS == 1 ? "(离职)" : "") }).ToList(); } return obj; } } #endregion #region 验证登录 public bool ValidateUser(decimal Eid, string password, out string errorMessage, out decimal UserId, bool isSso = false) { errorMessage = string.Empty; WX.CRM.Model.Entity.BAS_INNERUSER user = null; using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { user = db.BAS_INNERUSER.FirstOrDefault(u => u.EID.Equals(Eid) && u.ISDISMISS == 0);//离职员工不能登录 UserId = 0; if (null == user) { errorMessage = "用户名或密码错误!"; return false; } else { UserId = user.PKID; } var usersalt = db.BAS_INNERUSERSALT.FirstOrDefault(p => p.INNERUSERID == user.PKID && p.EID == Eid); if (null == usersalt) { errorMessage = "用户名或密码错误!"; return false; } if (!isSso) { string user_salt = usersalt.PWDSALT; string sha_password = Utility.Sha512(password + user_salt); if (user.PASSWORD != sha_password) { errorMessage = "用户名或密码错误!"; return false; } } return true; } } #endregion #region 更具用户扩展信息来查询用户信息(三个条件不能同时为-1) /// /// 更具用户扩展信息来查询用户信息 /// 三个条件不能同时为-1 /// /// /// /// 为(0:非 1:是 -1:此条件不加入查找) /// public List GetListByUserExt(int futuresStatus, int traderStatus, int tutorStatus) { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { if (futuresStatus == -1 && traderStatus == -1 && tutorStatus == -1) return new List(); var queryable = db.BAS_INNERUSER_EXT.AsQueryable(); if (futuresStatus != -1) queryable = queryable.Where(m => m.FXH_FUTURESSTATUS == futuresStatus); if (traderStatus != -1) queryable = queryable.Where(m => m.FXH_TRADERSTATUS == traderStatus); if (tutorStatus != -1) queryable = queryable.Where(m => m.FXH_TUTORSTATUS == tutorStatus); return (from a in db.BAS_INNERUSER where queryable.Select(m => m.INNERUSERID).Contains(a.PKID) select a ).ToList(); } } #endregion public WX.CRM.Model.Entity.BAS_INNERUSER getInnerUserByEid(decimal eid) { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { WX.CRM.Model.Entity.BAS_INNERUSER entry = db.BAS_INNERUSER.FirstOrDefault(m => m.EID == eid); return entry; } } public List GetList_SysUser() { using (var db = new crmContext()) { var q = (from a in db.BAS_INNERUSER join b in db.BAS_INNERUSER_EXT on a.PKID equals b.INNERUSERID into tempB from m in tempB.DefaultIfEmpty() join c in db.BAS_INNERUSERGROUP on a.PKID equals c.INNERUSERID into tempC from n in tempC.DefaultIfEmpty() join d in db.BAS_INNERGROUP on n.GID equals d.GID into tempD from j in tempD.DefaultIfEmpty() select new { id = a.PKID, eid = a.EID, password = a.PASSWORD, name = a.UNAME, salesGroupId = n.GID, deptCode = "", sex = a.GENDER, mobile = "", email = "", IsDismiss = a.ISDISMISS, creationDate = a.CTIME, updateDate = a.UTIME, creationBy = a.CREATEUSER, updateBy = a.UPDATEUSER, futuresStatus = m.FXH_FUTURESSTATUS, traderStatus = m.FXH_TRADERSTATUS, tutorStatus = m.FXH_TUTORSTATUS, MiddleType = false, DismissTime = a.DISMISSTIME, DismissType = a.DISMISSTYPE } ); return q.ToList() .Select(p => new SysUser() { id = int.Parse(p.id.ToString()), eid = int.Parse(p.eid.ToString()), password = p.password, name = p.name, salesGroupId = p.salesGroupId.HasValue ? (int?)int.Parse(p.salesGroupId.ToString()) : null, deptCode = "", sex = p.sex, mobile = "", email = "", IsDismiss = p.IsDismiss == 1, creationDate = p.creationDate, updateDate = p.updateDate, creationBy = p.creationBy.HasValue ? (int?)int.Parse(p.creationBy.ToString()) : null, updateBy = p.updateBy.HasValue ? (int?)int.Parse(p.updateBy.ToString()) : null, futuresStatus = p.futuresStatus == 1, traderStatus = p.traderStatus, tutorStatus = p.tutorStatus, MiddleType = false, DismissTime = p.DismissTime, DismissType = p.DismissType.HasValue ? (int?)int.Parse(p.DismissType.ToString()) : null }).ToList(); } } //public List GetBackupMont() //{ // using (var db = new crmContext()) // { // return db.GJS_MON_INNERUSER.OrderByDescending(s => s.BALANCECODE).Select(p => p.BALANCECODE).Distinct().ToList(); // } //} public List GetAllList() { using (crmContext db = new crmContext()) { List list = db.BAS_INNERUSER.ToList(); return list; } } public List GetInnerUserByGroup(decimal[] userids) { using (crmContext db = new crmContext()) { List list = db.BAS_INNERUSER.Where(p => userids.Contains(p.PKID)).ToList(); return list; } } /// /// 更新数据时需要清空的缓存 /// private void ClearCache() { foreach (var key in cacheKeyList) { CacheHelper.Remove(key); } } /// /// 找出部门 即对应的销售组 /// /// /// public List GetDeptIdList(BAS_SALESDEPARTMENT saltDept) { List idList = new List() { saltDept.SALEDEPTID }; using (var db = new WX.CRM.Model.Entity.crmContext()) { List salesDeptList = db.BAS_SALESDEPARTMENT.Where(n => n.IS_DELETED != 1).ToList(); List innerGroupList = db.BAS_INNERGROUP.Where(n => n.IS_DELETED != 1).ToList(); BuildChildGroup(salesDeptList, innerGroupList, saltDept, idList); } return idList; } private void BuildChildGroup(List salesDeptList, List innerGroupList, BAS_SALESDEPARTMENT saltDept, List idList) { if (saltDept == null) { return; } var childDept = salesDeptList.Where(n => n.DEPARTMENT_PARENTID == saltDept.DEPARTMENT_ID); foreach (var c in childDept) { idList.Add(c.SALEDEPTID); BuildChildGroup(salesDeptList, innerGroupList, c, idList); } var groupList = innerGroupList.Where(n => n.SALEDEPTID == saltDept.SALEDEPTID).Select(n => n.GID).ToList(); idList.AddRange(groupList); } } }