using Ninject; using System; using System.Collections.Generic; using System.Linq; using System.Web.Mvc; using WX.CRM.BLL.Base; using WX.CRM.Common; using WX.CRM.IBLL.Base; using WX.CRM.IBLL.Util; using WX.CRM.IBLL.Ww; using WX.CRM.IBLL.Wx; using WX.CRM.Model.crmModel; using WX.CRM.Model.Entity; using WX.CRM.Model.MAP; using WX.CRM.Model.Ww; using WX.CRM.WebHelper; namespace WX.CRM.WEB.Controllers.Ww { public class HGQWController : BaseController { ValidationErrors errors = new ValidationErrors(); [Inject] public IWw_huser _iww_hhuser_service { get; set; } [Inject] public ICACHE_Q cacheQ { get; set; } [Inject] public IWw_huser hh_huser { get; set; } [Inject] public IBAS_INNERUSERGROUP_Q bas_InnerUserGroup_BL { get; set; } [Inject] public IBAS_INNERGROUP_Q bas_InnerGroup_BL { get; set; } [Inject] public IBAS_COMTYPE_Q bas_ComType_Q_BL { get; set; } [Inject] public IWX_MESSAGECOMPLIANCE wx_MessageCompliance_BL { get; set; } // // GET: /MyWork/ [AuthorizeRedirect(Roles = InitRights.CONST_企业微聊天息合规)] public ActionResult Index() { //ToolBar ToolBar tool = new ToolBar(); string[] toolbtn = new ToolButtonView().ToolButtonRight(InitRights.企业微聊天息合规, userRightId); tool.AllowButton(toolbtn); tool.AddOtherButton("Other1", "已阅", "icon-edit", "Read_Click", true); tool.AddOtherButton("Other2", "标记违规信息", "icon-add", "Update_Click", true); tool.AddOtherButton("Other3", "合规关键字", "icon-lookup", "Keyword_Click", true); ViewBag.ToolBar = tool; Pager pager = new Pager() { page = 1, rows = 30, order = "desc", sort = "msgtime" }; string tableId = "tablist"; Table tab = new Table(tableId); //tab.AddHiddenHeadCol("msgsvrid", ""); //tab.AddHiddenHeadCol("inneruserid", ""); //tab.AddHiddenHeadCol("msgtype", ""); //tab.AddHiddenHeadCol("username", ""); //tab.AddHiddenHeadCol("msgurl", ""); //tab.AddHiddenHeadCol("msgcontent", ""); tab.AddHiddenHeadCol("msgid", ""); tab.AddHeadCol("corpname", "5%", "企业号"); tab.AddHeadCol("tolist", "10%", "客户Id"); tab.AddHeadCol("issend", "10%", ""); tab.AddHeadCol("content", "30%", "消息内容"); tab.AddHeadCol("msgtime", "80px", "消息时间", true); tab.AddHeadCol("ctime", "80px", "检测时间", true); tab.AddHeadCol("fromer", "10%", "企微ID/名称"); //tab.AddHeadCol("kehuname", "", "客服名称"); tab.AddHeadCol("eid", "8%", "客服"); tab.AddHiddenHeadCol("inneruserid", "客服"); tab.AddHeadCol("gname", "6%", "销售组"); tab.AddHeadCol("hgstatus", "6%", "状态"); tab.AddHeadCol("", "", "查看"); tab.AddHeadRow(); ViewBag.gridTable = tab.GetHead() + Pagination.GetPage(pager, tableId, "20,30,50"); ViewBag.inneruserid = UserId; ViewBag.userGroupId = userGroupId; ViewBag.saleDeptId = saleDeptId; ViewBag.roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId); ViewBag.WwMessage_Url = cacheQ.GetValue_Parameter("WwMessage_Url"); return View(); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_微信聊天合规管理)] public JsonResult GetHtmlList(Pager pager, DateTime? msgstime, DateTime? msgetime, DateTime? stime, DateTime? etime, string keyword, string kefid, string cuserid, int? status, string columns) { #region 条件操作 decimal saleDeptId = Request["saleDeptId"].GetDecimal(0); decimal groupId = Request["groupId"].GetDecimal(0); decimal userId = Request["userId"].GetDecimal(0); string userNames = ""; if (userId > 0) { var userNameList = hh_huser.GetUserList(userId); if (userNameList != null) { foreach (var item in userNameList) { userNames += item.USERID + ","; } userNames = userNames.Trim(','); } } else if (groupId > 0) { var groupUserList = bas_InnerUserGroup_BL.GetList().Where(m => m.GID == groupId).ToList(); if (groupUserList != null) { var groupUserIdList = groupUserList.Select(m => m.INNERUSERID).ToArray(); var userNameList = hh_huser.GetUserList(groupUserIdList); if (userNameList != null) { foreach (var item in userNameList) { userNames += item.USERID + ","; } userNames = userNames.Trim(','); } } } else if (saleDeptId > 0) { var groupIdList = bas_InnerGroup_BL.GetList().Where(m => m.SALEDEPTID == saleDeptId).ToList().Select(mm => mm.GID).ToList(); ; if (groupIdList != null) { var groupUserList = bas_InnerUserGroup_BL.GetList().Where(m => groupIdList.Contains(m.GID.Value)).ToList(); if (groupUserList != null) { var groupUserIdList = groupUserList.Select(m => m.INNERUSERID).ToArray(); var userNameList = hh_huser.GetUserList(groupUserIdList); if (userNameList != null) { foreach (var item in userNameList) { userNames += item.USERID + ","; } userNames = userNames.Trim(','); userNames = string.Format("'{0}'", userNames.Replace(",", "','")); } } } } #endregion string newkeyword = ""; if (!string.IsNullOrEmpty(keyword)) { keyword = keyword.Replace(";", ";"); string xs = ""; foreach (var item in keyword.Split(';')) { if (string.IsNullOrWhiteSpace(item)) continue; xs += item + ","; } xs = xs.Trim(','); newkeyword = string.Format("'{0}'", xs.Replace(",", "','")); } List list = hh_huser.GetHg_Message(ref pager, userNames, msgstime, msgetime, stime, etime, newkeyword, kefid, cuserid, status); List eidlist = hh_huser.GetUserListByQWUserId(list.Select(m => m.fromer).ToArray()); List wordlist = hh_huser.GetMsgWordList(list.Select(m => m.msgid).ToArray()); List corlist = hh_huser.Corp_Get();//企业号 Table table = new Table(columns, true); foreach (var model in list) { table.AddHiddenCol(model.msgid); Ww_Corp corp = corlist.FirstOrDefault(m => m.corpid == model.corpid); if (corp != null) { table.AddCol(corp.corpname); } else { table.AddCol(""); } table.AddCol(model.tolist); table.AddCol(model.issend == 0 ? string.Format("{0}说:", model.cusname) : string.Format("客服对{0}说:", model.cusname)); List modelist = wordlist.Where(m => m.msgid == model.msgid).ToList(); if (modelist.Count == 0) table.AddCol(model.content); else { string content = model.content; foreach (Hg_Message_WordModel wordmodel in modelist) { content = content.Replace(wordmodel.keyword, string.Format("{0}", wordmodel.keyword)); } table.AddCol(content); } table.AddCol(model.msgtime.ToUnityString(6)); table.AddCol(model.ctime.ToUnityString(6)); table.AddCol(string.Format("{0}/{1}", model.fromer, model.kehuname)); var entry = eidlist.FirstOrDefault(m => m.CORPID == model.corpid && m.USERID == model.fromer); if (entry != null) { table.AddCol(InnerUserHelper.Instance.GetEidAndTrueName(entry.INNERUSERID)); table.AddHiddenCol(entry.INNERUSERID); table.AddCol(InnerUserHelper.Instance.GetGroupName(InnerUserHelper.Instance.GetGroupId(entry.INNERUSERID))); } else { table.AddCol(""); table.AddHiddenCol(""); table.AddCol(""); } table.AddCol(GetHGStatus(model.hgstatus)); table.AddCol(string.Format(" 查看消息 ", model.corpid, model.cusname, model.tolist, model.kehuname, model.fromer, model.seq)); table.AddRow(); } var json = new { totalPages = pager.totalPages, totalRows = pager.totalRows, rowsList = table.GetRows() }; return Json(json, JsonRequestBehavior.AllowGet); } private string GetHGStatus(int hgstatus) { string str = ""; if (hgstatus == 90) str = "待阅"; else if (hgstatus == 200) str = "已阅"; else if (hgstatus == 500) str = "违规"; return str; } [AuthorizeToolBar(InitRights.CONST_企业微聊天息合规, InitToolBar.CONST_Other3)] public ActionResult Keyword() { List words = hh_huser.GetKeyWordAll(); string okword = ""; string delword = ""; foreach (var item in words) { if (item.status == 1) { okword += string.Format("{0};", item.keyword); } } //ViewBag.KeyWord = okword; Hg_KeyWordAllModel model = new Hg_KeyWordAllModel() { keywords = okword }; return View(model); } [HttpPost] [AuthorizeToolBar(InitRights.CONST_企业微聊天息合规, InitToolBar.CONST_Other3)] public JsonResult SaveKeyword(Hg_KeyWordAllModel model) { model.keywords = model.keywords.Trim(); if (!string.IsNullOrEmpty(model.keywords)) { string message = ""; bool result = hh_huser.UpdateKeyWord(model, ref message); return JsonHandler.ManageMessage(message, result); } else { errors.Add("不存在合规关键字记录,不能修改!"); return JsonHandler.UpdateMessage(errors, false); } } [HttpPost] [AuthorizeToolBar(InitRights.CONST_企业微聊天息合规, InitToolBar.CONST_Other1)] public JsonResult Read(string msgid) { if (!string.IsNullOrEmpty(msgid)) { string message = "操作成功!"; bool result = hh_huser.Read(msgid); if (result == false) message = "出现错误!"; return JsonHandler.ManageMessage(message, result); } else { errors.Add("参数错误!"); return JsonHandler.UpdateMessage(errors, false); } } [HttpGet] [AuthorizeToolBar(InitRights.CONST_企业微聊天息合规, InitToolBar.CONST_Other2)] public ActionResult MessageCompliance(Wx_QiWeiHg qiwei) { var model = new WX_MESSAGECOMPLIANCE(); var list = bas_ComType_Q_BL.GetList().Where(m => m.map_TYPECODE.Contains("MessageCompliance")).OrderBy(m => m.map_TYPECODE).ToList(); var bigTypeList = new List(); if (list != null) { foreach (var m in list) { bigTypeList.Add(new SelectListItem { Text = m.map_TYPENAME, Value = m.map_TYPECODE }); } } ViewBag.BigTypeList = bigTypeList; ViewBag.qiwei = Newtonsoft.Json.JsonConvert.SerializeObject(qiwei); return View(model); } [HttpPost] [AuthorizeToolBar(InitRights.CONST_微信聊天合规管理, InitToolBar.CONST_Other2)] public ActionResult MessageCompliance(WX_MESSAGECOMPLIANCE model, string qiweijson, string bigType, string subType) { Wx_QiWeiHg qiwei = Newtonsoft.Json.JsonConvert.DeserializeObject(qiweijson); if (string.IsNullOrWhiteSpace(bigType)) { errors.Add("请选择大类!"); return JsonHandler.UpdateMessage(errors, false); } if (string.IsNullOrWhiteSpace(subType)) { errors.Add("请选择小类!"); return JsonHandler.UpdateMessage(errors, false); } if (string.IsNullOrWhiteSpace(model.REMARK)) { errors.Add("请输入备注信息!"); return JsonHandler.UpdateMessage(errors, false); } try { Hg_MessageModel msgmodel = hh_huser.GetMsgById(qiwei.msgid); if (msgmodel == null || string.IsNullOrEmpty(msgmodel.msgid)) { errors.Add("参数有误!"); return JsonHandler.UpdateMessage(errors, false); } qiwei = new Wx_QiWeiHg() { innseruserid = qiwei.innseruserid, msgid = qiwei.msgid, content = msgmodel.content, CORPID = msgmodel.corpid, HHUSERID = msgmodel.fromer, EXTUSERID = msgmodel.tolist, msgtime = msgmodel.msgtime.Value, HHUSERNAME = msgmodel.kehuname, EXTNAME = msgmodel.cusname, CORPNAME = qiwei.CORPNAME }; WX_MESSAGECOMPLIANCE compliance = new WX_MESSAGECOMPLIANCE { PKID = new SEQUENCES_BL().Seq_base_get(), INNERUSERID = qiwei.innseruserid, MESSAGE = qiwei.content, MSGTYPE = 1, CTIME = DateTime.Now, OPERATORID = UserId, MSGSOURCE = 1, MSGSVRID = qiwei.msgid, BIGTYPE = bigType, SUBTYPE = subType, REMARK = model.REMARK, TYPE = 3, ORIGINALTIME = qiwei.msgtime, RESULT = model.RESULT, CORPID = qiwei.CORPID, CORPNAME = qiwei.CORPNAME, HHUSERID = qiwei.HHUSERID, HHUSERNAME = qiwei.HHUSERNAME, EXTNAME = qiwei.EXTNAME, EXTUSERID = qiwei.EXTUSERID }; var res = wx_MessageCompliance_BL.Get(m => m.MSGSVRID == qiwei.msgid); if (res == null) { //进行合规扣款判断 /* 一类违规:首次罚款500元,二次再犯直接给予辞退,或移交司法机关;如该单已成交,同时要扣除此单业绩 二类违规:首次罚款300元,二次再犯罚款500元;第三次给予辞退;如该单已成交,同时要扣除此单业绩 三类违规:首次罚款200元,二次(或二次以上)再犯罚款300元;如该单已成交,扣除此单业绩(超额订单直接退回用户)。 四类违规:给予200元现金处罚; */ if (compliance.BIGTYPE == "MessageComplianceA") { var complianceBlist = wx_MessageCompliance_BL.GetList(m => m.BIGTYPE == "MessageComplianceA" && m.INNERUSERID == qiwei.innseruserid).ToList(); if (complianceBlist == null) { compliance.PENALTY = 500; } else { if (complianceBlist.Count == 0) { compliance.PENALTY = 500; } else { compliance.PENALTY = 0; } } } else if (compliance.BIGTYPE == "MessageComplianceB") { var complianceBlist = wx_MessageCompliance_BL.GetList(m => m.BIGTYPE == "MessageComplianceB" && m.INNERUSERID == qiwei.innseruserid).ToList(); if (complianceBlist != null) { if (complianceBlist.Count >= 2) { compliance.PENALTY = 0; } else if (complianceBlist.Count == 1) { compliance.PENALTY = 500; } else if (complianceBlist.Count == 0) { compliance.PENALTY = 300; } } else { compliance.PENALTY = 300; } } else if (compliance.BIGTYPE == "MessageComplianceC") { var complianceBlist = wx_MessageCompliance_BL.GetList(m => m.BIGTYPE == "MessageComplianceC" && m.INNERUSERID == qiwei.innseruserid).ToList(); if (complianceBlist == null) { compliance.PENALTY = 200; } else { if (complianceBlist.Count == 0) { compliance.PENALTY = 200; } else { compliance.PENALTY = 300; } } } else if (compliance.BIGTYPE == "MessageComplianceD") { compliance.PENALTY = 200; } else { compliance.PENALTY = 0; } wx_MessageCompliance_BL.Add(compliance); } hh_huser.Violations(qiwei.msgid); return JsonHandler.ManageMessage("操作成功", true); } catch (Exception ex) { LogHelper.Error(ex); return JsonHandler.ManageMessage(ex.Message, false); } } } }