ComplianceServer/oldcode/WEB/Controllers/WeiXin/OrderCustomerVisitControlle...

437 lines
20 KiB
C#

using Ninject;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Web.Mvc;
using System.Web.UI.WebControls;
using WX.CRM.BLL;
using WX.CRM.Common;
using WX.CRM.IBLL.Base;
using WX.CRM.IBLL.Res;
using WX.CRM.IBLL.Util;
using WX.CRM.IBLL.Wx;
using WX.CRM.Model.Entity;
using WX.CRM.Model.Enum;
using WX.CRM.WebHelper;
using Table = WX.CRM.WebHelper.Table;
namespace WX.CRM.WEB.Controllers.WeiXin
{
public class OrderCustomerVisitController : BaseController
{
[Inject]
public IWX_SZZYORDER wx_SzzyOrder_BL { get; set; }
[Inject]
public IWX_SZZYPRODUCT wx_SzzyProduct_BL { get; set; }
[Inject]
public ICACHE_Q _cacheQ { get; set; }
[Inject]
public IBAS_PROVINCE_Q _provinceQ { get; set; }
[Inject]
public IBAS_CITY_Q _cityQ { get; set; }
[Inject]
public IRES_CUSTOMERDETAIL_Q _customerdetailQ { get; set; }
[Inject]
public IRES_CUSTOMERDETAIL _customerdetail { get; set; }
[Inject]
public IWX_SZZYMIDPRODUCT _midProduct { get; set; }
[HttpGet]
[AuthorizeRedirect(Roles = InitRights.CONST_客户回访列表)]
public ActionResult Index()
{
Pager pager = new Pager() { page = 1, rows = 10 };
string tableId = "tablist";
Table tab = new Table(tableId);
tab.AddHeadCol("resid", "", "客户ID");
tab.AddHeadCol("cname", "", "客户姓名");
tab.AddHeadCol("gender", "", "性别");
tab.AddHeadCol("birthdayarea", "", "年龄");
tab.AddHeadCol("amounttypeid", "", "资金量");
tab.AddHeadCol("provinceid", "", "省");
tab.AddHeadCol("cityid", "", "市");
tab.AddHeadCol("jobtypeid", "", "职业");
tab.AddHeadCol("operationtype", "", "操作习惯");
tab.AddHeadCol("dealer", "", "开户券商");
tab.AddHeadCol("operationtime", "", "操作年限");
tab.AddHeadCol("frequency", "", "频次");
tab.AddHeadCol("stockposition", "", "持仓情况");
tab.AddHeadCol("visitstatus", "", "回访状态");
tab.AddHeadCol("visittime", "", "修改时间");
tab.AddHeadCol("visituser", "", "修改人");
tab.AddHeadCol("visitremark", "", "备注");
tab.AddHeadCol("timestart", "", "末次沟通时间");
tab.AddHeadCol("gname", "", "组别");
tab.AddHeadCol("eid", "", "客服");
tab.AddHeadCol("subproductname", "", "产品");
tab.AddHeadCol("ordertype", "", "订单类型");
tab.AddHeadCol("orderstatusname", "", "订单状态");
tab.AddHeadCol("ctime", "", "下单时间");
tab.AddHeadCol("otime", "", "开单时间");
tab.AddHeadRow();
var genders = GetGenders();
var KHLX = GetKHLX();
var ZJL = GetZJL();
var ZY = GetZY();
var CZXG = GetCZXG();
var NL = GetNL();
NL.Insert(0, new SelectListItem() { Text = "全部", Value = string.Empty });
ZJL.Insert(0, new SelectListItem() { Text = "全部", Value = string.Empty });
ZY.Insert(0, new SelectListItem() { Text = "全部", Value = string.Empty });
CZXG.Insert(0, new SelectListItem() { Text = "全部", Value = string.Empty });
ViewBag.productList = getAllProductList();
ViewBag.Gender = genders;
ViewBag.KHLX = KHLX;
ViewBag.ZJL = ZJL;
ViewBag.ZY = ZY;
ViewBag.CZXG = CZXG;
ViewBag.NL = NL;
ViewBag.Province = GetProvince();
//ViewBag.City = GetCity();
ViewBag.midproductList = GetMidProductList();
ViewBag.inneruserid = UserId;
ViewBag.userGroupId = userGroupId;
ViewBag.saleDeptId = saleDeptId;
ViewBag.roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId);
ViewBag.gridTable = tab.GetTable() + Pagination.GetPage(pager, tableId, "10,20");
return View();
}
[HttpPost]
[AuthorizeRedirect(Roles = InitRights.CONST_客户回访列表)]
public JsonResult Index(string columns, Pager pager, string resId, string gender, string birthdayArea, string amountTypeId, decimal? provinceId, decimal? cityId, string jobTypeId, string operationType, decimal? hasHgRecord, string groupId, decimal? userId, decimal? orderType, string orderStatus, decimal? productId, decimal? midProductId, decimal? subProductId, DateTime? cTime1, DateTime? cTime2, DateTime? oTime1, DateTime? oTime2, DateTime? vTime1, DateTime? vTime2)
{
if (orderType == 0)
{
orderType = null;
}
if (productId == 0)
{
productId = null;
}
if (subProductId == 0)
{
subProductId = null;
}
var genders = GetGenders();
var ZJL = GetZJL();
var ZY = GetZY();
var CZXG = GetCZXG();
var NL = GetNL();
var province = GetProvince();
var city = GetCity();
var ds = wx_SzzyOrder_BL.GetOrderCustomerVisit(ref pager, resId, gender, birthdayArea, amountTypeId, provinceId, cityId, jobTypeId, operationType, hasHgRecord, groupId, userId, orderType, orderStatus, productId, midProductId, subProductId, cTime1, cTime2.HasValue ? cTime2.Value.AddDays(1) : cTime2, oTime1, oTime2.HasValue ? oTime2.Value.AddDays(1) : oTime2, vTime1, vTime2.HasValue ? vTime2.Value.AddDays(1) : vTime2);
var list = ds.Tables[0].ToList<OrderCustomerVisitView>();
Table table = new Table(columns, true);
table.gridPager = pager;
foreach (var model in list)
{
var linkUrl = string.Format("<a href=\"javascript:parent.ChildAddTab('{0}', '{1}', '')\">{2}</a>", "客户详细", "/Csvr/CustomerInfo/CustomerDetail?resid=" + model.resid, model.resid);
var genderItem = genders.Find(p => p.Value == model.gender);
var nlItem = NL.Find(p => p.Value == model.birthdayarea);
var zjlItem = ZJL.Find(p => p.Value == model.amounttypeid);
var provinceItem = province.Find(p => p.Value == model.provinceid.ToString());
var cityItem = city.Find(p => p.Value == model.cityid.ToString());
var zyItem = ZY.Find(p => p.Value == model.jobtypeid);
var czxgItem = CZXG.Find(p => p.Value == model.operationtype);
table.AddCol(linkUrl);
table.AddCol(model.cname);
table.AddCol(genderItem == null ? string.Empty : genderItem.Text);
table.AddCol(nlItem == null ? string.Empty : nlItem.Text);
table.AddCol(zjlItem == null ? string.Empty : zjlItem.Text);
table.AddCol(provinceItem == null ? string.Empty : provinceItem.Text);
table.AddCol(cityItem == null ? string.Empty : cityItem.Text);
table.AddCol(zyItem == null ? string.Empty : zyItem.Text);
table.AddCol(czxgItem == null ? string.Empty : czxgItem.Text);
table.AddCol(model.dealer);
table.AddCol(model.operationtime);
table.AddCol(model.frequency);
table.AddCol(model.stockposition);
//table.AddCol((model.hashgrecord.HasValue && model.hashgrecord == 1) ? "是" : "否");
table.AddCol((model.visitstatus == null || model.visitstatus == 0) ? "未回访" : model.visitstatus == 1 ? "已回访" : "回访中");
table.AddCol(model.visittime);
table.AddCol(InnerUserHelper.Instance.EidAndName(model.visituser));
table.AddCol(model.visitremark);
table.AddCol(model.timestart);
table.AddCol(model.gname);
table.AddCol(model.eid.ToString() + "-" + model.uname);
table.AddCol(model.subproductname);
table.AddCol(getOrderTypeStr(model.ordertype.Value));
table.AddCol(model.orderstatusname);
table.AddCol(model.ctime);
table.AddCol(model.otime);
table.AddRow();
}
var json = new
{
totalPages = pager.totalPages,
totalRows = pager.totalRows,
rowsList = table.GetRows()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
public FileResult Export(string resId, string gender, string birthdayArea, string amountTypeId, decimal? provinceId, decimal? cityId, string jobTypeId, string operationType, decimal? hasHgRecord, string groupId, decimal? userId, decimal? orderType, string orderStatus, decimal? productId, decimal? midProductId, decimal? subProductId, DateTime? cTime1, DateTime? cTime2, DateTime? oTime1, DateTime? oTime2, DateTime? vTime1, DateTime? vTime2)
{
string checkFilds = "[resid][cname][gender][birthdayarea][amounttypeid][provinceid][cityid][jobtypeid][operationtype][dealer][operationtime][frequency][stockposition][visitstatus][visittime][visituser][visitremark][timestart][gname][uname][subproductname][ordertype][orderstatusname][ctime][otime][inneruserid][typename][memoctime][strcontent]";
string checkTitles = "客户ID,客户姓名,性别,年龄,资金量,省,市,职业,操作习惯,开户券商,操作年限,频次,持仓情况,回访状态,修改时间,修改人,备注,末次沟通时间,组别,客服,产品,订单类型,订单状态,下单时间,开单时间,工单客服,工单类型,工单时间,工单内容";
if (orderType == 0)
{
orderType = null;
}
if (productId == 0)
{
productId = null;
}
if (subProductId == 0)
{
subProductId = null;
}
var genders = GetGenders();
var ZJL = GetZJL();
var ZY = GetZY();
var CZXG = GetCZXG();
var NL = GetNL();
var ds = wx_SzzyOrder_BL.GetOrderCustomerVisitExport(resId, gender, birthdayArea, amountTypeId, provinceId, cityId, jobTypeId, operationType, hasHgRecord, groupId, userId, orderType, orderStatus, productId, midProductId, subProductId, cTime1, cTime2.HasValue ? cTime2.Value.AddDays(1) : cTime2, oTime1, oTime2.HasValue ? oTime2.Value.AddDays(1) : oTime2, vTime1, vTime2.HasValue ? vTime2.Value.AddDays(1) : vTime2);
var list = ds.Tables[0].ToList<OrderCustomerVisitExportView>();
foreach (var item in list)
{
var genderItem = genders.Find(p => p.Value == item.gender);
var nlItem = NL.Find(p => p.Value == item.birthdayarea);
var zjlItem = ZJL.Find(p => p.Value == item.amounttypeid);
var zyItem = ZY.Find(p => p.Value == item.jobtypeid);
var czxgItem = CZXG.Find(p => p.Value == item.operationtype);
item.gender = genderItem == null ? string.Empty : genderItem.Text;
item.birthdayarea = nlItem == null ? string.Empty : nlItem.Text;
item.amounttypeid = zjlItem == null ? string.Empty : zjlItem.Text;
item.jobtypeid = zyItem == null ? string.Empty : zyItem.Text;
item.operationtype = czxgItem == null ? string.Empty : czxgItem.Text;
item.uname = item.eid.ToString() + "-" + item.uname;
}
string contentType = "application/ms-excel";
System.IO.Stream stream = ExcelHelper.ExportListModelToExcel<OrderCustomerVisitExportView>(list, "回访列表", 50000, checkFilds, checkTitles, DataFormart);
string fileName = PageRequest.GetDlownLoadName("回访列表" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ".xls");
return File(stream, contentType, fileName);
}
[HttpGet]
public ActionResult Edit(string resid)
{
var model = _customerdetailQ.GetModel_RES_CUSTOMERDETAIL(resid);
return View(model);
}
[HttpPost]
public ActionResult Edit(RES_CUSTOMERDETAIL customer)
{
customer.VISITTIME = DateTime.Now;
customer.VISITUSER = UserId;
var result = _customerdetail.UpdateVisitStatus(customer);
return JsonHandler.ManageMessage(result ? "修改成功!" : "修改失败!", result);
}
private List<SelectListItem> GetGenders()
{
return new List<SelectListItem>() { new SelectListItem() { Text = "全部", Value = string.Empty }, new SelectListItem() { Text = "未知", Value = "unknown" }, new SelectListItem() { Text = "男", Value = "m" }, new SelectListItem() { Text = "女", Value = "f" } };
}
private List<SelectListItem> GetKHLX()
{
return _cacheQ.GetList_SubComType(ComType.CustomerType).Select(item => new SelectListItem() { Text = item.SUBTYPENAME, Value = item.SUBTYPECODE }).ToList();
}
private List<SelectListItem> GetZJL()
{
return _cacheQ.GetList_SubComType(ComType.CustomerZJL).Select(item => new SelectListItem() { Text = item.SUBTYPENAME, Value = item.SUBTYPECODE }).ToList();
}
private List<SelectListItem> GetZY()
{
return _cacheQ.GetList_SubComType(ComType.CustomerZY).Select(item => new SelectListItem() { Text = item.SUBTYPENAME, Value = item.SUBTYPECODE }).ToList();
}
private List<SelectListItem> GetCZXG()
{
return _cacheQ.GetList_SubComType(ComType.CustomerCZXG).Select(item => new SelectListItem() { Text = item.SUBTYPENAME, Value = item.SUBTYPECODE }).ToList();
}
private List<SelectListItem> GetNL()
{
return _cacheQ.GetList_SubComType(ComType.CustomerNL).Select(item => new SelectListItem() { Text = item.SUBTYPENAME, Value = item.SUBTYPECODE }).ToList();
}
private List<SelectListItem> GetMidProductList()
{
var data = new List<SelectListItem>();
var list = _midProduct.GetList();
foreach (var item in list)
{
data.Add(new SelectListItem() { Text = item.MIDPRODUCTNAME, Value = item.MIDPRODUCTID.ToString() });
}
return data;
}
private List<SelectListItem> getAllProductList()
{
List<SelectListItem> selectList = new List<SelectListItem>();
var where = PredicateExtensionses.True<WX_SZZYPRODUCT>();
Pager pager = new Pager() { page = 1, rows = int.MaxValue };
var list = wx_SzzyProduct_BL.GetList(where, m => m.PRODUCTID, pager, SortOrder.Ascending);
foreach (var szzyProduct in list)
{
selectList.Add(new SelectListItem() { Text = szzyProduct.PRODUCTNAME, Value = szzyProduct.PRODUCTID.ToString() });
}
return selectList;
}
private List<SelectListItem> GetProvince()
{
var list = _cacheQ.GetProvince();
var data = list.Select(item => new SelectListItem() { Text = item.NAME, Value = item.ID.ToString() }).ToList();
data.Insert(0, new SelectListItem() { Text = "全部", Value = string.Empty });
return data;
}
private List<SelectListItem> GetCity()
{
var list = _cacheQ.GetCity();
return list.Select(item => new SelectListItem() { Text = item.NAME, Value = item.ID.ToString() }).ToList();
}
private string getOrderTypeStr(decimal orderType)
{
if (orderType == 1)
{
return "普通订单";
}
else if (orderType == 2)
{
return "续费订单";
}
else if (orderType == 3)
{
return "升级订单";
}
else
{
return "";
}
}
protected string DataFormart(string key, object value)
{
string nvalue = "";
switch (key)
{
case "inneruserid":
nvalue = InnerUserHelper.Instance.EidAndName(Convert.ToDecimal(value));
break;
case "hashgrecord":
nvalue = (value != null && value.ToString() == "1") ? "是" : "否";
break;
case "ordertype":
nvalue = getOrderTypeStr((decimal)value);
break;
case "provinceid":
nvalue = value == null ? string.Empty : GetProvince().Find(p => p.Value == value.ToString()).Text;
break;
case "cityid":
nvalue = value == null ? string.Empty : GetCity().Find(p => p.Value == value.ToString()).Text;
break;
case "visitstatus":
nvalue = (value == null || Convert.ToInt32(value) == 0) ? "未回访" : Convert.ToInt32(value) == 1 ? "已回访" : "回访中";
break;
case "visituser":
nvalue = InnerUserHelper.Instance.EidAndName(Convert.ToDecimal(value));
break;
default: return value != null ? Convert.ToString(value) : string.Empty;
}
return nvalue;
}
private class OrderCustomerVisitView
{
public string resid { get; set; }
public string cname { get; set; }
public string gender { get; set; }
public string birthdayarea { get; set; }
public string amounttypeid { get; set; }
public decimal? provinceid { get; set; }
public decimal? cityid { get; set; }
public string jobtypeid { get; set; }
public string operationtype { get; set; }
public string dealer { get; set; }
public string operationtime { get; set; }
public string frequency { get; set; }
public string stockposition { get; set; }
//public decimal? hashgrecord { get; set; }
public decimal? visitstatus { get; set; }
public DateTime? visittime { get; set; }
public decimal? visituser { get; set; }
public string visitremark { get; set; }
public DateTime? timestart { get; set; }
public string gname { get; set; }
public decimal? eid { get; set; }
public string uname { get; set; }
public string subproductname { get; set; }
public decimal? ordertype { get; set; }
public string orderstatusname { get; set; }
public DateTime? ctime { get; set; }
public DateTime? otime { get; set; }
}
private class OrderCustomerVisitExportView
{
public string resid { get; set; }
public string cname { get; set; }
public string gender { get; set; }
public string birthdayarea { get; set; }
public string amounttypeid { get; set; }
public decimal? provinceid { get; set; }
public decimal? cityid { get; set; }
public string jobtypeid { get; set; }
public string operationtype { get; set; }
public string dealer { get; set; }
public string operationtime { get; set; }
public string frequency { get; set; }
public string stockposition { get; set; }
//public decimal? hashgrecord { get; set; }
public decimal? visitstatus { get; set; }
public DateTime? visittime { get; set; }
public decimal? visituser { get; set; }
public string visitremark { get; set; }
public DateTime? timestart { get; set; }
public string gname { get; set; }
public decimal? eid { get; set; }
public string uname { get; set; }
public string subproductname { get; set; }
public decimal? ordertype { get; set; }
public string orderstatusname { get; set; }
public DateTime? ctime { get; set; }
public DateTime? otime { get; set; }
public decimal? inneruserid { get; set; }
public string typename { get; set; }
public DateTime? memoctime { get; set; }
public string strcontent { get; set; }
}
}
}