ComplianceServer/oldcode/WEB/Controllers/Csvr/BlackNumberController.cs

303 lines
13 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}
}
}