ComplianceServer/oldcode/WEB/Controllers/Ww/HGQWController.cs

484 lines
20 KiB
C#
Raw Permalink 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 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);
}
}
}
}