484 lines
20 KiB
C#
484 lines
20 KiB
C#
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<Hg_MessageModel> list = hh_huser.GetHg_Message(ref pager, userNames, msgstime, msgetime, stime, etime, newkeyword, kefid, cuserid, status);
|
||
List<WW_HHUSER_EID> eidlist = hh_huser.GetUserListByQWUserId(list.Select(m => m.fromer).ToArray());
|
||
List<Hg_Message_WordModel> wordlist = hh_huser.GetMsgWordList(list.Select(m => m.msgid).ToArray());
|
||
List<Ww_Corp> 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("<span style='color:#42b475'>{0}说:</span>", model.cusname) : string.Format("<span style='color:#006efe'>客服对{0}说:</span>", model.cusname));
|
||
List<Hg_Message_WordModel> 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("<font color='red'>{0}</font>", 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("<a href = \"javascript:void(0);\" onclick = \"ShowMesageDetial('{0}','{1}','{2}','{3}','{4}'),'{5}'\" > 查看消息 </a>", 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 = "<font color='#AAAAAA'>待阅</font>";
|
||
else if (hgstatus == 200)
|
||
str = "<font color='green'>已阅</font>";
|
||
else if (hgstatus == 500)
|
||
str = "<font color='red'>违规</font>";
|
||
return str;
|
||
}
|
||
|
||
[AuthorizeToolBar(InitRights.CONST_企业微聊天息合规, InitToolBar.CONST_Other3)]
|
||
public ActionResult Keyword()
|
||
{
|
||
List<Hg_KeyWord> 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<SelectListItem>();
|
||
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<Wx_QiWeiHg>(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);
|
||
}
|
||
|
||
|
||
}
|
||
|
||
}
|
||
}
|