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 list = _customerq.GetList_CustomerByResid(resId); list = list.Where(m => m.RESID == resId || m.CUSTOMERID == resId).ToList(); List obj = new List(); 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 listBtn = new List(toolbtn); List Buttons = new List(); 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 numbers = new List(); 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 } } }