1267 lines
61 KiB
C#
1267 lines
61 KiB
C#
using Common;
|
||
using MySql.Data.MySqlClient;
|
||
using Newtonsoft.Json;
|
||
using Newtonsoft.Json.Linq;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Data;
|
||
using System.Diagnostics;
|
||
using System.Linq;
|
||
using WX.CRM.Common;
|
||
using WX.CRM.Common.Layui;
|
||
using WX.CRM.Model.crmModel;
|
||
using WX.CRM.Model.Entity;
|
||
using WX.CRM.Model.Enum;
|
||
using WX.CRM.Model.Ww;
|
||
|
||
namespace WX.CRM.DAL.Ww
|
||
{
|
||
public class wwUserinfoExinfo
|
||
{
|
||
public string thumb_avatar { get; set; }
|
||
public string avatar { get; set; }
|
||
}
|
||
|
||
public class Ww_huser_Dal
|
||
{
|
||
public List<Ww_Extuser> GeExtUsertList(string corpid, string name, ref Pager pager)
|
||
{
|
||
List<Ww_Extuser> corp = new List<Ww_Extuser>();
|
||
try
|
||
{
|
||
MySqlDbHelper helper = new MySqlDbHelper("MysqlQWConn");
|
||
List<MySqlParameter> parameters = new List<MySqlParameter>();
|
||
string sql = @"select sql_calc_found_rows userid,corpid,ctime,name,avatar,unionid from ww_extuser where 1=1";
|
||
if (!string.IsNullOrEmpty(corpid))
|
||
{
|
||
sql += " and corpid in(" + corpid + ")";
|
||
}
|
||
if (!string.IsNullOrEmpty(name))
|
||
{
|
||
sql += " and ( name like @name or exinfo like @name )";
|
||
parameters.Add(new MySqlParameter() { DbType = DbType.String, Value = string.Format("%{0}%", name), ParameterName = "name" });
|
||
}
|
||
sql += " order by ctime desc limit @pageIndex,@pageSize;select found_rows() scc; ";
|
||
parameters.Add(new MySqlParameter() { DbType = DbType.Int32, Value = pager.rows * (pager.page - 1), ParameterName = "pageIndex" });
|
||
parameters.Add(new MySqlParameter() { DbType = DbType.Int32, Value = pager.rows, ParameterName = "pageSize" });
|
||
|
||
DataSet table = helper.ExecuteDataTable(sql, parameters.ToArray());
|
||
foreach (DataRow item in table.Tables[0].Rows)
|
||
{
|
||
Ww_Extuser model = new Ww_Extuser();
|
||
model.avatar = item["avatar"].ToString();
|
||
model.corpid = item["corpid"].ToString();
|
||
model.ctime = Convert.ToDateTime(item["ctime"]);
|
||
model.name = item["name"].ToString();
|
||
model.userid = item["userid"].ToString();
|
||
model.unionid = item["unionid"].ToString();
|
||
corp.Add(model);
|
||
}
|
||
pager.totalRows = Convert.ToInt32(table.Tables[1].Rows[0]["scc"]);
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
throw;
|
||
}
|
||
return corp;
|
||
}
|
||
|
||
public List<Ww_Corp> Corp_Get()
|
||
{
|
||
List<Ww_Corp> corp = new List<Ww_Corp>();
|
||
try
|
||
{
|
||
MySqlDbHelper helper = new MySqlDbHelper("MysqlQWConn");
|
||
List<MySqlParameter> parameters = new List<MySqlParameter>();
|
||
DataTable table = helper.ExecuteDataTable("select corpid,corpname,companycode,deptid from ww_corp", parameters.ToArray()).Tables[0];
|
||
foreach (DataRow item in table.Rows)
|
||
{
|
||
Ww_Corp model = new Ww_Corp();
|
||
model.corpid = item["corpid"].ToString();
|
||
model.corpname = item["corpname"].ToString();
|
||
model.companycode = item["companycode"].ToString();
|
||
model.deptid = item["deptid"].ToString();
|
||
corp.Add(model);
|
||
}
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
throw;
|
||
}
|
||
return corp;
|
||
}
|
||
|
||
public Ww_hhuser HHuser_Get(string userid)
|
||
{
|
||
Ww_hhuser model = null;
|
||
try
|
||
{
|
||
MySqlDbHelper helper = new MySqlDbHelper("MysqlQWConn");
|
||
List<MySqlParameter> parameters = new List<MySqlParameter>() { new MySqlParameter() { DbType = DbType.String, Value = userid, ParameterName = "userid" } };
|
||
DataTable table = helper.ExecuteDataTable("select userid,corpid,uname,exinfo,lmsgtime,deptid,fmsgtime,lastupdate,alias,mobile,email from ww_hhuser where userid=@userid;", parameters.ToArray()).Tables[0];
|
||
foreach (DataRow item in table.Rows)
|
||
{
|
||
model = new Ww_hhuser();
|
||
model.corpid = item["corpid"].ToString();
|
||
if (item["deptid"] != DBNull.Value)
|
||
{
|
||
model.deptid = Convert.ToInt32(item["deptid"]);
|
||
}
|
||
model.exinfo = item["exinfo"].ToString();
|
||
if (item["lmsgtime"] != DBNull.Value)
|
||
model.lmsgtime = Convert.ToDateTime(item["lmsgtime"]);
|
||
model.uname = item["uname"].ToString();
|
||
model.userid = item["userid"].ToString();
|
||
}
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
throw;
|
||
}
|
||
return model;
|
||
}
|
||
|
||
public Ww_hhuser HHuser_Get(string userid, string corpid)
|
||
{
|
||
Ww_hhuser model = null;
|
||
try
|
||
{
|
||
MySqlDbHelper helper = new MySqlDbHelper("MysqlQWConn");
|
||
List<MySqlParameter> parameters = new List<MySqlParameter>()
|
||
{
|
||
new MySqlParameter() { DbType = DbType.String, Value = userid, ParameterName = "userid" } ,
|
||
new MySqlParameter() { DbType = DbType.String, Value = corpid, ParameterName = "corpid" }
|
||
};
|
||
DataTable table = helper.ExecuteDataTable("select userid,corpid,uname,exinfo,lmsgtime,deptid,fmsgtime,lastupdate,alias,mobile,email from ww_hhuser where userid=@userid and corpid=@corpid;", parameters.ToArray()).Tables[0];
|
||
foreach (DataRow item in table.Rows)
|
||
{
|
||
model = new Ww_hhuser();
|
||
model.corpid = item["corpid"].ToString();
|
||
if (item["deptid"] != DBNull.Value)
|
||
{
|
||
model.deptid = Convert.ToInt32(item["deptid"]);
|
||
}
|
||
model.exinfo = item["exinfo"].ToString();
|
||
if (item["lmsgtime"] != DBNull.Value)
|
||
model.lmsgtime = Convert.ToDateTime(item["lmsgtime"]);
|
||
model.uname = item["uname"].ToString();
|
||
model.userid = item["userid"].ToString();
|
||
}
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
throw;
|
||
}
|
||
return model;
|
||
}
|
||
|
||
public Ww_Extuser ExtUserGet(string userid)
|
||
{
|
||
Ww_Extuser model = null;
|
||
try
|
||
{
|
||
MySqlDbHelper helper = new MySqlDbHelper("MysqlQWConn");
|
||
List<MySqlParameter> parameters = new List<MySqlParameter>() { new MySqlParameter() { DbType = DbType.String, Value = userid, ParameterName = "userid" } };
|
||
DataTable table = helper.ExecuteDataTable(@"
|
||
SELECT userid, corpid, ctime, lastupdate, errnums, name, avatar, remoteid, exinfo, unionid FROM ww_extuser where userid = @userid", parameters.ToArray()).Tables[0];
|
||
foreach (DataRow item in table.Rows)
|
||
{
|
||
model = new Ww_Extuser();
|
||
model.userid = item["userid"].ToString();
|
||
model.corpid = item["corpid"].ToString();
|
||
model.name = item["name"].ToString();
|
||
model.avatar = item["avatar"].ToString();
|
||
if (item["ctime"] != DBNull.Value)
|
||
model.ctime = Convert.ToDateTime(item["ctime"]);
|
||
model.exinfo = item["exinfo"].ToString();
|
||
model.unionid = item["unionid"].ToString();
|
||
if (item["lastupdate"] != DBNull.Value)
|
||
model.lastupdate = Convert.ToDateTime(item["lastupdate"]);
|
||
}
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
throw;
|
||
}
|
||
return model;
|
||
}
|
||
|
||
public List<Ww_Extuser> WorkListGet(string nickname, string unionid, string remark, IList<string> kfid = null)
|
||
{
|
||
List<Ww_Extuser> corp = new List<Ww_Extuser>();
|
||
try
|
||
{
|
||
MySqlDbHelper helper = new MySqlDbHelper("MysqlQWConn");
|
||
List<MySqlParameter> parameters = new List<MySqlParameter>();
|
||
string sql = @"select distinct a.* from ww_extuser a inner join ww_user_extuser b on a.corpid=b.corpid and a.userid=b.extuserid where 1=1";
|
||
if (kfid != null && kfid.Count() > 0)
|
||
{
|
||
sql += " and b.userid in ('" + string.Join("','", kfid) + "')";
|
||
}
|
||
if (!string.IsNullOrEmpty(nickname))
|
||
{
|
||
sql += " and a.name = @nickname";
|
||
parameters.Add(new MySqlParameter() { DbType = DbType.String, Value = nickname, ParameterName = "nickname" });
|
||
}
|
||
if (!string.IsNullOrEmpty(unionid))
|
||
{
|
||
sql += " and (a.unionid = @unionid or a.userid=@unionid)";
|
||
parameters.Add(new MySqlParameter() { DbType = DbType.String, Value = unionid, ParameterName = "unionid" });
|
||
}
|
||
if (!string.IsNullOrEmpty(remark))
|
||
{
|
||
sql += " and b.remark like @remark";
|
||
parameters.Add(new MySqlParameter() { DbType = DbType.String, Value = string.Format("%{0}%", remark), ParameterName = "remark" });
|
||
}
|
||
|
||
DataSet table = helper.ExecuteDataTable(sql, parameters.ToArray());
|
||
foreach (DataRow item in table.Tables[0].Rows)
|
||
{
|
||
Ww_Extuser model = new Ww_Extuser();
|
||
model.avatar = item["avatar"].ToString();
|
||
model.corpid = item["corpid"].ToString();
|
||
model.ctime = Convert.ToDateTime(item["ctime"]);
|
||
model.name = item["name"].ToString();
|
||
model.userid = item["userid"].ToString();
|
||
model.unionid = item["unionid"].ToString();
|
||
corp.Add(model);
|
||
}
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
throw;
|
||
}
|
||
return corp;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 根据工号获取企业微信账号列表
|
||
/// </summary>
|
||
/// <param name="Eid"></param>
|
||
/// <returns></returns>
|
||
public List<Ww_hhuserModel> WorkListGetByEid(decimal Eid, string name)
|
||
{
|
||
List<Ww_hhuserModel> hhuserList = new List<Ww_hhuserModel>();
|
||
using (var db = new crmContext())
|
||
{
|
||
var list = db.WW_HHUSER_EID.Where(m => m.EID == Eid);
|
||
MySqlDbHelper helper = new MySqlDbHelper("MysqlQWConn");
|
||
List<MySqlParameter> parameters = new List<MySqlParameter>();
|
||
string sql = "";
|
||
int i = 0;
|
||
foreach (var item in list)
|
||
{
|
||
i++;
|
||
if (i == 1)
|
||
sql += $@"select a.corpid,a.deptid,b.corpname,a.exinfo ,a.uname,a.userid,a.lmsgtime,a.mobile,a.email from ww_hhuser a
|
||
join ww_corp b on a.corpid = b.corpid where a.userid=@userid{i} and a.corpid=@corpid{i} ";
|
||
else
|
||
sql += $@"union
|
||
select a.corpid,a.deptid,b.corpname,a.exinfo ,a.uname,a.userid,a.lmsgtime,a.mobile,a.email from ww_hhuser a
|
||
join ww_corp b on a.corpid = b.corpid where a.userid=@userid{i} and a.corpid=@corpid{i} ";
|
||
if (!string.IsNullOrEmpty(name))
|
||
{
|
||
sql += " and (a.uname like @name or a.mobile like @name or a.userid like @name) ";
|
||
}
|
||
parameters.Add(new MySqlParameter() { ParameterName = $"userid{i}", Value = item.USERID });
|
||
parameters.Add(new MySqlParameter() { ParameterName = $"corpid{i}", Value = item.CORPID });
|
||
}
|
||
if (!string.IsNullOrEmpty(name))
|
||
{
|
||
parameters.Add(new MySqlParameter() { ParameterName = $"name", Value = $"%{name}%" });
|
||
}
|
||
if (string.IsNullOrWhiteSpace(sql))
|
||
return hhuserList;
|
||
|
||
var set = helper.ExecuteDataTable(sql, parameters.ToArray());
|
||
List<Ww_hhuserModel> orderCorp = new List<Ww_hhuserModel>();
|
||
foreach (DataRow item in set.Tables[0].Rows)
|
||
{
|
||
Ww_hhuserModel model = new Ww_hhuserModel();
|
||
model.corpid = item["corpid"].ToString();
|
||
model.corpname = item["corpname"].ToString();
|
||
if (item["deptid"] != DBNull.Value)
|
||
model.deptid = Convert.ToInt32(item["deptid"]);
|
||
model.exinfo = item["exinfo"].ToString();
|
||
if (item["lmsgtime"] != DBNull.Value)
|
||
model.lmsgtime = Convert.ToDateTime(item["lmsgtime"]);
|
||
model.userid = item["userid"].ToString();
|
||
model.uname = item["uname"].ToString();
|
||
model.mobile = item["mobile"].ToString();
|
||
model.email = item["email"].ToString();
|
||
try
|
||
{
|
||
var json = JsonConvert.DeserializeObject<wwUserinfoExinfo>(item["exinfo"].ToString());
|
||
if (json != null)
|
||
{
|
||
model.thumb_avatar = json.thumb_avatar ?? json.avatar;
|
||
}
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
}
|
||
model.exinfo = "";
|
||
hhuserList.Add(model);//加了组织结构过滤条件
|
||
}
|
||
}
|
||
return hhuserList;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取企业微信成员列表
|
||
/// </summary>
|
||
/// <param name="v_name"></param>
|
||
/// <param name="v_corpid"></param>
|
||
/// <param name="v_deptid"></param>
|
||
/// <returns></returns>
|
||
public List<Ww_hhuserModel> WorList_Get(ref Laypage page, Ww_IndexQueryModel dto, List<decimal> ALLdeptIDS, List<decimal> ALLgidS)
|
||
{
|
||
List<Ww_hhuserModel> corp = new List<Ww_hhuserModel>();
|
||
List<WW_HHUSER_EID> ls = new List<WW_HHUSER_EID>();//企业微信 和 员工绑定关系
|
||
List<decimal> myuserIdList = new List<decimal>();
|
||
|
||
try
|
||
{
|
||
bool isShowAll = true;
|
||
bool beside = false;
|
||
using (var db = new crmContext())
|
||
{
|
||
var queryData = db.WW_HHUSER_EID.AsQueryable();
|
||
if (!string.IsNullOrWhiteSpace(dto.fiterUser))
|
||
{
|
||
var userfilter = dto.fiterUser.Split(';').ToList();
|
||
queryData = queryData.Where(m => userfilter.Contains(m.USERID));
|
||
}
|
||
if (dto.assignStatus > -1)
|
||
{
|
||
isShowAll = false;
|
||
queryData = queryData.Where(m => m.ASSIGNSTATUS == dto.assignStatus);
|
||
if (dto.assignStatus == 0)
|
||
{
|
||
beside = true; //没有数据绑定
|
||
}
|
||
}
|
||
if (dto.Status > -1)
|
||
{
|
||
isShowAll = false;
|
||
queryData = queryData.Where(m => m.STATUS == dto.Status);
|
||
}
|
||
if (!string.IsNullOrWhiteSpace(dto.txt_userId) || dto.seid.HasValue)
|
||
{
|
||
isShowAll = false;
|
||
if (!string.IsNullOrWhiteSpace(dto.txt_userId))
|
||
{
|
||
var userfilter = dto.txt_userId.Split(',').Select(n => Convert.ToDecimal(n)).ToList();
|
||
queryData = queryData.Where(m => userfilter.Contains(m.INNERUSERID));
|
||
}
|
||
if (dto.seid.HasValue)
|
||
queryData = queryData.Where(m => m.EID == dto.seid.Value);
|
||
}
|
||
|
||
if (dto.bindStatus != 2 && !string.IsNullOrEmpty(dto.txt_groupIds))
|
||
{
|
||
isShowAll = false;
|
||
var _groupids = OperationUtil.ConvertToDecimal(dto.txt_groupIds.Split(','));
|
||
queryData = (from a in queryData
|
||
join b in db.BAS_INNERUSERGROUP on a.INNERUSERID equals b.INNERUSERID
|
||
where _groupids.Contains(b.GID.Value)
|
||
select a);
|
||
}
|
||
else if (dto.bindStatus != 2 && !string.IsNullOrEmpty(dto.txt_deptId))
|
||
{
|
||
isShowAll = false;
|
||
var depts = OperationUtil.ConvertToDecimal(dto.txt_deptId.Split(','));
|
||
queryData = (from a in queryData
|
||
join b in db.BAS_INNERUSERGROUP on a.INNERUSERID equals b.INNERUSERID
|
||
//join g in db.BAS_INNERGROUP on b.GID equals g.GID
|
||
where ALLdeptIDS.Contains(b.DEPTID.Value) || ALLgidS.Contains(b.GID.Value)
|
||
select a);
|
||
}
|
||
else if (dto.txt_companyId.HasValue)
|
||
{
|
||
isShowAll = false;
|
||
queryData = (from a in queryData
|
||
join b in db.BAS_INNERUSERGROUP on a.INNERUSERID equals b.INNERUSERID
|
||
join g in db.BAS_INNERGROUP on b.GID equals g.GID
|
||
join m in db.BAS_SALESDEPARTMENT on g.SALEDEPTID equals m.SALEDEPTID
|
||
where m.COMPANYID == dto.txt_companyId.Value
|
||
select a);
|
||
}
|
||
if (dto.bindStatus.HasValue)
|
||
{
|
||
isShowAll = false;
|
||
switch (dto.bindStatus)
|
||
{
|
||
case 1:
|
||
queryData = queryData.Where(n => n.EID > 0);
|
||
break;
|
||
|
||
case 2:
|
||
beside = true;
|
||
queryData = queryData.Where(n => n.EID > 0 || n.DEPTID > 0);
|
||
break;
|
||
|
||
case 3:
|
||
queryData = queryData.Where(n => (n.EID == null || n.EID == 0) && n.DEPTID > 0);
|
||
break;
|
||
}
|
||
}
|
||
ls = queryData.ToList();
|
||
}
|
||
|
||
MySqlDbHelper helper = new MySqlDbHelper("MysqlQWConn");
|
||
List<MySqlParameter> parameters = new List<MySqlParameter>();
|
||
|
||
var relFiler = "ctime >= CURDATE()";
|
||
if (dto.xstime.HasValue)
|
||
{
|
||
relFiler = $" ctime >= '{dto.xstime.Value.ToString("yyyy-MM-dd")}'";
|
||
}
|
||
if (dto.xetime.HasValue)
|
||
{
|
||
if (relFiler == null)
|
||
{
|
||
relFiler = $" ctime < '{dto.xetime.Value.AddDays(1).ToString("yyyy-MM-dd")}'";
|
||
}
|
||
else
|
||
{
|
||
relFiler += $" and ctime < '{dto.xetime.Value.AddDays(1).ToString("yyyy-MM-dd")}'";
|
||
}
|
||
}
|
||
|
||
var deptSql = @"select deptid,corpid,deptname,parentid from ww_dept where 1=1";
|
||
var cropFilter = "";
|
||
if (!string.IsNullOrEmpty(dto.corp))
|
||
{
|
||
cropFilter = $"{string.Join(",", dto.corp.Split(',').Select(n => $"'{n}'"))}";
|
||
deptSql += $" and corpid in ( {cropFilter} )";
|
||
}
|
||
var wxDeptList = helper.QueryEntitys<Ww_hhDeptModel>(deptSql);
|
||
string sql = $@"select a.corpid,a.deptid,b.corpname,'' exinfo ,a.uname,a.userid,a.lmsgtime,a.mobile,a.email,c.deptname,d.newAdd from ww_hhuser a
|
||
join ww_corp b on a.corpid = b.corpid
|
||
left join ww_dept c on a.deptid=c.deptid and a.corpid=c.corpid
|
||
left join ( select userId,sum(numbers) newAdd from ww_user_extuser_temp where {relFiler} group by userId) d on a.userid = d.userId
|
||
where 1=1
|
||
";
|
||
string where = "";
|
||
if (!string.IsNullOrEmpty(dto.name))
|
||
{
|
||
where += " and (a.uname like @uname or a.userid like @uname or a.mobile like @uname)";
|
||
parameters.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "uname", Value = string.Format("%{0}%", dto.name) });
|
||
}
|
||
if (!string.IsNullOrEmpty(dto.corp))
|
||
{
|
||
where += $" and a.corpid in ({cropFilter}) and a.deptid is not null";
|
||
}
|
||
List<SelfDept> deptidsnew = new List<SelfDept>();
|
||
string alldeptSql = "select deptid,corpid from ww_dept";
|
||
if (!string.IsNullOrEmpty(dto.deptid))
|
||
{
|
||
var sqlWhere = "";
|
||
var deptFilter = dto.deptid.Split(';').ToList();
|
||
var alldeptCorp = dto.corp.Split(',').ToList();
|
||
foreach (var item in deptFilter)
|
||
{
|
||
var deptStr = item.Split('_').LastOrDefault();
|
||
int[] ids = Newtonsoft.Json.JsonConvert.DeserializeObject<int[]>(deptStr);
|
||
var corpiditem = item.Split('_').FirstOrDefault();
|
||
alldeptCorp = alldeptCorp.Where(n => n != corpiditem).ToList();
|
||
var itemdeptArray = GetAllCildDept(helper, ids, corpiditem);
|
||
if (!string.IsNullOrWhiteSpace(sqlWhere))
|
||
{
|
||
sqlWhere += $" or";
|
||
}
|
||
else
|
||
{
|
||
sqlWhere += $" where ";
|
||
}
|
||
sqlWhere += $" (corpid = '{corpiditem}' and deptid in ({string.Join($",", itemdeptArray)})) ";
|
||
}
|
||
if (alldeptCorp.Count > 0)
|
||
{
|
||
alldeptCorp = alldeptCorp.Select(n => $"'{n}'").ToList();
|
||
if (!string.IsNullOrWhiteSpace(sqlWhere))
|
||
{
|
||
sqlWhere += $"or";
|
||
}
|
||
else
|
||
{
|
||
sqlWhere += $"where ";
|
||
}
|
||
sqlWhere += $" (corpid in ({string.Join(",", alldeptCorp)}))";
|
||
}
|
||
alldeptSql += sqlWhere;
|
||
}
|
||
else
|
||
{
|
||
if (!string.IsNullOrEmpty(dto.corp))
|
||
{
|
||
alldeptSql = $"select deptid,corpid from ww_dept where corpid in ({cropFilter}) ";
|
||
}
|
||
}
|
||
var selfDepts = helper.QueryEntitys<SelfDept>(alldeptSql);
|
||
deptidsnew = selfDepts.ToList();
|
||
//sql += where + " order by a.lmsgtime desc limit @page,@limit;";//查询列表
|
||
sql += where + " order by a.lmsgtime desc";//查询列表
|
||
//parameters.Add(new MySqlParameter() { DbType = DbType.Int32, ParameterName = "page", Value = page.page });
|
||
//parameters.Add(new MySqlParameter() { DbType = DbType.Int32, ParameterName = "limit", Value = page.limit });
|
||
|
||
var set = helper.ExecuteDataTable(sql, parameters.ToArray());
|
||
List<Ww_hhuserModel> orderCorp = new List<Ww_hhuserModel>();
|
||
foreach (DataRow item in set.Tables[0].Rows)
|
||
{
|
||
Ww_hhuserModel model = new Ww_hhuserModel();
|
||
model.corpid = item["corpid"].ToString();
|
||
model.corpname = item["corpname"].ToString();
|
||
if (item["deptid"] != DBNull.Value)
|
||
model.deptid = Convert.ToInt32(item["deptid"]);
|
||
model.exinfo = item["exinfo"].ToString();
|
||
if (item["lmsgtime"] != DBNull.Value)
|
||
model.lmsgtime = Convert.ToDateTime(item["lmsgtime"]);
|
||
model.userid = item["userid"].ToString();
|
||
model.uname = item["uname"].ToString();
|
||
model.mobile = item["mobile"].ToString();
|
||
model.email = item["email"].ToString();
|
||
model.deptname = item["deptname"].ToString();
|
||
if (item["newAdd"] != DBNull.Value)
|
||
model.newAdd = Convert.ToInt32(item["newAdd"]);
|
||
|
||
if (item["deptid"] != DBNull.Value)
|
||
{
|
||
model.isMyController = deptidsnew.Where(n => n.Corpid == model.corpid).Select(n => n.Deptid).Contains(model.deptid.Value) ? 1 : 2;
|
||
}
|
||
WW_HHUSER_EID huid = ls.FirstOrDefault(m => m.USERID == model.userid && m.CORPID == model.corpid);
|
||
if (huid != null)
|
||
{
|
||
model.eid = huid.EID;
|
||
model.assignStatus = huid.ASSIGNSTATUS.HasValue ? Convert.ToInt32(huid.ASSIGNSTATUS) : 0;
|
||
model.Status = huid.STATUS.HasValue ? Convert.ToInt32(huid.STATUS) : 1;
|
||
model.errorcode = huid.ERRORCODE.HasValue ? Convert.ToInt32(huid.ERRORCODE) : (int?)null;
|
||
}
|
||
|
||
model.assignStatusName = EnumHelper.GetEnumDescription((AssignstatusEnum)model.assignStatus);
|
||
model.StatusName = EnumHelper.GetEnumDescription((WeworkStatusEnum)model.Status);
|
||
if (isShowAll)
|
||
{
|
||
corp.Add(model);//如果显示全部,就全部显示
|
||
continue;
|
||
}
|
||
if (beside && huid == null) //未绑定
|
||
{
|
||
corp.Add(model);
|
||
}
|
||
else if (!beside && huid != null)
|
||
{
|
||
corp.Add(model);//加了组织结构过滤条件
|
||
}
|
||
}
|
||
if (dto.orderType == 2)
|
||
{
|
||
corp = corp.OrderByDescending(n => n.isMyController).ToList();
|
||
}
|
||
else
|
||
{
|
||
corp = corp.OrderBy(n => n.isMyController).ToList();
|
||
}
|
||
|
||
if (!string.IsNullOrWhiteSpace(page.order))
|
||
{
|
||
if (page.order == "asc")
|
||
corp = corp.OrderBy(x => x.newAdd).ToList();
|
||
else if (page.order == "desc")
|
||
corp = corp.OrderByDescending(x => x.newAdd).ToList();
|
||
}
|
||
|
||
page.count = corp.Count;
|
||
corp = corp.Skip((page.page - 1) * page.limit).Take(page.limit).ToList();//重新分页
|
||
var deptidList = corp.Where(n => n.deptid != null).Select(n => $"{n.deptid}_{n.corpid}").ToList();
|
||
var deptDic = BuildDeptName(wxDeptList.Distinct().ToList(), deptidList);
|
||
foreach (var item in corp)
|
||
{
|
||
var deptStr = $"{item.deptid}_{item.corpid}";
|
||
if (item.deptid == null)
|
||
{
|
||
continue;
|
||
}
|
||
if (deptDic.ContainsKey(deptStr))
|
||
{
|
||
item.deptname = deptDic.FirstOrDefault(n => n.Key == deptStr).Value;
|
||
}
|
||
}
|
||
//匹配员工企业号的客户信息
|
||
//使用分页后的结果查询
|
||
//减少需赛选的数据量
|
||
//20220218
|
||
var showIds = corp.Select(m => m.userid);
|
||
var relSql = $"select userId,count(1) extUser from ww_user_extuser where userid in ('{string.Join("','", showIds)}') group by userId;";
|
||
|
||
var userExtuserSet = helper.ExecuteDataTable(relSql);
|
||
// var userExtuserDic = helper.ExecuteDataDictionary(relSql);
|
||
foreach (DataRow item in userExtuserSet.Tables[0].Rows)
|
||
{
|
||
var userId = item["userId"].ToString();
|
||
var corpItem = corp.FirstOrDefault(m => m.userid == userId);
|
||
if (corpItem != null)
|
||
{
|
||
//更新 客户总数与 今日新增
|
||
corpItem.myExtuser = Convert.ToInt32(item["extUser"].ToString());
|
||
//corpItem.newAdd = Convert.ToInt32(item["newAdd"].ToString());
|
||
}
|
||
}
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
throw;
|
||
}
|
||
return corp;
|
||
}
|
||
|
||
public List<My_hhuserModel> MyWeUser_Get(ref Laypage page, MyWeUserDto myWeUserDto, List<decimal> ALLdeptIDS, List<decimal> ALLgidS)
|
||
{
|
||
List<My_hhuserModel> res = new List<My_hhuserModel>();
|
||
using (var db = new crmContext())
|
||
{
|
||
MySqlDbHelper helper = new MySqlDbHelper("MysqlQWConn");
|
||
var queryData = db.RES_CUSTOMERQW_EID.AsQueryable();
|
||
if (myWeUserDto.txt_userId.HasValue)
|
||
{
|
||
queryData = queryData.Where(m => m.INNERUSERID == myWeUserDto.txt_userId);
|
||
}
|
||
if (!string.IsNullOrEmpty(myWeUserDto.txt_groupIds))
|
||
{
|
||
var _groupids = OperationUtil.ConvertToDecimal(myWeUserDto.txt_groupIds.Split(','));
|
||
queryData = (from a in queryData
|
||
join b in db.BAS_INNERUSERGROUP on a.INNERUSERID equals b.INNERUSERID
|
||
where _groupids.Contains(b.GID.Value)
|
||
select a);
|
||
}
|
||
else if (!string.IsNullOrEmpty(myWeUserDto.txt_deptId))
|
||
{
|
||
var depts = OperationUtil.ConvertToDecimal(myWeUserDto.txt_deptId.Split(','));
|
||
queryData = (from a in queryData
|
||
join b in db.BAS_INNERUSERGROUP on a.INNERUSERID equals b.INNERUSERID
|
||
where ALLdeptIDS.Contains(b.DEPTID.Value) || ALLgidS.Contains(b.GID.Value)
|
||
select a);
|
||
}
|
||
|
||
var customerQuery = db.RES_CUSTOMERQW.AsQueryable();
|
||
|
||
//
|
||
if (!string.IsNullOrWhiteSpace(myWeUserDto.corp))
|
||
{
|
||
customerQuery = customerQuery.Where(n => n.APPID == myWeUserDto.corp);
|
||
}
|
||
if (!string.IsNullOrWhiteSpace(myWeUserDto.resid))
|
||
{
|
||
customerQuery = customerQuery.Where(n => n.RESID == myWeUserDto.resid);
|
||
}
|
||
//来源 todo
|
||
if (myWeUserDto.addway.HasValue)
|
||
{
|
||
customerQuery = customerQuery.Where(n => n.SCENETYPE == myWeUserDto.addway);
|
||
}
|
||
if (!string.IsNullOrWhiteSpace(myWeUserDto.activeName))
|
||
{
|
||
customerQuery = customerQuery.Where(n => n.SCENE == myWeUserDto.activeName);
|
||
}
|
||
if (myWeUserDto.xstime.HasValue)
|
||
{
|
||
customerQuery = customerQuery.Where(n => n.CREATETIME >= myWeUserDto.xstime);
|
||
}
|
||
if (myWeUserDto.xetime.HasValue)
|
||
{
|
||
var endtime = myWeUserDto.xetime.Value.AddDays(1);
|
||
customerQuery = customerQuery.Where(n => n.CREATETIME < endtime);
|
||
}
|
||
//昵称
|
||
if (!string.IsNullOrWhiteSpace(myWeUserDto.name))
|
||
{
|
||
var nameSql = @"select a.userid,a.unionid,a.name,a.avatar,a.corpid,b.corpname from ww_extuser
|
||
a left join ww_corp b on a.corpid = b.corpid where a.name = @name and a.userid is not null
|
||
and a.unionid is not null and a.name is not null";
|
||
List<MySqlParameter> nameparameters = new List<MySqlParameter>();
|
||
nameparameters.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "name", Value = myWeUserDto.name.Trim() });
|
||
var set = helper.QueryEntitys<MyWeUserQueryModel>(nameSql, nameparameters.ToArray());
|
||
var resIdFilter = set.Select(n => n.unionid).Union(set.Select(n => n.userid)).ToList();
|
||
customerQuery = customerQuery.Where(n => resIdFilter.Contains(n.RESID));
|
||
}
|
||
var customerQw = from n in customerQuery
|
||
join e in queryData
|
||
on n.APPUSERID equals e.APPUSERID
|
||
join b in db.BAS_INNERUSERGROUP
|
||
on e.INNERUSERID equals b.INNERUSERID
|
||
join c in db.BAS_SALESDEPARTMENT
|
||
on b.DEPTID equals c.SALEDEPTID
|
||
join u in db.BAS_INNERUSER
|
||
on e.INNERUSERID equals u.PKID
|
||
select new
|
||
{
|
||
APPID = n.APPID,
|
||
RESID = n.RESID,
|
||
CREATETIME = n.CREATETIME,
|
||
SCENETYPENAME = n.SCENETYPENAME,
|
||
SCENENAME = n.SCENETYPENAME,
|
||
deptName = c.DEPTNAME,
|
||
uname = u.UNAME,
|
||
eid = e.EID,
|
||
CTIME = n.CTIME,
|
||
APPUSERID = n.APPUSERID
|
||
};
|
||
//var w = customerQw.ToList();
|
||
|
||
page.count = customerQw.Count();
|
||
if (page.count == 0)
|
||
{
|
||
return res;
|
||
}
|
||
customerQw = customerQw.OrderByDescending(n => n.CTIME);
|
||
var list = customerQw.Skip((page.page - 1) * page.limit).Take(page.limit).ToList();//重新分页
|
||
var unionList = string.Join(",", list.Select(n => "'" + n.RESID + "'").ToList());
|
||
var corpSql = @"select corpid,corpname from ww_corp ";
|
||
List<MySqlParameter> corpsqlparams = new List<MySqlParameter>();
|
||
var cropList = helper.QueryEntitys<MyWeUserQueryModel>(corpSql, corpsqlparams.ToArray());
|
||
|
||
var sql = @"select userid,unionid,name,avatar,corpid from ww_extuser
|
||
where userid in (" + unionList + ") or unionid in (" + unionList + ")";
|
||
List<MySqlParameter> sqlparams = new List<MySqlParameter>();
|
||
//sqlparams.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "fiter", Value = unionList });
|
||
var weList = helper.QueryEntitys<MyWeUserQueryModel>(sql, sqlparams.ToArray());
|
||
foreach (var item in list)
|
||
{
|
||
var dbItem = cropList.FirstOrDefault(n => n.corpid == item.APPID);
|
||
var detail = weList.FirstOrDefault(n => n.unionid == item.RESID || n.userid == item.RESID);
|
||
My_hhuserModel my_HhuserModel = new My_hhuserModel
|
||
{
|
||
company = dbItem?.corpname,
|
||
unionid = item.APPID,
|
||
resId = item.RESID,
|
||
avatar = detail == null ? "" : detail.avatar,
|
||
name = detail == null ? "" : detail.name,
|
||
createTime = item.CREATETIME,
|
||
addway = item.SCENETYPENAME,
|
||
activeName = item.SCENENAME,
|
||
deptName = item.deptName, //deptInfo == null? "":deptInfo.deptName,
|
||
userName = item.uname + $"-({item.eid})" // deptInfo ==null? "" :deptInfo.uname +$"-({deptInfo.eid})"
|
||
};
|
||
res.Add(my_HhuserModel);
|
||
}
|
||
}
|
||
return res;
|
||
}
|
||
|
||
private Dictionary<string, string> BuildDeptName(List<Ww_hhDeptModel> deptList, List<string> listId)
|
||
{
|
||
listId = listId.Distinct().ToList();
|
||
Dictionary<string, string> result = new Dictionary<string, string>();
|
||
foreach (var id in listId)
|
||
{
|
||
var res = BuildDeptName(id, deptList, "");
|
||
result.Add(id, res.Trim('/'));
|
||
}
|
||
return result;
|
||
}
|
||
|
||
public string BuildDeptName(string id, List<Ww_hhDeptModel> deptList, string name)
|
||
{
|
||
var deptid = id.Split('_').FirstOrDefault();
|
||
var corpid = id.Split('_').LastOrDefault();
|
||
var dept = deptList.FirstOrDefault(n => n.deptid.ToString() == deptid && n.corpid == corpid);
|
||
if (dept != null)
|
||
{
|
||
name = $"{dept.deptname}/{name}";
|
||
return BuildDeptName($"{dept.parentid}_{corpid}", deptList, name);
|
||
}
|
||
return name;
|
||
}
|
||
|
||
#region 查找所有子部门
|
||
|
||
/// <summary>
|
||
/// 找出配置里面所有的部门ID
|
||
/// </summary>
|
||
/// <param name="companycode"></param>
|
||
/// <returns></returns>
|
||
public Dictionary<string, List<int>> GetAllCorpDept(string companycode)
|
||
{
|
||
MySqlDbHelper helper = new MySqlDbHelper("MysqlQWConn");
|
||
List<Ww_Corp> list = Corp_Get();
|
||
Dictionary<string, List<int>> dic = new Dictionary<string, List<int>>();
|
||
if (!string.IsNullOrEmpty(companycode))
|
||
{
|
||
string companycodeFormat = string.Format("[{0}]", companycode);
|
||
list = list.Where(m => m.companycode.Contains(companycodeFormat)).ToList();
|
||
foreach (var item in list)
|
||
{
|
||
int[] deptid = new int[] { };
|
||
if (!string.IsNullOrEmpty(item.deptid))
|
||
{
|
||
JObject obj = (JObject)Newtonsoft.Json.Linq.JObject.Parse(item.deptid);
|
||
deptid = JsonConvert.DeserializeObject<int[]>(obj[companycode].ToString());
|
||
}
|
||
dic.Add(item.corpid, GetAllCildDept(helper, deptid, item.corpid).ToList());
|
||
}
|
||
}
|
||
return dic;
|
||
}
|
||
|
||
public int[] GetAllCildDept(MySqlDbHelper helper, int[] deptids, string corpid)
|
||
{
|
||
if (deptids.Count() == 0 || string.IsNullOrEmpty(corpid))
|
||
{
|
||
return deptids;
|
||
}
|
||
Dictionary<int, int> dicdptlist = new Dictionary<int, int>();
|
||
foreach (var item in deptids)
|
||
{
|
||
if (!dicdptlist.ContainsKey(item))
|
||
dicdptlist.Add(item, item);
|
||
}
|
||
foreach (var item in deptids)
|
||
{
|
||
GetChildDept(helper, dicdptlist, corpid, item);
|
||
}
|
||
return dicdptlist.Select(m => m.Key).ToArray();
|
||
}
|
||
|
||
public void GetChildDept(MySqlDbHelper helper, Dictionary<int, int> dplist, string corpid, int id)
|
||
{
|
||
//List<Ww_Dept> deptlist = _crmContext.Ww_Dept.Where(m => m.parentid == id && m.corpid == corpid).ToList();
|
||
string sql = "select * from ww_dept where parentid=@parentid and corpid=@corpid ";
|
||
List<MySqlParameter> parameters = new List<MySqlParameter>()
|
||
{
|
||
new MySqlParameter() { DbType = DbType.String, ParameterName = "parentid", Value = id },
|
||
new MySqlParameter() { DbType = DbType.String, ParameterName = "corpid", Value = corpid }
|
||
};
|
||
//DataSet set = MySqlDbHelper.ExecuteDataTable(helper.GetConnecionString(MySqlDbHelper.DatabaseType.MysqlQWConn), CommandType.Text, sql, parameters.ToArray());
|
||
DataSet set = helper.ExecuteDataTable(sql, parameters.ToArray());
|
||
if (set != null && set.Tables.Count > 0 && set.Tables[0].Rows.Count > 0)
|
||
{
|
||
foreach (DataRow dp in set.Tables[0].Rows)
|
||
{
|
||
if (dp["deptid"] != DBNull.Value)
|
||
{
|
||
int deptid = Convert.ToInt32(dp["deptid"]);
|
||
if (!dplist.ContainsKey(deptid))
|
||
{
|
||
dplist.Add(deptid, deptid);
|
||
GetChildDept(helper, dplist, corpid, deptid);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
#endregion 查找所有子部门
|
||
|
||
public List<Hg_KeyWord> GetKeyWordAll(bool showAll = false)
|
||
{
|
||
List<Hg_KeyWord> list = new List<Hg_KeyWord>();
|
||
try
|
||
{
|
||
MySqlDbHelper helper = new MySqlDbHelper("MysqlQWConn");
|
||
string sql = "select keyword,ctime,status from hg_keyword where status=1 order by ctime desc";
|
||
if (showAll == true)
|
||
sql = "select keyword,ctime,status from hg_keyword order by ctime desc";
|
||
DataTable tab = helper.ExecuteDataTable(sql).Tables[0];
|
||
foreach (DataRow item in tab.Rows)
|
||
{
|
||
Hg_KeyWord model = new Hg_KeyWord();
|
||
model.keyword = item["keyword"].ToString();
|
||
model.status = Convert.ToInt32(item["status"]);
|
||
model.ctime = Convert.ToDateTime(item["ctime"]);
|
||
list.Add(model);
|
||
}
|
||
return list;
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
LogHelper.Error(e.ToString());
|
||
throw;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 修改关键字
|
||
/// </summary>
|
||
/// <param name="model"></param>
|
||
/// <returns></returns>
|
||
public bool UpdateKeyWord(Hg_KeyWordAllModel model, ref string message)
|
||
{
|
||
bool result = false;
|
||
try
|
||
{
|
||
model.keywords = model.keywords.Replace(";", ";").Replace("\n\r", "").Replace("\r", "").Replace("\n", "");
|
||
List<Ww_Corp> corp = Corp_Get();//企业微信号列表
|
||
List<Hg_KeyWord> keys = GetKeyWordAll(true);//所有的关键词
|
||
List<Hg_Man_Config> manconfig = GetMainConfig();//当前主线程执行顺序
|
||
List<string> keylist2 = model.keywords.Split(';').ToList();
|
||
List<string> keylist = new List<string>();
|
||
|
||
foreach (var item in keylist2)
|
||
{
|
||
if (!string.IsNullOrEmpty(item))
|
||
keylist.Add(item);
|
||
}
|
||
MySqlDbHelper helper = new MySqlDbHelper("MysqlQWConn");
|
||
string addmessage = "";
|
||
string delmessage = "";
|
||
string pici = DateTime.Now.ToString("yyyyMMddHHmmssfff");
|
||
foreach (string item1 in keylist)
|
||
{
|
||
string item = item1.Trim();
|
||
if (string.IsNullOrEmpty(item))
|
||
continue;
|
||
Hg_KeyWord word = keys.FirstOrDefault(m => m.keyword == item);
|
||
if (word == null)//如果没有数据,则新增
|
||
{
|
||
addmessage += string.Format("{0};", item);
|
||
helper.ExecuteNonQuery("insert into hg_keyword(keyword,status)values(@keyword, 1);", new MySqlParameter() { DbType = DbType.String, ParameterName = "keyword", Value = item });//插入数据
|
||
foreach (var co in corp)
|
||
{
|
||
var en = manconfig.FirstOrDefault(m => m.corpid == co.corpid);
|
||
if (en == null || en.seq == 0)//如果主线程都没有执行,就不用新增 补充数据指令了
|
||
{
|
||
continue;
|
||
}
|
||
else
|
||
{
|
||
//插入待执行表, 最大值为当前执行的位置
|
||
helper.ExecuteNonQuery("insert into hg_make_up(corpid,keyword,seq,maxseq,status,pici)values(@corpid,@keyword, 0,@maxseq,90,@pici);",
|
||
new MySqlParameter() { DbType = DbType.String, ParameterName = "corpid", Value = en.corpid },
|
||
new MySqlParameter() { DbType = DbType.String, ParameterName = "keyword", Value = item },
|
||
new MySqlParameter() { DbType = DbType.Int32, ParameterName = "maxseq", Value = en.seq },
|
||
new MySqlParameter() { DbType = DbType.String, ParameterName = "pici", Value = pici }
|
||
);//有记录则插入补充记录
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (word.status == 0)//有数据,切已经被删除了,则修改会正常状态
|
||
{
|
||
addmessage += string.Format("{0};", item);
|
||
helper.ExecuteNonQuery("update hg_keyword set status=1 where keyword=@keyword;", new MySqlParameter() { DbType = DbType.String, ParameterName = "keyword", Value = item });//插入数据
|
||
foreach (var co in corp)
|
||
{
|
||
var en = manconfig.FirstOrDefault(m => m.corpid == co.corpid);
|
||
if (en == null || en.seq == 0)//如果主线程都没有执行,就不用新增 补充数据指令了
|
||
{
|
||
continue;
|
||
}
|
||
else
|
||
{
|
||
//插入待执行表, 最大值为当前执行的位置
|
||
helper.ExecuteNonQuery("insert into hg_make_up(corpid,keyword,seq,maxseq,status,pici)values(@corpid,@keyword, 0,@maxseq,90,@pici);",
|
||
new MySqlParameter() { DbType = DbType.String, ParameterName = "corpid", Value = en.corpid },
|
||
new MySqlParameter() { DbType = DbType.String, ParameterName = "keyword", Value = item },
|
||
new MySqlParameter() { DbType = DbType.Int32, ParameterName = "maxseq", Value = en.seq },
|
||
new MySqlParameter() { DbType = DbType.String, ParameterName = "pici", Value = pici }
|
||
);//有记录则插入补充记录
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
var delkeyword = keys.Where(m => !keylist.Contains(m.keyword)).ToList();
|
||
foreach (var item in delkeyword)
|
||
{
|
||
delmessage += string.Format("{0};", item.keyword);
|
||
helper.ExecuteNonQuery("update hg_keyword set status=0 where keyword=@keyword;", new MySqlParameter() { DbType = DbType.String, ParameterName = "keyword", Value = item.keyword });//将关键字 修改成
|
||
helper.ExecuteNonQuery("update hg_make_up set status=120 where keyword=@keyword and status=90;", new MySqlParameter() { DbType = DbType.String, ParameterName = "keyword", Value = item.keyword });//修改成取消状态
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(addmessage))
|
||
{
|
||
message += "新增关键字:“" + addmessage + "”\n";
|
||
}
|
||
if (!string.IsNullOrEmpty(delmessage))
|
||
{
|
||
message += "删除关键字:“" + delmessage + "”\n";
|
||
}
|
||
if (string.IsNullOrEmpty(message))
|
||
{
|
||
message = "无变动!";
|
||
}
|
||
result = true;
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
message = "系统错误!";
|
||
LogHelper.Error(e.ToString());
|
||
}
|
||
return result;
|
||
}
|
||
|
||
public List<Hg_Man_Config> GetMainConfig()
|
||
{
|
||
List<Hg_Man_Config> list = new List<Hg_Man_Config>();
|
||
try
|
||
{
|
||
MySqlDbHelper helper = new MySqlDbHelper("MysqlQWConn");
|
||
DataTable tab = helper.ExecuteDataTable("select corpid,tablename,seq from hg_man_config").Tables[0];
|
||
foreach (DataRow item in tab.Rows)
|
||
{
|
||
Hg_Man_Config model = new Hg_Man_Config();
|
||
model.corpid = item["corpid"].ToString();
|
||
model.tablename = item["tablename"].ToString();
|
||
model.seq = Convert.ToInt32(item["seq"]);
|
||
list.Add(model);
|
||
}
|
||
return list;
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
LogHelper.Error(e.ToString());
|
||
throw;
|
||
}
|
||
}
|
||
|
||
public bool SetKeyWords(string keywords, ref ValidationErrors erro)
|
||
{
|
||
bool result = false;
|
||
try
|
||
{
|
||
MySqlDbHelper helper = new MySqlDbHelper("MysqlQWConn");
|
||
DataTable tab = helper.ExecuteDataTable("select count(*)count from bas_parameter where parakey='WeiXin_IllegalKewords'").Tables[0];
|
||
if (Convert.ToInt32(tab.Rows[0]["count"]) == 0)
|
||
{
|
||
helper.ExecuteNonQuery("insert into bas_parameter (parakey,paravalue,remark) values('WeiXin_IllegalKewords',@paravalue,'关键词配置')", new MySqlParameter() { DbType = DbType.String, ParameterName = "paravalue", Value = keywords });
|
||
}
|
||
else
|
||
{
|
||
helper.ExecuteNonQuery("update bas_parameter set paravalue=@paravalue where parakey='WeiXin_IllegalKewords' ", new MySqlParameter() { DbType = DbType.String, ParameterName = "paravalue", Value = keywords });
|
||
}
|
||
result = true;
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
LogHelper.Error(e.ToString());
|
||
erro.Add(e.ToString());
|
||
}
|
||
return result;
|
||
}
|
||
|
||
public List<Hg_MessageModel> GetHg_Message(ref Pager pager, string userNames, DateTime? msgstime, DateTime? msgetime, DateTime? stime, DateTime? etime, string keyword, string kefid, string userid, int? status)
|
||
{
|
||
List<Hg_MessageModel> list = new List<Hg_MessageModel>();
|
||
try
|
||
{
|
||
MySqlDbHelper helper = new MySqlDbHelper("MysqlQWConn");
|
||
string sql = "select SQL_CALC_FOUND_ROWS id,seq,msgid,msgtype,action,fromer,tolist,roomid,ext,content,nfile,msgtime,ctime,hgstatus,hgtime,issend,kehuname,cusname,corpid from hg_message x where 1=1 ";
|
||
List<MySqlParameter> para = new List<MySqlParameter>();
|
||
if (!string.IsNullOrEmpty(userNames))//客服ID
|
||
{
|
||
sql += " and fromer in(" + userNames + ")";
|
||
}
|
||
if (msgstime.HasValue)//消息开始时间
|
||
{
|
||
sql += " and msgtime>=@msgstime";
|
||
para.Add(new MySqlParameter() { ParameterName = "@msgstime", MySqlDbType = MySqlDbType.DateTime, Value = msgstime.Value });
|
||
}
|
||
if (msgetime.HasValue)//消息结束时间
|
||
{
|
||
msgetime = msgetime.Value.AddDays(1);//加一天
|
||
sql += " and msgtime<@msgetime";
|
||
para.Add(new MySqlParameter() { ParameterName = "@msgetime", MySqlDbType = MySqlDbType.DateTime, Value = msgetime.Value });
|
||
}
|
||
|
||
if (stime.HasValue)//系统操作开始时间
|
||
{
|
||
sql += " and ctime>=@stime";
|
||
para.Add(new MySqlParameter() { ParameterName = "@stime", MySqlDbType = MySqlDbType.DateTime, Value = stime.Value });
|
||
}
|
||
if (etime.HasValue)//系统操作结束时间
|
||
{
|
||
etime = etime.Value.AddDays(1);//加一天
|
||
sql += " and ctime<@etime";
|
||
para.Add(new MySqlParameter() { ParameterName = "@etime", MySqlDbType = MySqlDbType.DateTime, Value = etime.Value });
|
||
}
|
||
if (!string.IsNullOrEmpty(kefid))//客服ID
|
||
{
|
||
sql += " and fromer=@fromer";
|
||
para.Add(new MySqlParameter() { ParameterName = "@fromer", MySqlDbType = MySqlDbType.String, Value = kefid });
|
||
}
|
||
if (!string.IsNullOrEmpty(userid))//客户ID
|
||
{
|
||
sql += " and tolist=@userid";
|
||
para.Add(new MySqlParameter() { ParameterName = "@userid", MySqlDbType = MySqlDbType.String, Value = userid });
|
||
}
|
||
if (status.HasValue)
|
||
{
|
||
sql += " and hgstatus=@hgstatus";
|
||
para.Add(new MySqlParameter() { ParameterName = "@hgstatus", MySqlDbType = MySqlDbType.String, Value = status.Value });
|
||
}
|
||
if (!string.IsNullOrEmpty(keyword))//关键词
|
||
{
|
||
sql += " and exists(select 1 from hg_message_word a where a.msgid=x.msgid and a.keyword in(" + keyword + "))";
|
||
}
|
||
if (!string.IsNullOrEmpty(pager.sort) && !string.IsNullOrEmpty(pager.order) && pager.sort != "null" && pager.order != "null")
|
||
{
|
||
sql += string.Format(" order by {0} {1}", pager.sort, pager.order);//排序
|
||
}
|
||
|
||
sql += " limit @pagestart,@endpage ; ";
|
||
para.Add(new MySqlParameter() { ParameterName = "@pagestart", MySqlDbType = MySqlDbType.Int32, Value = ((pager.page - 1) * pager.rows) });
|
||
para.Add(new MySqlParameter() { ParameterName = "@endpage", MySqlDbType = MySqlDbType.Int32, Value = pager.rows });
|
||
sql += " SELECT FOUND_ROWS() rowcount;";//查询总行数
|
||
DataSet tab = helper.ExecuteDataTable(sql, para.ToArray());
|
||
pager.totalRows = Convert.ToInt32(tab.Tables[1].Rows[0]["rowcount"]);
|
||
//序列化为字符串
|
||
string t = JsonConvert.SerializeObject(tab.Tables[0]);
|
||
//反序列化为对象
|
||
list = JsonConvert.DeserializeObject<List<Hg_MessageModel>>(t);//将数据进行转换
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
LogHelper.Error(e.ToString());
|
||
}
|
||
return list;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 将合规信息修改成已读
|
||
/// </summary>
|
||
/// <param name="msgid"></param>
|
||
/// <returns></returns>
|
||
public bool Read(string msgid)
|
||
{
|
||
bool isok = false;
|
||
try
|
||
{
|
||
MySqlDbHelper helper = new MySqlDbHelper("MysqlQWConn");
|
||
string sql = "update hg_message set hgstatus=200,hgtime=now() where msgid=@msgid";
|
||
int x = helper.ExecuteNonQuery(sql, new MySqlParameter() { ParameterName = "@msgid", Value = msgid, DbType = DbType.String });
|
||
isok = x > 0;//执行是否成功
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
LogHelper.Error(e.ToString());
|
||
}
|
||
return isok;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 已经违规
|
||
/// </summary>
|
||
/// <param name="msgid"></param>
|
||
/// <returns></returns>
|
||
public bool Violations(string msgid)
|
||
{
|
||
bool isok = false;
|
||
try
|
||
{
|
||
MySqlDbHelper helper = new MySqlDbHelper("MysqlQWConn");
|
||
string sql = "update hg_message set hgstatus=500,hgtime=now() where msgid=@msgid";
|
||
int x = helper.ExecuteNonQuery(sql, new MySqlParameter() { ParameterName = "@msgid", Value = msgid, DbType = DbType.String });
|
||
isok = x > 0;//执行是否成功
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
LogHelper.Error(e.ToString());
|
||
}
|
||
return isok;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取单条数据
|
||
/// </summary>
|
||
/// <param name="msgid"></param>
|
||
/// <returns></returns>
|
||
public Hg_MessageModel GetMsgById(string msgid)
|
||
{
|
||
Hg_MessageModel model = null;
|
||
try
|
||
{
|
||
MySqlDbHelper helper = new MySqlDbHelper("MysqlQWConn");
|
||
string sql = "select id,seq,msgid,msgtype,action,fromer,tolist,roomid,ext,content,nfile,msgtime,ctime,hgstatus,hgtime,issend,kehuname,cusname,corpid from hg_message where msgid=@msgid";
|
||
DataSet tab = helper.ExecuteDataTable(sql, new MySqlParameter() { ParameterName = "@msgid", MySqlDbType = MySqlDbType.String, Value = msgid });
|
||
if (tab.Tables[0].Rows.Count == 0)
|
||
return model;
|
||
string t = JsonConvert.SerializeObject(tab.Tables[0]);
|
||
model = JsonConvert.DeserializeObject<List<Hg_MessageModel>>(t).FirstOrDefault();//将数据进行转换
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
LogHelper.Error(e.ToString());
|
||
}
|
||
return model;
|
||
}
|
||
|
||
public List<Hg_Message_WordModel> GetMsgWordList(params string[] msgids)
|
||
{
|
||
List<Hg_Message_WordModel> list = new List<Hg_Message_WordModel>();
|
||
try
|
||
{
|
||
if (msgids == null || msgids.Length == 0)
|
||
return list;
|
||
MySqlDbHelper helper = new MySqlDbHelper("MysqlQWConn");
|
||
string msgid = string.Format("'{0}'", string.Join("','", msgids));
|
||
string sql = "select msgid,keyword from hg_message_word where msgid in(" + msgid + ")";
|
||
DataSet tab = helper.ExecuteDataTable(sql);
|
||
string t = JsonConvert.SerializeObject(tab.Tables[0]);
|
||
list = JsonConvert.DeserializeObject<List<Hg_Message_WordModel>>(t);//将数据进行转换
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
LogHelper.Error(e.ToString());
|
||
}
|
||
return list;
|
||
}
|
||
|
||
public Ww_Extuser GetExtUserByUnionId(string unionid)
|
||
{
|
||
var list = new List<Ww_Extuser>();
|
||
try
|
||
{
|
||
var helper = new MySqlDbHelper("MysqlQWConn");
|
||
var parameters = new List<MySqlParameter>();
|
||
parameters.Add(new MySqlParameter() { ParameterName = "@unionid", MySqlDbType = MySqlDbType.String, Value = unionid });
|
||
//DataTable table = helper.ExecuteDataTable("select * from ww_extuser where exinfo like '%" + unionid + "%'", parameters.ToArray()).Tables[0];
|
||
DataTable table = helper.ExecuteDataTable("select * from ww_extuser where unionid = @unionid", parameters.ToArray()).Tables[0];
|
||
foreach (DataRow item in table.Rows)
|
||
{
|
||
var model = new Ww_Extuser
|
||
{
|
||
userid = item["userid"].ToString(),
|
||
corpid = item["corpid"].ToString(),
|
||
name = item["name"].ToString(),
|
||
avatar = item["avatar"].ToString()
|
||
};
|
||
list.Add(model);
|
||
}
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
throw;
|
||
}
|
||
return list.FirstOrDefault();
|
||
}
|
||
|
||
public List<Ww_User_Extuser> GetUserExtUserByUserId(string userid)
|
||
{
|
||
var list = new List<Ww_User_Extuser>();
|
||
try
|
||
{
|
||
var helper = new MySqlDbHelper("MysqlQWConn");
|
||
var parameters = new List<MySqlParameter>();
|
||
parameters.Add(new MySqlParameter() { ParameterName = "@userid", MySqlDbType = MySqlDbType.String, Value = userid });
|
||
DataTable table = helper.ExecuteDataTable("select * from ww_user_extuser where extuserid = @userid", parameters.ToArray()).Tables[0];
|
||
foreach (DataRow item in table.Rows)
|
||
{
|
||
var model = new Ww_User_Extuser
|
||
{
|
||
userid = item["userid"].ToString(),
|
||
corpid = item["corpid"].ToString(),
|
||
extuserid = item["extuserid"].ToString()
|
||
};
|
||
list.Add(model);
|
||
}
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
throw;
|
||
}
|
||
return list;
|
||
}
|
||
}
|
||
} |