ComplianceServer/oldcode/WEB/Controllers/Soft/Soft_CustomerController.cs

543 lines
23 KiB
C#

using Ninject;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Web.Mvc;
using WX.CRM.BLL.Soft;
using WX.CRM.Common;
using WX.CRM.IBLL.Res;
using WX.CRM.IBLL.Soft;
using WX.CRM.IBLL.Util;
using WX.CRM.IBLL.Wx;
using WX.CRM.Model.Entity;
using WX.CRM.Model.Enum;
using WX.CRM.Model.MAP;
using WX.CRM.WEB.ViewModel.softcustomer;
using WX.CRM.WebHelper;
using WX.CRM.WebHelper.UtilityModel;
namespace WX.CRM.WEB.Controllers.Soft
{
public class Soft_CustomerController : BaseController
{
//
// GET: /Soft_Customer/
ValidationErrors errors = new ValidationErrors();
ISOFT_CUSTOMER_Q customerQ;
ICACHE_Q cache_Q_bll;
ISOFT_CUSTOMER customer;
ISOFT_ALLOCATERESLOG allocatereslog;
ISOFT_USER_Q softuser_q;
ISecurityHelper sHelper;
[Inject]
public IWX_SZZYORDER _order { get; set; }
[Inject]
public IRES_RESOURCEMOBILE_Q res_ResourceMobile_BL { get; set; }
public Soft_CustomerController(ICACHE_Q _cache_Q_bll, ISOFT_CUSTOMER_Q _customerQ, ISOFT_CUSTOMER _customer, ISOFT_ALLOCATERESLOG _allocatereslog, ISOFT_USER_Q _softuser_q, ISecurityHelper _sHelper)
{
this.cache_Q_bll = _cache_Q_bll;
this.customerQ = _customerQ;
this.customer = _customer;
this.allocatereslog = _allocatereslog;
this.softuser_q = _softuser_q;
this.sHelper = _sHelper;
}
#region
[AuthorizeRedirect(Roles = InitRights.CONST_软件客户列表)]
public ActionResult Index()
{
ToolBar tb = new ToolBar();
string[] toolbtn = new ToolButtonView().ToolButtonRight(InitRights., userRightId);
tb.AllowButton(toolbtn);
tb.AddOtherButton("Other1", "导出", "icon-export", "Export_Click", true);
ViewBag.ToolBar = tb;
Pager gp = new Pager() { page = 1, rows = 20, order = "desc" };
Table tab = new Table("tablist");
tab.AddHeadCol("USERNAME", "", "软件用户名", true);
tab.AddHeadCol("RESID", "", "客户ID");
tab.AddHeadCol("REGCAMPAINID", "", "渠道来源");
//tab.AddHeadCol("USERNO", "", "用户卡号");
tab.AddHeadCol("REGDATE", "", "注册时间");
tab.AddHeadCol("CZ", "", "操作");
tab.AddHeadRow();
ViewBag.GroupList = tab.GetTable() + Pagination.GetPage(gp, "tablist");
//ViewBag.inneruserid = UserId;
//ViewBag.userGroupId = userGroupId;
//ViewBag.saleDeptId = saleDeptId;
//ViewBag.roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId);
return View();
}
#endregion
#region
[HttpPost]
[AuthorizeRedirect(Roles = InitRights.CONST_软件客户列表)]
public JsonResult GetHtmlList(Pager pager, string columns, string SoftName, string ResID, DateTime? ctime1, DateTime? ctime2)
{
try
{
//var list = _soft_userQ.GetList(ref pager, SoftName, ResID, ctime1, ctime2);
var list = new SOFT_USER_BL().GetList(ref pager, SoftName, ResID, ctime1, ctime2);
Table table = new Table(columns, true);
table.gridPager = pager;
foreach (var model in list)
{
table.AddCol(PhoneHelper.FormatPhoneUserName(model.USERNAME));
table.AddCol("<a href=\"javascript:ShowResDetial('/Csvr/CustomerInfo/CustomerDetail?resid=" + model.RESID + "')\">" + model.RESID + "</a>");
table.AddCol(model.REGCAMPAINID);
//table.AddCol(model.USERNO);
table.AddCol(model.REGDATE);
var btnStr = "<input type=\"button\" class=\"btn btn-primary\" style=\"width: 100px; text-align:center\" onclick=\"if (confirm('确认重置密码?')) ResetPwd('" + Utility.EncryptUrlEncode(model.USERNAME) + "', '" + model.RESID + "', this)\" value=\"重置密码\">";
btnStr += "<input type=\"button\" class=\"btn btn-primary\" style=\"width:100px;text-align:center\" onclick=\"ResetMobile('" + model.USERNAME + "',0,this);\" value=\"绑定手机\">";
btnStr += "<input type=\"button\" class=\"btn btn-primary\" style=\"width:100px;text-align:center\" onclick=\"ResetMobile('" + model.USERNAME + "',1,this);\" value=\"解绑手机\">";
btnStr += "<input type=\"button\" class=\"btn btn-primary\" style=\"width:100px;text-align:center\" onclick=\"ResetMobile('" + model.USERNAME + "',2,this);\" value=\"修改手机\">";
btnStr += "<input type=\"button\" class=\"btn btn-primary\" style=\"width:100px;text-align:center\" onclick=\"UnBindQW('" + model.USERNAME + "',3,this);\" value=\"企微关系解绑\">";
table.AddCol(btnStr);
table.AddRow();
}
var json = new
{
totalPages = pager.totalPages,
totalRows = pager.totalRows,
rowsList = table.GetRows()
};
return Json(json, JsonRequestBehavior.AllowGet);
//LogHelper.Info("1");
//return null;
}
catch (Exception ex)
{
LogHelper.Error("Soft_UserController:" + ex.Message + ex.StackTrace);
return JsonHandler.ManageMessage(ex.Message, false);
}
}
public string GetUserStatus(int userStatus)
{
string status = "";
switch (userStatus)
{
case 1:
status = "未开通";
break;
case 2:
status = "在用";
break;
case 3:
status = "过期";
break;
case 4:
status = "退款";
break;
default:
status = "未知";
break;
}
return status;
}
public string GetSoftType(int type)
{
string status = "";
switch (type)
{
case 1:
status = "Level2";
break;
case 2:
status = "券商";
break;
default:
status = "未知";
break;
}
return status;
}
/// <summary>
/// 获取对应渠道
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public string GetChannel(decimal channelid)
{
if (channelid >= 9501 & channelid <= 9600)
{
return "Android手机";
}
else if (channelid >= 9001 & channelid <= 9100)
{
return "IOS手机";
}
else
{
return channelid.ToString();
}
}
/// <summary>
/// 产品子类名
/// </summary>
/// <param name="productCode">产品子类代码</param>
/// <returns></returns>
protected string GetProductName(string productCode)
{
//if (!string.IsNullOrEmpty(productCode))
//{
// var model = cache_Q_bll.GetSProductList().Where(p => p.PRODUCTCODE == productCode).FirstOrDefault();
// return model == null ? productCode : model.PRODUCTNAME;
//}
return productCode;
}
#endregion
#region
/// <summary>
/// 软件客户列表
/// </summary>
/// <returns></returns>
[AuthorizeRedirect(Roles = InitRights.CONST_软件客户分配)]
public ActionResult SaleUserAssign()
{
ToolBar tool = new ToolBar();
string[] toolbtn = new ToolButtonView().ToolButtonRight(InitRights., userRightId);
tool.AllowButton(toolbtn);
tool.AddOtherButton("Other1", "提交变更", "icon-flag", "Complete_Click", true);
tool.AddOtherButton("Other2", "批量分配", "icon-add", "ListComplete_Click", true);
ViewBag.ToolBar = tool;
//table
Pager gp = new Pager() { page = 1, rows = 10 };
Table tab = new Table("tablist");
tab.AddHeadCol("SOFTNAME", "", "软件用户名");
tab.AddHeadCol("RESID", "", "客户ID");
tab.AddHeadCol("SOFTTYPE", "", "软件类型");
tab.AddHeadCol("PRODUCTCODE", "", "软件产品");
tab.AddHeadCol("USERSTATUS", "", "用户状态");
tab.AddHeadCol("OPENDATE", "", "权限开通日期");
tab.AddHeadCol("ENDDATE", "", "权限截止日期");
tab.AddHeadCol("SALEUSERID", "", "现有");
tab.AddHeadCol("operation", "", "新分配");
tab.AddHeadRow();
ViewBag.GroupList = tab.GetTable() + Pagination.GetPage(gp, "tablist");
return View();
}
[HttpPost]
[AuthorizeRedirect(Roles = InitRights.CONST_软件客户分配)]
public JsonResult GetSaleUserAssignList(Pager pager, string columns, string SoftName, string SaleEid, string ResID)
{
try
{
decimal? saleid = InnerUserHelper.Instance.GetUserIdByEid(SaleEid.GetDecimal());
List<SOFT_CUSTOMER_Extend> list = customerQ.GetList(ref pager, SoftName, saleid, ResID, 0, null, null, null, null, null, null);
Table table = new Table(columns, true);
table.gridPager = pager;
int i = 1;
foreach (SOFT_CUSTOMER_Extend model in list)
{
//table.AddCol(model.CUSTOMERID);
table.AddCol(PhoneHelper.FormatPhoneUserName(model.SOFTNAME));
table.AddCol(model.RESID);
table.AddCol(GetSoftType(Convert.ToInt32(model.SOFTTYPE)));
table.AddCol(GetProductName(model.PRODUCTCODE));
table.AddCol(GetUserStatus(Convert.ToInt32(model.USERSTATUS)));
table.AddCol(model.OPENDATE.ToUnityString(1));
table.AddCol(model.ENDDATE.ToUnityString(1));
table.AddCol(InnerUserHelper.Instance.EidAndName(model.SALEUSERID));
//tradeCode 保存的是customerid
table.AddCol(string.Format("工号:<input type='text' name='Trader' oldTUser='{0}' id='{1}' tradeCode='{2}' style='width:100px;'/>", model.SALEUSERID, "Trader" + i, model.CUSTOMERID));
table.AddRow();
i++;
}
var json = new
{
totalPages = pager.totalPages,
totalRows = pager.totalRows,
rowsList = table.GetRows()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
LogHelper.Error("Soft_CustomerController_SaleUserAssign" + ex.Message + ex.StackTrace);
return JsonHandler.ManageMessage(ex.Message, false);
}
}
[AuthorizeToolBar(InitRights.CONST_软件客户分配, InitToolBar.CONST_Other1)]
public ActionResult SoftCustomerSalerCommit(string trader)
{
List<TraderCommit> lists = new List<TraderCommit>();
if (!string.IsNullOrEmpty(trader))
{
var traderlist = JsonHelper.JsonDivertToObj<List<TraderCommit>>(trader);
foreach (var item in traderlist)
{
decimal eid;
if (decimal.TryParse(item.newUserId, out eid))
{
TraderCommit list = new TraderCommit();
decimal newUserId = InnerUserHelper.Instance.GetUserIdByEid(eid);
if (newUserId > 1)
{
list.Id = item.Id;
list.newUserId = newUserId.ToString();
list.oldUserId = item.oldUserId;
list.tradeCode = item.tradeCode;
lists.Add(list);
}
else
{
ModelState.AddModelError(item.Id, "工号不存在");
}
}
else
{
ModelState.AddModelError(item.Id, "工号不正确");
}
}
}
if (ModelState.IsValid)
{
List<SOFT_ALLOCATERESLOG> log_lists = new List<SOFT_ALLOCATERESLOG>();
List<SOFT_CUSTOMER> customer_lists = new List<SOFT_CUSTOMER>();
string error = "";
foreach (var item in lists)
{
var model = customerQ.GetModel(item.tradeCode.GetDecimal(0));
if (null != model)
{
var allocateResLogModel = new SOFT_ALLOCATERESLOG();
allocateResLogModel.SOFTNAME = model.SOFTNAME;
allocateResLogModel.RESID = model.RESID;
allocateResLogModel.ALLOCATETYPE = Convert.ToDecimal(Allocatetype.);
allocateResLogModel.SALESTYPE = Convert.ToDecimal(10);
allocateResLogModel.ORGSALESID = Convert.ToDecimal(item.oldUserId);
allocateResLogModel.NEWSALESID = Convert.ToDecimal(item.newUserId);
allocateResLogModel.OPUSERID = UserId;
allocateResLogModel.OPTIME = DateTime.Now;
allocateResLogModel.OPREMART = "软件客户分配与变更";
log_lists.Add(allocateResLogModel);
model.SALEUSERID = Convert.ToDecimal(item.newUserId);
customer_lists.Add(model);
}
else
{
error += item.tradeCode + "不存在软件客户。";
}
}
bool log = allocatereslog.CreateList(ref errors, log_lists);
if (!log)
error += "_log:" + errors.Error;
bool cusResult = customer.UpdateList(ref errors, customer_lists);
if (!cusResult)
error += "_update:" + errors.Error;
if (error == "")
{
error = "修改成功";
}
else
{
LogHelper.Error(error);
}
return JsonHandler.ManageMessage(error, true);
}
else
{
return JsonHandler.JsonResultSerialize(ModelState);
}
}
public ActionResult GetSaleUserAssignHtmlList()
{
return View();
}
#endregion
#region
[HttpGet]
[AuthorizeToolBar(InitRights.CONST_软件客户分配, InitToolBar.CONST_Other2)]
public ActionResult ListOfSoftSalerCommit()
{
int count = customerQ.SoftCustomerCount();
ListSoftSalerCommit soft = new ListSoftSalerCommit();
soft.t_count = count;
return View(soft);
}
[HttpPost]
[AuthorizeToolBar(InitRights.CONST_软件客户分配, InitToolBar.CONST_Other2)]
public ActionResult ListSoftSalerCommit(ListSoftSalerCommit model)
{
if (ModelState.IsValid)
{
decimal newUserId = InnerUserHelper.Instance.GetUserIdByEid(model.Eid);
if (newUserId <= 1)
{
return JsonHandler.ManageMessage("工号不存在", false);
}
if (model.count.Value > model.t_count)
{
return JsonHandler.ManageMessage("分配数不能大于未分配总数", false);
}
customer.ListOfSoftSalerCommit(newUserId, UserId, model.count.Value);
return JsonHandler.ManageMessage("分配成功", true);
}
else
{
return JsonHandler.ManageMessage("数据验证不通过", false);
}
}
#endregion
public ActionResult SoftUser_Search()
{
//ToolBar tb = new ToolBar();
//string[] toolbtn = new ToolButtonView().ToolButtonRight(InitRights.软件客户列表, userRightId);
//tb.AllowButton(toolbtn);
//tb.AddOtherButton("Other1", "导出", "icon-export", "Export_Click", true);
//ViewBag.ToolBar = tb;
Pager gp = new Pager() { page = 1, rows = 10, order = "desc" };
Table tab = new Table("tablist");
tab.AddHeadCol("username", "", "帐号");
tab.AddHeadCol("phone", "", "手机号码");
tab.AddHeadCol("registerTime", "", "注册时间");
tab.AddHeadCol("resid", "", "操作");
tab.AddHeadRow();
ViewBag.GroupList = tab.GetTable() + Pagination.GetPage(gp, "tablist");
ViewBag.inneruserid = UserId;
ViewBag.userGroupId = userGroupId;
ViewBag.saleDeptId = saleDeptId;
ViewBag.roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId);
return View();
}
public JsonResult SoftUser_SearchGetHtmlList(Pager pager, string columns, string phone, string username)
{
try
{
string clientid = Utility.GetSettingByKey("CRMClientKey");
List<SOFT_USER_MK> list = softuser_q.GetCanOpenRes(username, phone, ref pager);
Table table = new Table(columns, true);
table.gridPager = pager;
foreach (SOFT_USER_MK model in list)
{
table.AddCol(model.username);
table.AddCol(sHelper.decyptData(clientid, model.phone));
//table.AddCol(clientid,model.phone);
table.AddCol(model.registerTime.ToUnityString(2));
table.AddCol("<a href=\"javascript:ShowResDetial('" + model.resid + "')\">开通</a>" + "&nbsp;&nbsp;<a href=\"javascript:ShowTDDetial('" + model.resid + "')\">TD开通</a>");
table.AddRow();
}
var json = new
{
totalPages = pager.totalPages,
totalRows = pager.totalRows,
rowsList = table.GetRows()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
LogHelper.Error("Soft_CustomerController:" + ex.Message + ex.StackTrace);
return JsonHandler.ManageMessage(ex.Message, false);
}
}
public FileResult Export(string SoftName, string ResID, DateTime? ctime1, DateTime? ctime2)
{
//decimal p_saleDeptId = Request["saleDeptId"].GetDecimal(0);
//string groupId = Request["groupId"];
//decimal innerUserId = Request["userId"].GetDecimal(0);
//decimal? teamEid = null;
//string checkedFilds = "";
//checkedFilds = checkedFilds.Replace("[]", "");
//string checkedTitles = "";
Pager pager = new Pager() { page = 1, rows = int.MaxValue };
var list = new SOFT_USER_BL().GetList(ref pager, SoftName, ResID, ctime1, ctime2);
var orderList = _order.GetList(p => p.ISOPEN == 1 && p.ARRIVALTIME >= ctime1);
var data = (from a in list
join b in orderList on a.RESID equals b.RESID into abTmp
from ab in abTmp.DefaultIfEmpty()
select new Soft_User_Export()
{
UserName = a.USERNAME,
RegDate = a.REGDATE,
ResId = a.RESID,
HasOrder = ab != null ? "是" : "否",
OrderId = ab != null ? (decimal?)ab.ORDERID : null,
ArrivalPay = ab != null ? ab.ARRIVALPAY : null,
OTime = ab != null ? ab.OTIME : null,
SubProductName = ab != null ? ab.SUBPRODUCTNAME : null
}).ToList();
var softExportMobile = cache_Q_bll.GetValue_Parameter("Sys_SoftExportMobile");//是否导出手机号码
if (softExportMobile == "1")
{
foreach (var item in data)
{
if (!string.IsNullOrEmpty(item.ResId))
{
item.Mobile = res_ResourceMobile_BL.GetNumberByResId(item.ResId);
}
};
}
//LogHelper.Info(list.Count.ToString());
//return File(ExcelHelper.ExportListModelToExcel<Soft_User_Export>(data, "软件客户列表", 10000, checkedFilds, checkedTitles, DataFormart), "application/ms-excel", PageRequest.GetDlownLoadName("软件客户列表.xls"));
System.IO.Stream strem = ExcelHelper.ExportListModelToExcel<Soft_User_Export>(data, "软件客户列表", 50000, null);
return File(strem, "application/ms-excel", PageRequest.GetDlownLoadName("软件客户列表.xls"));
}
public string DataFormart(string key, object value)
{
string formartValue = string.Empty;
switch (key)
{
default: formartValue = string.Format("{0}", value); break;
}
return formartValue;
}
public class Soft_User_Export
{
[DisplayName("软件用户名")]
public string UserName { get; set; }
[DisplayName("注册时间")]
public DateTime? RegDate { get; set; }
[DisplayName("客户ID")]
public string ResId { get; set; }
[DisplayName("手机号码")]
public string Mobile { get; set; }
//public string RegCampainId { get; set; }
[DisplayName("是否订单")]
public string HasOrder { get; set; }
[DisplayName("订单ID")]
public decimal? OrderId { get; set; }
[DisplayName("支付金额")]
public decimal? ArrivalPay { get; set; }
[DisplayName("开通时间")]
public DateTime? OTime { get; set; }
[DisplayName("产品名称")]
public string SubProductName { get; set; }
}
}
}