using System; using System.Collections.Generic; using System.Linq; using WX.CRM.BLL.Base; using WX.CRM.BLL.Res; using WX.CRM.BLL.Util; using WX.CRM.Common; using WX.CRM.DAL.Res; using WX.CRM.IBLL.Csvr; using WX.CRM.DAL.Res; using WX.CRM.BLL.Res; using WX.CRM.Model.MAP; using WX.CRM.BLL.Application.UserComBox; using WX.CRM.Model.Entity; namespace WX.CRM.BLL.Csvr { public class CSVR_FAVORITECUSTOMER_BL : ICSVR_FAVORITECUSTOMER, ICSVR_FAVORITECUSTOMER_Q { private RES_SHAREDPOOL_DAL _sharedPool_dal = new RES_SHAREDPOOL_DAL(); private RES_MYALLOCATERES_BL _resMyAllocateRes = new RES_MYALLOCATERES_BL(); private CACHE_BL _cache = new CACHE_BL(); #region 添加 public bool Create(ref ValidationErrors errors, WX.CRM.Model.Entity.CSVR_FAVORITECUSTOMER model, decimal eid, decimal userId) { try { using (var db = new crmContext()) { var isExists = db.CSVR_FAVORITECUSTOMER.Any(p => p.RESID == model.RESID); if (isExists) { errors.Add("该客户已经被收藏,您不能再收藏了!"); return false; } //如果在高级回收池里面 //var isHS = db.RES_SENIORSHAREDPOOL.Any(p => p.RESID == model.RESID); //if (isHS) //{ // //共享池获取资源,写入归属 // var info = new RES_ALLCOTE_USER() // { // ID = new SEQUENCES_BL().Seq_base_get(), // INNERUSERID = userId, // EID = eid, // NUM = 1, // CTIME = DateTime.Now, // PICI = new SEQUENCES_BL().Seq_base_get(), // RESID = model.RESID, // TYPE = 1 // }; // db.RES_ALLCOTE_USER.Add(info); // var eid1000 = _cache.GetUserList().FirstOrDefault(p => p.EID == 10000).PKID; // _resMyAllocateRes.ExeSeniorDistributeByResId(eid1000, info.PICI, "高级共享池获取写入", 0); //} //else //{ // //是否存在归属 // var isGS = db.RES_MYALLOCATERES.Any(p => p.RESID == model.RESID && p.INNERUSERID == userId); // if (!isGS) // { // errors.Add("该客户已经有归属,您不能收藏!"); // return false; // } // //如果分配表没有数据,说明不存在归属,写入归属,然后收藏 // var isFP = db.RES_MYALLOCATERES.Any(p => p.RESID == model.RESID); // if (!isFP) // { // //共享池获取资源,写入归属 // var info = new RES_ALLCOTE_USER() // { // ID = new SEQUENCES_BL().Seq_base_get(), // INNERUSERID = userId, // EID = eid, // NUM = 1, // CTIME = DateTime.Now, // PICI = new SEQUENCES_BL().Seq_base_get(), // RESID = model.RESID, // TYPE = 1 // }; // db.RES_ALLCOTE_USER.Add(info); // var eid1000 = _cache.GetUserList().FirstOrDefault(p => p.EID == 10000).PKID; // _resMyAllocateRes.ExeSeniorDistributeByResId(eid1000, info.PICI, "共享池获取写入", 0); // } //} model.PKID = new SEQUENCES_BL().Seq_base_get(WX.CRM.Model.Enum.PKIDType.LargeTable); model.CTIME = DateTime.Now; db.CSVR_FAVORITECUSTOMER.Add(model); decimal? oldeid = null; var myRes = db.RES_MYALLOCATERES.FirstOrDefault(p => p.RESID == model.RESID); if (myRes != null) { oldeid = db.BAS_INNERUSER.FirstOrDefault(p => p.PKID == myRes.INNERUSERID).EID; } if (oldeid.HasValue) { //多个归属,以收藏客户优先 //写入关系操作表 if (oldeid.Value != eid) { //eid相等说明是自己的资源,不需要更新关系 db.RES_MYALLOCATERES_ACT.Add(new RES_MYALLOCATERES_ACT(new SEQUENCES_BL().Seq_base_get(Model.Enum.PKIDType.LargeTable), model.RESID, eid, 0, "update", oldeid.Value)); } } else { //oldeid 为空,回收池资源, //写入关系操作表 db.RES_MYALLOCATERES_ACT.Add(new RES_MYALLOCATERES_ACT(new SEQUENCES_BL().Seq_base_get(Model.Enum.PKIDType.LargeTable), model.RESID, eid, 0, "add", null)); } var customerDetial = db.RES_CUSTOMERDETAIL.FirstOrDefault(p => p.RESID == model.RESID); var favCustomerHis = new CSVR_FAVORITECUSTOMER_HIS() { PKID = new SEQUENCES_BL().Seq_base_get(WX.CRM.Model.Enum.PKIDType.LargeTable), SALESID = model.SALESID, RESID = model.RESID, PARAKEY = model.PARAKEY, MEMO = model.MEMO, CTIME = model.CTIME, REMARK = eid.ToString() + "添加收藏客户" + model.RESID, OPERATOR = userId, ACTION = "add", ACTIONTIME = DateTime.Now, NAME = customerDetial != null ? customerDetial.CNAME : string.Empty }; db.CSVR_FAVORITECUSTOMER_HIS.Add(favCustomerHis); //收藏客户时删除共享池资源 var sharedpool = db.RES_SHAREDPOOL.FirstOrDefault(p => p.RESID == model.RESID); if (sharedpool != null) { db.RES_SHAREDPOOL.Remove(sharedpool); } //收藏客户时删除高级共享池资源 var seniorSharedPool = db.RES_SENIORSHAREDPOOL.FirstOrDefault(p => p.RESID == model.RESID); if (seniorSharedPool != null) { db.RES_SENIORSHAREDPOOL.Remove(seniorSharedPool); } return db.SaveChanges().GetResult(); } } catch (Exception ex) { errors.Add(ex.Message); LogHelper.Error(ex.ToString()); return false; } } #endregion 添加 #region 获取条件后的queryData /// /// 获取条件后的queryData /// /// /// /// /// /// /// /// private IQueryable GetQuery(IQueryable queryData, crmContext db, string parameterKey, string stime, string etime, string remark, string resId, QueryUserComboDto usercomboDto) { if (!string.IsNullOrEmpty(parameterKey) && parameterKey != "0") { queryData = queryData.Where(m => m.PARAKEY == parameterKey); } DateTime dt; if (!string.IsNullOrWhiteSpace(stime) && DateTime.TryParse(stime, out dt)) queryData = queryData.Where(a => a.CTIME >= dt); DateTime dt2; if (!string.IsNullOrWhiteSpace(etime) && DateTime.TryParse(etime, out dt2)) { dt2 = dt2.AddDays(1); queryData = queryData.Where(a => a.CTIME <= dt2); } if (usercomboDto.userId.HasValue) { queryData = queryData.Where(m => m.SALESID == usercomboDto.userId.Value); } else if (!string.IsNullOrEmpty(usercomboDto.groupIds)) { var _groupids = OperationUtil.ConvertToDecimal(usercomboDto.groupIds.Split(',')); queryData = (from a in queryData join b in db.BAS_INNERUSERGROUP on a.SALESID equals b.INNERUSERID where _groupids.Contains(b.GID.Value) select a); } else if (!string.IsNullOrEmpty(usercomboDto.deptId)) { var depts = OperationUtil.ConvertToDecimal(usercomboDto.deptId.Split(',')); List ALLdeptIDS = new List(); List ALLgidS = new List(); foreach (var item in depts) { List deptIDS = new List(); List gidS = new List(); new UserServices(_cache).GetAllDeptIDOrGidByDeptId(item, ref deptIDS, ref gidS);//获取所有的组别和gid ALLdeptIDS.AddRange(deptIDS); ALLgidS.AddRange(gidS); } queryData = (from a in queryData join b in db.BAS_INNERUSERGROUP on a.SALESID equals b.INNERUSERID //join g in db.BAS_INNERGROUP on b.GID equals g.GID where ALLdeptIDS.Contains(b.DEPTID.Value) || ALLgidS.Contains(b.GID.Value) select a); } //else //{ // if (!string.IsNullOrWhiteSpace(groupId)) // { // var _groupids = OperationUtil.ConvertToDecimal(groupId.ToString().Split(',')); // List groupList = new List(); // if (_groupids != null) // { // foreach (var g in _groupids) // { // groupList.Add(g); // } // } // if (groupList != null) // { // var returnData = from a in queryData // join b in db.BAS_INNERUSERGROUP on a.SALESID equals b.INNERUSERID // where groupList.Contains(b.GID) // select a; // queryData = returnData; // } // } //} if (!string.IsNullOrEmpty(remark)) { queryData = queryData.Where(p => p.MEMO == remark); } /*if (!string.IsNullOrEmpty(resId)) { queryData = queryData.Where(p => p.RESID == resId); }*/ return queryData; } #endregion 获取条件后的queryData #region 获取分页数据列表 public List GetList(ref Pager pager, string memoId, string stime, string etime, string remark, string resId, bool? hasOrder, bool? IsFx, int? deptlineId, QueryUserComboDto usercomboDto) { using (var db = new crmContext()) { var lableList = from c in db.RES_CUSTOMER join lable in db.RES_CUSTOMER_LABEL on c.RESID equals lable.RESID where lable.RFMTYPE == 1 select c; var residList = from c in db.RES_CUSTOMER join lable in lableList on c.CUSTOMERID equals lable.CUSTOMERID select c; var queryData = db.CSVR_FAVORITECUSTOMER.AsQueryable(); queryData = GetQuery(queryData, db, memoId, stime, etime, remark, resId, usercomboDto); //queryData = queryData.OrderByDescending(m => m.CTIME); var obj = from a in queryData join q in db.RES_CUSTOMER on a.RESID equals q.RESID into ctemp from q in ctemp.DefaultIfEmpty() join b in db.RES_CUSTOMERDETAIL on a.RESID equals b.RESID into temp from b in temp.DefaultIfEmpty() join o in db.WX_SZZYORDER.Where(p => p.ISOPEN == 1).Select(p => p.RESID).Distinct() on a.RESID equals o into aoTemp from ao in aoTemp.DefaultIfEmpty() join c in db.CACHE_RES_RESOURCE_COUNT on a.RESID equals c.RESID into acTemp from ac in acTemp.DefaultIfEmpty() join r in residList on a.RESID equals r.RESID into arTemp from ar in arTemp.DefaultIfEmpty() join u in db.BAS_INNERUSER on a.SALESID equals u.PKID into uTemp from u in uTemp.DefaultIfEmpty() select new CSVR_FAVORITECUSTOMER_extend() { Name = b.CNAME, CTIME = a.CTIME, MEMO = a.MEMO, PKID = a.PKID, RESID = q.UMID, PARAKEY = a.PARAKEY, SALESID = a.SALESID, HASORDER = string.IsNullOrEmpty(ao) ? false : true, LASTACTIVETIME = ac.LASTACTIVETIME, LASTCALLTIME = ac.LASTCALLTIME, LastTime = ac.LASTACTIVETIME.HasValue && ac.LASTCALLTIME.HasValue ? (ac.LASTACTIVETIME > ac.LASTCALLTIME ? ac.LASTACTIVETIME : ac.LASTCALLTIME) : (ac.LASTACTIVETIME.HasValue ? ac.LASTACTIVETIME : (ac.LASTCALLTIME.HasValue ? ac.LASTCALLTIME : a.CTIME)), IsFx = ar != null ? true : false, DeptId = u.DEPTID, }; if (hasOrder.HasValue) { obj = obj.Where(p => p.HASORDER == hasOrder.Value); } if (IsFx.HasValue) { obj = obj.Where(p => p.IsFx == IsFx.Value); } if (deptlineId.HasValue) { obj = obj.Where(p => p.DeptId == deptlineId.Value); } if (!string.IsNullOrWhiteSpace(resId)) { obj = obj.Where(p => p.RESID == resId); } obj = from o in obj select new CSVR_FAVORITECUSTOMER_extend() { Name = o.Name, CTIME = o.CTIME, MEMO = o.MEMO, PKID = o.PKID, RESID = o.RESID, PARAKEY = o.PARAKEY, SALESID = o.SALESID, HASORDER = o.HASORDER, LASTACTIVETIME = o.LASTACTIVETIME, LASTCALLTIME = o.LASTCALLTIME, LastTime = o.LastTime.HasValue ? (o.LastTime > o.CTIME ? o.LastTime : o.CTIME) : null, IsFx = o.IsFx, DeptId = o.DeptId, }; if (pager.order == "desc") { if (pager.sort == "recyleTime") { obj = obj.OrderByDescending(p => p.LastTime); } else { obj = obj.OrderByDescending(p => p.CTIME); } } else if (pager.order == "asc") { if (pager.sort == "recyleTime") { obj = obj.OrderBy(p => p.LastTime); } else { obj = obj.OrderBy(p => p.CTIME); } } else obj = obj.OrderByDescending(p => p.CTIME); PagerUtil.SetPager(ref obj, ref pager); var res = obj.ToList(); var deptList = _cache.GetDeptNameMapList(); foreach (var item in res) { item.DeptName = deptList.FirstOrDefault(n => n.id == item.DeptId)?.title; } return res; } } #endregion 获取分页数据列表 #region 获取收藏数量 public int GetCount(decimal userId, string roleCodes) { var count = 0; var countOrder = 0; var countAdv = 0; using (var db = new crmContext()) { //所有收藏客户 var query = from a in db.CSVR_FAVORITECUSTOMER where a.SALESID == userId select a; if (roleCodes.Contains("GJSSJKF")) { //升级手 //收藏擒龙版升级客户 var arr = new List { 100800013, 100800014, 100800016 }; var arr2 = new List { 100912, 100913 }; var queryData = from a in db.CSVR_FAVORITECUSTOMER join b in db.WX_SZZYORDER on a.RESID equals b.RESID join c in db.WX_SZZYSUBPRODUCT on b.SUBPRODUCTID equals c.SUBPRODUCTID where (arr.Contains(c.MIDPRODUCTID) || arr2.Contains(c.SUBPRODUCTID)) && a.SALESID == userId select a; countAdv = queryData.Count(); } else { //除升级手外需要减掉成交客户数 //所有成交客户数 var queryOrde = from a in db.CSVR_FAVORITECUSTOMER join b in db.WX_SZZYORDER on a.RESID equals b.RESID where b.ISOPEN == 1 && a.SALESID == userId select a; countOrder = queryOrde.Count(); } count = query.Count() - countOrder - countAdv; } return count; } #endregion 获取收藏数量 #region 获取单个 public CSVR_FAVORITECUSTOMER_extend GetModel_FavoriteCustomer(decimal id) { using (var db = new WX.CRM.Model.Entity.crmContext()) { var queryData = db.CSVR_FAVORITECUSTOMER.AsQueryable(); return (from a in queryData join b in db.RES_CUSTOMERDETAIL on a.RESID equals b.RESID into temp from b in temp.DefaultIfEmpty() select new CSVR_FAVORITECUSTOMER_extend() { Name = b.CNAME, CTIME = a.CTIME, MEMO = a.MEMO, PKID = a.PKID, RESID = a.RESID, PARAKEY = a.PARAKEY, SALESID = a.SALESID } ).FirstOrDefault(m => m.PKID == id); } } public CSVR_FAVORITECUSTOMER_extend GetModel_FavoriteCustomer(string resid, decimal? userId) { using (var db = new WX.CRM.Model.Entity.crmContext()) { var queryData = db.CSVR_FAVORITECUSTOMER.AsQueryable(); if (!string.IsNullOrEmpty(resid)) { queryData = queryData.Where(p => p.RESID == resid); } if (userId.HasValue) { queryData = queryData.Where(p => p.SALESID == userId.Value); } return (from a in queryData join b in db.RES_CUSTOMERDETAIL on a.RESID equals b.RESID into temp from b in temp.DefaultIfEmpty() select new CSVR_FAVORITECUSTOMER_extend() { Name = b.CNAME, CTIME = a.CTIME, MEMO = a.MEMO, PKID = a.PKID, RESID = a.RESID, PARAKEY = a.PARAKEY, SALESID = a.SALESID }).FirstOrDefault(); } } #endregion 获取单个 #region 编辑 public bool Update(ref ValidationErrors errors, CSVR_FAVORITECUSTOMER model, decimal eid, decimal userId) { try { using (var db = new WX.CRM.Model.Entity.crmContext()) { var entry = db.CSVR_FAVORITECUSTOMER.FirstOrDefault(m => m.PKID == model.PKID); if (entry == null) return false; entry.PARAKEY = model.PARAKEY; entry.MEMO = model.MEMO; var customerDetial = db.RES_CUSTOMERDETAIL.FirstOrDefault(p => p.RESID == entry.RESID); var favCustomerHis = new CSVR_FAVORITECUSTOMER_HIS() { PKID = new SEQUENCES_BL().Seq_base_get(WX.CRM.Model.Enum.PKIDType.LargeTable), SALESID = entry.SALESID, RESID = entry.RESID, PARAKEY = entry.PARAKEY, MEMO = entry.MEMO, CTIME = entry.CTIME, REMARK = eid.ToString() + "修改收藏客户" + entry.RESID, OPERATOR = userId, ACTION = "update", ACTIONTIME = DateTime.Now, NAME = customerDetial != null ? customerDetial.CNAME : string.Empty }; db.CSVR_FAVORITECUSTOMER_HIS.Add(favCustomerHis); db.SaveChanges(); return true; } } catch (Exception ex) { errors.Add(ex.Message); LogHelper.Error(ex.ToString()); return false; } } #endregion 编辑 #region 删除 /// /// 删除数据 /// /// /// public bool Delete(ref ValidationErrors errors, decimal id, decimal eid, decimal userId) { try { using (var db = new crmContext()) { var userInfo = db.CSVR_FAVORITECUSTOMER.FirstOrDefault(m => m.PKID == id); if (userInfo != null) { //获取收藏客户列表 var favList = db.CSVR_FAVORITECUSTOMER.Where(p => p.RESID == userInfo.RESID); //如果收藏客户只有最后一个 //if (favList.Count() == 1) //{ var favModel = favList.First(); var existsOrder = db.WX_SZZYORDER.Any(p => p.RESID == userInfo.RESID); //var existsDistribute = db.RES_DISTRIBUTE_DETAIL.Any(p => p.RESID == userInfo.RESID); var existsDistribute = db.RES_MYALLOCATERES.Any(p => p.RESID == userInfo.RESID); if (!(existsOrder || existsDistribute)) { //如果是订单用户则不需要写入到共享池 //写到共享池 if (!db.RES_SHAREDPOOL.Any(p => p.RESID == favModel.RESID)) { db.RES_SHAREDPOOL.Add(new RES_SHAREDPOOL() { RESID = favModel.RESID, TYPE = 4, CTIME = DateTime.Now, REMARK = "放弃客户时写入" }); db.RES_SHAREDPOOL_HIS.Add(new RES_SHAREDPOOL_HIS() { PKID = new SEQUENCES_BL().Seq_base_get(), RESID = favModel.RESID, SALESID = favModel.SALESID, TYPE = 4, CTIME = DateTime.Now, REMARK = "删除收藏客户时写入" }); } } var arr = new List { 100800013, 100800015, 100800016, 100800201 }; var arr2 = new List { 100800011, 100800101 }; var hasUporder = from a in db.WX_SZZYORDER join b in db.WX_SZZYSUBPRODUCT on a.SUBPRODUCTID equals b.SUBPRODUCTID where a.RESID == userInfo.RESID && arr.Contains(b.MIDPRODUCTID) select a; var hasQlOrder = from a in db.WX_SZZYORDER join b in db.WX_SZZYSUBPRODUCT on a.SUBPRODUCTID equals b.SUBPRODUCTID where a.RESID == userInfo.RESID && arr2.Contains(b.MIDPRODUCTID) && a.ISOPEN == 1 orderby a.OTIME descending select a; var hasTkOrder = from a in db.WX_SZZYORDER where a.RESID == userInfo.RESID && a.ORDERSTATUS == "90" select a; //有擒龙版订单,没有升级客户,开通时间大于3个月放入高级共享池,并去除退款客户 if (!hasUporder.Any() && hasQlOrder.Any() && !hasTkOrder.Any()) { var qlOrde = hasQlOrder.First(); var otime = qlOrde.OTIME.Value.AddMonths(3); if (otime < DateTime.Now) { db.RES_SENIORSHAREDPOOL.Add(new RES_SENIORSHAREDPOOL() { RESID = favModel.RESID, TYPE = 1, CTIME = DateTime.Now, REMARK = "放弃客户时写入", COMPANYCODE = "" }); db.RES_SENIORSHAREDPOOL_HIS.Add(new RES_SENIORSHAREDPOOL_HIS() { PKID = new SEQUENCES_BL().Seq_base_get(), RESID = favModel.RESID, TYPE = 1, CTIME = DateTime.Now, REMARK = "删除收藏客户时写入", COMPANYCODE = "" }); } } //} //删除共享客户 var sharedCustomerList = db.RES_SHAREDCUSTOMER.Where(p => p.RESID == userInfo.RESID); db.RES_SHAREDCUSTOMER.RemoveRange(sharedCustomerList); //写收藏日志 var customerDetial = db.RES_CUSTOMERDETAIL.FirstOrDefault(p => p.RESID == userInfo.RESID); db.CSVR_FAVORITECUSTOMER_HIS.Add(new CSVR_FAVORITECUSTOMER_HIS() { PKID = new SEQUENCES_BL().Seq_base_get(Model.Enum.PKIDType.LargeTable), SALESID = userInfo.SALESID, RESID = userInfo.RESID, PARAKEY = userInfo.PARAKEY, MEMO = userInfo.MEMO, CTIME = userInfo.CTIME, REMARK = eid.ToString() + "放弃客户时删除收藏客户" + userInfo.RESID, OPERATOR = userId, ACTION = "delete", ACTIONTIME = DateTime.Now, NAME = customerDetial != null ? customerDetial.CNAME : string.Empty }); //删除收藏客户 db.CSVR_FAVORITECUSTOMER.Remove(userInfo); //如果原来分配表有分配,写回原来的关系 decimal? oldeid = null; var myRes = db.RES_MYALLOCATERES.FirstOrDefault(p => p.RESID == userInfo.RESID); if (myRes != null) { oldeid = db.BAS_INNERUSER.FirstOrDefault(p => p.PKID == myRes.INNERUSERID).EID; } var faveid = db.BAS_INNERUSER.FirstOrDefault(p => p.PKID == userInfo.SALESID).EID; if (oldeid.HasValue) { //写入关系操作表 if (oldeid.Value != faveid) { db.RES_MYALLOCATERES_ACT.Add(new RES_MYALLOCATERES_ACT(new SEQUENCES_BL().Seq_base_get(Model.Enum.PKIDType.LargeTable), userInfo.RESID, faveid, 0, "update", oldeid.Value)); } } else { //如果已经是订单客户,则不删除关系 if (!existsOrder) { db.RES_MYALLOCATERES_ACT.Add(new RES_MYALLOCATERES_ACT(new SEQUENCES_BL().Seq_base_get(Model.Enum.PKIDType.LargeTable), userInfo.RESID, 0, 0, "delete", faveid)); } } } return db.SaveChanges().GetResult(); } } catch (Exception ex) { LogHelper.Error(ex.ToString()); errors.Add(ex.Message); return false; } } public bool GiveUp(ref ValidationErrors errors, decimal id, decimal eid, decimal userId) { try { using (var db = new crmContext()) { var userInfo = db.CSVR_FAVORITECUSTOMER.FirstOrDefault(m => m.PKID == id); if (userInfo != null) { //获取收藏客户列表 var favList = db.CSVR_FAVORITECUSTOMER.Where(p => p.RESID == userInfo.RESID); //如果收藏客户只有最后一个 if (favList.Count() == 1) { var favModel = favList.First(); var existsOrder = db.WX_SZZYORDER.Any(p => p.RESID == userInfo.RESID); //var existsDistribute = db.RES_DISTRIBUTE_DETAIL.Any(p => p.RESID == userInfo.RESID); var existsDistribute = db.RES_MYALLOCATERES.Any(p => p.RESID == userInfo.RESID); if (!(existsOrder || existsDistribute)) { //如果是订单用户则不需要写入到共享池 //写到共享池 if (!db.RES_SHAREDPOOL.Any(p => p.RESID == favModel.RESID)) { db.RES_SHAREDPOOL.Add(new RES_SHAREDPOOL() { RESID = favModel.RESID, TYPE = 4, CTIME = DateTime.Now, REMARK = "放弃客户时写入" }); db.RES_SHAREDPOOL_HIS.Add(new RES_SHAREDPOOL_HIS() { PKID = new SEQUENCES_BL().Seq_base_get(), RESID = favModel.RESID, SALESID = favModel.SALESID, TYPE = 4, CTIME = DateTime.Now, REMARK = "删除收藏客户时写入" }); } } var arr = new List { 100800013, 100800015, 100800016 }; var hasUporder = from a in db.WX_SZZYORDER join b in db.WX_SZZYSUBPRODUCT on a.SUBPRODUCTID equals b.SUBPRODUCTID where a.RESID == userInfo.RESID && arr.Contains(b.MIDPRODUCTID) select a; var hasQlOrder = from a in db.WX_SZZYORDER join b in db.WX_SZZYSUBPRODUCT on a.SUBPRODUCTID equals b.SUBPRODUCTID where a.RESID == userInfo.RESID && b.MIDPRODUCTID == 100800011 && a.ISOPEN == 1 orderby a.OTIME descending select a; var hasTkOrder = from a in db.WX_SZZYORDER where a.RESID == userInfo.RESID && a.ORDERSTATUS == "90" select a; //有擒龙版订单,没有升级客户,开通时间大于3个月放入高级共享池,并去除退款客户 if (!hasUporder.Any() && hasQlOrder.Any() && !hasTkOrder.Any()) { var qlOrde = hasQlOrder.First(); var otime = qlOrde.OTIME.Value.AddMonths(3); if (otime < DateTime.Now) { db.RES_SENIORSHAREDPOOL.Add(new RES_SENIORSHAREDPOOL() { RESID = favModel.RESID, TYPE = 1, CTIME = DateTime.Now, REMARK = "放弃客户时写入", COMPANYCODE = "" }); db.RES_SENIORSHAREDPOOL_HIS.Add(new RES_SENIORSHAREDPOOL_HIS() { PKID = new SEQUENCES_BL().Seq_base_get(), RESID = favModel.RESID, TYPE = 1, CTIME = DateTime.Now, REMARK = "删除收藏客户时写入", COMPANYCODE = "" }); } } } //删除共享客户 var sharedCustomerList = db.RES_SHAREDCUSTOMER.Where(p => p.RESID == userInfo.RESID); db.RES_SHAREDCUSTOMER.RemoveRange(sharedCustomerList); //写收藏日志 var customerDetial = db.RES_CUSTOMERDETAIL.FirstOrDefault(p => p.RESID == userInfo.RESID); db.CSVR_FAVORITECUSTOMER_HIS.Add(new CSVR_FAVORITECUSTOMER_HIS() { PKID = new SEQUENCES_BL().Seq_base_get(Model.Enum.PKIDType.LargeTable), SALESID = userInfo.SALESID, RESID = userInfo.RESID, PARAKEY = userInfo.PARAKEY, MEMO = userInfo.MEMO, CTIME = userInfo.CTIME, REMARK = eid.ToString() + "放弃客户时删除收藏客户" + userInfo.RESID, OPERATOR = userId, ACTION = "delete", ACTIONTIME = DateTime.Now, NAME = customerDetial != null ? customerDetial.CNAME : string.Empty }); //删除收藏客户 db.CSVR_FAVORITECUSTOMER.Remove(userInfo); //放弃客户时,删除归属 var resInfo = db.RES_MYALLOCATERES.FirstOrDefault(p => p.RESID == userInfo.RESID); if (resInfo != null) { db.RES_MYALLOCATERES.Remove(resInfo); } //写入关系操作表 var oldeid = db.BAS_INNERUSER.FirstOrDefault(p => p.PKID == userInfo.SALESID).EID; db.RES_MYALLOCATERES_ACT.Add(new RES_MYALLOCATERES_ACT(new SEQUENCES_BL().Seq_base_get(Model.Enum.PKIDType.LargeTable), userInfo.RESID, 0, 0, "delete", oldeid)); } return db.SaveChanges().GetResult(); } } catch (Exception ex) { LogHelper.Error(ex.ToString()); errors.Add(ex.Message); return false; } } #endregion 删除 #region public void Change(string id, decimal inneruserId, decimal eid, decimal aeid, decimal userId, string paraKey) { try { var arr = id.Split(',').Select(decimal.Parse); var allocteUsers = new List(); var pici = new SEQUENCES_BL().Seq_base_get(); using (var db = new crmContext()) { var user = db.BAS_INNERUSER.FirstOrDefault(n => n.EID == eid); var deptid = 0; if (user != null && user.DEPTID.HasValue) { deptid = user.DEPTID.Value; } foreach (var item in arr) { var model = db.CSVR_FAVORITECUSTOMER.FirstOrDefault(p => p.PKID == item); var oldUser = db.BAS_INNERUSER.FirstOrDefault(p => p.PKID == model.SALESID); var resModel = db.RES_MYALLOCATERES.FirstOrDefault(p => p.RESID == model.RESID && p.INNERUSERID == model.SALESID); model.SALESID = inneruserId; if (!string.IsNullOrEmpty(paraKey)) { model.PARAKEY = paraKey; } //写收藏日志 var customerDetial = db.RES_CUSTOMERDETAIL.FirstOrDefault(p => p.RESID == model.RESID); db.CSVR_FAVORITECUSTOMER_HIS.Add(new CSVR_FAVORITECUSTOMER_HIS() { PKID = new SEQUENCES_BL().Seq_base_get(Model.Enum.PKIDType.LargeTable), SALESID = model.SALESID, RESID = model.RESID, PARAKEY = model.PARAKEY, MEMO = model.MEMO, CTIME = model.CTIME, REMARK = aeid.ToString() + "移动" + (oldUser != null ? oldUser.EID.ToString() : "未知") + "的收藏客户" + model.RESID + "到" + eid.ToString(), OPERATOR = userId, ACTION = "change", ACTIONTIME = DateTime.Now, NAME = customerDetial != null ? customerDetial.CNAME : string.Empty }); var info = new RES_ALLCOTE_USER() { ID = new SEQUENCES_BL().Seq_base_get(), INNERUSERID = inneruserId, EID = eid, NUM = 1, CTIME = DateTime.Now, PICI = pici, RESID = model.RESID, TYPE = 1, DEPTID = deptid }; if (resModel != null) { info.SGID = resModel.SGID; } allocteUsers.Add(info); } db.RES_ALLCOTE_USER.AddRange(allocteUsers); db.SaveChanges(); } _resMyAllocateRes.ExeSeniorDistributeByResId(userId, pici, "移动收藏分配"); } catch (Exception ex) { throw ex; } } #endregion #region 检测是否能外呼电话 /// /// 检测是否能外呼电话(收藏客户只有收藏的员工才能外呼,特定角色、共享客户除外) /// 如果返回的结果集 /// /// /// /// public List FavCallList(string resId, decimal userId) { var ds = _sharedPool_dal.FavCallList(resId, userId); var data = ds.Tables[0].ToList(); return data; } #endregion /// /// 获取客户ID的收藏人 和 归属人 /// /// /// public List GetFavAndMyResList(string resid) { using (var db = new WX.CRM.Model.Entity.crmContext()) { var deptLine = _cache.GetList_BusinessLines(); var deptids = deptLine.Select(n => Convert.ToInt32(n.BUSINESSID)).ToList(); List list = db.RES_CUSTOMER_RELATION.Where(m => m.RESID == resid && deptids.Contains(m.DEPTID)) .Select(m => new CSVR_FAVORITECUSTOMER_AndMyRes() { resid = m.RESID, deptName = m.DEPTNAME, deptid = m.DEPTID }).ToList(); var ds = list.Select(m => m.resid); var myreslist = db.RES_MYALLOCATERES.Where(n => n.RESID == resid).ToList(); var csvquery = from n in db.CSVR_FAVORITECUSTOMER join b in db.BAS_INNERUSER on n.SALESID equals b.PKID where ds.Contains(n.RESID) select new { resId = n.RESID, userId = n.SALESID, deptId = b.DEPTID }; var csvlist = csvquery.ToList(); foreach (var item in list) { var my = myreslist.FirstOrDefault(m => m.RESID == item.resid && m.DEPTID == item.deptid); if (my != null) { item.myresuserid = my.INNERUSERID; } var fav = csvlist.Where(m => m.resId == item.resid && m.deptId == item.deptid).ToList(); if (fav.Count > 0) { item.favuserid = fav.Select(m => m.userId).ToArray(); } } return list; } } } }