1677 lines
74 KiB
C#
1677 lines
74 KiB
C#
using Mini.Common;
|
||
using Mini.Model;
|
||
using Mini.Model.CrmModel;
|
||
using Mini.Model.Entity;
|
||
using Mini.Model.ViewModel;
|
||
using MySql.Data.MySqlClient;
|
||
using Newtonsoft.Json;
|
||
using Newtonsoft.Json.Linq;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Data;
|
||
using System.Linq;
|
||
using System.Linq.Expressions;
|
||
using System.Text;
|
||
|
||
namespace Mini.Services.ww
|
||
{
|
||
public class ww_hhuser_Service : Iww_hhuser_Service
|
||
{
|
||
private readonly crmContext _crmContext;
|
||
public ww_hhuser_Service(crmContext crmContext)
|
||
{
|
||
_crmContext = crmContext;
|
||
}
|
||
/// <summary>
|
||
/// 内部群
|
||
/// </summary>
|
||
/// <param name="corpid"></param>
|
||
/// <param name="chatid"></param>
|
||
/// <returns></returns>
|
||
public Ww_RoomChat GetRoomChat(string corpid, string chatid)
|
||
{
|
||
return _crmContext.Ww_RoomChat.FirstOrDefault(m => m.corpid == corpid && m.roomid == chatid);
|
||
}
|
||
/// <summary>
|
||
/// 外部群
|
||
/// </summary>
|
||
/// <param name="corpid"></param>
|
||
/// <param name="chatid"></param>
|
||
/// <returns></returns>
|
||
public Ww_GroupChat GetWw_GroupChat(string corpid, string chatid)
|
||
{
|
||
return _crmContext.Ww_GroupChat.FirstOrDefault(m => m.corpid == corpid && m.chat_id == chatid);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 内部群获取
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public List<Ww_InnerGroupModel> GetInnerGroup(ref Laypage pager, string corpid, string name)
|
||
{
|
||
var db = from a in _crmContext.Ww_RoomChat
|
||
join b in _crmContext.Ww_hhuser on new { a.creator, a.corpid } equals new { creator = b.userid, b.corpid } into jiontemp
|
||
from c_tmp in jiontemp.DefaultIfEmpty()
|
||
select new Ww_InnerGroupModel
|
||
{
|
||
corpid = a.corpid,
|
||
creator = a.creator,
|
||
creatorname = c_tmp.uname,
|
||
ctime = a.ctime,
|
||
ltimeupdate = a.ltimeupdate,
|
||
membernum = a.membernum,
|
||
members = a.members,
|
||
notice = a.notice,
|
||
roomid = a.roomid,
|
||
roomname = a.roomname,
|
||
room_create_time = a.room_create_time
|
||
};
|
||
if (!string.IsNullOrEmpty(corpid))
|
||
{
|
||
string[] corpids = corpid.Split(",");
|
||
db = db.Where(m => corpids.Contains(m.corpid));
|
||
}
|
||
if (!string.IsNullOrEmpty(name))
|
||
{
|
||
db = db.Where(m => m.roomname.Contains(name));
|
||
}
|
||
db = db.OrderByDescending(m => m.ltimeupdate);
|
||
Pager pager1 = new Pager() { page = pager.page, rows = pager.limit };
|
||
PagerUtil.SetPager<Ww_InnerGroupModel>(ref db, ref pager1);
|
||
pager.count = pager1.totalRows;
|
||
List<Ww_InnerGroupModel> list = db.ToList();
|
||
foreach (Ww_InnerGroupModel item in list)
|
||
{
|
||
item.createtime = DateTimeTool.GetTimeFromLinuxShortTime(item.room_create_time).ToString("yyyy-MM-dd HH:mm:ss");
|
||
if (item.ltimeupdate.HasValue)
|
||
{
|
||
item.ltimeupdatestr = item.ltimeupdate.Value.ToString("yyyy-MM-dd HH:mm:ss");
|
||
}
|
||
}
|
||
|
||
return list;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 外部群获取
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public List<Ww_OuterGroupModel> GetOuterGroup(ref Laypage pager, string corpid, string name)
|
||
{
|
||
var db = from a in _crmContext.Ww_GroupChat
|
||
join b in _crmContext.Ww_hhuser on new { a.owner, a.corpid } equals new { owner = b.userid, b.corpid } into jiontemp
|
||
from c_tmp in jiontemp.DefaultIfEmpty()
|
||
select new Ww_OuterGroupModel
|
||
{
|
||
corpid = a.corpid,
|
||
owner = a.owner,
|
||
creatorname = c_tmp.uname,
|
||
ctime = a.ctime,
|
||
ltimeupdate = a.ltimeupdate,
|
||
membernum = a.membernum,
|
||
member_list = a.member_list,
|
||
notice = a.notice,
|
||
chat_id = a.chat_id,
|
||
name = a.name,
|
||
create_time = a.create_time
|
||
};
|
||
if (!string.IsNullOrEmpty(corpid))
|
||
{
|
||
string[] corpids = corpid.Split(",");
|
||
db = db.Where(m => corpids.Contains(m.corpid));
|
||
}
|
||
if (!string.IsNullOrEmpty(name))
|
||
{
|
||
db = db.Where(m => m.name.Contains(name));
|
||
}
|
||
db = db.OrderByDescending(m => m.ltimeupdate);
|
||
Pager pager1 = new Pager() { page = pager.page, rows = pager.limit };
|
||
PagerUtil.SetPager<Ww_OuterGroupModel>(ref db, ref pager1);
|
||
pager.count = pager1.totalRows;
|
||
List<Ww_OuterGroupModel> list = db.ToList();
|
||
foreach (Ww_OuterGroupModel item in list)
|
||
{
|
||
item.createtime = DateTimeTool.GetTimeFromLinuxShortTime(item.create_time).ToString("yyyy-MM-dd HH:mm:ss");
|
||
if (item.ltimeupdate.HasValue)
|
||
{
|
||
item.ltimeupdatestr = item.ltimeupdate.Value.ToString("yyyy-MM-dd HH:mm:ss");
|
||
}
|
||
}
|
||
|
||
return list;
|
||
}
|
||
/// <summary>
|
||
/// 获取企业微信成员列表
|
||
/// </summary>
|
||
/// <param name="v_name">ID</param>
|
||
/// <returns></returns>
|
||
public List<Ww_hhuserModel> WorList_Get(ref Laypage pager, string v_name, string v_corpid, string v_deptid)
|
||
{
|
||
var db = from a in _crmContext.Ww_hhuser
|
||
join b in _crmContext.Ww_Corp on a.corpid equals b.corpid
|
||
join c in _crmContext.Ww_hhuser_Name on new { a.userid, a.corpid } equals new { c.userid, c.corpid } into jiontemp
|
||
from c_tmp in jiontemp.DefaultIfEmpty()//左关联
|
||
select new Ww_hhuserModel()
|
||
{
|
||
corpid = b.corpid,
|
||
deptid = a.deptid,
|
||
corpname = b.corpname,
|
||
exinfo = a.exinfo,
|
||
uname = a.uname,
|
||
userid = a.userid,
|
||
lmsgtime = a.lmsgtime,
|
||
remarkname = c_tmp.remarkname,
|
||
alias = a.alias,
|
||
email = a.email,
|
||
fmsgtime = a.fmsgtime,
|
||
mobile = a.mobile
|
||
}
|
||
;
|
||
if (!string.IsNullOrEmpty(v_name))
|
||
{
|
||
db = db.Where(m => m.userid.Contains(v_name) || m.uname.Contains(v_name) || m.remarkname.Contains(v_name) || m.mobile.Contains(v_name) || m.email.Contains(v_name));
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(v_corpid))
|
||
{
|
||
|
||
db = db.Where(m => m.corpid == v_corpid);
|
||
if (!string.IsNullOrEmpty(v_deptid))
|
||
{
|
||
v_deptid = v_deptid.Trim();
|
||
int[] deptids = JsonHelper.JsonDivertToObj<int[]>(v_deptid);
|
||
db = db.Where(m => deptids.Contains(m.deptid.Value));
|
||
}
|
||
}
|
||
db = db.OrderByDescending(m => m.lmsgtime);
|
||
Pager pager1 = new Pager() { page = pager.page, rows = pager.limit };
|
||
PagerUtil.SetPager<Ww_hhuserModel>(ref db, ref pager1);
|
||
pager.count = pager1.totalRows;
|
||
return db.ToList();
|
||
}
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// 朋友圈数据获取
|
||
/// </summary>
|
||
/// <param name="v_name">ID</param>
|
||
/// <returns></returns>
|
||
public List<Ww_MomentModel> Moment_Get(ref Laypage pager, string v_name, string corp)
|
||
{
|
||
List<Ww_MomentModel> list = new List<Ww_MomentModel>();
|
||
try
|
||
{
|
||
string where = "";
|
||
List<MySqlParameter> param = new List<MySqlParameter>();
|
||
if (!string.IsNullOrEmpty(v_name))
|
||
{
|
||
where = " and a.uname like @name or a.userid like @name or a.mobile like @name or a.email like @name ";
|
||
param.Add(new MySqlParameter() { MySqlDbType = MySqlDbType.VarChar, Value = $"%{v_name}%", ParameterName = "@name" });
|
||
}
|
||
string connectStr = Utility.GetSettingByKey("ConnectionStrings:crmMsgContext");
|
||
string sql = @"select a.uname,a.exinfo,mm.corpname,t.* from wework_" + corp + @".ww_moment t
|
||
join ww_hhuser a on t.corpid = a.corpid and t.creator = a.userid
|
||
join ww_corp mm on mm.corpid=t.corpid
|
||
where 1=1 " + where + @"
|
||
order by create_time desc limit " + (pager.page - 1) * pager.limit + "," + pager.limit;
|
||
string countsql = "select count(*) mcount from wework_" + corp + ".ww_moment t join ww_hhuser a on t.corpid = a.corpid and t.creator = a.userid where 1=1 " + where + @" ";
|
||
|
||
LogHelper.Error(sql);
|
||
LogHelper.Error(countsql);
|
||
DataTable countdate = MySqlDbHelper.DataQueray(connectStr, CommandType.Text, countsql, param.ToArray()).Tables[0];
|
||
int count = Convert.ToInt32(countdate.Rows[0]["mcount"]);
|
||
pager.count = count;
|
||
DataTable set = MySqlDbHelper.DataQueray(connectStr, CommandType.Text, sql, param.ToArray()).Tables[0];
|
||
foreach (DataRow item in set.Rows)
|
||
{
|
||
Ww_MomentModel moment = new Ww_MomentModel();
|
||
moment.corpname = item["corpname"].ToString();
|
||
moment.corpid = item["corpid"].ToString();
|
||
moment.create_time = Utility.ToUnityString(Utility.ConvertIntDateTime(Convert.ToDouble(item["create_time"].ToString())), 7);
|
||
moment.create_type = Convert.ToInt32(item["create_type"]);
|
||
moment.creator = item["creator"].ToString();
|
||
moment.exinfo = item["exinfo"].ToString();
|
||
|
||
if (!string.IsNullOrEmpty(moment.exinfo) && moment.exinfo != "-")
|
||
{
|
||
try
|
||
{
|
||
MomentAvator info = Newtonsoft.Json.JsonConvert.DeserializeObject<MomentAvator>(moment.exinfo);
|
||
moment.exinfo = info.thumb_avatar ?? info.avatar;//有缩略图就取缩率图,没有就取大图
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(ex.ToString());
|
||
}
|
||
}
|
||
|
||
|
||
moment.link = item["link"].ToString();
|
||
moment.location = item["location"].ToString();
|
||
if (!string.IsNullOrEmpty(moment.location))
|
||
{
|
||
try
|
||
{
|
||
MomentLocation info = Newtonsoft.Json.JsonConvert.DeserializeObject<MomentLocation>(moment.location);
|
||
moment.location = CommpnHelpEx.FromUnicodeString(info.name);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(ex.ToString());
|
||
}
|
||
}
|
||
moment.moment_id = item["moment_id"].ToString();
|
||
moment.text = item["text"].ToString();
|
||
if (!string.IsNullOrEmpty(moment.text))
|
||
{
|
||
try
|
||
{
|
||
|
||
moment.text = CommpnHelpEx.FromUnicodeString(Newtonsoft.Json.JsonConvert.DeserializeObject<MomentContent>(moment.text).content);//将文本解码
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(ex.ToString());
|
||
}
|
||
}
|
||
moment.image = item["image"].ToString();
|
||
if (!string.IsNullOrEmpty(moment.image))
|
||
{
|
||
try
|
||
{
|
||
List<MomentImage> imagelist = Newtonsoft.Json.JsonConvert.DeserializeObject<List<MomentImage>>(moment.image);
|
||
foreach (var imagea in imagelist)
|
||
{
|
||
imagea.media_id = Utility.EncryptMD5(imagea.media_id).ToLower();
|
||
}
|
||
moment.image = Newtonsoft.Json.JsonConvert.SerializeObject(imagelist);//图片列表
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(ex.ToString());
|
||
}
|
||
}
|
||
|
||
moment.video = item["video"].ToString();
|
||
if (!string.IsNullOrEmpty(moment.video))
|
||
{
|
||
try
|
||
{
|
||
MomentVideo video = Newtonsoft.Json.JsonConvert.DeserializeObject<MomentVideo>(moment.video);
|
||
video.media_id = Utility.EncryptMD5(video.media_id).ToLower();
|
||
video.thumb_media_id = Utility.EncryptMD5(video.thumb_media_id).ToLower();
|
||
moment.video = Newtonsoft.Json.JsonConvert.SerializeObject(video);//视频信息,缩量图
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(ex.ToString());
|
||
}
|
||
}
|
||
moment.uname = item["uname"].ToString();
|
||
|
||
moment.visible_type = Convert.ToInt32(item["visible_type"]);
|
||
if (item["ctime"] != DBNull.Value)
|
||
{
|
||
try
|
||
{
|
||
moment.ctime = Convert.ToDateTime(item["ctime"]);
|
||
moment.ctimestr = Utility.ToUnityString(moment.ctime, 7);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(ex.ToString());
|
||
}
|
||
}
|
||
list.Add(moment);
|
||
}
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
LogHelper.Error(e.ToString());
|
||
}
|
||
return list;
|
||
}
|
||
|
||
|
||
|
||
|
||
public Ww_hhuser_Name GetHHuserName(string userid, string corp)
|
||
{
|
||
return _crmContext.Ww_hhuser_Name.FirstOrDefault(m => m.userid == userid && m.corpid == corp);
|
||
}
|
||
|
||
public bool UpdateHHuserName(Ww_hhuser_Name model)
|
||
{
|
||
bool result = true;
|
||
try
|
||
{
|
||
var entry = _crmContext.Ww_hhuser_Name.FirstOrDefault(m => m.userid == model.userid && m.corpid == model.corpid);
|
||
if (entry == null)
|
||
{
|
||
//throw new Exception("找不到指定的员工!");
|
||
_crmContext.Ww_hhuser_Name.Add(model);
|
||
}
|
||
else
|
||
{
|
||
entry.remarkname = model.remarkname;
|
||
}
|
||
_crmContext.SaveChanges();
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
result = false;
|
||
LogHelper.Error(e.ToString());
|
||
}
|
||
return result;
|
||
}
|
||
/// <summary>
|
||
/// 获取企业微信通话查询列表
|
||
/// </summary>
|
||
/// <param name="pager"></param>
|
||
/// <param name="corpid"></param>
|
||
/// <param name="stime"></param>
|
||
/// <param name="etime"></param>
|
||
/// <param name="customername"></param>
|
||
/// <param name="kefuname"></param>
|
||
/// <returns></returns>
|
||
public List<Ww_RecordModel> RecordList_Get(ref Laypage pager, string corpid, DateTime? stime, DateTime? etime, string customername, string kefuname, string companycode = null)
|
||
{
|
||
var db = from a in _crmContext.Ww_Record
|
||
join b in _crmContext.Ww_Corp on a.corpid equals b.corpid
|
||
join c in _crmContext.Ww_hhuser on new { a.fromer, a.corpid } equals new { fromer = c.userid, c.corpid } into jiontemp
|
||
from c_tmp in jiontemp.DefaultIfEmpty()//左关联
|
||
join d in _crmContext.Ww_Extuser on a.tolist equals d.userid into jiontemp2
|
||
from dc_tmp in jiontemp2.DefaultIfEmpty()//左关联
|
||
join e in _crmContext.Ww_hhuser_Name on new { a.fromer, a.corpid } equals new { fromer = e.userid, e.corpid } into jiontemp3
|
||
from e_tmp in jiontemp3.DefaultIfEmpty()//左关联
|
||
select new Ww_RecordModel()
|
||
{
|
||
calltype = a.calltype,
|
||
tolist = a.tolist,
|
||
corpid = a.corpid,
|
||
corpname = b.corpname,
|
||
ctime = a.ctime,
|
||
customername = dc_tmp.name,
|
||
endtime = a.endtime,
|
||
filename = a.filename,
|
||
fromer = a.fromer,
|
||
length = a.length,
|
||
msgid = a.msgid,
|
||
roomid = a.roomid,
|
||
starttime = a.starttime,
|
||
voiceid = a.voiceid,
|
||
kefuname = c_tmp.uname,
|
||
remarkname = e_tmp.remarkname,
|
||
deptid = c_tmp.deptid
|
||
}
|
||
;
|
||
if (!string.IsNullOrEmpty(corpid))
|
||
{
|
||
db = db.Where(m => m.corpid == corpid);
|
||
}
|
||
if (!string.IsNullOrEmpty(companycode))
|
||
{
|
||
List<Ww_Corp> nlist = Corp_Get();
|
||
string companycodeFormat = string.Format("[{0}]", companycode);
|
||
nlist = nlist.Where(m => m.companycode.Contains(companycodeFormat)).ToList();
|
||
if (nlist.Count > 0)
|
||
{
|
||
var where = PredicateExtensionses.True<Ww_RecordModel>();
|
||
int i = 0;
|
||
foreach (Ww_Corp item in nlist)
|
||
{
|
||
if (!string.IsNullOrEmpty(item.deptid))
|
||
{
|
||
JObject obj = (JObject)Newtonsoft.Json.Linq.JObject.Parse(item.deptid);
|
||
var dept = JsonConvert.SerializeObject(obj[companycode]);
|
||
var depts = JsonConvert.DeserializeObject<int[]>(dept);
|
||
int[] newdepts = GetAllCildDept(depts, item.corpid);
|
||
|
||
if (i == 0)
|
||
{
|
||
where = where.And(m => m.corpid == item.corpid && newdepts.Contains(m.deptid.Value));
|
||
}
|
||
else
|
||
where = where.Or(m => m.corpid == item.corpid && newdepts.Contains(m.deptid.Value));
|
||
}
|
||
else
|
||
{
|
||
if (i == 0)
|
||
where = where.And(m => m.corpid == item.corpid);
|
||
else
|
||
where = where.Or(m => m.corpid == item.corpid);
|
||
}
|
||
i++;
|
||
}
|
||
db = db.Where(where);
|
||
}
|
||
}
|
||
if (stime.HasValue)
|
||
{
|
||
db = db.Where(m => m.starttime >= stime.Value);
|
||
}
|
||
if (etime.HasValue)
|
||
{
|
||
db = db.Where(m => m.starttime <= etime.Value);
|
||
}
|
||
if (!string.IsNullOrEmpty(customername))
|
||
{
|
||
db = db.Where(m => m.customername.Contains(customername) || m.tolist.Contains(customername));
|
||
}
|
||
if (!string.IsNullOrEmpty(kefuname))
|
||
{
|
||
db = db.Where(m => m.kefuname.Contains(kefuname) || m.fromer.Contains(kefuname) || m.remarkname.Contains(kefuname));
|
||
}
|
||
db = db.OrderByDescending(m => m.starttime);
|
||
Pager pager1 = new Pager() { page = pager.page, rows = pager.limit };
|
||
PagerUtil.SetPager<Ww_RecordModel>(ref db, ref pager1);
|
||
pager.count = pager1.totalRows;
|
||
List<Ww_RecordModel> list = db.ToList();
|
||
foreach (var item in list)
|
||
{
|
||
item.starttimestr = item.starttime.ToUnityString(7);
|
||
item.endtimestr = item.endtime.ToUnityString(7);
|
||
}
|
||
return list;
|
||
}
|
||
/// <summary>
|
||
/// 根据客户ID获取所有关系客服
|
||
/// </summary>
|
||
/// <param name="v_name">ID</param>
|
||
/// <returns></returns>
|
||
public List<Wx_ExuserModel> Extuser_GetAllUser(string exuserids)
|
||
{
|
||
string[] extuserid = exuserids.Split(";");
|
||
var unionids = _crmContext.Ww_Extuser.Where(x => !string.IsNullOrWhiteSpace(x.unionid) && extuserid.Contains(x.userid))
|
||
.Select(x => x.unionid).Distinct().ToList();
|
||
var db = from a in _crmContext.Ww_Extuser
|
||
join f in _crmContext.Ww_Corp on a.corpid equals f.corpid
|
||
join b in _crmContext.Ww_User_Extuser on new { extuserid = a.userid, a.corpid } equals new { b.extuserid, b.corpid }
|
||
join c in _crmContext.Ww_hhuser on new { b.userid, b.corpid } equals new { c.userid, c.corpid }
|
||
where unionids.Contains(a.unionid) || extuserid.Contains(a.userid)
|
||
select new Wx_ExuserModel()
|
||
{
|
||
corpid = c.corpid,
|
||
userid = c.userid,
|
||
extuserid = a.userid,
|
||
exinfo = a.exinfo,
|
||
name = a.name,
|
||
uname = c.uname,
|
||
corpname = f.corpname,
|
||
//deptid = c.deptid
|
||
};
|
||
//var db = from a in _crmContext.Ww_Extuser
|
||
// join f in _crmContext.Ww_Corp on a.corpid equals f.corpid
|
||
// join b in _crmContext.Ww_User_Extuser on new { extuserid = a.userid, a.corpid } equals new { b.extuserid, b.corpid }
|
||
// join c in _crmContext.Ww_hhuser on new { b.userid, b.corpid } equals new { c.userid, c.corpid }
|
||
// where extuserid.Contains(a.userid)
|
||
// select new Wx_ExuserModel()
|
||
// {
|
||
// corpid = c.corpid,
|
||
// userid = c.userid,
|
||
// extuserid = a.userid,
|
||
// exinfo = a.exinfo,
|
||
// name = a.name,
|
||
// uname = c.uname,
|
||
// corpname = f.corpname
|
||
// };
|
||
return db.ToList();
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// 根据客户ID获取所有关系客服
|
||
/// </summary>
|
||
/// <param name="v_name">ID</param>
|
||
/// <returns></returns>
|
||
public List<Wx_ExuserModel> Extuser_GetAllUser(string exuserids, string companycode = null)
|
||
{
|
||
var config = _crmContext.Bas_Config.FirstOrDefault(m => m.code == "CanLookMsgGroup");
|
||
List<Sys_CanLookMsgGroup> canlookmsgList = new List<Sys_CanLookMsgGroup>();
|
||
if (config != null)
|
||
{
|
||
canlookmsgList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Sys_CanLookMsgGroup>>(config.value);
|
||
}
|
||
string[] extuserid = exuserids.Split(";");
|
||
var unionids = _crmContext.Ww_Extuser.Where(x => !string.IsNullOrWhiteSpace(x.unionid) && extuserid.Contains(x.userid))
|
||
.Select(x => x.unionid).Distinct().ToList();
|
||
var db = from a in _crmContext.Ww_Extuser
|
||
join f in _crmContext.Ww_Corp on a.corpid equals f.corpid
|
||
join b in _crmContext.Ww_User_Extuser on new { extuserid = a.userid, a.corpid } equals new { b.extuserid, b.corpid }
|
||
join c in _crmContext.Ww_hhuser on new { b.userid, b.corpid } equals new { c.userid, c.corpid }
|
||
where unionids.Contains(a.unionid) || extuserid.Contains(a.userid)
|
||
select new Wx_ExuserModel()
|
||
{
|
||
corpid = c.corpid,
|
||
userid = c.userid,
|
||
extuserid = a.userid,
|
||
exinfo = a.exinfo,
|
||
name = a.name,
|
||
uname = c.uname,
|
||
corpname = f.corpname,
|
||
deptid=c.deptid
|
||
};
|
||
var extlist = db.ToList();
|
||
if (!string.IsNullOrEmpty(companycode))
|
||
{
|
||
var companys = companycode.Split(',');
|
||
var newCompanys = new List<string>();//[{"Group":"东方软件事业部","Contains":"[DNZZ][DNYY][DNRW]","Target":"DNZZ,DNYY,DNRW"}]
|
||
foreach (var company in companys)
|
||
{
|
||
string codeformat = string.Format("[{0}]", company);
|
||
var canLook = canlookmsgList.FirstOrDefault(m => m.Contains.Contains(codeformat));
|
||
if (canLook != null)
|
||
newCompanys.AddRange(canLook.Target.Split(','));
|
||
}
|
||
newCompanys.AddRange(companys);
|
||
newCompanys = newCompanys.Distinct().ToList();
|
||
Dictionary<string, string> AlldictMM = new Dictionary<string, string>();//整个企业号能看
|
||
Dictionary<string, string> miniMM = new Dictionary<string, string>();//细节到部门ID能看
|
||
foreach (var company in newCompanys)
|
||
{
|
||
string codeformat = string.Format("[{0}]", company);
|
||
List<Ww_Corp> corplist = _crmContext.Ww_Corp.Where(m => m.companycode.Contains(codeformat)).ToList();
|
||
foreach (Ww_Corp item in corplist)
|
||
{
|
||
if (!string.IsNullOrEmpty(item.deptid))//有dptid
|
||
{
|
||
JObject obj = (JObject)Newtonsoft.Json.Linq.JObject.Parse(item.deptid);
|
||
string wox = obj[company].ToString();
|
||
int[] deptids = JsonHelper.JsonDivertToObj<int[]>(wox);
|
||
int[] newdeptids = GetAllCildDept(deptids, item.corpid);//新数据获取方式
|
||
foreach (var itdpem in newdeptids)
|
||
{
|
||
string vv = $"{item.corpid}_{itdpem}";
|
||
if (!miniMM.ContainsKey(vv))
|
||
miniMM.Add(vv, vv);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (!AlldictMM.ContainsKey(item.corpid))
|
||
AlldictMM.Add(item.corpid, item.corpid);
|
||
}
|
||
}
|
||
}
|
||
foreach (var item in extlist)
|
||
{
|
||
if (AlldictMM.ContainsKey(item.corpid))//真个企业微信都能看
|
||
{
|
||
continue;
|
||
}
|
||
string vv = $"{item.corpid}_{item.deptid}";//只能小部门查看
|
||
if (miniMM.ContainsKey(vv))
|
||
{
|
||
continue;
|
||
}
|
||
item.isOutDept = 1;
|
||
}
|
||
}
|
||
return extlist;
|
||
}
|
||
|
||
|
||
public List<Wx_ExuserModel> Extuser_GetAllUser_check(string exuserids, string companycode = null)
|
||
{
|
||
var config = _crmContext.Bas_Config.FirstOrDefault(m => m.code == "CanLookMsgGroup");
|
||
List<Sys_CanLookMsgGroup> canlookmsgList = new List<Sys_CanLookMsgGroup>();
|
||
if (config != null)
|
||
{
|
||
canlookmsgList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Sys_CanLookMsgGroup>>(config.value);
|
||
}
|
||
string[] extuserid = exuserids.Split(";");
|
||
var unionids = _crmContext.Ww_Extuser.Where(x => !string.IsNullOrWhiteSpace(x.unionid) && extuserid.Contains(x.userid))
|
||
.Select(x => x.unionid).Distinct().ToList();
|
||
var db = from a in _crmContext.Ww_Extuser
|
||
join f in _crmContext.Ww_Corp on a.corpid equals f.corpid
|
||
join b in _crmContext.Ww_User_Extuser on new { extuserid = a.userid, a.corpid } equals new { b.extuserid, b.corpid }
|
||
join c in _crmContext.Ww_hhuser on new { b.userid, b.corpid } equals new { c.userid, c.corpid }
|
||
where unionids.Contains(a.unionid) || extuserid.Contains(a.userid)
|
||
select new Wx_ExuserModel()
|
||
{
|
||
corpid = c.corpid,
|
||
userid = c.userid,
|
||
extuserid = a.userid,
|
||
exinfo = a.exinfo,
|
||
name = a.name,
|
||
uname = c.uname,
|
||
corpname = f.corpname,
|
||
deptid = c.deptid
|
||
};
|
||
var checkUser = GetHHuserEid();
|
||
var checkCorp = _crmContext.Ww_Corp.ToList();
|
||
var extlist = db.ToList();
|
||
if (!string.IsNullOrEmpty(companycode))
|
||
{
|
||
var companys = companycode.Split(',');
|
||
var newCompanys = new List<string>();//[{"Group":"东方软件事业部","Contains":"[DNZZ][DNYY][DNRW]","Target":"DNZZ,DNYY,DNRW"}]
|
||
foreach (var company in companys)
|
||
{
|
||
string codeformat = string.Format("[{0}]", company);
|
||
var canLook = canlookmsgList.FirstOrDefault(m => m.Contains.Contains(codeformat));
|
||
if (canLook != null)
|
||
newCompanys.AddRange(canLook.Target.Split(','));
|
||
}
|
||
newCompanys.AddRange(companys);
|
||
newCompanys = newCompanys.Distinct().ToList();
|
||
Dictionary<string, string> AlldictMM = new Dictionary<string, string>();//整个企业号能看
|
||
Dictionary<string, string> miniMM = new Dictionary<string, string>();//细节到部门ID能看
|
||
foreach (var company in newCompanys)
|
||
{
|
||
string codeformat = string.Format("[{0}]", company);
|
||
List<Ww_Corp> corplist = checkCorp.Where(m => m.companycode.Contains(codeformat)).ToList();
|
||
foreach (Ww_Corp item in corplist)
|
||
{
|
||
if (!string.IsNullOrEmpty(item.deptid))//有dptid
|
||
{
|
||
JObject obj = (JObject)Newtonsoft.Json.Linq.JObject.Parse(item.deptid);
|
||
string wox = obj[company].ToString();
|
||
int[] deptids = JsonHelper.JsonDivertToObj<int[]>(wox);
|
||
int[] newdeptids = GetAllCildDept(deptids, item.corpid);//新数据获取方式
|
||
foreach (var itdpem in newdeptids)
|
||
{
|
||
string vv = $"{item.corpid}_{itdpem}";
|
||
if (!miniMM.ContainsKey(vv))
|
||
miniMM.Add(vv, vv);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (!AlldictMM.ContainsKey(item.corpid))
|
||
AlldictMM.Add(item.corpid, item.corpid);
|
||
}
|
||
}
|
||
}
|
||
foreach (var item in extlist)
|
||
{
|
||
if (item.corpid == "wx824b4ea054629084" && companycode == "QIND")
|
||
{
|
||
if (checkUser.Any(p => p.userid == item.userid))
|
||
{
|
||
continue;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (AlldictMM.ContainsKey(item.corpid))//真个企业微信都能看
|
||
{
|
||
continue;
|
||
}
|
||
string vv = $"{item.corpid}_{item.deptid}";//只能小部门查看
|
||
if (miniMM.ContainsKey(vv))
|
||
{
|
||
continue;
|
||
}
|
||
}
|
||
item.isOutDept = 1;
|
||
}
|
||
}
|
||
return extlist;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 获取外部联系人列表
|
||
/// </summary>
|
||
/// <param name="v_userid"></param>
|
||
/// <returns></returns>
|
||
public List<Ww_User_ExtuserModel> Extuser_Get(string v_userid, string v_corpid)
|
||
{
|
||
var db = from t in _crmContext.Ww_User_Extuser
|
||
join x in _crmContext.Ww_Extuser on t.extuserid equals x.userid
|
||
join w in _crmContext.Ww_Corp on t.corpid equals w.corpid
|
||
where t.userid == v_userid
|
||
where t.corpid == v_corpid
|
||
select new Ww_User_ExtuserModel
|
||
{
|
||
ctime = t.ctime,
|
||
exinfo = x.exinfo,
|
||
userid = x.userid,
|
||
cname = x.name,
|
||
lmsgtime = t.lmsgtime,
|
||
avatar = x.avatar
|
||
};
|
||
db = db.OrderByDescending(m => m.lmsgtime);
|
||
return db.ToList();
|
||
}
|
||
/// <summary>
|
||
/// 获取内部联系人好友列表
|
||
/// </summary>
|
||
/// <param name="v_userid"></param>
|
||
/// <param name="v_corpid"></param>
|
||
/// <returns></returns>
|
||
public List<Ww_InnerUserModel> InnerUser_Get(string v_userid, string v_corpid)
|
||
{
|
||
var db = from t in _crmContext.Ww_UserChat
|
||
join x in _crmContext.Ww_DeptUser on new { inuserid = t.deptuserid, t.corpid } equals new { inuserid = x.userid, x.corpid }
|
||
join c in _crmContext.Ww_hhuser on new { inuserid = t.deptuserid, t.corpid } equals new { inuserid = c.userid, c.corpid } into jiontemp
|
||
from c_tmp in jiontemp.DefaultIfEmpty()//左关联
|
||
where t.userid == v_userid
|
||
where t.corpid == v_corpid
|
||
select new Ww_InnerUserModel
|
||
{
|
||
corpid = t.corpid,
|
||
userid = t.userid,
|
||
ctime = t.ctime,
|
||
department = x.department,
|
||
deptuserid = t.deptuserid,
|
||
lmsgtime = t.lmsgtime,
|
||
name = x.name,
|
||
exinfo = c_tmp.exinfo
|
||
};
|
||
List<Ww_InnerUserModel> modellist = db.OrderByDescending(m => m.lmsgtime).ToList();
|
||
foreach (Ww_InnerUserModel item in modellist)
|
||
{
|
||
if (!string.IsNullOrEmpty(item.exinfo) && item.exinfo != "-")
|
||
{
|
||
thumb_avatar_Model infox = JsonHelper.JsonDivertToObj<thumb_avatar_Model>(item.exinfo);
|
||
if (!string.IsNullOrEmpty(infox.thumb_avatar))
|
||
{
|
||
item.avatar = infox.thumb_avatar;
|
||
}
|
||
else if (!string.IsNullOrEmpty(infox.avatar))
|
||
{
|
||
item.avatar = infox.avatar;
|
||
}
|
||
}
|
||
}
|
||
return modellist;
|
||
}
|
||
|
||
//select b.corpname, a.uname, a.userid, d.name, d.exinfo from ww_hhuser a
|
||
//left join ww_corp b on a.corpid= b.corpid
|
||
//join ww_user_extuser c on a.userid= c.userid
|
||
//join ww_extuser d on c.extuserid= d.userid
|
||
//where d.exinfo like'%简单就好%'
|
||
|
||
/// <summary>
|
||
/// 查找客户
|
||
/// </summary>
|
||
/// <param name="name">电话号码,昵称,备注</param>
|
||
/// <returns></returns>
|
||
public List<Ww_FindUser_Model> Find_UserBySQL(ref Laypage pager, string name, string myphone, string companycode, string extuserid = null)
|
||
{
|
||
string connectStr = Utility.GetSettingByKey("ConnectionStrings:crmContext");//数据库链接
|
||
string sqlTXT = $@"
|
||
select
|
||
d.uname,
|
||
a.userid,
|
||
d.deptid,
|
||
a.corpid,
|
||
a.extuserid,
|
||
c.NAME,
|
||
c.exinfo,
|
||
c.avatar,
|
||
a.remark,
|
||
a.remarkmobile,
|
||
c.ctime,
|
||
d.mobile myphone
|
||
FROM
|
||
ww_user_extuser a
|
||
LEFT JOIN ww_extuser c ON `a`.`extuserid` = `c`.`userid` AND `a`.`corpid` = `c`.`corpid`
|
||
LEFT JOIN ww_hhuser d ON a.corpid = d.corpid AND a.userid = d.userid where 1=1 ";
|
||
|
||
List<MySqlParameter> parameters = new List<MySqlParameter>();
|
||
|
||
var config = _crmContext.Bas_Config.FirstOrDefault(m => m.code == "UserCenterGetUserInfoUrl");//用户中心获取用户信息接口
|
||
List<Ww_Corp> corpListA = _crmContext.Ww_Corp.ToList();
|
||
if (!string.IsNullOrEmpty(name))
|
||
{
|
||
name = name.Trim();
|
||
string mobilemd5 = Utility.GetMd5Str16(name + "-dg2022");
|
||
parameters.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "extuserid", Value = name });
|
||
parameters.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "name", Value = $"%{name}%" });
|
||
parameters.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "mobilemd5", Value = mobilemd5 });
|
||
sqlTXT += " and (a.extuserid=@extuserid or a.remark like @name or a.remarkmobile=@mobilemd5 ";
|
||
|
||
//var newResid = name;
|
||
//bool ss = Utility.ChekExtUserid(newResid);
|
||
//if (newResid.Length > 10 && Utility.ChekExtUserid(newResid))//看上去要是ID或者号码才进行远程查找
|
||
//{
|
||
// if (Utility.ChekMobile(newResid))//如果是手机号码格式,那么改造成resid
|
||
// {
|
||
// newResid = ResUtil.CreateResId(newResid);//如果是号码,那么转换成号码格式
|
||
// }
|
||
// if (config != null)
|
||
// {
|
||
// try
|
||
// {
|
||
// var corpList = corpListA.Select(m => m.corpid).ToArray();
|
||
// var httpurl = config.value;//通过resid查找客户信息
|
||
// var objecb = new { mobiles = new string[] { newResid } };
|
||
// string retmss = Utility.PostAjaxData(httpurl, JsonHelper.ObjDivertToJson(objecb), Encoding.UTF8, new Dictionary<string, string>());
|
||
// var result = JsonHelper.JsonDivertToObj<SaleClusResult>(retmss);
|
||
// var alllist = result.list.Where(m => corpList.Contains(m.appid.Replace("_1", "")));
|
||
// //var onwhere = PredicateExtensionses.True<Ww_FindUser_Model>();
|
||
// var extlist = alllist.Where(m => m.appuserid.Length > 20).Select(m => m.appuserid);
|
||
// if (extlist.Count() > 0)
|
||
// sqlTXT += $" or a.extuserid in('{string.Join("','", extlist)}')";
|
||
// }
|
||
// catch (Exception e)
|
||
// {
|
||
// LogHelper.Error(e.ToString());
|
||
// };
|
||
// }
|
||
//}
|
||
if (!string.IsNullOrEmpty(extuserid))
|
||
{
|
||
var xextuserids = extuserid.Split(',');
|
||
sqlTXT += $" or a.extuserid in('{string.Join("','", xextuserids)}')";
|
||
}
|
||
sqlTXT += ") ";
|
||
}
|
||
else
|
||
{
|
||
if (!string.IsNullOrEmpty(extuserid))
|
||
{
|
||
var xextuserids = extuserid.Split(',');
|
||
sqlTXT += $" and a.extuserid in('{string.Join("','", xextuserids)}')";
|
||
}
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(myphone))
|
||
{
|
||
myphone = myphone.Trim();
|
||
sqlTXT += " and d.mobile =@myphone";
|
||
parameters.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "myphone", Value = myphone });
|
||
//db = db.Where(m => m.myphone == myphone);
|
||
}
|
||
var where = PredicateExtensionses.True<Ww_FindUser_Model>();
|
||
|
||
if (!string.IsNullOrEmpty(companycode))
|
||
{
|
||
int i = 0;
|
||
string codeformat = string.Format("[{0}]", companycode);
|
||
List<Ww_Corp> corplist = _crmContext.Ww_Corp.Where(m => m.companycode.Contains(codeformat)).ToList();
|
||
string deptSQL = "";
|
||
foreach (Ww_Corp item in corplist)
|
||
{
|
||
if (!string.IsNullOrEmpty(item.deptid))//有dptid
|
||
{
|
||
JObject obj = (JObject)Newtonsoft.Json.Linq.JObject.Parse(item.deptid);
|
||
string wox = obj[companycode].ToString();
|
||
int[] deptids = JsonHelper.JsonDivertToObj<int[]>(wox);
|
||
int[] newdeptids = GetAllCildDept(deptids, item.corpid);//新数据获取方式
|
||
if (i == 0)
|
||
{
|
||
//where = where.And(m => m.corpid == item.corpid && newdeptids.Contains(m.deptid.Value));
|
||
deptSQL += $" ( d.corpid='{item.corpid}' and d.deptid in(" + string.Join(",", newdeptids) + ") ) ";
|
||
}
|
||
else
|
||
{
|
||
//where = where.Or(m => m.corpid == item.corpid && newdeptids.Contains(m.deptid.Value));
|
||
deptSQL += $" or ( d.corpid='{item.corpid}' and d.deptid in(" + string.Join(",", newdeptids) + ") ) ";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (i == 0)
|
||
{
|
||
//where = where.And(m => m.corpid == item.corpid);
|
||
deptSQL += $" d.corpid='{item.corpid}' ";
|
||
}
|
||
else
|
||
{
|
||
//where = where.Or(m => m.corpid == item.corpid);
|
||
deptSQL += $" or d.corpid='{item.corpid}' ";
|
||
}
|
||
}
|
||
i++;
|
||
}
|
||
if (!string.IsNullOrEmpty(deptSQL))
|
||
{
|
||
sqlTXT += $" and ({deptSQL}) ";
|
||
}
|
||
}
|
||
sqlTXT += " limit 50";
|
||
var dblist = MySqlDbHelper.DataQueray(connectStr, CommandType.Text, sqlTXT, parameters.ToArray()).Tables[0].ToList<Ww_FindUser_Model>();
|
||
//Pager pager1 = new Pager() { page = pager.page, rows = pager.limit };
|
||
//PagerUtil.SetPager<Ww_FindUser_Model>(ref db, ref pager1);
|
||
//pager.count = pager1.totalRows;
|
||
////PagerUtil.SetPager<Ww_FindUser_Model>(ref db, ref pager);
|
||
//var dblist = db.ToList();
|
||
foreach (var item in dblist)
|
||
{
|
||
var cop = corpListA.FirstOrDefault(m => m.corpid == item.corpid);
|
||
if (cop != null)
|
||
item.corpname = cop.corpname;
|
||
}
|
||
return dblist;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 查找客户
|
||
/// </summary>
|
||
/// <param name="name">电话号码,昵称,备注</param>
|
||
/// <returns></returns>
|
||
public List<Ww_FindUser_Model> Find_User(ref Laypage pager, string name, string myphone, string companycode)
|
||
{
|
||
|
||
var db = from a in _crmContext.Ww_hhuser
|
||
join b in _crmContext.Ww_Corp on a.corpid equals b.corpid
|
||
join c in _crmContext.Ww_User_Extuser on new { a.userid, a.corpid } equals new { c.userid, c.corpid }
|
||
join d in _crmContext.Ww_Extuser on new { c.extuserid, c.corpid } equals new { extuserid = d.userid, d.corpid }
|
||
where d.userid == name || d.exinfo.Contains(name)
|
||
select new Ww_FindUser_Model
|
||
{
|
||
corpname = b.corpname,
|
||
uname = a.uname,
|
||
userid = a.userid,
|
||
extuserid = c.extuserid,
|
||
name = d.name,
|
||
exinfo = d.exinfo,
|
||
ctime = d.ctime,
|
||
avatar = d.avatar,
|
||
deptid = a.deptid,
|
||
corpid = a.corpid,
|
||
myphone = a.mobile
|
||
};
|
||
if (!string.IsNullOrEmpty(myphone))
|
||
{
|
||
myphone = myphone.Trim();
|
||
db = db.Where(m => m.myphone == myphone);
|
||
}
|
||
var where = PredicateExtensionses.True<Ww_FindUser_Model>();
|
||
|
||
if (!string.IsNullOrEmpty(companycode))
|
||
{
|
||
int i = 0;
|
||
string codeformat = string.Format("[{0}]", companycode);
|
||
List<Ww_Corp> corplist = _crmContext.Ww_Corp.Where(m => m.companycode.Contains(codeformat)).ToList();
|
||
foreach (Ww_Corp item in corplist)
|
||
{
|
||
if (!string.IsNullOrEmpty(item.deptid))//有dptid
|
||
{
|
||
JObject obj = (JObject)Newtonsoft.Json.Linq.JObject.Parse(item.deptid);
|
||
string wox = obj[companycode].ToString();
|
||
int[] deptids = JsonHelper.JsonDivertToObj<int[]>(wox);
|
||
int[] newdeptids = GetAllCildDept(deptids, item.corpid);//新数据获取方式
|
||
if (i == 0)
|
||
where = where.And(m => m.corpid == item.corpid && newdeptids.Contains(m.deptid.Value));
|
||
else
|
||
where = where.Or(m => m.corpid == item.corpid && newdeptids.Contains(m.deptid.Value));
|
||
}
|
||
else
|
||
{
|
||
if (i == 0)
|
||
where = where.And(m => m.corpid == item.corpid);
|
||
else
|
||
where = where.Or(m => m.corpid == item.corpid);
|
||
|
||
}
|
||
i++;
|
||
}
|
||
}
|
||
db = db.Where(where);
|
||
db = db.OrderByDescending(m => m.ctime);
|
||
//Pager pager = new Pager() { page = 1, rows = 50 };
|
||
Pager pager1 = new Pager() { page = pager.page, rows = pager.limit };
|
||
PagerUtil.SetPager<Ww_FindUser_Model>(ref db, ref pager1);
|
||
pager.count = pager1.totalRows;
|
||
//PagerUtil.SetPager<Ww_FindUser_Model>(ref db, ref pager);
|
||
return db.ToList();
|
||
}
|
||
|
||
public int[] GetAllCildDept(int[] deptids, string corpid)
|
||
{
|
||
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(dicdptlist, corpid, item);
|
||
}
|
||
return dicdptlist.Select(m => m.Key).ToArray();
|
||
}
|
||
public void GetChildDept(Dictionary<int, int> dplist, string corpid, int id)
|
||
{
|
||
List<Ww_Dept> deptlist = _crmContext.Ww_Dept.Where(m => m.parentid == id && m.corpid == corpid).ToList();
|
||
foreach (var dp in deptlist)
|
||
{
|
||
if (!dplist.ContainsKey(dp.deptid))
|
||
{
|
||
dplist.Add(dp.deptid, dp.deptid);
|
||
GetChildDept(dplist, corpid, dp.deptid);
|
||
}
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 获取公司列表
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public List<Ww_Corp> Corp_Get()
|
||
{
|
||
return _crmContext.Ww_Corp.ToList();
|
||
}
|
||
/// <summary>
|
||
/// 获取群
|
||
/// </summary>
|
||
/// <param name="corp"></param>
|
||
/// <param name="roomid"></param>
|
||
/// <returns></returns>
|
||
public List<Ww_MsgRoom> GetRoom(ref Laypage pager, string corp, string name)
|
||
{
|
||
List<Ww_MsgRoom> list = new List<Ww_MsgRoom>();
|
||
try
|
||
{
|
||
string connectStr = Utility.GetSettingByKey("ConnectionStrings:crmMsgContext");
|
||
string sql = "select roomid,ctime,roomname,membernum from wework_" + corp + ".ww_msgroom " + (string.IsNullOrEmpty(name) ? "" : "where roomname like '%" + name + "%' or roomid like'%" + name + "%'") + " order by ctime desc limit " + (pager.page - 1) * pager.limit + "," + pager.limit;
|
||
string countsql = "select count(*) mcount from wework_" + corp + ".ww_msgroom " + (string.IsNullOrEmpty(name) ? "" : "where roomname like '%" + name + "%' or roomid like'%" + name + "%'") + "";
|
||
DataTable countdate = MySqlDbHelper.DataQueray(connectStr, CommandType.Text, countsql).Tables[0];
|
||
int count = Convert.ToInt32(countdate.Rows[0]["mcount"]);
|
||
pager.count = count;
|
||
DataTable set = MySqlDbHelper.DataQueray(connectStr, CommandType.Text, sql).Tables[0];
|
||
foreach (DataRow item in set.Rows)
|
||
{
|
||
Ww_MsgRoom room = new Ww_MsgRoom();
|
||
room.roomid = item["roomid"].ToString();
|
||
room.roomname = item["roomname"].ToString();
|
||
room.membernum = Convert.ToInt32(item["membernum"]);
|
||
if (item["ctime"] != DBNull.Value)
|
||
{
|
||
room.ctime = Convert.ToDateTime(item["ctime"]);
|
||
room.ctimestr = Utility.ToUnityString(room.ctime, 2);
|
||
list.Add(room);
|
||
}
|
||
}
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
LogHelper.Error(e.ToString());
|
||
}
|
||
return list;
|
||
}
|
||
/// <summary>
|
||
/// 修改聊天群
|
||
/// </summary>
|
||
/// <param name="corp"></param>
|
||
/// <param name="roomid"></param>
|
||
/// <returns></returns>
|
||
public bool UpdateRomeName(string corp, string roomid, string roomname)
|
||
{
|
||
bool result = true;
|
||
try
|
||
{
|
||
string connectStr = Utility.GetSettingByKey("ConnectionStrings:crmMsgContext");
|
||
string sql = "update wework_" + corp + ".ww_msgroom set roomname=@roomname where roomid=@roomid";
|
||
MySqlParameter[] param =
|
||
{
|
||
new MySqlParameter() { MySqlDbType = MySqlDbType.VarChar, ParameterName = "@roomname", Value = roomname },
|
||
new MySqlParameter() { MySqlDbType = MySqlDbType.VarChar, ParameterName = "@roomid", Value = roomid }
|
||
};
|
||
MySqlDbHelper.ExecuteNonQuery(connectStr, CommandType.Text, sql, param);
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
result = false;
|
||
LogHelper.Error(e.ToString());
|
||
}
|
||
return result;
|
||
}
|
||
/// <summary>
|
||
/// 获取单个聊天群
|
||
/// </summary>
|
||
/// <param name="corp"></param>
|
||
/// <param name="roomid"></param>
|
||
/// <returns></returns>
|
||
public Ww_MsgRoom GetRoom(string corp, string roomid)
|
||
{
|
||
Ww_MsgRoom room = null;
|
||
try
|
||
{
|
||
string connectStr = Utility.GetSettingByKey("ConnectionStrings:crmMsgContext");
|
||
string sql = "select * from wework_" + corp + ".ww_msgroom where roomid=@roomid";
|
||
MySqlParameter[] param =
|
||
{
|
||
new MySqlParameter() { MySqlDbType = MySqlDbType.VarChar, ParameterName = "@roomid", Value = roomid }
|
||
};
|
||
DataTable set = MySqlDbHelper.DataQueray(connectStr, CommandType.Text, sql, param).Tables[0];
|
||
foreach (DataRow item in set.Rows)
|
||
{
|
||
room = new Ww_MsgRoom();
|
||
room.roomid = set.Rows[0]["roomid"].ToString();
|
||
room.roomname = set.Rows[0]["roomname"].ToString();
|
||
room.userlist = set.Rows[0]["userlist"].ToString();
|
||
if (set.Rows[0]["ctime"] != DBNull.Value)
|
||
room.ctime = Convert.ToDateTime(set.Rows[0]["ctime"]);
|
||
room.corp = corp;
|
||
|
||
}
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
LogHelper.Error(e.ToString());
|
||
}
|
||
return room;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 获取多个信息
|
||
/// </summary>
|
||
/// <param name="corp"></param>
|
||
/// <param name="roomids"></param>
|
||
/// <returns></returns>
|
||
public List<Ww_MsgRoom> GetRoomList(string corp, string roomids)
|
||
{
|
||
List<Ww_MsgRoom> roomlist = new List<Ww_MsgRoom>();
|
||
try
|
||
{
|
||
string connectStr = Utility.GetSettingByKey("ConnectionStrings:crmMsgContext");
|
||
string sql = "select roomid,roomname,ctime from wework_" + corp + ".ww_msgroom where roomid in(" + roomids + ")";
|
||
MySqlParameter[] param =
|
||
{
|
||
|
||
};
|
||
DataTable set = MySqlDbHelper.DataQueray(connectStr, CommandType.Text, sql, param).Tables[0];
|
||
foreach (DataRow item in set.Rows)
|
||
{
|
||
Ww_MsgRoom room = new Ww_MsgRoom();
|
||
room.roomid = item["roomid"].ToString();
|
||
room.roomname = item["roomname"].ToString();
|
||
//room.userlist = set.Rows[0]["userlist"].ToString();
|
||
if (item["ctime"] != DBNull.Value)
|
||
room.ctime = Convert.ToDateTime(item["ctime"]);
|
||
room.corp = corp;
|
||
roomlist.Add(room);
|
||
|
||
}
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
LogHelper.Error(e.ToString());
|
||
}
|
||
return roomlist.OrderByDescending(m => m.ctime).ToList();
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 获取群,通过成员列表like
|
||
/// </summary>
|
||
/// <param name="corp"></param>
|
||
/// <param name="extendId">外部联系人ID</param>
|
||
/// <returns></returns>
|
||
public List<Ww_MsgRoom> GetRoomListByChengYuan(string corp, string extendId)
|
||
{
|
||
List<Ww_MsgRoom> roomlist = new List<Ww_MsgRoom>();
|
||
try
|
||
{
|
||
string connectStr = Utility.GetSettingByKey("ConnectionStrings:crmMsgContext");
|
||
string sql = "select roomid,roomname,ctime from wework_" + corp + ".ww_msgroom where userlist like '%" + extendId + ",%'";
|
||
MySqlParameter[] param =
|
||
{
|
||
|
||
};
|
||
DataTable set = MySqlDbHelper.DataQueray(connectStr, CommandType.Text, sql, param).Tables[0];
|
||
foreach (DataRow item in set.Rows)
|
||
{
|
||
Ww_MsgRoom room = new Ww_MsgRoom();
|
||
room.roomid = item["roomid"].ToString();
|
||
room.roomname = item["roomname"].ToString();
|
||
//room.userlist = set.Rows[0]["userlist"].ToString();
|
||
if (item["ctime"] != DBNull.Value)
|
||
room.ctime = Convert.ToDateTime(item["ctime"]);
|
||
room.corp = corp;
|
||
roomlist.Add(room);
|
||
|
||
}
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
LogHelper.Error(e.ToString());
|
||
}
|
||
return roomlist.OrderByDescending(m => m.ctime).ToList();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取群信息
|
||
/// </summary>
|
||
/// <param name="corp"></param>
|
||
/// <param name="room"></param>
|
||
/// <returns></returns>
|
||
public List<GroupUser> GetGroupUser(string corp, Ww_MsgRoom room)
|
||
{
|
||
string[] user = room.userlist.Split(',');
|
||
List<GroupUser> list = new List<GroupUser>();
|
||
foreach (var item in user)
|
||
{
|
||
if (string.IsNullOrEmpty(item))
|
||
continue;
|
||
Ww_Extuser model = _crmContext.Ww_Extuser.FirstOrDefault(m => m.corpid == corp && m.userid == item);//外部联系人
|
||
if (model != null)
|
||
{
|
||
list.Add(new GroupUser() { avatar = model.avatar, corpid = corp, name = model.name, roomid = room.roomid, userid = model.userid });
|
||
}
|
||
else
|
||
{
|
||
Ww_hhuser entry = _crmContext.Ww_hhuser.FirstOrDefault(m => m.corpid == corp && m.userid == item);//外部联系人
|
||
if (entry != null)
|
||
{
|
||
GroupUser guser = new GroupUser() { userid = entry.userid, roomid = room.roomid, corpid = corp, name = entry.uname, avatar = "" };
|
||
if (entry.exinfo != null && entry.exinfo != "-")
|
||
{
|
||
HHuserInfo info = JsonHelper.JsonDivertToObj<HHuserInfo>(entry.exinfo);
|
||
if (string.IsNullOrEmpty(info.thumb_avatar))
|
||
guser.avatar = info.thumb_avatar;
|
||
else
|
||
guser.avatar = info.avatar;
|
||
|
||
}
|
||
list.Add(guser);
|
||
}
|
||
else
|
||
{
|
||
GroupUser guser = new GroupUser() { userid = item, roomid = room.roomid, corpid = corp, name = item, avatar = "" };
|
||
list.Add(guser);
|
||
}
|
||
}
|
||
}
|
||
return list;
|
||
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 初始化数据库
|
||
/// </summary>
|
||
public void InitDb()
|
||
{
|
||
try
|
||
{
|
||
string createDbSql = @"CREATE TABLE IF NOT EXISTS `bas_config` (
|
||
`code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '配置',
|
||
`value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '值',
|
||
`time` datetime(0) NULL DEFAULT NULL COMMENT '时间',
|
||
`content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '内容'
|
||
);";
|
||
string sql = @"INSERT INTO `bas_config` (code,value,time,content)
|
||
select 'IsShowPhone', '0', now(), '是否显示手机号码'
|
||
where not exists(select 1 from bas_config z where z.code='IsShowPhone');";
|
||
string connectStr = Utility.GetSettingByKey("ConnectionStrings:crmContext");
|
||
MySqlDbHelper.ExecuteNonQuery(connectStr, CommandType.Text, createDbSql);
|
||
MySqlDbHelper.ExecuteNonQuery(connectStr, CommandType.Text, sql);
|
||
|
||
|
||
string createTableSql = @"CREATE TABLE IF NOT EXISTS `ww_hhuser_name` (
|
||
`userid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||
`corpid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||
`remarkname` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||
`ctime` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP,
|
||
`utime` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0),
|
||
PRIMARY KEY (`userid`, `corpid`) USING BTREE
|
||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '备注客服的名称' ROW_FORMAT = Dynamic;";
|
||
MySqlDbHelper.ExecuteNonQuery(connectStr, CommandType.Text, createTableSql);
|
||
|
||
|
||
string createParameter = @"CREATE TABLE IF NOT EXISTS `bas_parameter` (
|
||
`parakey` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '参数key',
|
||
`paravalue` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '参数值',
|
||
`ctime` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`utime` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '修改该时间',
|
||
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL
|
||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;";
|
||
|
||
MySqlDbHelper.ExecuteNonQuery(connectStr, CommandType.Text, createParameter);
|
||
|
||
string createLoginLog = @"CREATE TABLE IF NOT EXISTS `bas_loginlog` (
|
||
`pkid` int(11) NOT NULL AUTO_INCREMENT,
|
||
`uid` int(11) NOT NULL,
|
||
`eid` int(11) NULL DEFAULT NULL,
|
||
`logintime` datetime(0) NOT NULL,
|
||
`ip` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||
PRIMARY KEY (`pkid`) USING BTREE
|
||
); ";
|
||
MySqlDbHelper.ExecuteNonQuery(connectStr, CommandType.Text, createLoginLog);
|
||
|
||
string createRoleDept = @"CREATE TABLE IF NOT EXISTS `ww_role_dept` (
|
||
`corpid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '企业ID',
|
||
`roleid` int(11) NOT NULL COMMENT '角色ID',
|
||
`deptid` int(11) NOT NULL,
|
||
`deptcode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '部门编码树',
|
||
`ctime` datetime(0) NULL DEFAULT NULL,
|
||
PRIMARY KEY (`corpid`, `roleid`, `deptid`) USING BTREE
|
||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
||
";
|
||
MySqlDbHelper.ExecuteNonQuery(connectStr, CommandType.Text, createRoleDept);
|
||
|
||
|
||
string createHHusereid = @"CREATE TABLE IF NOT EXISTS `ww_hhuser_eid` (
|
||
`corpid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '企业ID',
|
||
`userid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '员工ID',
|
||
`ctime` datetime(0) NULL DEFAULT NULL,
|
||
`eid` int(11) NULL DEFAULT NULL COMMENT '员工登陆工号',
|
||
`utime` datetime(0) NULL DEFAULT NULL,
|
||
PRIMARY KEY (`corpid`, `userid`) USING BTREE
|
||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
||
";
|
||
|
||
MySqlDbHelper.ExecuteNonQuery(connectStr, CommandType.Text, createHHusereid);
|
||
|
||
string inserRight = @"
|
||
INSERT INTO bas_right(rightid, rname, sortid, ctime, createuser, groupid)
|
||
SELECT 'B099', '登陆权限',0, now() ,1,10
|
||
FROM DUAL
|
||
WHERE NOT EXISTS(SELECT rightid FROM bas_right WHERE rightid = 'B099');
|
||
";
|
||
MySqlDbHelper.ExecuteNonQuery(connectStr, CommandType.Text, inserRight);
|
||
string inserRoleRight = @"
|
||
INSERT INTO bas_rolerightresource(roleid,rightid,ctime,createuser,toolbarvalue)
|
||
SELECT 1,'B099', now() ,1,0
|
||
FROM DUAL
|
||
WHERE NOT EXISTS(SELECT rightid FROM bas_rolerightresource WHERE rightid = 'B099' and roleid=1);
|
||
";
|
||
MySqlDbHelper.ExecuteNonQuery(connectStr, CommandType.Text, inserRoleRight);
|
||
}
|
||
catch (Exception s)
|
||
{
|
||
LogHelper.Error(s.ToString());
|
||
}
|
||
}
|
||
|
||
#region 我的企业微信权限控制
|
||
|
||
public List<object> GetDept(int roleid)
|
||
{
|
||
List<object> objlist = new List<object>();
|
||
List<Ww_Corp> corplsit = _crmContext.Ww_Corp.ToList();
|
||
List<Ww_Dept> deptlist = _crmContext.Ww_Dept.ToList();
|
||
List<Ww_Role_Dept> roledept = _crmContext.Ww_Role_Dept.Where(m => m.roleid == roleid).ToList();
|
||
foreach (var item in corplsit)
|
||
{
|
||
objlist.Add(new { id = item.corpid, attributes = new { id = "" + item.deptid, type = "dept", corpid = item.corpid }, text = item.corpname, state = "open", children = GetChildDept(0, item.corpid, deptlist, 1, roledept) });
|
||
};
|
||
|
||
return objlist;
|
||
}
|
||
|
||
private List<object> GetChildDept(long parentid, string corpid, List<Ww_Dept> deptlist, int jibie, List<Ww_Role_Dept> roledept)
|
||
{
|
||
List<Ww_Dept> corpdept = deptlist.Where(m => m.corpid == corpid && m.parentid == parentid).ToList();
|
||
List<object> objlist = new List<object>();
|
||
foreach (var item in corpdept)
|
||
{
|
||
string state = jibie == 2 ? "closed" : "open";
|
||
if (roledept.FirstOrDefault(m => m.corpid == item.corpid && m.deptid == item.deptid) == null)
|
||
{
|
||
var childlist = GetChildDept(item.deptid, item.corpid, deptlist, jibie + 1, roledept);
|
||
if (childlist.Count() > 0)
|
||
{
|
||
objlist.Add(new { id = "" + item.deptid, attributes = new { id = "" + item.deptid, type = "dept", corpid = item.corpid }, text = item.deptname, state = state, children = childlist });
|
||
}
|
||
else
|
||
{
|
||
objlist.Add(new { id = "" + item.deptid, attributes = new { id = "" + item.deptid, type = "dept", corpid = item.corpid }, text = item.deptname });
|
||
}
|
||
}
|
||
else
|
||
{
|
||
var childlist = GetChildDept(item.deptid, item.corpid, deptlist, jibie + 1, roledept);
|
||
if (childlist.Count() > 0)
|
||
{
|
||
|
||
objlist.Add(new { id = "" + item.deptid, @checked = true, attributes = new { id = "" + item.deptid, type = "dept", corpid = item.corpid }, text = item.deptname, state = state, children = childlist });
|
||
}
|
||
else
|
||
{
|
||
objlist.Add(new { id = "" + item.deptid, @checked = true, attributes = new { id = "" + item.deptid, type = "dept", corpid = item.corpid }, text = item.deptname });
|
||
}
|
||
}
|
||
}
|
||
return objlist;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 保存角色部门挂钩数据
|
||
/// </summary>
|
||
/// <param name="errors"></param>
|
||
/// <param name="list"></param>
|
||
/// <param name="roleid"></param>
|
||
/// <returns></returns>
|
||
public bool SaveRoleDeptID(ref ValidationErrors errors, List<Ww_Dept_Corp> list, int roleid)
|
||
{
|
||
bool result = false;
|
||
try
|
||
{
|
||
List<Ww_Dept_CorpInt> inlist = new List<Ww_Dept_CorpInt>();
|
||
foreach (var item in list)
|
||
{
|
||
inlist.Add(new Ww_Dept_CorpInt() { corpid = item.corpid, id = Convert.ToInt32(item.id) });
|
||
|
||
}
|
||
Ww_Role_Dept[] dellist = _crmContext.Ww_Role_Dept.Where(m => m.roleid == roleid).ToArray();//全部删除,在重新创建
|
||
_crmContext.Ww_Role_Dept.RemoveRange(dellist);
|
||
_crmContext.SaveChanges();
|
||
foreach (var item in inlist)
|
||
{
|
||
var entry = _crmContext.Ww_Role_Dept.FirstOrDefault(m => m.roleid == roleid && m.corpid == item.corpid && m.deptid == item.id);
|
||
if (entry == null)
|
||
{
|
||
|
||
_crmContext.Ww_Role_Dept.Add(new Ww_Role_Dept() { corpid = item.corpid, ctime = DateTime.Now, deptid = item.id, roleid = roleid });
|
||
}
|
||
}
|
||
_crmContext.SaveChanges();
|
||
result = true;
|
||
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
LogHelper.Error(e.ToString());
|
||
errors.Add(e.ToString());
|
||
}
|
||
return result;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取自己管理的成员列表
|
||
/// </summary>
|
||
/// <param name="v_name">ID</param>
|
||
/// <returns></returns>
|
||
public List<Ww_hhuserModel> WorList_Get_ByCompany(int type, ref Laypage pager, string v_name, string v_corpid, string eid, List<Ww_Dept_CorpInt> qwdeptcontrolList)
|
||
{
|
||
|
||
Ww_Dept_CorpIntNull[] qwdeptnull = qwdeptcontrolList.Select(m => new Ww_Dept_CorpIntNull() { id = m.id, corpid = m.corpid }).ToArray();
|
||
var sxx = _crmContext.Ww_hhuser.AsQueryable();
|
||
string[] corpids = qwdeptnull.GroupBy(m => m.corpid).Select(m => m.Key).ToArray();
|
||
var malge = _crmContext.Ww_hhuser.AsQueryable();
|
||
int i = 0;
|
||
if (type == 1)//经理查看,是需要Id的
|
||
{
|
||
if (qwdeptcontrolList.Count > 0)//没有数据过来
|
||
{
|
||
//malge = malge.Where(m=> qwdeptcontrolList.Contains(new Ww_Dept_CorpInt { corpid=m.corpid,id=m.deptid.Value }));
|
||
|
||
foreach (var item in corpids)
|
||
{
|
||
i++;
|
||
int[] deptidss = qwdeptcontrolList.Where(m => m.corpid == item).Select(m => m.id).ToArray();
|
||
if (i == 1)
|
||
{
|
||
malge = sxx.Where(m => m.corpid == item && deptidss.Contains(m.deptid.Value));
|
||
}
|
||
else
|
||
{
|
||
malge = malge.Union(sxx.Where(m => m.corpid == item && deptidss.Contains(m.deptid.Value)));
|
||
}
|
||
|
||
}
|
||
}
|
||
else
|
||
{
|
||
malge = malge.Where(m => 0 == 1);
|
||
|
||
}
|
||
}
|
||
var db = from a in malge
|
||
join b in _crmContext.Ww_Corp on a.corpid equals b.corpid
|
||
join c in _crmContext.Ww_hhuser_Name on new { a.userid, a.corpid } equals new { c.userid, c.corpid } into jiontemp
|
||
from c_tmp in jiontemp.DefaultIfEmpty()//左关联
|
||
join d in _crmContext.Ww_hhuser_Eid on new { a.userid, a.corpid } equals new { d.userid, d.corpid } into jiontemp2
|
||
from d in jiontemp2.DefaultIfEmpty()//左关联
|
||
join e in _crmContext.Bas_InnerUser on d.eid equals e.eid into jiontemp3
|
||
from e in jiontemp3.DefaultIfEmpty()//左关联
|
||
join f in _crmContext.Ww_Dept on new { deptid = a.deptid.Value, a.corpid } equals new { f.deptid, f.corpid } into jiontemp4
|
||
from f in jiontemp4.DefaultIfEmpty()//左关联
|
||
|
||
|
||
select new Ww_hhuserModel()
|
||
{
|
||
corpid = b.corpid,
|
||
deptid = a.deptid,
|
||
corpname = b.corpname,
|
||
exinfo = a.exinfo,
|
||
uname = a.uname,
|
||
userid = a.userid,
|
||
lmsgtime = a.lmsgtime,
|
||
remarkname = c_tmp.remarkname,
|
||
alias = a.alias,
|
||
email = a.email,
|
||
fmsgtime = a.fmsgtime,
|
||
mobile = a.mobile,
|
||
eid = d.eid,
|
||
eidandname = e.uname,
|
||
deptname = f.deptname
|
||
}
|
||
;
|
||
if (!string.IsNullOrEmpty(v_name))
|
||
{
|
||
db = db.Where(m => m.userid.Contains(v_name) || m.uname.Contains(v_name) || m.remarkname.Contains(v_name) || (m.mobile != null && m.mobile.Contains(v_name)) || (m.email != null && m.email.Contains(v_name)));
|
||
//db = db.Where(m => m.userid.Contains(v_name));
|
||
}
|
||
if (!string.IsNullOrEmpty(v_corpid))
|
||
{
|
||
db = db.Where(m => m.corpid == v_corpid);
|
||
}
|
||
if (!string.IsNullOrEmpty(eid))
|
||
{
|
||
int myid = 0;
|
||
if (Int32.TryParse(eid, out myid))
|
||
{
|
||
db = db.Where(m => m.eid == myid);
|
||
}
|
||
else
|
||
{
|
||
db = db.Where(m => m.eidandname.Contains(eid));
|
||
|
||
}
|
||
}
|
||
//db = db.Where(m => qwdeptnull.Contains(new Ww_Dept_CorpIntNull() { corpid = m.corpid, id = m.deptid }));
|
||
|
||
db = db.OrderByDescending(m => m.lmsgtime);
|
||
Pager pager1 = new Pager() { page = pager.page, rows = pager.limit };
|
||
PagerUtil.SetPager<Ww_hhuserModel>(ref db, ref pager1);
|
||
pager.count = pager1.totalRows;
|
||
var data = db.ToList();
|
||
foreach (var item in data)
|
||
{
|
||
item.eidandname = string.Format("{0}-{1}", item.eid, item.eidandname);
|
||
}
|
||
return data;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 登陆员工,获取所有可查看的部门ID
|
||
/// </summary>
|
||
/// <param name="roleids"></param>
|
||
/// <returns></returns>
|
||
public List<Ww_Dept_CorpInt> GetMyControlDeptId(int[] roleids)
|
||
{
|
||
Dictionary<string, Ww_Dept_CorpInt> dpt = new Dictionary<string, Ww_Dept_CorpInt>();
|
||
List<Ww_Role_Dept> controldept = _crmContext.Ww_Role_Dept.Where(m => roleids.Contains(m.roleid)).ToList();
|
||
List<Ww_Dept> deptlist = _crmContext.Ww_Dept.ToList();
|
||
foreach (var item in controldept)
|
||
{
|
||
string dptkey = string.Format("{0}_{1}", item.corpid, item.deptid);
|
||
if (!dpt.ContainsKey(dptkey))
|
||
{
|
||
dpt.Add(dptkey, new Ww_Dept_CorpInt { corpid = item.corpid, id = item.deptid });
|
||
}
|
||
GetChildDeptId(dpt, deptlist, item.deptid, item.corpid);
|
||
}
|
||
List<Ww_Dept_CorpInt> cmm = dpt.Values.Select(m => m).ToList();
|
||
return cmm;
|
||
}
|
||
private void GetChildDeptId(Dictionary<string, Ww_Dept_CorpInt> dpt, List<Ww_Dept> deptlist, int parentid, string corpid)
|
||
{
|
||
List<Ww_Dept> corpdept = deptlist.Where(m => m.corpid == corpid && m.parentid == parentid).ToList();
|
||
foreach (var item in corpdept)
|
||
{
|
||
string dptkey = string.Format("{0}_{1}", item.corpid, item.deptid);
|
||
if (!dpt.ContainsKey(dptkey))
|
||
{
|
||
dpt.Add(dptkey, new Ww_Dept_CorpInt { corpid = item.corpid, id = item.deptid });
|
||
}
|
||
GetChildDeptId(dpt, deptlist, item.deptid, item.corpid);
|
||
}
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 获取工号
|
||
/// </summary>
|
||
/// <param name="userid"></param>
|
||
/// <param name="corp"></param>
|
||
/// <returns></returns>
|
||
public Ww_hhuser_Eid GetHHuserEid(string userid, string corp)
|
||
{
|
||
return _crmContext.Ww_hhuser_Eid.FirstOrDefault(m => m.userid == userid && m.corpid == corp);
|
||
}
|
||
/// <summary>
|
||
/// 修改工号
|
||
/// </summary>
|
||
/// <param name="erros"></param>
|
||
/// <param name="model"></param>
|
||
/// <returns></returns>
|
||
|
||
public bool UpdateHHuserEid(ref ValidationErrors erros, Ww_hhuser_Eid model)
|
||
{
|
||
bool result = true;
|
||
try
|
||
{
|
||
var entry = _crmContext.Ww_hhuser_Eid.FirstOrDefault(m => m.userid == model.userid && m.corpid == model.corpid);
|
||
var eidentry = _crmContext.Bas_InnerUser.FirstOrDefault(m => m.eid == model.eid);
|
||
if (eidentry == null)
|
||
{
|
||
erros.Add("工号不正确!");
|
||
return false;
|
||
}
|
||
if (entry == null)
|
||
{
|
||
//throw new Exception("找不到指定的员工!");
|
||
model.ctime = DateTime.Now;
|
||
_crmContext.Ww_hhuser_Eid.Add(model);
|
||
}
|
||
else
|
||
{
|
||
entry.utime = DateTime.Now;
|
||
entry.eid = model.eid;
|
||
}
|
||
_crmContext.SaveChanges();
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
result = false;
|
||
LogHelper.Error(e.ToString());
|
||
erros.Add(e.ToString());
|
||
}
|
||
return result;
|
||
}
|
||
|
||
public List<Ww_hhuser_Eid> GetHHuserEid()
|
||
{
|
||
return _crmContext.Ww_hhuser_Eid.ToList();
|
||
}
|
||
#endregion
|
||
}
|
||
}
|