636 lines
24 KiB
C#
636 lines
24 KiB
C#
using CRM.Core.BLL.Util;
|
|
using CRM.Core.Common.Layui;
|
|
using CRM.Core.Model.Entity;
|
|
using CRM.Core.Model.QueryModels;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using WX.CRM.Common;
|
|
|
|
namespace CRM.Core.BLL.Hg
|
|
{
|
|
public class Hg_Message_BL : DbContextRepository<Hg_Wx_Message>
|
|
{
|
|
|
|
#region 微信
|
|
/// <summary>
|
|
/// 获取微信合规信息列表
|
|
/// </summary>
|
|
/// <param name="pager"></param>
|
|
/// <param name="name"></param>
|
|
/// <param name="isdismiss"></param>
|
|
/// <returns></returns>
|
|
public List<Hg_Wx_Message> GetWxList(ref Laypage pager, Hg_Wx_Message_Query param)
|
|
{
|
|
|
|
using (var db = new zxdContext())
|
|
{
|
|
var query = db.Hg_Wx_Message.AsQueryable<Hg_Wx_Message>();
|
|
if (param.id.HasValue)
|
|
{
|
|
query = query.Where(m => m.id == param.id);
|
|
}
|
|
if (param.stime.HasValue)//时间
|
|
{
|
|
query = query.Where(m => m.ctime > param.stime.Value);
|
|
}
|
|
if (param.etime.HasValue)//时间
|
|
{
|
|
param.etime = param.etime.Value.AddDays(1);
|
|
query = query.Where(m => m.ctime < param.etime.Value);
|
|
}
|
|
if (!string.IsNullOrEmpty(param.deptcodes))//部门
|
|
{
|
|
if (param.deptcodes.IndexOf(",") > -1)
|
|
{
|
|
var deptcode = param.deptcodes.Split(',');
|
|
query = query.Where(m => deptcode.Contains(m.detpcode));
|
|
}
|
|
else
|
|
query = query.Where(m => m.detpcode == param.deptcodes);
|
|
}
|
|
if (param.hgstatus.HasValue)//处理状态
|
|
{
|
|
query = query.Where(m => m.hgstatus == param.hgstatus.Value);
|
|
}
|
|
if (param.iswg.HasValue)//违规状态
|
|
{
|
|
query = query.Where(m => m.iswg == param.iswg.Value);
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(param.jobusername))//工作微信username
|
|
{
|
|
query = query.Where(m => m.username == param.jobusername);
|
|
}
|
|
if (!string.IsNullOrEmpty(param.kefuusername))//客户username
|
|
{
|
|
query = query.Where(m => m.talker == param.kefuusername);
|
|
}
|
|
|
|
query = query.OrderByDescending(m => m.ctime);
|
|
|
|
|
|
PagerUtil.SetPager(ref query, ref pager);
|
|
return query.ToList();
|
|
}
|
|
}
|
|
|
|
public bool ReadWxComplete(int[] ids, ref ValidationErrors erros)
|
|
{
|
|
bool result = false;
|
|
try
|
|
{
|
|
using (var db = new zxdContext())
|
|
{
|
|
foreach (var item in ids)
|
|
{
|
|
var entry = db.Hg_Wx_Message.FirstOrDefault(m => m.id == item);
|
|
if (entry == null)
|
|
{
|
|
|
|
erros.Add($"{item}错误!");
|
|
}
|
|
entry.hgstatus = 1;
|
|
entry.hgtime = DateTime.Now;
|
|
db.SaveChanges();
|
|
}
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
erros.Add(e.ToString());
|
|
LogHelper.Error(e.ToString());
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
public bool WxViolationAdd(string ids, string hgdetail, string hgresult, string hgtype, string hgsubtype, ref ValidationErrors erros)
|
|
{
|
|
bool result = false;
|
|
try
|
|
{
|
|
var idlist = ids.Split(',');
|
|
using (var db = new zxdContext())
|
|
{
|
|
foreach (var item in idlist)
|
|
{
|
|
int id = Convert.ToInt32(item);
|
|
var entry = db.Hg_Wx_Message.FirstOrDefault(m => m.id == id);
|
|
if (entry == null)
|
|
{
|
|
erros.Add($"{item}数据找不到");
|
|
return false;
|
|
}
|
|
Hg_Violation model = new Hg_Violation()
|
|
{
|
|
hgid = entry.id,
|
|
pkid = entry.pkid,
|
|
action = entry.issend.ToString(),
|
|
content = entry.msgcontent,
|
|
detpcode = entry.detpcode,
|
|
corpid = null,
|
|
cusname = entry.nickname,//客户昵称
|
|
eid = entry.eid,
|
|
fromer = entry.username,
|
|
hgdetail = hgdetail,
|
|
hgresult = hgresult,
|
|
hgsubtype = hgsubtype,
|
|
hgtime = DateTime.Now,
|
|
hgtype = hgtype,
|
|
kefuname = entry.kefuname,
|
|
msgid = entry.msgsvrid,
|
|
msgtype = entry.msgtype == 1 ? "文本" : "语音",
|
|
touser = entry.talker,
|
|
type = "WX",
|
|
uname = "",
|
|
voiceUrl = entry.voiceUrl,
|
|
word = entry.word
|
|
};
|
|
|
|
db.Hg_Violation.Add(model);
|
|
entry.hgstatus = 1;
|
|
entry.hgtime = DateTime.Now;
|
|
entry.iswg = 1;
|
|
db.SaveChanges();
|
|
}
|
|
result = true;
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
erros.Add(e.ToString());
|
|
LogHelper.Error(e.ToString());
|
|
}
|
|
return result;
|
|
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region 企业微信
|
|
/// <summary>
|
|
/// 获取微信合规信息列表
|
|
/// </summary>
|
|
/// <param name="pager"></param>
|
|
/// <param name="name"></param>
|
|
/// <param name="isdismiss"></param>
|
|
/// <returns></returns>
|
|
public List<Hg_Qw_Message> GetQWList(ref Laypage pager, Hg_Qw_Message_Query param, ref ValidationErrors erros)
|
|
{
|
|
List<Hg_Qw_Message> list = new List<Hg_Qw_Message>();
|
|
try
|
|
{
|
|
using (var db = new zxdContext())
|
|
{
|
|
var query = db.Hg_Qw_Message.AsQueryable<Hg_Qw_Message>();
|
|
if (param.id.HasValue)
|
|
{
|
|
query = query.Where(m => m.id == param.id);
|
|
}
|
|
if (param.stime.HasValue)//时间
|
|
{
|
|
query = query.Where(m => m.ctime > param.stime.Value);
|
|
}
|
|
if (param.etime.HasValue)//时间
|
|
{
|
|
param.etime = param.etime.Value.AddDays(1);
|
|
query = query.Where(m => m.ctime < param.etime.Value);
|
|
}
|
|
if (!string.IsNullOrEmpty(param.deptcodes))//部门
|
|
{
|
|
if (param.deptcodes.IndexOf(",") > -1)
|
|
{
|
|
var deptcode = param.deptcodes.Split(',');
|
|
query = query.Where(m => deptcode.Contains(m.detpcode));
|
|
}
|
|
else
|
|
query = query.Where(m => m.detpcode == param.deptcodes);
|
|
}
|
|
if (param.hgstatus.HasValue)//处理状态
|
|
{
|
|
query = query.Where(m => m.hgstatus == param.hgstatus.Value);
|
|
}
|
|
if (param.iswg.HasValue)//违规状态
|
|
{
|
|
query = query.Where(m => m.iswg == param.iswg.Value);
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(param.kehuuserid))//工作微信username
|
|
{
|
|
query = query.Where(m => m.tolist == param.kehuuserid);
|
|
}
|
|
if (!string.IsNullOrEmpty(param.jbouserid))//客户username
|
|
{
|
|
query = query.Where(m => m.fromer == param.jbouserid);
|
|
}
|
|
if (!string.IsNullOrEmpty(param.corpid))
|
|
{
|
|
query = query.Where(m => m.corpid == param.corpid);
|
|
|
|
}
|
|
query = query.OrderByDescending(m => m.ctime);
|
|
|
|
|
|
PagerUtil.SetPager(ref query, ref pager);
|
|
list = query.ToList();
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
erros.Add(e.ToString());
|
|
LogHelper.Error(e.ToString());
|
|
}
|
|
return list;
|
|
}
|
|
|
|
public bool ReadQWComplete(int[] ids, ref ValidationErrors erros)
|
|
{
|
|
bool result = false;
|
|
try
|
|
{
|
|
using (var db = new zxdContext())
|
|
{
|
|
foreach (var item in ids)
|
|
{
|
|
var entry = db.Hg_Qw_Message.FirstOrDefault(m => m.id == item);
|
|
if (entry == null)
|
|
{
|
|
|
|
erros.Add($"{item}错误!");
|
|
}
|
|
entry.hgstatus = 1;
|
|
entry.hgtime = DateTime.Now;
|
|
db.SaveChanges();
|
|
}
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
erros.Add(e.ToString());
|
|
LogHelper.Error(e.ToString());
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
public bool QWViolationAdd(string ids, string hgdetail, string hgresult, string hgtype, string hgsubtype, ref ValidationErrors erros)
|
|
{
|
|
bool result = false;
|
|
try
|
|
{
|
|
var idlist = ids.Split(',');
|
|
using (var db = new zxdContext())
|
|
{
|
|
foreach (var item in idlist)
|
|
{
|
|
int id = Convert.ToInt32(item);
|
|
var entry = db.Hg_Qw_Message.FirstOrDefault(m => m.id == id);
|
|
if (entry == null)
|
|
{
|
|
erros.Add($"{item}数据找不到");
|
|
return false;
|
|
}
|
|
|
|
Hg_Violation model = new Hg_Violation()
|
|
{
|
|
hgid = entry.id,
|
|
pkid = entry.seq,
|
|
action = entry.issend.ToString(),
|
|
content = entry.content,
|
|
detpcode = entry.detpcode,
|
|
corpid = entry.corpid,
|
|
cusname = entry.cusname,//客户昵称
|
|
eid = entry.eid ?? 0,
|
|
fromer = entry.fromer,
|
|
hgdetail = hgdetail,
|
|
hgresult = hgresult,
|
|
hgsubtype = hgsubtype,
|
|
hgtime = DateTime.Now,
|
|
hgtype = hgtype,
|
|
kefuname = entry.kehuname,
|
|
msgid = entry.msgid,
|
|
msgtype = entry.msgtype.Replace("text", "文本").Replace("phone", "企微通话").Replace("voice", "语音"),
|
|
touser = entry.tolist,
|
|
type = "QW",
|
|
uname = "",
|
|
voiceUrl = entry.msgtype == "phone" ? entry.nfile : entry.voiceUrl,
|
|
word = entry.word
|
|
};
|
|
|
|
db.Hg_Violation.Add(model);
|
|
entry.hgstatus = 1;
|
|
entry.hgtime = DateTime.Now;
|
|
entry.iswg = 1;
|
|
db.SaveChanges();
|
|
}
|
|
result = true;
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
erros.Add(e.ToString());
|
|
LogHelper.Error(e.ToString());
|
|
}
|
|
return result;
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region 电话录音
|
|
/// <summary>
|
|
/// 电话录音
|
|
/// </summary>
|
|
/// <param name="pager"></param>
|
|
/// <param name="name"></param>
|
|
/// <param name="isdismiss"></param>
|
|
/// <returns></returns>
|
|
public List<Hg_Record_Message> GetRecordList(ref Laypage pager, Hg_ReCord_Query param, ref ValidationErrors erros)
|
|
{
|
|
List<Hg_Record_Message> list = new List<Hg_Record_Message>();
|
|
try
|
|
{
|
|
using (var db = new zxdContext())
|
|
{
|
|
var query = db.Hg_Record_Message.AsQueryable<Hg_Record_Message>();
|
|
if (param.id.HasValue)
|
|
{
|
|
query = query.Where(m => m.id == param.id);
|
|
}
|
|
if (param.stime.HasValue)//时间
|
|
{
|
|
query = query.Where(m => m.ctime > param.stime.Value);
|
|
}
|
|
if (param.etime.HasValue)//时间
|
|
{
|
|
param.etime = param.etime.Value.AddDays(1);
|
|
query = query.Where(m => m.ctime < param.etime.Value);
|
|
}
|
|
if (!string.IsNullOrEmpty(param.deptcodes))//部门
|
|
{
|
|
if (param.deptcodes.IndexOf(",") > -1)
|
|
{
|
|
var deptcode = param.deptcodes.Split(',');
|
|
query = query.Where(m => deptcode.Contains(m.detpcode));
|
|
}
|
|
else
|
|
query = query.Where(m => m.detpcode == param.deptcodes);
|
|
}
|
|
if (param.hgstatus.HasValue)//处理状态
|
|
{
|
|
query = query.Where(m => m.hgstatus == param.hgstatus.Value);
|
|
}
|
|
if (param.iswg.HasValue)//违规状态
|
|
{
|
|
query = query.Where(m => m.iswg == param.iswg.Value);
|
|
}
|
|
|
|
if (param.eid.HasValue)//工作微信username
|
|
{
|
|
query = query.Where(m => m.saleseid == param.eid.Value);
|
|
}
|
|
if (!string.IsNullOrEmpty(param.customername))//客户username
|
|
{
|
|
query = query.Where(m => m.customername == param.customername);
|
|
}
|
|
if (!string.IsNullOrEmpty(param.resid))
|
|
{
|
|
query = query.Where(m => m.resid == param.resid);
|
|
|
|
}
|
|
query = query.OrderByDescending(m => m.ctime);
|
|
|
|
|
|
PagerUtil.SetPager(ref query, ref pager);
|
|
list = query.ToList();
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
erros.Add(e.ToString());
|
|
LogHelper.Error(e.ToString());
|
|
}
|
|
return list;
|
|
}
|
|
|
|
public bool ReadRecordComplete(int[] ids, ref ValidationErrors erros)
|
|
{
|
|
bool result = false;
|
|
try
|
|
{
|
|
using (var db = new zxdContext())
|
|
{
|
|
foreach (var item in ids)
|
|
{
|
|
var entry = db.Hg_Record_Message.FirstOrDefault(m => m.id == item);
|
|
if (entry == null)
|
|
{
|
|
|
|
erros.Add($"{item}错误!");
|
|
}
|
|
entry.hgstatus = 1;
|
|
entry.hgtime = DateTime.Now;
|
|
db.SaveChanges();
|
|
}
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
erros.Add(e.ToString());
|
|
LogHelper.Error(e.ToString());
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
public bool RecordViolationAdd(string ids, string hgdetail, string hgresult, string hgtype, string hgsubtype, ref ValidationErrors erros)
|
|
{
|
|
bool result = false;
|
|
try
|
|
{
|
|
var idlist = ids.Split(',');
|
|
using (var db = new zxdContext())
|
|
{
|
|
foreach (var item in idlist)
|
|
{
|
|
int id = Convert.ToInt32(item);
|
|
var entry = db.Hg_Record_Message.FirstOrDefault(m => m.id == id);
|
|
if (entry == null)
|
|
{
|
|
erros.Add($"{item}数据找不到");
|
|
return false;
|
|
}
|
|
|
|
Hg_Violation model = new Hg_Violation()
|
|
{
|
|
hgid = entry.id,
|
|
pkid = entry.pkid,
|
|
content = entry.transcontent,
|
|
detpcode = entry.detpcode,
|
|
corpid = null,
|
|
cusname = entry.customername,//客户昵称
|
|
eid = entry.saleseid,
|
|
resid = entry.resid,
|
|
hgdetail = hgdetail,
|
|
hgresult = hgresult,
|
|
hgsubtype = hgsubtype,
|
|
hgtime = DateTime.Now,
|
|
hgtype = hgtype,
|
|
kefuname = entry.salename,
|
|
msgtype = "电话录音",
|
|
type = "PHONE",
|
|
uname = "",
|
|
voiceUrl = entry.voiceurl,
|
|
word = entry.word
|
|
};
|
|
|
|
db.Hg_Violation.Add(model);
|
|
entry.hgstatus = 1;
|
|
entry.hgtime = DateTime.Now;
|
|
entry.iswg = 1;
|
|
db.SaveChanges();
|
|
}
|
|
result = true;
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
erros.Add(e.ToString());
|
|
LogHelper.Error(e.ToString());
|
|
}
|
|
return result;
|
|
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region 违规记录
|
|
/// <summary>
|
|
/// 电话录音
|
|
/// </summary>
|
|
/// <param name="pager"></param>
|
|
/// <param name="name"></param>
|
|
/// <param name="isdismiss"></param>
|
|
/// <returns></returns>
|
|
public List<Hg_Violation> GetViolationList(ref Laypage pager, Hg_Violation_Query param, ref ValidationErrors erros)
|
|
{
|
|
List<Hg_Violation> list = new List<Hg_Violation>();
|
|
try
|
|
{
|
|
using (var db = new zxdContext())
|
|
{
|
|
var query = db.Hg_Violation.AsQueryable<Hg_Violation>();
|
|
if (param.stime.HasValue)//时间
|
|
{
|
|
query = query.Where(m => m.hgtime > param.stime.Value);
|
|
}
|
|
if (param.etime.HasValue)//时间
|
|
{
|
|
param.etime = param.etime.Value.AddDays(1);
|
|
query = query.Where(m => m.hgtime < param.etime.Value);
|
|
}
|
|
if (!string.IsNullOrEmpty(param.deptcodes))//部门
|
|
{
|
|
if (param.deptcodes.IndexOf(",") > -1)
|
|
{
|
|
var deptcode = param.deptcodes.Split(',');
|
|
query = query.Where(m => deptcode.Contains(m.detpcode));
|
|
}
|
|
else
|
|
query = query.Where(m => m.detpcode == param.deptcodes);
|
|
}
|
|
|
|
if (param.eid.HasValue)//工作微信username
|
|
{
|
|
query = query.Where(m => m.eid == param.eid.Value);
|
|
}
|
|
if (!string.IsNullOrEmpty(param.touser))//客户username
|
|
{
|
|
query = query.Where(m => m.touser.Contains(param.touser) || m.cusname.Contains(param.touser) || m.resid.Contains(param.touser));
|
|
}
|
|
if (!string.IsNullOrEmpty(param.fromuser))//客服
|
|
{
|
|
query = query.Where(m => m.fromer.Contains(param.fromuser) || m.kefuname.Contains(param.fromuser));
|
|
}
|
|
if (!string.IsNullOrEmpty(param.type))
|
|
{
|
|
query = query.Where(m => m.type == param.type);
|
|
}
|
|
if (!string.IsNullOrEmpty(param.hgtype))
|
|
{
|
|
query = query.Where(m => m.hgtype == param.hgtype);
|
|
}
|
|
if (!string.IsNullOrEmpty(param.hgsubtype))
|
|
{
|
|
query = query.Where(m => m.hgsubtype == param.hgsubtype);
|
|
}
|
|
|
|
query = query.OrderByDescending(m => m.id);
|
|
|
|
|
|
PagerUtil.SetPager(ref query, ref pager);
|
|
list = query.ToList();
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
erros.Add(e.ToString());
|
|
LogHelper.Error(e.ToString());
|
|
}
|
|
return list;
|
|
}
|
|
|
|
public bool ViolationDelete(int id, ref ValidationErrors erros)
|
|
{
|
|
bool result = false;
|
|
try
|
|
{
|
|
using (var db = new zxdContext())
|
|
{
|
|
var entry = db.Hg_Violation.FirstOrDefault(m => m.id == id);
|
|
if (entry == null)
|
|
{
|
|
erros.Add($"参数错误!");
|
|
}
|
|
if (entry.type == "WX")
|
|
{
|
|
var wx = db.Hg_Wx_Message.FirstOrDefault(m => m.id == entry.hgid);
|
|
if (wx != null)
|
|
{
|
|
wx.iswg = 0;
|
|
db.SaveChanges();
|
|
}
|
|
}
|
|
else if (entry.type == "QW")
|
|
{
|
|
var qw = db.Hg_Qw_Message.FirstOrDefault(m => m.id == entry.hgid);
|
|
if (qw != null)
|
|
{
|
|
qw.iswg = 0;
|
|
db.SaveChanges();
|
|
}
|
|
}
|
|
else if (entry.type == "PHONE")
|
|
{
|
|
var phone = db.Hg_Record_Message.FirstOrDefault(m => m.id == entry.hgid);
|
|
if (phone != null)
|
|
{
|
|
phone.iswg = 0;
|
|
db.SaveChanges();
|
|
}
|
|
}
|
|
db.Hg_Violation.Remove(entry);
|
|
db.SaveChanges();
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
erros.Add(e.ToString());
|
|
LogHelper.Error(e.ToString());
|
|
}
|
|
return result;
|
|
}
|
|
#endregion
|
|
}
|
|
}
|