using common; using model; using model.viewmodel; using Newtonsoft.Json; namespace services { public class wwUserinfoService : IwwUserinfoService { public List 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 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(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 GetExtUserList(string machineid, string corpid, string userid, ref Dictionary 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 monthGroupBy = new List(); Dictionary dic = new Dictionary(); foreach (var item in dd) { item.tagInfos = new List(); if (string.IsNullOrWhiteSpace(item.remark_corp_name)) { item.remark_corp_name = ""; } try//企业标签 { var tag1 = JsonConvert.DeserializeObject>(item.tags_type1); item.tagInfos.AddRange(tag1); } catch (Exception ex) { } try//自定义标签 { var tag2 = JsonConvert.DeserializeObject>(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; } } /// /// 获取添加来源条件 /// /// public List GetAddWayList() { using (var db = new DataContext()) { return db.ww_addways.OrderBy(m => m.id).ToList(); } } /// /// 获取某个企业号下所有的企业标签 /// /// /// public List GetGroupTagList(string corpid) { using (var db = new DataContext()) { var list = db.ww_grouptags.Where(m => m.corpid == corpid).OrderBy(m => m.order).ToList(); List viewList = new List(); foreach (var item in list) { try { var info = JsonConvert.DeserializeObject>(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; } } } }