using CRM.Core.DTO; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using WX.CRM.BLL.Application.UserComBox; using WX.CRM.BLL.Base; using WX.CRM.Common; using WX.CRM.IBLL.Util; using WX.CRM.Model.Entity; using WX.CRM.Model.Enum; using StackExchange.Redis; using System.IO; namespace WX.CRM.BLL.Util { /// /// 缓存BL /// public class CACHE_BL : ICACHE_Q { #region excel数据导入字典 /// /// excel数据导入字典 /// /// public List GetList_ExcelImportDict(EnumExcelDataType excelDataType) { var list = GetList_ExcelImportDict(); var typeid = excelDataType.ToString(); list = list.Where(m => m.TYPEID.Equals(typeid)).OrderBy(m => m.SORTID).ToList(); //foreach (var item in list) //{ // item.ColumnIndex = -1; //} return list; } /// /// excel数据导入字典 /// /// public List GetList_ExcelImportDict(EnumExcelDataType excelDataType, decimal isNew) { var list = GetList_ExcelImportDict(); var typeid = excelDataType.ToString(); list = list.Where(m => m.TYPEID.Equals(typeid)).Where(m => m.ISNEW == isNew).OrderBy(m => m.SORTID).ToList(); //foreach (var item in list) //{ // item.ColumnIndex = -1; //} return list; } public List GetList_ExcelImportDict() { string cacheKey = "cache_excelImportDict_getList"; List list; if (CacheHelper.Exists(cacheKey)) list = CacheHelper.Get>(cacheKey); else using (var db = new crmContext()) { list = db.BAS_EXCELIMPORTDICT.ToList(); CacheHelper.Set(cacheKey, list); } return list; } #endregion excel数据导入字典 #region excel数据导入类型 /// /// 获取excel数据导入类型 /// /// 数据导入类型 /// public BAS_EXCELIMPORTTYPE GetModel_ExcelImportType(EnumExcelDataType excelDataType) { //string cacheKey = "cache_excelImportType_getList"; //List list; //if (CacheHelper.Exists(cacheKey)) // list = CacheHelper.Get>(cacheKey); //else // using (var db = new qhContext()) // { // list = db.BAS_EXCELIMPORTTYPE.ToList(); // CacheHelper.Set(cacheKey, list); // } //string typeid = excelDataType.ToString(); //return list.FirstOrDefault(m => m.TYPECODE.Equals(typeid)); var list = GetList_ExcelImportType(); var typeid = excelDataType.ToString(); return list.FirstOrDefault(p => p.TYPECODE.Equals(typeid)); } /// /// 获取excel数据导入类型列表 /// /// public List GetList_ExcelImportType() { string cacheKey = "cache_excelImportType_getList"; List list; if (CacheHelper.Exists(cacheKey)) list = CacheHelper.Get>(cacheKey); else using (var db = new crmContext()) { list = db.BAS_EXCELIMPORTTYPE.ToList(); CacheHelper.Set(cacheKey, list); } return list; } #endregion excel数据导入类型 #region 工单样式列表 /// /// 工单样式列表 /// /// public List GetList_MemoStyle() { string cacheKey = "cache_MemoStyle_getList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (crmContext db = new crmContext()) { List list = db.ORD_MEMOSTYLE.ToList(); CacheHelper.Set(cacheKey, list); return list; } } #endregion 工单样式列表 #region 获取通用数据小类(通过 Model.Enum.ComType查询) /// /// 获取通用数据小类 /// /// Model.Enum.ComType /// public List GetList_SubComType(WX.CRM.Model.Enum.ComType type) { //string cacheKey1 = "cache_ComType_getList"; string cacheKey2 = "cache_SubComType_getList"; //List comTypeList; List subComtypeList; //if (CacheHelper.Exists(cacheKey1)) // comTypeList = CacheHelper.Get>(cacheKey1); //else //{ // using (Model.Entity.crmContext db = new Model.Entity.crmContext()) // { // comTypeList = db.BAS_COMTYPE.ToList(); // CacheHelper.Set(cacheKey1, comTypeList); // } //} if (CacheHelper.Exists(cacheKey2)) subComtypeList = CacheHelper.Get>(cacheKey2); else { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { subComtypeList = db.BAS_SUBCOMTYPE.ToList(); CacheHelper.Set(cacheKey2, subComtypeList); } } return subComtypeList.Where(m => m.TYPECODE == type.ToString()).OrderBy(m => m.SUBTYPECODE).ToList(); } public List GetList_SubComType(string typeCode) { //string cacheKey1 = "cache_ComType_getList"; string cacheKey2 = "cache_SubComType_getList"; //List comTypeList List subComtypeList; //if (CacheHelper.Exists(cacheKey1)) // comTypeList = CacheHelper.Get>(cacheKey1); //else //{ // using (Model.Entity.crmContext db = new Model.Entity.crmContext()) // { // comTypeList = db.BAS_COMTYPE.ToList(); // CacheHelper.Set(cacheKey1, comTypeList); // } //} if (CacheHelper.Exists(cacheKey2)) subComtypeList = CacheHelper.Get>(cacheKey2); else { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { subComtypeList = db.BAS_SUBCOMTYPE.ToList(); CacheHelper.Set(cacheKey2, subComtypeList); } } if (!string.IsNullOrWhiteSpace(typeCode)) { return subComtypeList.Where(m => m.TYPECODE == typeCode).ToList(); } return subComtypeList; } #endregion 获取通用数据小类(通过 Model.Enum.ComType查询) #region 角色查询 /// /// 获取工单小类信息 /// /// public List GetList_Role() { string cacheKey = "cache_Role_getList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (crmContext db = new crmContext()) { List list = db.BAS_ROLE.ToList(); CacheHelper.Set(cacheKey, list); return list; } } /// /// 获取角色编码 /// /// 角色ID数组 /// public string Get_RoleCodes(decimal[] roleIds) { List roleList = GetList_Role().Where(m => roleIds.Contains(m.ROLEID)).ToList(); StringBuilder codes = new StringBuilder(); foreach (BAS_ROLE role in roleList) { codes.AppendFormat("[{0}]", role.CODE); } return codes.ToString(); } public List GetUserRole() { var key = "cache_User_Role"; if (CacheHelper.Exists(key)) return CacheHelper.Get>(key); using (var db = new crmContext()) { var list = db.BAS_INNERUSERROLE.ToList(); CacheHelper.Set(key, list); return list; } } /// /// 特殊权限表 /// /// public List GetRightLevel() { var key = "cache_BAS_RIGHT_LEVEL"; if (CacheHelper.Exists(key)) return CacheHelper.Get>(key); using (var db = new crmContext()) { var list = db.BAS_RIGHT_LEVEL.ToList(); CacheHelper.Set(key, list); return list; } } /// /// 特殊权限详细表 /// /// public List GetRightLevelDetail() { var key = "cache_BAS_RIGHT_LEVEL_DETAIL"; if (CacheHelper.Exists(key)) return CacheHelper.Get>(key); using (var db = new crmContext()) { var list = db.BAS_RIGHT_LEVEL_DETAIL.ToList(); CacheHelper.Set(key, list); return list; } } #endregion 角色查询 #region 获取工单小类信息 (只查询可显示) /// /// 获取工单小类信息 (只查询可显示) /// /// public List GetList_MemoSubType(int type = 1) { string cacheKey = "cache_MemoSubType_getList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (crmContext db = new crmContext()) { List list = null; if (type == 0) list = db.ORD_MEMOSUBTYPE.OrderBy(m => m.CTIME).ToList(); else list = db.ORD_MEMOSUBTYPE.Where(m => m.ISSHOW == 1).OrderBy(m => m.CTIME).ToList(); CacheHelper.Set(cacheKey, list); return list; } } #endregion 获取工单小类信息 (只查询可显示) #region 获取工单大类(只查询可显示) /// /// 获取工单大类(只查询可显示) /// /// public List GetList_MemoType(int type = 1) { string cacheKey = "cache_MemoType_getList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (crmContext db = new crmContext()) { List list = null; if (type == 0) list = db.ORD_MEMOTYPE.OrderBy(m => m.CTIME).ToList(); else list = db.ORD_MEMOTYPE.OrderBy(m => m.CTIME).Where(m => m.ISSHOW == 1).ToList(); CacheHelper.Set(cacheKey, list); return list; } } #endregion 获取工单大类(只查询可显示) #region 根据Model.Enum.Parameter 获取参数value public string GetValue_Parameter(string key) { string cacheKey = "cache_Parameter_getList"; List modelist; if (CacheHelper.Exists(cacheKey)) modelist = CacheHelper.Get>(cacheKey); else { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { modelist = db.BAS_PARAMETER.ToList(); CacheHelper.Set(cacheKey, modelist); } } WX.CRM.Model.Entity.BAS_PARAMETER model = modelist.FirstOrDefault(m => m.PARAKEY == key); if (model == null) return ""; return model.PARAVALUE; } /// /// 根据Model.Enum.Parameter 获取参数value /// /// public string GetValue_Parameter(WX.CRM.Model.Enum.Parameter key) { string cacheKey = "cache_Parameter_getList"; List modelist; if (CacheHelper.Exists(cacheKey)) modelist = CacheHelper.Get>(cacheKey); else { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { modelist = db.BAS_PARAMETER.ToList(); CacheHelper.Set(cacheKey, modelist); } } WX.CRM.Model.Entity.BAS_PARAMETER sysConfig = modelist.FirstOrDefault(m => m.PARAKEY == "Sys_Environment_DeptCode"); WX.CRM.Model.Entity.BAS_PARAMETER model = modelist.FirstOrDefault(m => m.PARAKEY == key.ToString() && m.DEPTCDOE == sysConfig.PARAVALUE); if (model == null) model = modelist.FirstOrDefault(m => m.PARAKEY == key.ToString() && (m.DEPTCDOE == "" || m.DEPTCDOE == null)); if (model == null) return ""; return model.PARAVALUE; } /// /// 根据系统参数分类获取系统参数列表 /// /// 系统参数分类 /// public List GetList_Parameter(WX.CRM.Model.Enum.ParameterGroup type) { string cacheKey = "cache_Parameter_getList"; List modelist; if (CacheHelper.Exists(cacheKey)) modelist = CacheHelper.Get>(cacheKey); else { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { modelist = db.BAS_PARAMETER.ToList(); CacheHelper.Set(cacheKey, modelist); } } List list = modelist.Where(m => m.GROUPID.Trim() == type.ToString().Trim()).ToList(); return list; } /// /// 根据参数分类和参数值获取参数名 /// /// 参数值 /// 参数分类 /// public string GetParaNameByParavalue(string paravalue, ParameterGroup type) { string cacheKey = "cache_Parameter_getParaNameByParavalue"; List modelist; if (CacheHelper.Exists(cacheKey)) modelist = CacheHelper.Get>(cacheKey); else { using (crmContext db = new crmContext()) { modelist = db.BAS_PARAMETER.ToList(); CacheHelper.Set(cacheKey, modelist); } } string sss = paravalue.Trim(); BAS_PARAMETER model = modelist.FirstOrDefault(m => m.PARAVALUE == sss && m.GROUPID == type.ToString()); if (model == null) return ""; return model.PARANAME; } #endregion 根据Model.Enum.Parameter 获取参数value #region 电话验证码redis缓存业务 // 设置验证码 public void SetVerify(string phone, string verifyCode) { try { var redisUrl = System.Configuration.ConfigurationManager.AppSettings["RedisPath"]; // Redis 的连接配置,根据实际情况修改 ConfigurationOptions config = ConfigurationOptions.Parse(redisUrl); var redisAuth = System.Configuration.ConfigurationManager.AppSettings["RedisAuth"]; if (redisAuth != null && redisAuth != "") { config.Password = System.Configuration.ConfigurationManager.AppSettings["RedisAuth"]; } var redis = ConnectionMultiplexer.Connect(config); // 获取 Redis 数据库 var db = redis.GetDatabase(); var redisVerifyCode = db.HashSet("verifyHash", phone, verifyCode); db.KeyExpire("verifyHash", TimeSpan.FromMinutes(5)); // 关闭 Redis 连接 redis.Close(); } catch (Exception ex) { LogHelper.Error(ex); } } // 判断验证码是否正确 public bool JudgeVerify(string phone, string verifyCode) { var redisUrl = System.Configuration.ConfigurationManager.AppSettings["RedisPath"]; // Redis 的连接配置,根据实际情况修改 ConfigurationOptions config = ConfigurationOptions.Parse(redisUrl); var redisAuth = System.Configuration.ConfigurationManager.AppSettings["RedisAuth"]; if (redisAuth != null && redisAuth != "") { config.Password = System.Configuration.ConfigurationManager.AppSettings["RedisAuth"]; } var redis = ConnectionMultiplexer.Connect(config); var db = redis.GetDatabase(); var redisVerifyCode = db.HashGet("verifyHash", phone); redis.Close(); if (verifyCode == redisVerifyCode) return true; return false; } #endregion 电话验证码redis缓存业务 #region 获取公司业务列表 /// /// 获取公司业务列表 /// /// public List GetList_Business() { string cacheKey = "cache_Business_getList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { var list = db.BAS_BUSINESS.ToList(); CacheHelper.Set(cacheKey, list); return list; } } #endregion 获取公司业务列表 #region 获取内部公司列表 cache_Company_getList /// /// 获取公司列表 /// /// public List GetList_innerCompany() { string cacheKey = "cache_Company_getList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { List list = db.BAS_COMPANY.Where(m => m.ISOUTERAGENT == 0).OrderBy(m => m.CTIME).ToList(); CacheHelper.Set(cacheKey, list); return list; } } #endregion 获取内部公司列表 cache_Company_getList #region 获取销售组树形 cache_InnerGroup_getTreeList /// /// 获取新销售组树形 1 全部 2 业务部门 3 其他部门 /// /// public object GetTreeList_InnerGroup(bool hasUser = false, string filter = "", int type = 1) { var saleName = "sale_"; if (type == 4 || type == 5) { saleName = ""; } string cacheKey = $"cache_InnerGroup_getTreeList{hasUser}{filter}"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get(cacheKey); List objList = new List(); 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(); List innerUserList = db.BAS_INNERUSER.Where(n => n.ISDISMISS != 1 && n.ISHIDE != 1).ToList(); List userDeptList = db.BAS_INNERUSERGROUP.ToList(); var firstNodeList = salesDeptList.Where(n => n.DEPARTMENT_PARENTID == 0 || n.DEPARTMENT_PARENTID == null).ToList(); var i = 0; foreach (var saleDpt in firstNodeList) { var obj = new DropModel { id = saleName + saleDpt.SALEDEPTID, state = "open", text = saleDpt.DEPTNAME, children = null, isspecial = saleDpt.IS_PROFESSION, iconCls = "icon-deptmini", relateId = saleDpt.DEPARTMENT_ID, orginId = saleDpt.SALEDEPTID, filterId = new List { saleDpt.SALEDEPTID }, type = 1 }; BuildChildNode(innerUserList, userDeptList, salesDeptList, innerGroupList, obj, i++, hasUser, filter, saleName, type); objList.Add(obj); } if (!string.IsNullOrWhiteSpace(filter)) { List filterIdList = new List(); filterIdList.AddRange(innerUserList.Where(n => n.EID.ToString().Contains(filter) || n.UNAME.Contains(filter)).Select(n => n.PKID)); filterIdList.AddRange(salesDeptList.Where(n => n.DEPTNAME.ToString().Contains(filter)).Select(n => n.SALEDEPTID)); filterIdList.AddRange(innerGroupList.Where(n => n.GNAME.ToString().Contains(filter)).Select(n => n.GID)); foreach (var item in objList) { BuildFilterTree((DropModel)item, filterIdList); } } //CacheHelper.Set(cacheKey, objList); return objList; } } public void BuildFilterTree(DropModel qobject, List filterIdList) { var childRen = qobject.children; if (childRen == null) { return; } List child = new List(); foreach (var c in childRen) { var isCantain = false; foreach (var filter in filterIdList) { if (c.filterId.Contains(filter)) { isCantain = true; break; } } if (isCantain) { qobject.state = "open"; child.Add(c); BuildFilterTree(c, filterIdList); } } qobject.children = child; } /// /// 递归 构建 树形结构 todo 要是数据不合法可能会有死循环出现 /// /// /// /// /// /// public static void BuildChildNode(List innerUserList, List userDeptList, List salesDeptList, List innerGroupList, DropModel qobject, int i, bool hasUser, string filter, string saleName, int type) { if (qobject.relateId == null) { //return; } var childList = salesDeptList.Where(n => n.DEPARTMENT_PARENTID == qobject.relateId && n.DEPARTMENT_PARENTID != null).OrderBy(n => n.DEPARTMENT_SORT).ToList(); if (i == 0 || i == 1) { qobject.state = type != 5 || qobject.state == "open" ? "open" : "closed"; } var j = 0; foreach (var c in childList) { if (qobject.children == null) { qobject.children = new List(); } var state = "open"; if (c.IS_PROFESSION == 0 || type == 5) { state = "closed"; } var cObject = new DropModel { id = saleName + c.SALEDEPTID, state = state, text = c.DEPTNAME, iconCls = "icon-otherdeptmini", children = null, isspecial = c.IS_PROFESSION, relateId = c.DEPARTMENT_ID, orginId = c.SALEDEPTID, filterId = new List { c.SALEDEPTID }, type = 1 }; BuildChildNode(innerUserList, userDeptList, salesDeptList, innerGroupList, cObject, ++j, hasUser, filter, saleName, type); qobject.children.Add(cObject); } var pobjId = qobject.id; if (!string.IsNullOrWhiteSpace(saleName)) { pobjId = qobject.id.Replace(saleName, ""); } var groupList = innerGroupList.Where(n => n.SALEDEPTID == Convert.ToDecimal(pobjId)).OrderBy(n => n.DEPARTMENT_SORT).ToList(); List gchildList = new List(); foreach (var g in groupList) { if (qobject.children == null) { qobject.children = new List(); } var id = g.GID.ToString(); if (hasUser) { id = saleName + g.GID; } var cObject = new DropModel { id = id, text = g.GNAME, state = "closed", attributes = g.DEPTID.ToString(), iconCls = "icon-groupmini", isspecial = g.IS_PROFESSION, orginId = g.GID, relateId = g.GID, filterId = new List { g.GID }, type = 2 }; if (hasUser) { BuildUserList(innerUserList, userDeptList, g.GID, cObject, type); } if (cObject.children == null || cObject.children.Count() == 0) { cObject.state = null; } qobject.children.Add(cObject); } if (qobject.children != null) { var specialList = qobject.children.Where(n => n.isspecial == null || n.isspecial == 1 || n.isspecial == 3).ToList(); var commonList = qobject.children.Where(n => (n.isspecial != null && n.isspecial == 0) || n.isspecial == 3).ToList(); if (commonList.Count > 0) { qobject.isspecial = 0; } if (specialList.Count > 0) { qobject.isspecial = 1; } if (commonList.Count > 0 && specialList.Count > 0) { qobject.isspecial = 3; } } if (qobject.isspecial > 0 && qobject.type == 1) { qobject.iconCls = "icon-deptmini"; } if (hasUser) { var qobjId = qobject.id; if (!string.IsNullOrWhiteSpace(saleName)) { qobjId = qobject.id.Replace(saleName, ""); } BuildUserList(innerUserList, userDeptList, Convert.ToDecimal(qobjId), qobject, type); } if (qobject.children != null) { qobject.children = qobject.children.OrderByDescending(n => n.isspecial).ToList(); var childFilter = qobject.children.Select(n => n.filterId).ToList(); foreach (var f in childFilter) { qobject.filterId.AddRange(f); } } else { qobject.state = "open"; } if (qobject.children == null || qobject.children.Count() == 0) { qobject.state = null; } } private static void BuildUserList(List innerUserList, List userDeptList, decimal? deptId, DropModel qobject, int type) { var res = new List(); var employeeIds = userDeptList.Where(n => (n.DEPTID == deptId && n.GID == null) || n.GID == deptId).Select(n => n.INNERUSERID).ToList(); var childUserList = innerUserList.Where(x => x.EMPLOYEE_ID != null && employeeIds.Contains(x.PKID)).ToList(); foreach (var u in childUserList) { var cid = u.PKID.ToString(); var orginId = u.PKID; if (type == 5) { cid = u.EID.ToString(); orginId = u.EID; } var cObject = new DropModel { id = cid, text = u.UNAME, iconCls = "icon-usermini", children = null, orginId = orginId, filterId = new List { u.PKID }, type = 3 }; res.Add(cObject); } if (res.Count > 0) { if (qobject.children == null) { qobject.children = new List(); } qobject.children.AddRange(res); qobject.filterId.AddRange(qobject.children.Select(n => n.orginId).ToList()); } } public object GetInneruserTree(bool hasUser = true) { string cacheKey = $"cache_InnerUser_getTreeList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); List objList = new List(); 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(); List innerUserList = db.BAS_INNERUSER.Where(n => n.ISDISMISS != 1).ToList(); List userDeptList = db.BAS_INNERUSERGROUP.ToList(); var firstNodeList = salesDeptList.Where(n => n.DEPARTMENT_PARENTID == 0 || n.DEPARTMENT_PARENTID == null).ToList(); foreach (var saleDpt in firstNodeList) { var item = new InneruserTreeDto { value = saleDpt.SALEDEPTID, name = saleDpt.DEPTNAME, relateId = saleDpt.DEPARTMENT_ID, children = new List() }; BuildUserChildNode(innerUserList, userDeptList, salesDeptList, innerGroupList, item, hasUser); objList.Add(item); } } return objList; } public void BuildUserChildNode(List innerUserList, List userDeptList, List salesDeptList, List innerGroupList, InneruserTreeDto qobject, bool hasUser) { var childList = salesDeptList.Where(n => n.DEPARTMENT_PARENTID == qobject.relateId && n.DEPARTMENT_PARENTID != null).OrderBy(n => n.DEPARTMENT_SORT).ToList(); foreach (var c in childList) { var cObject = new InneruserTreeDto { value = c.SALEDEPTID, name = c.DEPTNAME, relateId = c.DEPARTMENT_ID, children = new List() }; BuildUserChildNode(innerUserList, userDeptList, salesDeptList, innerGroupList, cObject, hasUser); qobject.children.Add(cObject); } var groupList = innerGroupList.Where(n => n.SALEDEPTID == Convert.ToDecimal(qobject.value)).OrderBy(n => n.DEPARTMENT_SORT).ToList(); List gchildList = new List(); foreach (var g in groupList) { var id = g.GID.ToString(); var cObject = new InneruserTreeDto { value = g.GID, name = g.GNAME, relateId = g.DEPARTMENT_ID, children = new List() }; if (hasUser) { BuildUserList(innerUserList, userDeptList, g.GID, cObject); } qobject.children.Add(cObject); } if (hasUser) { BuildUserList(innerUserList, userDeptList, Convert.ToDecimal(qobject.value), qobject); } } private static void BuildUserList(List innerUserList, List userDeptList, decimal? deptId, InneruserTreeDto qobject) { var res = new List(); var employeeIds = userDeptList.Where(n => (n.DEPTID == deptId && n.GID == null) || n.GID == deptId).Select(n => n.INNERUSERID).ToList(); var childUserList = innerUserList.Where(x => employeeIds.Contains(x.PKID)).ToList(); foreach (var u in childUserList) { var cObject = new InneruserTreeDto { value = u.EID, name = u.UNAME, relateId = u.PKID }; res.Add(cObject); } if (res.Count > 0) { qobject.children.AddRange(res); } } #endregion 获取销售组树形 cache_InnerGroup_getTreeList #region 获取销售组树形(只显示销售组) cache_InnerGroup_getTreeList /// /// 获取销售组树形(去除系统组和隐藏组) /// /// public object GetTreeListIsSale_InnerGroup() { string cacheKey = "cache_InnerGroupIsSale_getTreeList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get(cacheKey); using (var db = new WX.CRM.Model.Entity.crmContext()) { WX.CRM.Model.Entity.BAS_COMPANY companyList = db.BAS_COMPANY.OrderBy(m => m.COMPANYID).FirstOrDefault(); List salesDeptList = db.BAS_SALESDEPARTMENT.ToList(); List innerGroupList = db.BAS_INNERGROUP.Where(m => m.ISSALEDEPT == 1).ToList(); List obj = new List(); List childObj = null; List groupObj = null; int i = 0; int j = 0; childObj = new List(); j = 0; foreach (WX.CRM.Model.Entity.BAS_SALESDEPARTMENT saleDpt in salesDeptList.Where(m => m.COMPANYID == companyList.COMPANYID)) { groupObj = new List(); foreach (WX.CRM.Model.Entity.BAS_INNERGROUP inGrp in innerGroupList.Where(x => x.SALEDEPTID == saleDpt.SALEDEPTID)) { groupObj.Add(new { id = inGrp.GID, text = inGrp.GNAME, attributes = inGrp.DEPTID, iconCls = "icon-redmini" }); } childObj.Add(new { id = "sale_" + saleDpt.SALEDEPTID, state = (groupObj.Count == 0 || j == 0 ? "open" : "closed"), text = saleDpt.DEPTNAME, children = groupObj.Count == 0 ? null : groupObj }); j++; } obj.Add(new { id = "com_" + companyList.COMPANYID, state = (childObj.Count == 0 || i == 0 ? "open" : "closed"), text = companyList.COMPANYNAME, children = childObj.Count == 0 ? null : childObj }); CacheHelper.Set(cacheKey, obj); return obj; } } #endregion 获取销售组树形(只显示销售组) cache_InnerGroup_getTreeList #region 获取销售部树形结构 cache_saleDepartMent_getTreeList /// /// 旧的层级关系 /// /// public object GetTreeList_saleDepartMent_Old() { string cacheKey = "cache_saleDepartMent_getTreeList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get(cacheKey); using (crmContext db = new crmContext()) { List companyList = db.BAS_COMPANY.ToList(); List salesDeptList = db.BAS_SALESDEPARTMENT.ToList(); List obj = new List(); foreach (BAS_COMPANY model in companyList) { obj.Add(new { id = "-" + model.COMPANYID, text = model.COMPANYNAME, children = GetTreeChildList_old(salesDeptList, model.COMPANYID) }); } CacheHelper.Set(cacheKey, obj); return obj; } } private List GetTreeChildList_old(List salesDeptList, decimal companyId) { List obj = new List(); foreach (BAS_SALESDEPARTMENT model in salesDeptList.Where(m => m.COMPANYID == companyId)) { obj.Add(new { id = model.SALEDEPTID, text = model.DEPTNAME }); } return obj; } /// /// 新树形结构 /// /// public object GetTreeList_saleDepartMent() { string cacheKey = "cache_saleDepartMent_getTreeList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get(cacheKey); using (crmContext db = new crmContext()) { List salesDeptList = db.BAS_SALESDEPARTMENT.Where(n => n.IS_DELETED != 1).ToList(); var companyList = salesDeptList.Where(n => n.DEPARTMENT_PARENTID == 0 || n.DEPARTMENT_PARENTID == null).ToList(); List obj = new List(); foreach (BAS_SALESDEPARTMENT model in companyList) { obj.Add(new { id = "-" + model.SALEDEPTID, text = model.DEPTNAME, children = GetTreeChildList(salesDeptList, model.DEPARTMENT_ID) }); } CacheHelper.Set(cacheKey, obj); return obj; } } private List GetTreeChildList(List salesDeptList, decimal? companyId) { List obj = new List(); if (companyId == null) { return obj; } foreach (BAS_SALESDEPARTMENT model in salesDeptList.Where(m => m.DEPARTMENT_PARENTID == companyId)) { obj.Add(new { id = model.SALEDEPTID, text = model.DEPTNAME, children = GetTreeChildList(salesDeptList, model.DEPARTMENT_ID) }); } return obj; } public Dictionary BuildDepartMentShowText(List deptIdList) { deptIdList = deptIdList.Where(n => n.HasValue).Distinct().ToList(); Dictionary result = new Dictionary(); using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { List salesDeptList = db.BAS_SALESDEPARTMENT.Where(n => n.IS_DELETED != 1).ToList(); foreach (var deptId in deptIdList) { var res = BuildParentDepartMentShow(deptId, salesDeptList, ""); result.Add(deptId, res.Trim('/')); } return result; } } public string BuildParentDepartMentShow(decimal? depetId, List salesDeptList, string str) { if (depetId == null) { return str; } var parentDept = salesDeptList.Where(n => n.DEPARTMENT_ID == depetId).FirstOrDefault(); if (parentDept != null) { str = $"{parentDept.DEPTNAME}/{str}"; return BuildParentDepartMentShow(parentDept.DEPARTMENT_PARENTID, salesDeptList, str); } return str; } #endregion 获取销售部树形结构 cache_saleDepartMent_getTreeList #region 获取tree数据列表 cache_innerDepartment_getTreeList /// /// 获取tree数据列表(type可以传空,默认折叠部分节点,传1不折叠) /// /// public object GetTreeList_innerDepartment(string type) { string cacheKey = "cache_innerDepartment_getTreeList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get(cacheKey); using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { List innerDepartment = db.BAS_INNERDEPARTMENT.ToList(); List obj = new List(); obj.Add(new { id = 0, text = "公司部门", children = GetTreeChildList(type, innerDepartment, 0) }); CacheHelper.Set(cacheKey, obj); return obj; } } /// /// 获取子节点 /// /// /// /// private object GetTreeChildList(string type, List innerDepartment, decimal parentId) { List obj = null; object childObj = null; object grandchildObj = null; int i = 0; bool isClosed = true; if (!string.IsNullOrWhiteSpace(type) && type == "1") { isClosed = false; } foreach (WX.CRM.Model.Entity.BAS_INNERDEPARTMENT model in innerDepartment.FindAll(m => m.PARENTID == parentId)) { if (obj == null) obj = new List(); grandchildObj = GetTreeChildList(type, innerDepartment, model.DEPTID); if (grandchildObj != null) childObj = new { id = model.DEPTID, state = i == 0 ? "open" : "closed", text = model.DEPTNAME, children = grandchildObj }; else childObj = new { id = model.DEPTID, text = model.DEPTNAME, children = grandchildObj }; obj.Add(childObj); if (isClosed) i++; } return obj; } #endregion 获取tree数据列表 cache_innerDepartment_getTreeList #region 获取部门信息 /// /// 获取部门信息 /// /// public Dictionary GetDictionary_InnerDepartMent() { string cacheKey = "cache_InnerDepartMent_getDic"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (WX.CRM.Model.Entity.crmContext db = new crmContext()) { List list = db.BAS_INNERDEPARTMENT.ToList(); Dictionary dic = new Dictionary(); foreach (var model in list) { dic.Add(model.DEPTID, model.DEPTNAME); } CacheHelper.Set(cacheKey, dic); return dic; } } #endregion 获取部门信息 #region 获取tree数据列表(包括了挂在部门里面的销售组) cache_DeptGroup_getTreeList /// /// 获取tree数据列表 /// /// public object GetDeptGroupTreeList_DeptGroup() { string cacheKey = "cache_DeptGroup_getTreeList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get(cacheKey); using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { List innerDepartment = db.BAS_INNERDEPARTMENT.ToList(); List innerGroup = db.BAS_INNERGROUP.ToList(); List obj = new List(); obj.Add(new { id = 0, text = "公司部门", children = GetDeptGroupTreeChildList(innerDepartment, innerGroup, 0) }); CacheHelper.Set(cacheKey, obj); return obj; } } /// /// 获取子节点 /// /// /// /// private object GetDeptGroupTreeChildList(List innerDepartment, List innerGroup, decimal parentId) { List obj = null; object childObj = null; object grandchildObj = null; int i = 0; foreach (WX.CRM.Model.Entity.BAS_INNERDEPARTMENT model in innerDepartment.FindAll(m => m.PARENTID == parentId)) { if (obj == null) obj = new List(); grandchildObj = GetDeptGroupTreeChildList(innerDepartment, innerGroup, model.DEPTID); if (grandchildObj != null) childObj = new { id = model.DEPTID, state = i == 0 ? "open" : "closed", text = model.DEPTNAME, children = grandchildObj }; else childObj = new { id = model.DEPTID, text = model.DEPTNAME, children = grandchildObj }; obj.Add(childObj); i++; } foreach (WX.CRM.Model.Entity.BAS_INNERGROUP model in innerGroup.FindAll(m => m.DEPTID == parentId)) { if (obj == null) obj = new List(); obj.Add(new { id = "g_" + model.SALEDEPTID, text = model.GNAME, iconCls = "icon-redmini" }); } return obj; } #endregion 获取tree数据列表(包括了挂在部门里面的销售组) cache_DeptGroup_getTreeList #region 获取短信类型 public List GetSmsTypeList() { string cacheKey = "cache_smsTypeList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (var db = new WX.CRM.Model.Entity.crmContext()) { List msgType = db.SMS_MSGTYPE.ToList(); CacheHelper.Set(cacheKey, msgType); return msgType; } } /// /// 获取短信类型 树形 /// /// public object GetSmsTypeTreeList() { string cacheKey = "cache_smsType_getTreeList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get(cacheKey); using (var db = new WX.CRM.Model.Entity.crmContext()) { List msgType = db.SMS_MSGTYPE.ToList(); List msgSubType = db.SMS_MSGSUBTYPE.ToList(); var obj = new List(); foreach (var model in msgType) { obj.Add(new { id = "-" + model.TYPECODE, text = model.TYPENAME, children = GetSmsTypeTreeChildList(msgSubType, model.TYPECODE) }); } CacheHelper.Set(cacheKey, obj); return obj; } } /// /// 获取短信crm短信类型 树形(根据短信大类) /// /// 短信大类 /// public object GetSmsCrmTreeList() { string cacheKey = "cache_smsCrmType_getTreeList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get(cacheKey); using (var db = new WX.CRM.Model.Entity.crmContext()) { List msgType = db.SMS_MSGTYPE.Where(m => m.TYPECODE == "CRMSMS0001").ToList(); List msgSubType = db.SMS_MSGSUBTYPE.ToList(); var obj = new List(); foreach (var model in msgType) { obj.Add(new { id = "-" + model.TYPECODE, text = model.TYPENAME, children = GetSmsTypeTreeChildList(msgSubType, model.TYPECODE) }); } CacheHelper.Set(cacheKey, obj); return obj; } } private List GetSmsTypeTreeChildList(List msgSubType, string parentId) { var obj = new List(); foreach (var model in msgSubType.Where(m => m.TYPECODE == parentId)) { obj.Add(new { id = model.SUBTYPEID, typeCode = model.TYPECODE, subTypeCode = model.SUBTYPECODE, text = model.SUBTYPENAME }); } return obj; } #endregion 获取短信类型 #region 员工 public Dictionary GetList_Inneruser() { string cacheKey = "cache_Inneruser_getList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (crmContext db = new crmContext()) { Dictionary dic = new Dictionary(); List list = db.BAS_INNERUSER.ToList(); foreach (var item in list) { dic.Add(item.PKID, item.EID.ToString() + "-" + item.UNAME); } CacheHelper.Set(cacheKey, dic); return dic; } } public List GetUserList() { var cacheKey = "cache_user_list"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (var db = new crmContext()) { var list = db.BAS_INNERUSER.Where(m => m.ISHIDE == 0).ToList(); CacheHelper.Set(cacheKey, list); return list; } } public IList> GetUserNameAndIdList() { IList> res = new List>(); var cacheKey = "cache_select_showbox_list"; if (!CacheHelper.TryGet(cacheKey, ref res)) { res = new List>(); using (var db = new crmContext()) { var list = db.BAS_INNERUSER.Where(m => m.ISHIDE == 0).ToList(); foreach (var item in list) { IDictionary r = new Dictionary(); r.Add("uname", item.UNAME); r.Add("eid", item.EID); res.Add(r); } CacheHelper.Set(cacheKey, res); } } return res; } #endregion 员工 #region 组 public List GetGroupList() { var cacheKey = "cache_group_list"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (var db = new crmContext()) { var list = db.BAS_INNERGROUP.OrderBy(m => m.CTIME).ToList(); CacheHelper.Set(cacheKey, list); return list; } } #endregion 组 #region 员工组关系 /// /// 员工组关系 /// /// public List GetList_InnerUserGroup() { string cacheKey = "cache_InnerUserGroup_getList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (crmContext db = new crmContext()) { List list = db.BAS_INNERUSERGROUP.ToList(); CacheHelper.Set(cacheKey, list); return list; } } /// /// 根据 组获取员工ID /// /// /// public string GetUserIds_ByGorups(string groups) { List list = null; if (string.IsNullOrWhiteSpace(groups)) list = GetList_InnerUserGroup();//group为空返回所有 else { decimal[] groupdIds = OperationUtil.ConvertToDecimal(groups.Trim().Split(',')); list = GetList_InnerUserGroup().Where(m => groupdIds.Contains(m.GID.Value)).ToList(); } string ids = "-1"; foreach (var item in list) { ids += "," + item.INNERUSERID; } return ids; } #endregion 员工组关系 #region 销售部列表 public List GetList_SalesDepartMent() { string cacheKey = "cache_SalesDepartMent_getList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { var list = db.BAS_SALESDEPARTMENT.OrderBy(m => m.CREATIONDATE).ToList(); CacheHelper.Set(cacheKey, list); return list; } } public List GetList_BusinessLines() { string cacheKey = "cache_SGetList_BusinessLines_getList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { var list = db.BAS_BUSINESSLINES.OrderBy(m => m.BUSINESSID).ToList(); CacheHelper.Set(cacheKey, list, DateTime.Now.AddMinutes(30)); return list; } } public List GetList_BusinessChannels() { var cacheKey = "cache_GetList_BusinessChannels"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (var db = new crmContext()) { var list = db.BAS_BUSINESSCHANNEL.ToList(); CacheHelper.Set(cacheKey, list); return list; } } public Dictionary> GetList_OrderDeptBusiness() { string cacheKey = "cache_saleCodeLineMap_getList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>>(cacheKey); var deptList = GetList_SalesDepartMent().Where(n => n.CHANNELDEF.HasValue).ToList(); Dictionary> res = new Dictionary>(); UserServices userservices = new UserServices(new CACHE_BL()); using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { var ch = decimal.Parse(Utility.GetSettingOrNullByKey("Channel")); var businessList = GetList_BusinessLines(); //var deptCodeList = GetList_SalesDepartMent().Where(n => filterIds.Contains(n.SALEDEPTID) && n.CHANNELDEF != null).Select(n => n.SALEDEPTCODE).ToList(); var defaultBusiness = db.BAS_BUSINESSCHANNEL.FirstOrDefault(n => n.MINCHANNEL <= ch && n.MAXCHANNEL >= ch); if (defaultBusiness != null) { var defaultLine = businessList.FirstOrDefault(n => n.BUSINESSID == defaultBusiness.BUSINESSID); res.Add("default", new List { defaultLine }); } foreach (var item in deptList) { List ALLdeptIDS = new List(); List ALLgidS = new List(); //向下遍历 userservices.GetAllDeptIDOrGidByDeptStr(item.SALEDEPTID.ToString(), ref ALLdeptIDS, ref ALLgidS); var pardeptList = userservices.GetParentDeptId(item.SALEDEPTID); ALLdeptIDS.AddRange(pardeptList); var busDeptList = db.BAS_BUSINESSDEPARTMENT.Where(n => ALLdeptIDS.Contains(n.DEPTID)).ToList(); var lineList = businessList.Where(n => busDeptList.Select(m => m.BUSINESSID).Contains(n.BUSINESSID)).ToList(); if (!res.ContainsKey(item.SALEDEPTCODE)) { res.Add(item.SALEDEPTCODE, lineList); } } CacheHelper.Set(cacheKey, res); } return res; } #endregion 销售部列表 #region 业务线关系 /// /// 业务线部门关系表 /// /// public List GetList_BussinessDepartMent() { string cacheKey = "cache_BussinessDepartMent_getList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { var list = db.BAS_BUSINESSDEPARTMENT.OrderBy(m => m.CTIME).ToList(); CacheHelper.Set(cacheKey, list); return list; } } /// /// 业务线 /// /// public List GetList_BussinessLine() { string cacheKey = "cache_GetList_BussinessLine_getList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { var list = db.BAS_BUSINESSLINES.OrderBy(m => m.CTIME).ToList(); CacheHelper.Set(cacheKey, list); return list; } } public List GetList_deptLineMap() { string cacheKey = "cache_GetList_deptLineMap"; if (CacheHelper.Exists(cacheKey)) { return CacheHelper.Get>(cacheKey); } else { var lineDept = GetList_BussinessDepartMent(); var saleList = GetList_SalesDepartMent(); List res = new List(); foreach (var item in lineDept) { var dept = saleList.FirstOrDefault(n => n.SALEDEPTID == item.DEPTID); if (dept == null) { continue; } var newMap = new DeptLineMap { deptid = new List { item.BUSINESSID }, saleId = item.DEPTID, deptName = dept.DEPTNAME }; //res.Add(newMap); BuildSaleLine(res, saleList, newMap); } CacheHelper.Set(cacheKey, res); return res; } } public void BuildSaleLine(List res, List deptList, DeptLineMap nowItem) { if (!res.Exists(n => n.saleId == nowItem.saleId)) { res.Add(nowItem); } var dept = deptList.FirstOrDefault(n => n.SALEDEPTID == nowItem.saleId); var parentItem = deptList.FirstOrDefault(n => n.DEPARTMENT_ID == dept.DEPARTMENT_PARENTID && dept.DEPARTMENT_PARENTID.HasValue); if (parentItem == null) { return; } if (parentItem != null) { var parMap = res.FirstOrDefault(n => n.saleId == parentItem.SALEDEPTID); var nextMap = new DeptLineMap(); if (parMap == null) { nextMap = new DeptLineMap { saleId = parentItem.SALEDEPTID, deptid = nowItem.deptid, deptName = parentItem.DEPTNAME }; } else { var deptids = new List(); deptids.AddRange(parMap.deptid); deptids.AddRange(nowItem.deptid); //parMap.deptid.AddRange(nowItem.deptid); parMap.deptid = deptids.Distinct().ToList(); nextMap.deptid = parMap.deptid; nextMap.saleId = parMap.saleId; } BuildSaleLine(res, deptList, nextMap); } } #endregion 业务线关系 #region 菜单缓存 /// /// 菜单缓存 /// /// public List GetList_LeftMemu() { string cacheKey = "cache_LeftMemu_getList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (var db = new WX.CRM.Model.Entity.crmContext()) { var list = db.BAS_LEFTMEMU.ToList(); CacheHelper.Set(cacheKey, list); return list; } } /// /// 模块导航菜单缓存 /// /// public List GetList_ModuleMenu() { string cacheKey = "cache_ModuleMenu_getList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (var db = new WX.CRM.Model.Entity.crmContext()) { var list = db.BAS_MODULEMENU.OrderBy(m => m.SORTID).ToList(); CacheHelper.Set(cacheKey, list); return list; } } #endregion 菜单缓存 #region 获取软件活动信息 /// /// 获取软件活动信息 /// /// public List GetList_SoftProduct() { string cacheKey = "cache_softproduct_getList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (crmContext db = new crmContext()) { List list = db.SOFT_ACTIVE.ToList(); CacheHelper.Set(cacheKey, list); return list; } } #endregion 获取软件活动信息 #region 桌面信息缓存 /// /// 获取最新开户信息(五分钟过期) /// /// 根据用户来存储 /// public List GetNewOpenAccountList(decimal userId) { string cacheKey = "cache_msgOpenAccountList" + userId.ToString(); if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (var db = new WX.CRM.Model.Entity.crmContext()) { List list = db.CSVR_MSGOPENACCOUNT.Where(m => m.SALESID == userId).OrderByDescending(m => m.CTIME).Take(10).ToList(); CacheHelper.Set(cacheKey, list, DateTime.Now.AddMinutes(5), false); return list; } } /// /// 获取最近通话记录(五分钟过期) /// /// 用户工号 /// public List GetCallInLogList(decimal eid) { string cacheKey = "cache_callInLogList" + eid.ToString(); if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (var db = new WX.CRM.Model.Entity.crmContext()) { List list = db.CSVR_CALLINLOG.Where(m => m.SALESEID == eid).OrderByDescending(m => m.CTIME).Take(10).ToList(); CacheHelper.Set(cacheKey, list, DateTime.Now.AddMinutes(5), false); return list; } } /// /// 获取最近通话记录(五分钟过期) /// /// 用户工号 /// public List GetCallLogList(decimal eid) { string cacheKey = "cache_callLogList" + eid.ToString(); if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (var db = new WX.CRM.Model.Entity.crmContext()) { List list = db.CSVR_TODAYRECORD.Where(m => m.SALESEID == eid).OrderByDescending(m => m.CTIME).Take(10).ToList(); CacheHelper.Set(cacheKey, list, DateTime.Now.AddMinutes(5), false); return list; } } #endregion 桌面信息缓存 #region l2 产品 public List GetProductDetail() { string cacheKey = "cache_L2SoftProduct_getList"; List list; if (CacheHelper.Exists(cacheKey)) list = CacheHelper.Get>(cacheKey); else using (crmContext db = new crmContext()) { var queryData = (from a in db.L2_SOFT_BIGPRODUCT select new L2Soft_ProductDetail() { PRODUCTID = a.PRODUCTID, PRODUCTCODE = a.PRODUCTCODE, PRODUCTNAME = a.PRODUCTNAME, ISDISABLED = a.ISDISABLED, USECLIENT = a.USECLIENT, GROUPID = a.GROUPID, softProduct = (from b in db.L2_SOFT_PRODUCT where b.BIGPRODUCTID == a.PRODUCTID select new L2Soft_Product() { PRODUCTID = b.PRODUCTID, PRODUCTCODE = b.PRODUCTCODE, PRODUCTNAME = b.PRODUCTNAME, PRICE = b.PRICE, DAYS = b.DAYS, ISDISABLED = b.ISDISABLED, softModule = (from c in db.L2_SOFT_PRODUCTMODULE join d in db.L2_SOFT_MODULE on c.MODULEID equals d.MODULEID where c.PRODUCTID == b.PRODUCTID select new L2Soft_Module() { MODULEID = d.MODULEID, MODULENAME = d.MODULENAME, DEFAULTDAYS = d.DEFAULTDAYS }) }) } ); list = queryData.ToList(); } return list; } /// /// L2产品大类 /// /// public List GetBigProductList() { List list; string cacheKey = "cache_L2SoftBigProduct_getList"; if (CacheHelper.Exists(cacheKey)) list = CacheHelper.Get>(cacheKey); else using (var contex = new Model.Entity.crmContext()) { list = contex.L2_SOFT_BIGPRODUCT.ToList(); } return list; } /// /// L2产品小类 /// /// public List GetSProductList() { List list; string cacheKey = "cache_L2SoftSProduct_getList"; if (CacheHelper.Exists(cacheKey)) list = CacheHelper.Get>(cacheKey); else using (var contex = new Model.Entity.crmContext()) { list = contex.L2_SOFT_PRODUCT.ToList(); } return list; } public List GetAllModule() { List list; string cacheKey = "cache_L2SoftModel_getList"; if (CacheHelper.Exists(cacheKey)) list = CacheHelper.Get>(cacheKey); else using (var contex = new Model.Entity.crmContext()) { list = contex.SOFT_MODULE.ToList(); } return list; } #endregion l2 产品 #region 录音分类 public List GetList_RecordType() { List list; string cacheKey = "cache_RecordType_getList"; if (CacheHelper.Exists(cacheKey)) list = CacheHelper.Get>(cacheKey); else using (var contex = new WX.CRM.Model.Entity.crmContext()) { list = contex.CSVR_RECORDTYPE.ToList(); } return list; } #endregion 录音分类 #region 获取资源类型 public IList GetResourceType() { var cacheKey = "cache_resourcetype_getlist"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (crmContext db = new crmContext()) { var list = db.RES_RESOURCETYPE.ToList(); CacheHelper.Set(cacheKey, list); return list; } } #endregion 获取资源类型 #region 获取资源活动信息 /// /// 获取软件活动信息 /// /// public List GetList_ResActivity() { string cacheKey = "cache_resactivity_getList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (crmContext db = new crmContext()) { List list = db.RES_ACTIVITY.ToList(); CacheHelper.Set(cacheKey, list); return list; } } #endregion 获取资源活动信息 #region 房间 public List GetRoomList() { string cacheKey = "cache_Room_getList"; List modelist; if (CacheHelper.Exists(cacheKey)) modelist = CacheHelper.Get>(cacheKey); else { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { modelist = db.BAS_ROOM.ToList(); CacheHelper.Set(cacheKey, modelist); } } return modelist; } #endregion 房间 public List GetList_CallOutPara() { List list; string cacheKey = "cache_GetList_CallOutPara"; if (CacheHelper.Exists(cacheKey)) list = CacheHelper.Get>(cacheKey); else using (var contex = new WX.CRM.Model.Entity.crmContext()) { list = contex.CSVR_CALLOUTPARA.ToList(); CacheHelper.Set(cacheKey, list); } return list; } #region 获取主管信息 public IList GetGroupleaders() { string cacheKey = "cache_Groupleader_list"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (crmContext db = new crmContext()) { List list = new BAS_GROUPLEADER_BL().GetList(string.Empty, string.Empty); CacheHelper.Set(cacheKey, list); return list; } } #endregion 获取主管信息 #region 获取部门经理ID public decimal GetDeptManager(decimal gid) { var roles = GetList_Role(); var BMZG = roles.FirstOrDefault(p => p.CODE == "BMZG"); if (BMZG == null) return 0; var userRole = GetUserRole().Where(p => p.ROLEID == BMZG.ROLEID); var userGroup = GetList_InnerUserGroup().FirstOrDefault(p => userRole.Select(m => m.INNERUSERID).Contains(p.INNERUSERID) && p.GID == gid); if (userGroup == null) return 0; return userGroup.INNERUSERID; } #endregion 获取部门经理ID #region 获取actionlogconfig信息 public IList GetActionLogConfig() { string cacheKey = "cache_actionlogconfig_list"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (var db = new crmContext()) { var list = new BAS_ACTIONLOGCONFIG_BL().GetList(); CacheHelper.Set(cacheKey, list); return list.ToList(); } } #endregion 获取actionlogconfig信息 #region 获取期货产品信息 /// /// 获取产品信息 /// /// public List GetList_QH_Product() { string cacheKey = "cache_QH_product_getList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (crmContext db = new crmContext()) { List list = db.QH_PRODUCT.ToList(); CacheHelper.Set(cacheKey, list); return list; } } #endregion 获取期货产品信息 #region public Dictionary GetResSalesgroup() { var cacheKey = "cache_Res_SalesGroup"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (var db = new crmContext()) { var arr = new List() { 1493850899, 1617255440 }; var list = db.RES_SALESGROUP_DETAIL.Where(p => arr.Contains(p.GROUPID)).ToDictionary(p => p.INNERUSERID, p => p.GROUPID); return list; } } #endregion #region 省 public List GetProvince() { var cacheKey = "cache_Province"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (var db = new crmContext()) { var list = db.BAS_PROVINCE.ToList(); CacheHelper.Set(cacheKey, list); return list; } } #endregion #region 市 public List GetCity() { var cacheKey = "cache_City"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); using (var db = new crmContext()) { var list = db.BAS_CITY.ToList(); CacheHelper.Set(cacheKey, list); return list; } } #endregion public Dictionary GetAiHgrecordStatusnameKV() { Dictionary Ai_hgrecord_statusnameKV = new Dictionary(); Ai_hgrecord_statusnameKV.Add(-1, "忽略不做AI外呼"); Ai_hgrecord_statusnameKV.Add(0, "尚未进行AI外呼"); Ai_hgrecord_statusnameKV.Add(1, "等待AI外呼"); Ai_hgrecord_statusnameKV.Add(2, "AI外呼需人工介入"); Ai_hgrecord_statusnameKV.Add(5, "AI外呼成功"); Ai_hgrecord_statusnameKV.Add(4, "电子回访成功"); Ai_hgrecord_statusnameKV.Add(9, "人工回访成功"); return Ai_hgrecord_statusnameKV; } public List GetAiConfig() { var cacheKey = "AiCallConfig"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>(cacheKey); return new List(); } #region 获取员工当前部门渠道 public string GetCurChannel(decimal userId) { var groups = GetGroupList(); var ug = GetList_InnerUserGroup(); var depment = GetList_SalesDepartMent(); var uginfo = ug.Find(p => p.INNERUSERID == userId); if (uginfo != null) { var group = groups.Find(p => p.GID == uginfo.GID); if (group != null) { var dep = depment.Find(p => p.SALEDEPTID == group.SALEDEPTID); if (dep != null) { if (dep.CHANNELDEF.HasValue) return dep.CHANNELDEF.Value.ToString(); } } } return null; } public List> GetDeptDownList() { var cacheKey = "cache_deptDownList"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get>>(cacheKey); var companyList = GetList_BusinessLines(); var list = GetDeptNameMapList(); var allChannel = new List>(); foreach (var item in companyList) { var company = list.FirstOrDefault(n => n.id == item.BUSINESSID); if (company != null) { var channel = new Dictionary { { "name", company.title }, { "value", company.id.ToString() } }; allChannel.Add(channel); } } CacheHelper.Set(cacheKey, allChannel, DateTime.Now.AddDays(1)); return allChannel; } #endregion #region 获取全部事业部相关配置 public List GetDeptNameMapList() { List list; string cacheKey = "cache_GetList_GetDeptNameMapList"; if (CacheHelper.Exists(cacheKey)) { list = CacheHelper.Get>(cacheKey); } else { var webapi = GetValue_Parameter(Parameter.ZXD_CORE_WEBAPI); var url = $"{webapi}/Api/Deptment/Depts"; var dataJson = Utility.GetData(url, "", Encoding.UTF8); var result = JsonConvert.DeserializeObject(dataJson); CacheHelper.Set(cacheKey, result.data, DateTime.Now.AddMinutes(30)); return result.data; } return list; } public Dictionary ConvertChannelName(List list, List channelList) { Dictionary res = new Dictionary(); channelList = channelList.Distinct().ToList(); foreach (var channel in channelList) { foreach (var item in list) { foreach (var ch in item.deptmentCampains) { if (channel >= ch.startCampainId && channel <= ch.endCampainId) { if (res.ContainsKey(channel)) { continue; } res.Add(channel, item.title); } } } } return res; } public List ConvertChannelName(List channelList) { var list = GetDeptNameMapList(); List res = new List(); Dictionary res1 = new Dictionary(); channelList = channelList.Distinct().ToList(); foreach (var channel in channelList) { foreach (var item in list) { foreach (var ch in item.deptmentCampains) { if (channel >= ch.startCampainId && channel <= ch.endCampainId) { res.Add(new DeptChannelModel { channel = channel, title = item.title, code = item.code, id = item.id, groupId = item.groupId.HasValue ? item.groupId.Value : 0 }); } } } } return res; } public List GetUserDeptNameByEid(List eidList) { eidList = eidList.Distinct().ToList(); List res = new List(); if (eidList.Count() == 0) { return res; } try { var url = GetValue_Parameter(Parameter.Core_ZxdService_WebApi); url = $"{url}Api/SSO/GetDeptNameByEid"; var para = $"eidList={string.Join(",", eidList)}"; var data = Utility.GetData(url, para, Encoding.Default); var apiData = Utility.ToObject>>(data); if (apiData.Code == 0) { res = apiData.Data; } else { throw new Exception(apiData.Message); } } catch (Exception ex) { LogHelper.Error($"获取SSO事业部失败{ex.Message}"); } return res; } #endregion #region 手机号新加密 public string GetPhonePublicKey() { var cacheKey = "PhonePublicKey"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get(cacheKey); else { var phoneSetting = GetValue_Parameter("phoneSetting"); var set = JsonConvert.DeserializeObject(phoneSetting); // 读取PEM文件 string pemFilePath = $"{AppDomain.CurrentDomain.BaseDirectory}/{set.publicKey}"; string pemContent = File.ReadAllText(pemFilePath); MSecurityHelper sHelper = new MSecurityHelper(); var publicKey = sHelper.PemToXml(pemContent, false); CacheHelper.Set(cacheKey, publicKey); return publicKey; } } public string GetPhonePrivateKey() { var cacheKey = "PhonePrivateKey"; if (CacheHelper.Exists(cacheKey)) return CacheHelper.Get(cacheKey); else { var phoneSetting = GetValue_Parameter("phoneSetting"); var set = JsonConvert.DeserializeObject(phoneSetting); // 读取PEM文件 string pemFilePath = $"{AppDomain.CurrentDomain.BaseDirectory}/{set.privateKey}"; string pemContent = File.ReadAllText(pemFilePath); MSecurityHelper sHelper = new MSecurityHelper(); var publicKey = sHelper.PemToXml(pemContent, true); CacheHelper.Set(cacheKey, publicKey); return publicKey; } } public string GetUMid(string phone) { try { var phoneSetting = GetValue_Parameter("phoneSetting"); if (!string.IsNullOrWhiteSpace(phoneSetting)) { var set = JsonConvert.DeserializeObject(phoneSetting); MSecurityHelper sHelper = new MSecurityHelper(); phone = phone.TrimStart('0').Replace(" ", ""); var jsonbody = new { name = set.key, mobile = phone }; var publickey = GetPhonePublicKey(); var privatekey = GetPhonePrivateKey(); var content = sHelper.content(jsonbody.ToJson(), publickey); //解密操作 var sign = sHelper.sign(content, privatekey); var headers = new Dictionary(); headers.Add("content", content); headers.Add("sign", sign); var postdata = new { name = set.key, content = content, sign = sign }; var url = $"{set.url.Trim('/')}/encrypt"; //需要做成配置 LogHelper.Info($"开始请求接口{postdata.ToJson()}"); var urlResult = Utility.PostAjaxData(url, postdata.ToJson(), headers, Encoding.UTF8); var signdata = JsonConvert.DeserializeObject(urlResult); var resultdata = sHelper.decyptSign(signdata.sign, signdata.content, publickey, privatekey); LogHelper.Info($"解密手机号得到{resultdata}"); var middata = JsonConvert.DeserializeObject(resultdata); if (middata != null && middata.code == 200) { return middata.data; } else { throw new Exception($"获取新的手机号失败Middata{resultdata}"); } } else { throw new Exception($"获取新的手机号失败没有配置"); } } catch (Exception ex) { LogHelper.Error($"获取新的手机号失败{ex.Message}"); throw ex; } } public string GetPhone(string umid) { try { var phoneSetting = GetValue_Parameter("phoneSetting"); if (!string.IsNullOrWhiteSpace(phoneSetting)) { var set = JsonConvert.DeserializeObject(phoneSetting); MSecurityHelper sHelper = new MSecurityHelper(); var jsonbody = new { name = set.key, key = umid }; var publickey = GetPhonePublicKey(); var privatekey = GetPhonePrivateKey(); var content = sHelper.content(jsonbody.ToJson(), publickey); //解密操作 var sign = sHelper.sign(content, privatekey); var headers = new Dictionary(); headers.Add("content", content); headers.Add("sign", sign); var postdata = new { name = set.key, content = content, sign = sign }; var url = $"{set.url.Trim('/')}/decrypt"; //需要做成配置 LogHelper.Info($"开始请求接口{postdata.ToJson()}"); var urlResult = Utility.PostAjaxData(url, postdata.ToJson(), headers, Encoding.UTF8); var signdata = JsonConvert.DeserializeObject(urlResult); var resultdata = sHelper.decyptSign(signdata.sign, signdata.content, publickey, privatekey); LogHelper.Info($"解密手机号得到{resultdata}"); var middata = JsonConvert.DeserializeObject(resultdata); if (middata != null && middata.code == 200) { return middata.data; } else { throw new Exception($"获取新的手机号失败Middata{resultdata}"); } } else { throw new Exception($"获取新的手机号失败没有配置"); } } catch (Exception ex) { LogHelper.Error($"获取新的手机号失败{ex.Message}"); throw ex; } } #endregion } #region 手机号加解密 public class PhoneSetting { public string key { get; set; } public string url { get; set; } public string publicKey { get; set; } public string privateKey { get; set; } } #endregion public class CRMApiData { public int Code { get; set; } public string Message { get; set; } public T Data { get; set; } } public class DeptMentReturnModel { public decimal? Eid { get; set; } public int? DeptId { get; set; } public string DeptName { get; set; } public int? SaleDeptId { get; set; } } /// /// 下拉列表构建 /// public class DropModel { public string id { get; set; } public string state { get; set; } public string text { get; set; } public string attributes { get; set; } public string iconCls { get; set; } /// /// 是否特殊 1 为专业部门 0为其他部门 3同为专业部门和其他部门 /// public decimal? isspecial { get; set; } /// /// db Id /// public decimal orginId { get; set; } /// /// 下级Id /// public List filterId { get; set; } = new List(); /// /// 关联id /// public decimal? relateId { get; set; } /// /// 1 部门 2 销售组 3 人员 /// public decimal type { get; set; } = 1; public List children { get; set; } } }