303 lines
13 KiB
C#
303 lines
13 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Web.Mvc;
|
||
using WX.CRM.Common;
|
||
using WX.CRM.IBLL.Csvr;
|
||
using WX.CRM.IBLL.Ord;
|
||
using WX.CRM.IBLL.Res;
|
||
using WX.CRM.Model.Entity;
|
||
using WX.CRM.WebHelper;
|
||
|
||
namespace WX.CRM.WEB.Controllers.Csvr
|
||
{
|
||
public class BlackNumberController : BaseController
|
||
{
|
||
//
|
||
// GET: /BlackNumber/
|
||
private ICSVR_BLACKNUMBER_Q _blacknumberq;
|
||
private ICSVR_BLACKNUMBER _blacknumeber;
|
||
private IRES_CUSTOMER_Q _customerq;
|
||
[Ninject.Inject]
|
||
public IRES_RESOURCEMOBILE_Q _RES_RESOURCEMOBILE_Q { get; set; }
|
||
[Ninject.Inject]
|
||
public IORD_SALEMEMO _saleMemo { get; set; }
|
||
|
||
ValidationErrors errors = new ValidationErrors();
|
||
public BlackNumberController(ICSVR_BLACKNUMBER_Q blacknumberq, ICSVR_BLACKNUMBER blackbumber, IRES_CUSTOMER_Q customerq)
|
||
{
|
||
this._blacknumberq = blacknumberq;
|
||
this._blacknumeber = blackbumber;
|
||
this._customerq = customerq;
|
||
}
|
||
public JsonResult GetAllResId(string resId)
|
||
{
|
||
resId = resId.Trim();
|
||
List<WX.CRM.Model.Entity.RES_CUSTOMER> list = _customerq.GetList_CustomerByResid(resId);
|
||
list = list.Where(m => m.RESID == resId || m.CUSTOMERID == resId).ToList();
|
||
List<object> obj = new List<object>();
|
||
foreach (WX.CRM.Model.Entity.RES_CUSTOMER model in list)
|
||
{
|
||
obj.Add(new { RESID = model.RESID, LASTNUM3 = model.LASTNUM3, ISPRIMARYNUM = model.RES_CUSTOMERDETAIL.ISPRIMARYNUM });
|
||
}
|
||
return Json(new { result = list.Count > 0 ? 1 : 0, message = list.Count > 0 ? "" : "请输入正确的客户ID!", ResIds = obj });
|
||
}
|
||
[AuthorizeRedirect(Roles = InitRights.CONST_黑名单管理)]
|
||
public ActionResult Index()
|
||
{
|
||
var tool = new ToolBar();
|
||
string[] toolbtn = new ToolButtonView().ToolButtonRight(InitRights.黑名单管理, userRightId);
|
||
List<string> listBtn = new List<string>(toolbtn);
|
||
List<string> Buttons = new List<string>();
|
||
Buttons.Add("Other1");
|
||
Buttons.AddRange(listBtn);
|
||
tool.AllowButton(Buttons.ToArray());
|
||
// tool.AllowButton("Create", "Other1", "Delete");
|
||
tool.AddOtherButton("Other1", "刷新", "icon-reload", "Reload_Click", true);
|
||
ViewBag.ToolBar = tool;
|
||
|
||
var pager = new Pager() { page = 1, rows = 10 };
|
||
var tableId = "tablist";
|
||
var tab = new Table(tableId);
|
||
tab.AddHiddenHeadCol("pkid", "ID");//隐藏列
|
||
tab.AddHeadCol("map_RESID", "20%", "客户ID ");
|
||
tab.AddHeadCol("map_BLACKTYPE", "20%", "类型 ");
|
||
tab.AddHeadCol("map_REASON", "20%", "备注");
|
||
tab.AddHeadCol("map_CTIME", "20%", "添加时间");
|
||
tab.AddHeadCol("map_CREATEUSRE", "", "添加人");
|
||
tab.AddHeadRow();
|
||
|
||
ViewBag.List = tab.GetTable() + Pagination.GetPage(pager, tableId, "10,20,30");
|
||
return View();
|
||
}
|
||
[HttpPost]
|
||
[AuthorizeRedirect(Roles = InitRights.CONST_黑名单管理)]
|
||
public JsonResult GetHtmlList(Pager pager, string columns)
|
||
{
|
||
try
|
||
{
|
||
string resid = Request.Form["ResId"];
|
||
|
||
var list = _blacknumberq.GetPagingData(ref pager, resid);
|
||
var table = new Table(columns, true);
|
||
table.gridPager = pager;
|
||
foreach (var model in list)
|
||
{
|
||
table.AddHiddenCol(model.map_PKID);//影藏列
|
||
table.AddCol(model.map_RESID);
|
||
table.AddCol(GetBlackTypeName(model.BLACKTYPE));
|
||
table.AddCol(model.map_REASON);
|
||
table.AddCol(model.map_CTIME);
|
||
table.AddCol(model.map_CREATEUSRE);
|
||
table.AddRow();
|
||
}
|
||
var json = new
|
||
{
|
||
totalPages = pager.totalPages,
|
||
totalRows = pager.totalRows,
|
||
rowsList = table.GetRows()
|
||
};
|
||
return Json(json, JsonRequestBehavior.AllowGet);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(ex.Message);
|
||
var json = new
|
||
{
|
||
errorMessag = "系统错误:" + ex.Message
|
||
};
|
||
return Json(json, JsonRequestBehavior.AllowGet);
|
||
}
|
||
}
|
||
private string GetBlackTypeName(string t)
|
||
{
|
||
string blackTypeN = t;
|
||
switch (t)
|
||
{
|
||
case "C":
|
||
blackTypeN = "呼出黑名单"; break;
|
||
case "I":
|
||
blackTypeN = "呼入黑名单"; break;
|
||
case "S":
|
||
blackTypeN = "短信黑名单"; break;
|
||
case "T":
|
||
blackTypeN = "客户拒接电话"; break;
|
||
default:
|
||
break;
|
||
}
|
||
return blackTypeN;
|
||
}
|
||
[HttpGet]
|
||
[AuthorizeToolBar(InitRights.CONST_黑名单管理, InitToolBar.CONST_Add)]
|
||
public ActionResult Add()
|
||
{
|
||
CSVR_BLACKNUMBER model = null;
|
||
return View(model);
|
||
}
|
||
|
||
[HttpPost]
|
||
[AuthorizeToolBar(InitRights.CONST_黑名单管理, InitToolBar.CONST_Add)]
|
||
public ActionResult Add(string Blacktype, string BLACKNUMBER_resids, string Reson)
|
||
{
|
||
try
|
||
{
|
||
Reson = string.IsNullOrEmpty(Reson) ? " " : Reson;
|
||
string message = "";
|
||
if (string.IsNullOrEmpty(BLACKNUMBER_resids.Trim()))
|
||
{
|
||
ModelState.AddModelError("BLACKNUMBER_resids", "客户ID不能为空");
|
||
}
|
||
if (!ModelState.IsValid)
|
||
{
|
||
return JsonHandler.JsonResultSerialize(ModelState);
|
||
}
|
||
string[] resIds = BLACKNUMBER_resids.Replace(" ", "").Replace("\r", "").Replace("\n", "").Replace(",", ",").Split(',');
|
||
string[] trueResIds = _customerq.getResByResIds(resIds).Select(m => m.RESID.Trim()).ToArray();
|
||
string[] existresIds = _blacknumberq.GetByResIds(trueResIds, Blacktype).Select(m => m.RESID.Trim()).ToArray();
|
||
var nottrue = resIds.Except(trueResIds);
|
||
if (nottrue.Count() > 0)
|
||
{
|
||
message = "不存在系统的客户ID:" + string.Join(",", nottrue);
|
||
}
|
||
if (existresIds.Count() > 0)
|
||
{
|
||
message += "。已存在黑名单的客户ID:" + string.Join(",", existresIds);
|
||
}
|
||
/////////
|
||
var updateResIds = trueResIds.Except(existresIds);
|
||
List<CSVR_BLACKNUMBER> numbers = new List<CSVR_BLACKNUMBER>();
|
||
foreach (string resid in updateResIds)
|
||
{
|
||
if (!string.IsNullOrEmpty(resid))
|
||
{
|
||
CSVR_BLACKNUMBER model = new CSVR_BLACKNUMBER();
|
||
model.RESID = resid;
|
||
model.BLACKTYPE = Blacktype;
|
||
model.REASON = Reson;
|
||
model.CTIME = DateTime.Now;
|
||
model.CREATEUSRE = UserId;
|
||
|
||
#region PUSH TO CTI
|
||
/*
|
||
* tel:号码 长度>4
|
||
* act: 增删 0删除 1增加
|
||
* dec:加密 0明文 1密文
|
||
* -1 缺少参数 0执行失败 1 执行成功
|
||
*/
|
||
if (Blacktype == "I")
|
||
{
|
||
var tel = _RES_RESOURCEMOBILE_Q.GetNumberByResId(resid);
|
||
if (null != tel)
|
||
{
|
||
var posturl = "http://" + Utility.GetSettingByKey("shj") + "/blocklist?tel={0}&act={1}&dec={2}";
|
||
posturl = string.Format(posturl, tel, 1, 0);
|
||
try
|
||
{
|
||
var rst = Utility.GetData(posturl, "", Encoding.Default);
|
||
if (rst == "1")
|
||
{
|
||
numbers.Add(model);
|
||
}
|
||
else
|
||
{
|
||
return Json(new { type = 0, message = "添加失败,同步CTI不成功", value = message },
|
||
JsonRequestBehavior.AllowGet);
|
||
numbers.Clear();//有一个同步不成功,所有黑名单不提交
|
||
break;
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(ex);
|
||
return Json(new { type = 0, message = "添加失败,同步CTI不成功", value = message }, JsonRequestBehavior.AllowGet);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
LogHelper.Error("添加失败");
|
||
}
|
||
}
|
||
else //不需要同步CTI
|
||
{
|
||
numbers.Add(model);
|
||
}
|
||
#endregion
|
||
}
|
||
}
|
||
if (numbers.Count > 0)
|
||
{
|
||
bool result = _blacknumeber.CreateEntities(ref errors, numbers);
|
||
string msg = result ? "添加成功" : "添加失败:" + errors.Error;
|
||
return Json(new { type = result, message = msg, value = message }, JsonRequestBehavior.AllowGet);
|
||
}
|
||
else
|
||
{
|
||
return Json(new { type = 0, message = "添加失败,资源不存在系统或已经在黑名单里", value = message }, JsonRequestBehavior.AllowGet);
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
//errors.Add(ex.Message);
|
||
LogHelper.Error("BlackNumberController_Add:" + ex.StackTrace + ";" + ex.Message);
|
||
return Json(new { type = 0, message = ex.Message, value = "" }, JsonRequestBehavior.AllowGet);
|
||
}
|
||
}
|
||
[AuthorizeToolBar(InitRights.CONST_黑名单管理, InitToolBar.CONST_Delete)]
|
||
public JsonResult Delete(string id)
|
||
{
|
||
if (string.IsNullOrWhiteSpace(id))
|
||
{
|
||
return JsonHandler.ManageMessage("参数不对!", false);
|
||
}
|
||
#region PUSH TO CTI
|
||
/*
|
||
* tel:号码 长度>4
|
||
* act: 增删 0删除 1增加
|
||
* dec:加密 0明文 1密文
|
||
* -1 缺少参数 0执行失败 1 执行成功
|
||
*/
|
||
var entity = _blacknumeber.GetEntity(Convert.ToDecimal(id));
|
||
if (entity.BLACKTYPE == "I")
|
||
{
|
||
var tel = _RES_RESOURCEMOBILE_Q.GetNumberByResId(entity.RESID);
|
||
if (null != tel)
|
||
{
|
||
var posturl = "http://" + Utility.GetSettingByKey("shj") + "/blocklist?tel={0}&act={1}&dec={2}";
|
||
posturl = string.Format(posturl, tel, 0, 0);
|
||
try
|
||
{
|
||
var rst = Utility.GetData(posturl, "", Encoding.Default);
|
||
if (rst == "1")
|
||
{
|
||
bool result = _blacknumeber.Delete(ref errors, Convert.ToDecimal(id));
|
||
return JsonHandler.DeleteMessage(errors, result);
|
||
}
|
||
else
|
||
{
|
||
return JsonHandler.DeleteMessage(errors, false);
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(ex);
|
||
return JsonHandler.DeleteMessage(errors, false);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
LogHelper.Error("删除失败"); return JsonHandler.DeleteMessage(errors, false);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
_saleMemo.DeleteHmdMemo(entity.RESID);
|
||
bool result = _blacknumeber.Delete(ref errors, Convert.ToDecimal(id));
|
||
return JsonHandler.DeleteMessage(errors, result);
|
||
}
|
||
#endregion
|
||
|
||
}
|
||
}
|
||
}
|