337 lines
14 KiB
C#
337 lines
14 KiB
C#
using common;
|
||
using model;
|
||
using model.viewmodel;
|
||
using Newtonsoft.Json;
|
||
|
||
namespace services
|
||
{
|
||
public class wwUserinfoService : IwwUserinfoService
|
||
{
|
||
public List<wwUserinfoView> GetMyUserList(string machineid, string name)
|
||
{
|
||
using (var db = new DataContext())
|
||
{
|
||
var dd = (from a in db.ww_corps
|
||
join b in db.ww_hhusers on a.corpid equals b.corpid
|
||
join c in db.ww_userinfos on new { b.corpid, b.userid } equals new { c.corpid, c.userid }
|
||
select new wwUserinfoView()
|
||
{
|
||
userid = b.userid,
|
||
corpid = b.corpid,
|
||
corpname = a.corpname,
|
||
exinfo = b.exinfo,
|
||
machineid = c.machineid,
|
||
mobile = b.mobile,
|
||
name = b.name,
|
||
ctime = c.ctime,
|
||
isdefault = c.isdefault
|
||
}).Where(m => m.machineid == machineid);
|
||
if (!string.IsNullOrWhiteSpace(name))
|
||
{
|
||
name = name.Trim();
|
||
dd = dd.Where(m => m.name.Contains(name));
|
||
}
|
||
return dd.OrderByDescending(m => m.ctime).ToList();
|
||
}
|
||
}
|
||
|
||
public List<wwUserinfoView> GetMyDefault(string machineid)
|
||
{
|
||
using (var db = new DataContext())
|
||
{
|
||
var dd = (from a in db.ww_corps
|
||
join b in db.ww_hhusers on a.corpid equals b.corpid
|
||
join c in db.ww_userinfos on new { b.corpid, b.userid } equals new { c.corpid, c.userid }
|
||
select new wwUserinfoView()
|
||
{
|
||
userid = b.userid,
|
||
corpid = b.corpid,
|
||
corpname = a.corpname,
|
||
exinfo = b.exinfo,
|
||
machineid = c.machineid,
|
||
mobile = b.mobile,
|
||
name = b.name,
|
||
ctime = c.ctime,
|
||
isdefault = c.isdefault
|
||
}).Where(m => m.machineid == machineid).ToList();
|
||
return dd;
|
||
}
|
||
}
|
||
|
||
public wwUserinfoView GetMyUserOne(string machineid, string corpid, string userid)
|
||
{
|
||
using (var db = new DataContext())
|
||
{
|
||
var dd = (from a in db.ww_corps
|
||
join b in db.ww_hhusers on a.corpid equals b.corpid
|
||
select new wwUserinfoView()
|
||
{
|
||
userid = b.userid,
|
||
corpid = b.corpid,
|
||
corpname = a.corpname,
|
||
exinfo = b.exinfo,
|
||
mobile = b.mobile,
|
||
name = b.name,
|
||
}).FirstOrDefault(m => m.corpid == corpid && m.userid == userid);
|
||
|
||
try
|
||
{
|
||
var json = JsonConvert.DeserializeObject<wwUserinfoExinfo>(dd.exinfo);
|
||
dd.thumb_avatar = json.thumb_avatar ?? json.avatar;
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
return new wwUserinfoView();
|
||
}
|
||
return dd;
|
||
}
|
||
}
|
||
|
||
public bool BindUser(string machineid, string mobile, string remark, ref ValidationErrors errors)
|
||
{
|
||
try
|
||
{
|
||
using (var db = new DataContext())
|
||
{
|
||
if (string.IsNullOrWhiteSpace(mobile))
|
||
{
|
||
errors.Add("号码不能为空!");
|
||
return false;
|
||
}
|
||
if (string.IsNullOrWhiteSpace(remark))
|
||
{
|
||
errors.Add("备注不能为空!");
|
||
return false;
|
||
}
|
||
mobile = mobile.Trim();
|
||
remark = remark.Trim();
|
||
|
||
var userList = db.ww_hhusers.Where(m => m.mobile == mobile).ToList();
|
||
if (userList == null || userList.Count() == 0)
|
||
{
|
||
errors.Add("找不到" + mobile + "对应的企微!");
|
||
return false;
|
||
}
|
||
//
|
||
foreach (var user in userList)//一个号码多个企业微信的时候,需要进行循环全部考虑进去
|
||
{
|
||
var ent = db.ww_userinfos.FirstOrDefault(m => m.machineid == machineid && m.userid == user.userid && m.corpid == user.corpid);
|
||
if (ent != null)
|
||
{
|
||
errors.Add($"号码{mobile}|{user.name}已绑定!");
|
||
continue;
|
||
}
|
||
var lastm = db.ww_user_extusers.FirstOrDefault(m => m.userid == user.userid && m.corpid == user.corpid && m.remark == remark);
|
||
if (lastm == null)
|
||
{
|
||
errors.Add("信息不对,无法绑定!");
|
||
continue;
|
||
}
|
||
ww_userinfo info = new ww_userinfo()
|
||
{
|
||
machineid = machineid,
|
||
userid = user.userid,
|
||
corpid = user.corpid,
|
||
ctime = DateTime.Now
|
||
};
|
||
db.ww_userinfos.Add(info);
|
||
db.SaveChanges();
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(ex.ToString());
|
||
errors.Add("系统错误");
|
||
return false;
|
||
}
|
||
}
|
||
|
||
public bool DisBindUser(string machineid, string userid, string corpid, ref ValidationErrors errors)
|
||
{
|
||
using (var db = new DataContext())
|
||
{
|
||
if (string.IsNullOrWhiteSpace(machineid))
|
||
{
|
||
errors.Add("参数错误!");
|
||
return false;
|
||
}
|
||
if (string.IsNullOrWhiteSpace(userid))
|
||
{
|
||
errors.Add("参数错误!");
|
||
return false;
|
||
}
|
||
if (string.IsNullOrWhiteSpace(corpid))
|
||
{
|
||
errors.Add("参数错误!");
|
||
return false;
|
||
}
|
||
machineid = machineid.Trim();
|
||
userid = userid.Trim();
|
||
corpid = corpid.Trim();
|
||
var user = db.ww_userinfos.FirstOrDefault(m => m.machineid == machineid && m.userid == userid && m.corpid == corpid);
|
||
if (user == null)
|
||
{
|
||
errors.Add("找不到数据!");
|
||
return false;
|
||
}
|
||
db.ww_userinfos.Remove(user);
|
||
db.SaveChanges();
|
||
return true;
|
||
}
|
||
}
|
||
|
||
public List<wwExtuserView> GetExtUserList(string machineid, string corpid, string userid, ref Dictionary<string, string> customTags)
|
||
{
|
||
using (var db = new DataContext())
|
||
{
|
||
var dd = (from a in db.ww_user_extusers
|
||
join c in db.ww_extusres on new { a.corpid, a.extuserid } equals new { c.corpid, extuserid = c.userid }
|
||
join b in db.ww_hhusers on new { a.corpid, a.userid } equals new { b.corpid, b.userid }
|
||
select new wwExtuserView()
|
||
{
|
||
userid = b.userid,
|
||
corpid = b.corpid,
|
||
createtime = a.createtime,
|
||
extuserid = a.extuserid,
|
||
nickname = c.name,
|
||
remark = a.remark,
|
||
thumb_avatar = c.avatar,
|
||
description = a.description,
|
||
deleted = a.deleted,//是否删除
|
||
tags_type1 = a.tags_type1,//企业标签
|
||
tags_type2 = a.tags_type2,//个人标签
|
||
remark_corp_name = a.remark_corp_name,//企业备注
|
||
add_type = a.add_type,//添加类型 0被加,1主动加,2分配转移
|
||
add_way = a.add_way//添加途径 从数据库中读取表
|
||
}).Where(m => m.corpid == corpid && m.userid == userid && m.deleted == false).OrderByDescending(m => m.createtime).ToList();
|
||
int xuhao = 0;
|
||
List<wwExtuserView> monthGroupBy = new List<wwExtuserView>();
|
||
Dictionary<string, string> dic = new Dictionary<string, string>();
|
||
foreach (var item in dd)
|
||
{
|
||
item.tagInfos = new List<TagInfo>();
|
||
if (string.IsNullOrWhiteSpace(item.remark_corp_name))
|
||
{
|
||
item.remark_corp_name = "";
|
||
}
|
||
try//企业标签
|
||
{
|
||
var tag1 = JsonConvert.DeserializeObject<List<TagInfo>>(item.tags_type1);
|
||
item.tagInfos.AddRange(tag1);
|
||
}
|
||
catch (Exception ex) { }
|
||
try//自定义标签
|
||
{
|
||
var tag2 = JsonConvert.DeserializeObject<List<TagInfo>>(item.tags_type2);
|
||
foreach (var mytag in tag2)
|
||
{
|
||
if (!customTags.ContainsKey(mytag.tag_name))
|
||
{
|
||
customTags.Add(mytag.tag_name, mytag.tag_name);
|
||
}
|
||
}
|
||
item.tagInfos.AddRange(tag2);
|
||
}
|
||
catch (Exception ex) { }
|
||
xuhao++;
|
||
item.createtime2 = DateTimeTool.GetTimeFromLinuxShortTime(item.createtime);
|
||
item.cdate = item.createtime2.ToString("yyyy-MM-dd");
|
||
item.type = 1;
|
||
item.cmonth = item.createtime2.ToString("yyyy-MM");
|
||
item.chours = item.createtime2.ToString("HH:mm:ss");
|
||
////跟据日来算
|
||
//if (!dic.ContainsKey(item.cdate))
|
||
//{
|
||
// dic.Add(item.cdate, item.cdate);
|
||
// monthGroupBy.Add(new wwExtuserView()
|
||
// {
|
||
// type = 2,
|
||
// nickname = item.cdate,
|
||
// cdate = item.cdate,
|
||
// xuhao = xuhao,
|
||
// cmonth = item.cmonth
|
||
// });
|
||
// xuhao++;
|
||
//}
|
||
item.xuhao = xuhao;//赋值序号
|
||
}
|
||
dd.AddRange(monthGroupBy);
|
||
return dd.OrderBy(m => m.xuhao).ToList();
|
||
}
|
||
}
|
||
|
||
public bool SetDefault(string machineid, string corpid, string userid)
|
||
{
|
||
using (var db = new DataContext())
|
||
{
|
||
var list = db.ww_userinfos.Where(m => m.machineid == machineid).ToList();
|
||
foreach (var item in list)
|
||
{
|
||
if (item.userid == userid)
|
||
{
|
||
//var entry = db.ww_userinfos.FirstOrDefault(m => m.machineid == machineid && m.userid == item.userid);
|
||
item.isdefault = 1;
|
||
db.SaveChanges();
|
||
}
|
||
else
|
||
{
|
||
//var entry = db.ww_userinfos.FirstOrDefault(m => m.machineid == machineid && m.userid == item.userid);
|
||
item.isdefault = 0;
|
||
db.SaveChanges();
|
||
}
|
||
}
|
||
return true;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取添加来源条件
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public List<ww_addway> GetAddWayList()
|
||
{
|
||
using (var db = new DataContext())
|
||
{
|
||
return db.ww_addways.OrderBy(m => m.id).ToList();
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取某个企业号下所有的企业标签
|
||
/// </summary>
|
||
/// <param name="corpid"></param>
|
||
/// <returns></returns>
|
||
public List<wwGroupTagView> GetGroupTagList(string corpid)
|
||
{
|
||
using (var db = new DataContext())
|
||
{
|
||
var list = db.ww_grouptags.Where(m => m.corpid == corpid).OrderBy(m => m.order).ToList();
|
||
List<wwGroupTagView> viewList = new List<wwGroupTagView>();
|
||
foreach (var item in list)
|
||
{
|
||
try
|
||
{
|
||
var info = JsonConvert.DeserializeObject<List<wwGroupTagInfo>>(item.tag);
|
||
if (info != null)
|
||
viewList.Add(new wwGroupTagView()
|
||
{
|
||
corpid = item.corpid,
|
||
order = item.order,
|
||
tags = item.tag,
|
||
create_time = item.create_time,
|
||
group_id = item.group_id,
|
||
group_name = item.group_name,
|
||
tagNumbers = info.ToList()
|
||
});
|
||
}
|
||
catch { }
|
||
}
|
||
|
||
return viewList;
|
||
}
|
||
}
|
||
}
|
||
} |