using CRM.Core.DTO; using Ninject; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Web.Mvc; using System.Web.UI; using System.Web.UI.WebControls; using System.Xml.Serialization; using WX.CRM.BLL.Base; using WX.CRM.BLL.Soft; using WX.CRM.Common; using WX.CRM.IBLL.Base; using WX.CRM.IBLL.RedisBL; using WX.CRM.IBLL.Res; using WX.CRM.IBLL.Soft; using WX.CRM.IBLL.Util; using WX.CRM.Model.DTO; using WX.CRM.Model.Entity; using WX.CRM.Model.Enum; using WX.CRM.WEB.Controllers; using WX.CRM.WebHelper; using Table = WX.CRM.WebHelper.Table; namespace WX.CRM.WEB.Areas.Res.Controllers { public class CustomerController : BaseController { private readonly IRES_CUSTOMER _customer; private readonly IRES_CUSTOMER_Q _customerQ; private readonly ICACHE_Q _cacheQ; private readonly IBAS_PROVINCE_Q _provinceQ; private readonly IBAS_CITY_Q _cityQ; private readonly IRES_ACTIVITY_Q _activityQ; private readonly IRES_CUSTOMERDETAIL _customerdetail; private readonly IRES_CUSTOMERDETAIL_Q _customerdetailQ; //private readonly IRES_CUSTOMERDETAIL_REDIS customerDetailRedisBiz; private ICUSTOMER_REDIS customerRedisBL; [Inject] public BAS_BUSSINESSLINE_BL line_BL { get; set; } [Inject] public ISOFT_REGANDORDERLINK soft_RegAndOrderLink_BL { get; set; } private GET_REGUSER _regUser = new GET_REGUSER(); public CustomerController(IRES_CUSTOMER customer , IRES_CUSTOMER_Q customerQ , ICACHE_Q cacheQ , IBAS_PROVINCE_Q provinceQ , IBAS_CITY_Q cityQ , IRES_ACTIVITY_Q activityQ , IRES_CUSTOMERDETAIL customerdetail , IRES_CUSTOMERDETAIL_Q customerdetailQ //,IRES_CUSTOMERDETAIL_REDIS _customerDetailRedisBiz , ICUSTOMER_REDIS _customerRedisBL ) { _customer = customer; _customerQ = customerQ; _cacheQ = cacheQ; _provinceQ = provinceQ; _cityQ = cityQ; _activityQ = activityQ; _customerdetail = customerdetail; _customerdetailQ = customerdetailQ; //this.customerDetailRedisBiz = _customerDetailRedisBiz; this.customerRedisBL = _customerRedisBL; } private ValidationErrors errors = new ValidationErrors(); private WebHelper.RedisFactory.RedisFactory redisFactory = new WebHelper.RedisFactory.RedisFactory(); #region 新增 [HttpGet] public ActionResult Create(string resid) { var genders = new List() { new ListItem() { Text = "男", Value = "m" }, new ListItem() { Text = "女", Value = "f" } }; var KHLX = _cacheQ.GetList_SubComType(ComType.CustomerType).Select(item => new SelectListItem() { Text = item.SUBTYPENAME, Value = item.SUBTYPECODE }).ToList(); var ZJL = _cacheQ.GetList_SubComType(ComType.CustomerZJL).Select(item => new SelectListItem() { Text = item.SUBTYPENAME, Value = item.SUBTYPECODE }).ToList(); var ZY = _cacheQ.GetList_SubComType(ComType.CustomerZY).Select(item => new SelectListItem() { Text = item.SUBTYPENAME, Value = item.SUBTYPECODE }).ToList(); var CZXG = _cacheQ.GetList_SubComType(ComType.CustomerCZXG).Select(item => new SelectListItem() { Text = item.SUBTYPENAME, Value = item.SUBTYPECODE }).ToList(); //var KHLY = _cacheQ.GetList_SubComType(ComType.CustomerFrom).Select(item => new SelectListItem() { Text = item.SUBTYPENAME, Value = item.SUBTYPECODE }).ToList(); //var KHLY = _activityQ.GetList() ViewBag.Gender = genders; ViewBag.KHLX = KHLX; ViewBag.ZJL = ZJL; ViewBag.ZY = ZY; ViewBag.CZXG = CZXG; //ViewBag.KHLY = KHLY; ViewBag.Province = GetProvince(0); ViewBag.City = GetCity(0); RES_CUSTOMER resData = new RES_CUSTOMER(); resData.RES_CUSTOMERDETAIL = new RES_CUSTOMERDETAIL(); resData.RES_CUSTOMERDETAIL.RESID = resid; return View(resData); } [HttpGet] public JsonResult InitPhone() { var success = _customerQ.InitPhone(); var json = new { success = $"成功了{success}" }; return Json(json, JsonRequestBehavior.AllowGet); } [HttpPost] public ActionResult Create(RES_CUSTOMER customer) { try { if (string.IsNullOrEmpty(customer.map_MOBILE)) return JsonHandler.ManageMessage("联系号码不能为空", false); customer.map_MOBILE = customer.map_MOBILE.Trim().Replace("-", ""); if (customer.map_MOBILE.StartsWith("1"))//如果是以1开头的,就必须按照手机号码格式 { if (!Utility.ChekMobile(customer.map_MOBILE)) { return JsonHandler.ManageMessage("联系号码不正确", false); } } else { if (!Utility.CheckIsNum(customer.map_MOBILE)) { return JsonHandler.ManageMessage("联系号码不正确", false); } } if (!ModelState.IsValid) return JsonHandler.ValidateFailMessage(); var cNumber = customer.map_MOBILE; var resId = ResUtil.CreateResId(cNumber); var customerFrom = "HMJ_CRM"; //来源标签,是否改成从配置表中取 var oldresid = customer.map_ResId; //LogHelper.Info("customer.map_MOBILE:" + customer.map_MOBILE); if (ExistsResId(customer.map_MOBILE)) { //LogHelper.Info("companyCode:" + companyCode); if (companyCode == "SHZZ") { customerFrom = "27100"; try { var userName = companyCode.ToLower() + cNumber.Substring(3, cNumber.Length - 3); var password = userName; var guid = Guid.NewGuid().ToString(); var ch = _cacheQ.GetValue_Parameter("QRCodeCH"); if (soft_RegAndOrderLink_BL.HasUserName(userName)) { userName = companyCode.ToLower() + cNumber.Substring(3, cNumber.Length - 3) + guid.Substring(0, 4); } var res = soft_RegAndOrderLink_BL.RegToUP(userName, cNumber, ch, "P", guid, password, Eid); LogHelper.Info("注册返回结果:" + res.ToJson()); if (res.ret == 0) { _regUser.RegUser(cNumber, customerFrom, null, userName, DateTime.Now, 0, cNumber); } else { if (res.ret == -1108) { LogHelper.Info("自动注册软件用户已经存在!"); errors.Add("注册失败,请重新再试!"); return JsonHandler.InsertMessage(errors, false); } else if (res.ret == -1212) { var url = _cacheQ.GetValue_Parameter("Core_ZxdService_SoftUserInfo"); if (!string.IsNullOrEmpty(url)) { var retmsg = Utility.PostData(url + "?ResId=" + resId, Encoding.UTF8); var retmessage = WebHelper.JsonHelper.JsonDivertToObj(retmsg); LogHelper.Info("retmessage:" + retmessage.ToJson()); if (retmessage.result) { userName = retmessage.retmsg; _regUser.RegUser(cNumber, customerFrom, null, userName, DateTime.Now, 0, cNumber); } else { LogHelper.Info("自动注册手机号已经存在!"); errors.Add("注册失败,请重新再试!"); return JsonHandler.InsertMessage(errors, false); } } } } } catch (Exception ee) { LogHelper.Error(ee.ToString()); } } var oldCustomer = _customerQ.getResCustomerByResId(oldresid); //企微资源 if (oldCustomer != null && (oldCustomer.TYPE == 2 || oldCustomer.TYPE == 3)) { oldCustomer.CUSTOMERID = resId; _customer.Update(ref errors, oldCustomer); } return JsonHandler.ManageMessage("联系号码已经存在", true); } if (string.IsNullOrEmpty(oldresid))//根据旧的ID获取数据 { if (companyCode == "SHZZ") { customerFrom = "27100"; var userName = companyCode.ToLower() + cNumber.Substring(3, cNumber.Length - 3); var password = userName; var guid = Guid.NewGuid().ToString(); var ch = _cacheQ.GetValue_Parameter("QRCodeCH"); if (soft_RegAndOrderLink_BL.HasUserName(userName)) { userName = companyCode.ToLower() + cNumber.Substring(3, cNumber.Length - 3) + guid.Substring(0, 4); } var res = soft_RegAndOrderLink_BL.RegToUP(userName, cNumber, ch, "P", guid, password, Eid); LogHelper.Info("注册返回结果:" + res.ToJson()); if (res.ret == 0) { _regUser.RegUser(cNumber, customerFrom, null, userName, DateTime.Now, 0, cNumber); } else { if (res.ret == -1108) { LogHelper.Info("自动注册软件用户已经存在!"); errors.Add("注册失败,请重新再试!"); return JsonHandler.InsertMessage(errors, false); } else if (res.ret == -1212) { var url = _cacheQ.GetValue_Parameter("Core_ZxdService_SoftUserInfo"); if (!string.IsNullOrEmpty(url)) { var retmsg = Utility.PostData(url + "?ResId=" + resId, Encoding.UTF8); var retmessage = WebHelper.JsonHelper.JsonDivertToObj(retmsg); LogHelper.Info("retmessage:" + retmessage.ToJson()); if (retmessage.result) { userName = retmessage.retmsg; _regUser.RegUser(cNumber, customerFrom, null, userName, DateTime.Now, 0, cNumber); } else { LogHelper.Info("自动注册手机号已经存在!"); errors.Add("注册失败,请重新再试!"); return JsonHandler.InsertMessage(errors, false); } } } } } else { var customerDetail = customer.RES_CUSTOMERDETAIL; var xmls = new XmlSerializer(typeof(RES_CUSTOMERDETAIL)); var sw = new StringWriter(); xmls.Serialize(sw, customerDetail); _customer.ResgisterCustomer(cNumber, resId, customerFrom, sw.ToString()); } var oldCustomer = _customerQ.getResCustomerByResId(oldresid); var newCustomer = _customerQ.getResCustomerByResId(resId); if (oldCustomer != null && (oldCustomer.TYPE == 2 || oldCustomer.TYPE == 3)) { oldCustomer.CUSTOMERID = resId; oldCustomer.CUSTOMERMID = newCustomer?.UMID; _customer.Update(ref errors, oldCustomer); } _customer.HandlerSalerAddCustomer(resId, UserId); } else { var thedata = _customerdetailQ.GetModel_RES_CUSTOMERDETAIL(oldresid); var customerDetail = customer.RES_CUSTOMERDETAIL; customerDetail.RESID = resId; customerDetail.QQ = thedata.QQ; customerDetail.ADDRESS = thedata.ADDRESS; customerDetail.AMOUNTTYPEID = thedata.AMOUNTTYPEID; customerDetail.CITYID = thedata.CITYID; customerDetail.CNAME = thedata.CNAME; customerDetail.CUSTOMERTYPEID = thedata.CUSTOMERTYPEID; customerDetail.EMAIL = thedata.EMAIL; customerDetail.FAX = thedata.FAX; customerDetail.GENDER = thedata.GENDER; customerDetail.JOBTYPEID = thedata.JOBTYPEID; customerDetail.MSN = thedata.MSN; customerDetail.OPERATIONTYPE = thedata.OPERATIONTYPE; customerDetail.PRIMARYNUMBERADDRESS = thedata.PRIMARYNUMBERADDRESS; customerDetail.PROVINCEID = thedata.PROVINCEID; var xmls = new XmlSerializer(typeof(RES_CUSTOMERDETAIL)); var sw = new StringWriter(); xmls.Serialize(sw, customerDetail); _customer.ResgisterCustomer(cNumber, resId, customerFrom, sw.ToString()); //var oldCustomer = _customerQ.GetModel(oldresid); //var newCustomer = _customerQ.GetModel(resId); var oldCustomer = _customerQ.getResCustomerByResId(oldresid); var newCustomer = _customerQ.getResCustomerByResId(resId); if (oldCustomer != null && (oldCustomer.TYPE == 2 || oldCustomer.TYPE == 3)) { oldCustomer.CUSTOMERID = resId; oldCustomer.CUSTOMERMID = newCustomer?.UMID; _customer.Update(ref errors, oldCustomer); } else { newCustomer.CUSTOMERID = oldCustomer.CUSTOMERID; newCustomer.CUSTOMERMID = oldCustomer.CUSTOMERMID; _customer.Update(ref errors, newCustomer); } //if (companyCode == "DNZZ" || companyCode == "QBJY") //{ _customer.HandlerSalerAddCustomer(resId, UserId); //} } LogHelper.Info($"手动添加客户【{Eid}】【{resId}】"); _regUser.BuildDeptIdByResId(resId, UserId); return JsonHandler.InsertMessage(errors, true); } catch (Exception ex) { LogHelper.Error(ex); return JsonHandler.InsertMessage(errors, false); //throw; } } #endregion 新增 #region 编辑 [HttpGet] public ActionResult Edit(string resid) { var genders = new List() { new ListItem() { Text = "男", Value = "m" }, new ListItem() { Text = "女", Value = "f" } }; var KHLX = _cacheQ.GetList_SubComType(ComType.CustomerType).Select(item => new SelectListItem() { Text = item.SUBTYPENAME, Value = item.SUBTYPECODE }).ToList(); var ZJL = _cacheQ.GetList_SubComType(ComType.CustomerZJL).OrderBy(m => m.SUBTYPECODE).Select(item => new SelectListItem() { Text = item.SUBTYPENAME, Value = item.SUBTYPECODE }).ToList(); var ZY = _cacheQ.GetList_SubComType(ComType.CustomerZY).Select(item => new SelectListItem() { Text = item.SUBTYPENAME, Value = item.SUBTYPECODE }).ToList(); var CZXG = _cacheQ.GetList_SubComType(ComType.CustomerCZXG).Select(item => new SelectListItem() { Text = item.SUBTYPENAME, Value = item.SUBTYPECODE }).ToList(); var category = _cacheQ.GetList_SubComType(ComType.CustomerCategory).Select(item => new SelectListItem() { Text = item.SUBTYPENAME, Value = item.SUBTYPENAME }).ToList(); var NL = _cacheQ.GetList_SubComType(ComType.CustomerNL).Select(item => new SelectListItem() { Text = item.SUBTYPENAME, Value = item.SUBTYPECODE }).ToList(); category.Insert(0, new SelectListItem() { Text = string.Empty, Value = string.Empty }); ViewBag.Gender = genders; ViewBag.KHLX = KHLX; ViewBag.ZJL = ZJL; ViewBag.ZY = ZY; ViewBag.CZXG = CZXG; ViewBag.category = category; ViewBag.NL = NL; WX.CRM.Model.Entity.RES_CUSTOMERDETAIL model = null; RES_CUSTOMER customer = new RES_CUSTOMER(); if (resid == null) { model = new RES_CUSTOMERDETAIL(); ViewBag.Province = GetProvince(0); ViewBag.City = GetCity(0); } else { model = _customerdetailQ.GetModel_RES_CUSTOMERDETAIL(resid);//OldVersion //model = redisFactory.GetInfo_Rescustomerdetail(resid); customer.RES_CUSTOMERDETAIL = model; customer.map_QQ = model.QQ; customer.map_ADDRESS = model.ADDRESS; customer.map_AMOUNTTYPEID = model.AMOUNTTYPEID; customer.map_CITY = model.CITYID; //customer.map_CNAME = model.CNAME; if (!string.IsNullOrEmpty(model.CNAME)) { var roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId); if (!(roleCodes.Contains("[SH]") || roleCodes.Contains("[GLY]"))) { if (model.CNAME.Length > 10) customer.map_CNAME = model.CNAME.Substring(0, 10); else customer.map_CNAME = model.CNAME; } else { customer.map_CNAME = model.CNAME; } } customer.map_CUSTOMERTYPEID = model.CUSTOMERTYPEID; customer.map_EMAIL = model.EMAIL; customer.map_FAX = model.FAX; customer.map_GENDER = model.GENDER; customer.map_JOBTYPEID = model.JOBTYPEID; customer.map_MSN = model.MSN; customer.map_OPERATIONTYPE = model.OPERATIONTYPE; customer.map_PRIMARYNUMBERADDRESS = model.PRIMARYNUMBERADDRESS; customer.map_PROVINCEID = model.PROVINCEID; customer.RESID = resid; if (model.PROVINCEID.HasValue) { int provinceid = Convert.ToInt32(model.PROVINCEID); ViewBag.Province = GetProvince(provinceid); ViewBag.City = GetCity(provinceid); } else { ViewBag.Province = GetProvince(0); ViewBag.City = GetCity(0); } } return View(customer); } [HttpPost] public ActionResult Edit(RES_CUSTOMER customer) { if (!ModelState.IsValid) return JsonHandler.ValidateFailMessage(); var roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId); if (!(roleCodes.Contains("[SH]") || roleCodes.Contains("[GLY]"))) { if (!string.IsNullOrEmpty(customer.map_CNAME)) { if (customer.map_CNAME.Length > 10) { return JsonHandler.ManageMessage("客户姓名不能大于10个字", false); } } } string[] resids = _customerQ.GetAllResidByCustomerId(customer.RESID); List resIds = redisFactory.GetList_Rescustomer(resids, customer.RESID).Select(s => s.RESID).ToList(); bool result = false; if (resids != null) { foreach (var resId in resIds) { customer.RESID = resId; result = _customerdetail.Update(ref errors, customer); } } return JsonHandler.UpdateMessage(errors, result); } #endregion 编辑 #region 设置资金量 #region 编辑 [HttpGet] public ActionResult SetZJL(string resid) { var ZJL = _cacheQ.GetList_SubComType(ComType.CustomerZJL).Select(item => new SelectListItem() { Text = item.SUBTYPENAME, Value = item.SUBTYPECODE }).ToList(); ViewBag.ZJL = ZJL; WX.CRM.Model.Entity.RES_CUSTOMERDETAIL model = null; RES_CUSTOMERDETAIL customer = new RES_CUSTOMERDETAIL(); if (resid == null) { model = new RES_CUSTOMERDETAIL(); throw new Exception("信息错误!"); } else { customer = _customerdetailQ.GetModel_RES_CUSTOMERDETAIL(resid);//OldVersion } return View(customer); } [HttpPost] public ActionResult SaveZJL(RES_CUSTOMERDETAIL customer) { if (!ModelState.IsValid) return JsonHandler.ValidateFailMessage(); var roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId); string[] resids = _customerQ.GetAllResidByCustomerId(customer.RESID); List resIds = redisFactory.GetList_Rescustomer(resids, customer.RESID).Select(s => s.RESID).ToList(); bool result = false; if (resids != null) { foreach (var resId in resIds) { result = _customerdetail.UpdateZJL(ref errors, new RES_CUSTOMERDETAIL() { RESID = resId, AMOUNTTYPEID = customer.AMOUNTTYPEID }); } } return JsonHandler.UpdateMessage(errors, result); } #endregion 编辑 #region 设置标签 [HttpGet] public ActionResult SetTag(string resid) { Res_TagDto dto = new Res_TagDto(); //客户普通标签 try { var webapi = _cacheQ.GetValue_Parameter(Model.Enum.Parameter.zxd_core_webapi_url); //webapi = "https://localhost:7090"; var url = $"{webapi}api/Customer/GetTag"; var para = $"resid={resid}"; var result = Utility.GetData(url, para, Encoding.UTF8); var data = result.ToObject>>(); ViewBag.ResTag = data?.data; } catch (Exception ex) { LogHelper.Error(ex.ToString()); } return View(dto); } [HttpPost] public ActionResult SetTag(Res_TagDto customer) { bool result = false; //客户普通标签 try { var webapi = _cacheQ.GetValue_Parameter(Model.Enum.Parameter.zxd_core_webapi_url); var url = $"{webapi}api/Customer/AddTag"; var para = new { tag = customer.tag, resid = customer.resid, ceid=Convert.ToInt32(Eid) }; var result2 = Utility.PostAjaxData(url, Newtonsoft.Json.JsonConvert.SerializeObject(para), Encoding.UTF8); var data = result2.ToObject>(); if (data.code != 0) errors.Add(data.message); else result = true; } catch (Exception ex) { LogHelper.Error(ex.ToString()); } return JsonHandler.UpdateMessage(errors, result); } [HttpPost] public ActionResult DelTag( int id) { bool result = false; //删除标签 try { var webapi = _cacheQ.GetValue_Parameter(Model.Enum.Parameter.zxd_core_webapi_url); var url = $"{webapi}api/Customer/DelTag"; var para = new { id = id, deleteeid = Convert.ToInt32(Eid) }; var result2 = Utility.PostAjaxData(url, Newtonsoft.Json.JsonConvert.SerializeObject(para), Encoding.UTF8); var data = result2.ToObject>(); if (data.code != 0) errors.Add(data.message); else result = true; } catch (Exception ex) { LogHelper.Error(ex.ToString()); } return JsonHandler.UpdateMessage(errors, result); } #endregion 编辑 #endregion 设置资金量 #region 客户流转线索 [HttpGet] [AuthorizeRedirect(Roles = InitRights.CONST_客户流转线索)] public ActionResult Trace() { WebHelper.Table tab = new WebHelper.Table("tablist"); tab.AddHeadCol("GroupName", "", "销售组"); tab.AddHeadCol("Eid", "", "员工"); tab.AddHeadCol("DeptName", "", "事业部"); tab.AddHeadCol("ResId", "", "客户ID"); tab.AddHeadCol("Act", "", "事件"); tab.AddHeadCol("Remark", "", "说明"); tab.AddHeadCol("CTime", "", "操作时间"); tab.AddHeadRow(); ViewBag.gridTable = tab.GetTable(); return View(); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_客户流转线索)] public JsonResult Trace(string columns, string resId) { var deptList = _cacheQ.GetDeptNameMapList(); WebHelper.Table table = new WebHelper.Table(columns, true); var dt = _customerQ.ResTrace(resId); var list = dt.ToList(); foreach (var item in list) { table.AddCol(InnerUserHelper.Instance.GetGroupName(InnerUserHelper.Instance.GetGroupId(InnerUserHelper.Instance.GetUserIdByEid(item.Eid)))); table.AddCol(InnerUserHelper.Instance.EidAndName(InnerUserHelper.Instance.GetUserIdByEid(item.Eid))); table.AddCol(deptList.FirstOrDefault(x => x.id == item.DeptId)?.title); table.AddCol(item.ResId); table.AddCol(item.Act); table.AddCol(item.Remark); table.AddCol(item.CTime); table.AddRow(); } var json = new { rowsList = table.GetRows() }; return Json(json, JsonRequestBehavior.AllowGet); } #endregion 客户流转线索 #region 引用方法集合 private IEnumerable GetProvince(int id) { var list = _provinceQ.GetList(); list.Insert(0, new BAS_PROVINCE { ID = 0, NAME = "--请选择省--" }); return list.Select(item => item.ID == id ? new SelectListItem() { Text = item.NAME, Value = item.ID.ToString(), Selected = true } : new SelectListItem() { Text = item.NAME, Value = item.ID.ToString() }).ToList(); } private IEnumerable GetCity(int id) { var list = _cityQ.GetListByProvince(id); if (id == 0) { list.Insert(0, new BAS_CITY { PROVINCEID = 0, ID = 0, NAME = "--请选择市--" }); } return list.Select(item => new SelectListItem() { Text = item.NAME, Value = item.ID.ToString() }).ToList(); } public JsonResult JsonCity(int id) { var list = GetCity(id); return Json(list, JsonRequestBehavior.AllowGet); } public JsonResult CheckMobile(string mobile) { bool result = ExistsResId(mobile); return JsonHandler.ManageMessage("手机号码已经存在", result); } /// /// 客户ID是否存在,存在true,不存在false /// /// 传入手机号码 /// private bool ExistsResId(string mobile) { var resId = ResUtil.CreateResId(mobile); var model = _customerQ.getResCustomerByResId(resId); if (model == null) return false; return true; } [HttpPost] public JsonResult RemovePrimaryNumber(string resid) { try { var resdata = new RES_CUSTOMERDETAIL(); resdata = _customerdetailQ.GetModel_RES_CUSTOMERDETAIL(resid); //resdata = redisFactory.GetInfo_Rescustomerdetail(resid); if (resdata.ISPRIMARYNUM != 1) { return JsonHandler.ManageMessage("非主号码不能解除!", false); } resdata.ISPRIMARYNUM = 0; resdata.RESID = resid; bool result = _customerdetail.UpdateStatus(ref errors, resdata); return JsonHandler.UpdateMessage(errors, result); } catch (Exception ex) { LogHelper.Error("删除主号码!" + ex.Message); return JsonHandler.ManageMessage("删除主号码失败!", false); } } #endregion 引用方法集合 #region 检查Resid是否存在 [OutputCache(Location = OutputCacheLocation.None, NoStore = true)] public JsonResult CheckRESID() { string ResId = Request.QueryString[Request.QueryString.GetKey(0)]; bool isValidate = false; if (!string.IsNullOrWhiteSpace(ResId)) { var user = _customerQ.getResCustomerByResId(ResId); if (user != null) isValidate = true; } return Json(isValidate, JsonRequestBehavior.AllowGet); } #endregion 检查Resid是否存在 #region [AuthorizeRedirect(Roles = InitRights.CONST_优质客户列表)] public ActionResult BestIndex() { //ToolBar ToolBar tool = new ToolBar(); string[] toolbtn = new ToolButtonView().ToolButtonRight(InitRights.优质客户列表, userRightId); tool.AllowButton(toolbtn); ViewBag.ToolBar = tool; //table Pager pager = new Pager() { page = 1, rows = 20 }; string tableId = "tablist"; Table tab = new Table(tableId); tab.isCheckbox = true; //tab.AddHiddenHeadCol("SZZYORDERID", "订单权限ID"); tab.AddHeadCol("RESID", "", "客户ID"); tab.AddHeadCol("Name", "", "客户名称"); tab.AddHeadCol("REMARK", "", "备注内容"); tab.AddHeadCol("SUMCOUNT", "", "总成交单数"); tab.AddHeadCol("SUMPRICE", "", "成交总金额"); tab.AddHeadCol("GROUP", "", "组别"); tab.AddHeadCol("EID", "", "员工"); tab.AddHeadCol("UserAction", "", "企微聊天记录"); tab.AddHeadRow(); ViewBag.gridTable = tab.GetHead() + Pagination.GetPage(pager, tableId, "5,10,15,20"); return View(); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_优质客户列表)] public JsonResult BestIndex(string columns, Pager pager, BestCustomerQueryDto dto) { var list = _customerQ.GetBestCustomer(pager, dto); Table table = new Table(columns, true); table.isCheckbox = true; table.gridPager = pager; ViewBag.WwMessage_Url = _cacheQ.GetValue_Parameter("WwMessage_Url"); var lineList = line_BL.GetBusinessLineByRoot(UserId); if (lineList.Count > 0) { ViewBag.lineCompany = string.Join(",", lineList.Select(n => n.COMPANYCODE).ToList()); } ViewBag.IsHg = userRoleCodes.Contains("[HGZJ]") || userRoleCodes.Contains("[GLY]"); var appid = System.Configuration.ConfigurationManager.AppSettings["appid"]; foreach (var model in list) { var linkUrl = string.Format("{2}" , "客户详细" , "/Csvr/CustomerInfo/CustomerDetail?resid=" + model.UMID , model.UMID); table.AddCol(linkUrl); table.AddCol(model.Name); table.AddCol(model.Remark); table.AddCol(model.SumCount); table.AddCol(model.SumPrice); table.AddCol(!string.IsNullOrWhiteSpace(model.Group) ? model.Group : model.DeptName); table.AddCol(model.Eid + "-" + model.UserName); var chatlink = string.Format("", model.ResId, model.wx_userIds, ViewBag.WwMessage_Url, ViewBag.lineCompany, ViewBag.IsHg, Eid, appid); table.AddCol(chatlink); table.AddRow(); } var json = new { totalPages = pager.totalPages, totalRows = pager.totalRows, rowsList = table.GetRows(), foot = table.GetFoot(), }; return Json(json, JsonRequestBehavior.AllowGet); } [HttpGet] [AuthorizeToolBar(InitRights.CONST_优质客户列表, InitToolBar.CONST_Add)] public ActionResult BestEdit(string id) { RES_CUSTOMER_BEST bestRes = new RES_CUSTOMER_BEST(); if (id != null) { bestRes = _customerQ.GetBestCustomerById(id); } return View(bestRes); } [HttpPost] [AuthorizeToolBar(InitRights.CONST_优质客户列表, InitToolBar.CONST_Add)] public JsonResult BestEdit(RES_CUSTOMER_BEST model) { bool success = true; if (string.IsNullOrWhiteSpace(model.RESID) || string.IsNullOrWhiteSpace(model.REMARK)) { errors.Add($"客户ID和备注不能为空"); return JsonHandler.InsertMessage(errors, false); } try { using (var db = new crmContext()) { var customer = db.RES_CUSTOMER.FirstOrDefault(n => n.RESID == model.RESID); if (customer == null) { success = false; errors.Add("找不到对应的客户"); return JsonHandler.InsertMessage(errors, success); } var existModel = db.RES_CUSTOMER_BEST.FirstOrDefault(n => n.RESID == model.RESID); if (existModel == null) { RES_CUSTOMER_BEST newModel = new RES_CUSTOMER_BEST { RESID = model.RESID, REMARK = model.REMARK, CREATEID = UserId, CTIME = DateTime.Now }; db.RES_CUSTOMER_BEST.Add(newModel); db.SaveChanges(); return JsonHandler.InsertMessage(errors, success); } else { if (!model.CREATEID.HasValue && existModel.CREATEID != UserId) { errors.Add($"该客户已被标记"); return JsonHandler.UpdateMessage(errors, false); } //existModel.RESID = model.RESID; existModel.REMARK = model.REMARK; //existModel.CREATEID = UserId; existModel.UTIME = DateTime.Now; db.SaveChanges(); db.Configuration.ValidateOnSaveEnabled = true; return JsonHandler.UpdateMessage(errors, success); } } } catch (Exception ex) { success = false; LogHelper.Error($"优质客户插入报错{ex.Message}"); errors.Add(ex.Message); } return JsonHandler.UpdateMessage(errors, success); } [HttpGet] [AuthorizeToolBar(InitRights.CONST_我的订单, InitToolBar.CONST_Other5)] public ActionResult BatchBestEdit(string id) { RES_CUSTOMER_BESTEditModel bestRes = new RES_CUSTOMER_BESTEditModel() { RESID = id }; return View(bestRes); } [HttpPost] [AuthorizeToolBar(InitRights.CONST_我的订单, InitToolBar.CONST_Other5)] public JsonResult BatchBestEdit(RES_CUSTOMER_BESTEditModel model) { bool success = true; if (string.IsNullOrWhiteSpace(model.REMARK)) { errors.Add($"备注不能为空"); return JsonHandler.ManageMessage(errors, false); } try { using (var db = new crmContext()) { var resList = model.RESID.Trim(',').Split(',').Distinct().ToList(); var existModel = db.RES_CUSTOMER_BEST.Where(n => resList.Contains(n.RESID)).ToList(); foreach (var item in existModel) { if (item.CREATEID != UserId) { errors.Add($"客户{item.RESID}已被标记!"); return JsonHandler.ManageMessage(errors, false); } item.REMARK = model.REMARK; item.UTIME = DateTime.Now; } /*if (existModel.Count()>0) { errors.Add($"客户{string.Join(",",existModel.Select(n=>n.RESID))}已被标志为优质客户!"); return JsonHandler.ManageMessage(errors, false); }*/ foreach (var item in resList.Where(n => !existModel.Select(s => s.RESID).Contains(n))) { RES_CUSTOMER_BEST newModel = new RES_CUSTOMER_BEST { RESID = item, REMARK = model.REMARK, CREATEID = UserId, CTIME = DateTime.Now, CUSERNAME = UserName }; db.RES_CUSTOMER_BEST.Add(newModel); } db.SaveChanges(); return JsonHandler.ManageMessage(errors, success); } } catch (Exception ex) { success = false; LogHelper.Error($"优质客户标记报错{ex.Message}"); errors.Add(ex.Message); } return JsonHandler.ManageMessage(errors, success); } /// /// 删除数据 /// /// /// [AuthorizeToolBar(InitRights.CONST_优质客户列表, InitToolBar.CONST_Delete)] public JsonResult BestDelete(string id) { var result = true; if (string.IsNullOrWhiteSpace(id)) return JsonHandler.ManageMessage("参数错误", false); try { using (var db = new crmContext()) { var resList = id.Trim(',').Split(',').Distinct().ToList(); var existModel = db.RES_CUSTOMER_BEST.Where(n => resList.Contains(n.RESID)); foreach (var item in existModel) { db.RES_CUSTOMER_BEST.Remove(item); } db.SaveChanges(); } } catch (Exception ex) { LogHelper.Error($"删除优质客户失败{ex.Message}"); errors.Add(ex.Message); result = false; } return JsonHandler.DeleteMessage(errors, result); } #endregion private class ResTraceView { public string GroupName { get; set; } public decimal Eid { get; set; } public string ResId { get; set; } public string Act { get; set; } public string Remark { get; set; } public DateTime CTime { get; set; } public decimal? DeptId { get; set; } } } }