993 lines
42 KiB
C#
993 lines
42 KiB
C#
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<ListItem>() { 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>(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>(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<ListItem>() { 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<string> 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<string> 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<WX.CRM.Common.Employee.ApiResult<List<Res_TagDto>>>();
|
||
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<WX.CRM.Common.Employee.ApiResult<Boolean>>();
|
||
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<WX.CRM.Common.Employee.ApiResult<Boolean>>();
|
||
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<ResTraceView>();
|
||
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<SelectListItem> 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<SelectListItem> 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);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 客户ID是否存在,存在true,不存在false
|
||
/// </summary>
|
||
/// <param name="mobile">传入手机号码</param>
|
||
/// <returns></returns>
|
||
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("<a href=\"javascript:parent.ChildAddTab('{0}', '{1}', '')\">{2}</a>"
|
||
, "客户详细"
|
||
, "/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("<div><a href=\"javascript:QiWeiLook('{0}','{1}','{2}','{3}','{4}','{5}','{6}')\">查看</a></div>", 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);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 删除数据
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <returns></returns>
|
||
[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; }
|
||
}
|
||
}
|
||
} |