wwservice/services/wwUserinfoService.cs

337 lines
14 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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