ComplianceServer/oldcode/Core.BLL/Hg/Hg_Message_BL.cs

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
}
}