public GetTagMemberResult GetTagMember(string tagname, WorkOption option) { if (string.IsNullOrEmpty(option.AccessToken)) option.AccessToken = AccessTokenContainer.TryGetToken(option.CorpId, option.Secret); var listresult = MailListApi.GetTagList(option.AccessToken); var tagid = listresult.taglist.FirstOrDefault(t => t.tagname == tagname).tagid; return MailListApi.GetTagMember(option.AccessToken, Convert.ToInt32(tagid)); }
//[TestMethod] public void GetTagMemberTest(int tagId) { var accessToken = AccessTokenContainer.GetToken(_corpId); var result = MailListApi.GetTagMember(accessToken, tagId); Assert.IsNotNull(result); Assert.IsTrue(result.errcode == ReturnCode.请求成功); }
public GetTagMemberResult WX_GetTagMember(int tagid) { GetTagMemberResult Ret = new GetTagMemberResult(); if (Qyinfo.IsUseWX == "Y") { Ret = MailListApi.GetTagMember(GetToken(), tagid); } return(Ret); }
public static GetTagMemberResult GetTagById(int AccountManageId, int tagId) { var lst = cacheManager.Get <GetTagMemberResult>("Tag_" + tagId, () => { Logger.Debug("cache is empty, creating cache...."); var Config = WeChatCommonService.lstSysWeChatConfig.FirstOrDefault(a => a.AccountManageId == AccountManageId); var strToken = AccessTokenContainer.TryGetToken(Config.WeixinCorpId, Config.WeixinCorpSecret); var result = MailListApi.GetTagMember(strToken, tagId); return(result); }); return(lst); }
public ActionResult GetNewUserList(string tagname, string clientId) { if (!VerifyNewParam("tagname", clientId, _signCheckService)) { return(ErrMsg()); } GetTagMemberResult tagMemberResult = new GetTagMemberResult(); var strToken = GetToken(); var tag = WeChatCommonService.lstTag.FirstOrDefault(x => x.tagname == tagname); int tagid = tag != null?Convert.ToInt32(tag.tagid) : 0; if (tagid != 0) { tagMemberResult = MailListApi.GetTagMember(strToken, tagid); } if (tagMemberResult != null && tagMemberResult.userlist != null) { var ids = tagMemberResult.userlist.Select(x => x.userid).ToList(); var userInfo = WeChatCommonService.lstUser.Where(x => ids.Any(y => x.userid == y)).Select(x => new { userid = x.userid, name = x.name, avatar = x.avatar, status = x.status, email = x.email }).ToList(); var strJson1 = Newtonsoft.Json.JsonConvert.SerializeObject(new { message = "", success = true, item = new { userInfo } }); return(Content(strJson1, "application/json")); } else { return(Json(new { message = "标签不存在或者标签中无成员!", success = false }, JsonRequestBehavior.AllowGet)); } }
public int UpdateEmployee(LocalSADEntity entity) { var updateEmployee = Repository.Entities.Where(t => t.LilyId.ToUpper() == entity.LillyID.ToUpper()).FirstOrDefault(); if (updateEmployee == null) { return(0); } updateEmployee.EmployeeTime = entity.ACTL_HIRE_DT; updateEmployee.BaseLocation = entity.BS_LCTN_GLBL; updateEmployee.Tag = CommonService.GetSysConfig("TagNameNewEmployee", ""); //过滤条件暂时删除 //if (updateEmployee.EmployeeTime < DateTime.Now.AddMonths(-6).Date) //{ // return 0; //} if (!string.IsNullOrEmpty(updateEmployee.Tag)) { var taglist = WeChatCommonService.lstTag.Where(x => x.tagname == updateEmployee.Tag); int tagid = taglist.FirstOrDefault() != null?Convert.ToInt32(taglist.FirstOrDefault().tagid) : 0; string[] userlist = new string[1]; userlist[0] = entity.LillyID; //不超过6个月时,添加标签 if (tagid != 0 && DateTime.Today <= (updateEmployee.EmployeeTime.AddMonths(6))) { var tagMemberResult = MailListApi.GetTagMember(WeChatCommonService.GetWeiXinToken(0), tagid); var hasTag = tagMemberResult.userlist.Select(a => a.userid.ToUpper() == entity.LillyID.ToUpper()).FirstOrDefault(); if (!hasTag) { MailListApi.AddTagMember(WeChatCommonService.GetWeiXinToken(0), tagid, userlist); } } //超过7个月时,移除标签 if (tagid != 0 && DateTime.Today > (updateEmployee.EmployeeTime.AddMonths(7))) { MailListApi.DelTagMember(WeChatCommonService.GetWeiXinToken(0), tagid, userlist); } } return(Repository.Update(updateEmployee)); }
public ActionResult GetUserList(string clientid, string tagname) { if (!string.IsNullOrEmpty(clientid)) { var clientUrl = _clientDataService.Repository.Entities.Where(x => x.ClientId == clientid && x.ClientName == tagname).Select(x => x.ClientCallBackUrl).FirstOrDefault(); if (string.IsNullOrEmpty(clientUrl)) { throw new ArgumentException(@"clientid 不正确!", clientid); } } GetTagMemberResult tagMemberResult = new GetTagMemberResult(); var strToken = GetToken(); var taglist = WeChatCommonService.lstTag.Where(x => x.tagname == tagname); int tagid = taglist.FirstOrDefault() != null?Convert.ToInt32(taglist.FirstOrDefault().tagid) : 0; if (tagid != 0) { tagMemberResult = MailListApi.GetTagMember(strToken, tagid); } if (tagMemberResult != null) { var strJson = Newtonsoft.Json.JsonConvert.SerializeObject(new { message = "", success = true, item = new { tagMemberResult.userlist } }); return(Content(strJson, "application/json")); } else { return(Json(new { message = "标签不存在!", success = false }, JsonRequestBehavior.AllowGet)); } }
public JsonResult AddDepartmentToTag(IList <int> departments, string tagId) { if (string.IsNullOrEmpty(tagId)) { return(ErrorNotification("数据异常!")); } departments = departments ?? new List <int>(); var accessToken = GetToken(); var partList = MailListApi.GetTagMember(accessToken, int.Parse(tagId)).partylist; var deletedList = partList.Where(x => departments.All(y => y != x)).ToArray(); var addedList = departments.Where(x => !partList.Any(y => y == x)).ToArray(); if (addedList.Any()) { var addResult = MailListApi.AddTagMember(accessToken, Int32.Parse(tagId), null, addedList); if (addResult.errcode != ReturnCode_QY.请求成功) { return(ErrorNotification(addResult.errcode.ToString())); } } if (deletedList.Any()) { var delResult = MailListApi.DelTagMember(accessToken, Int32.Parse(tagId), null, deletedList); if (delResult.errcode != ReturnCode_QY.请求成功) { return(ErrorNotification(delResult.errcode.ToString())); } } //if (addedList.Any() || deletedList.Any()) //{ // WeChatCommonService.lstTag.Clear(); //} return(Json(doJson(null), JsonRequestBehavior.AllowGet)); }
public JsonResult delTag(string Id) { try { string accessToken = GetToken(); var memberResult = MailListApi.GetTagMember(accessToken, Int32.Parse(Id)); string[] userList = null; if (memberResult.userlist != null && memberResult.userlist.Count > 0) { userList = memberResult.userlist.Select(a => a.userid).ToArray(); } if ((userList != null && userList.Count() > 0) || (memberResult.partylist != null && memberResult.partylist.Count() > 0)) { MailListApi.DelTagMember(accessToken, Int32.Parse(Id), userList, memberResult.partylist); foreach (var userId in userList) { _addressBookService.delMemberTag(userId, Int32.Parse(Id)); } } MailListApi.DeleteTag(accessToken, Int32.Parse(Id)); } catch (ErrorJsonResultException ex) { if ((int)ex.JsonResult.errcode == 60018) { var e = new Exception("请在微信企业号管理平台中,取消各应用对此标签的可见范围,再进行删除操作。"); throw e; } } finally { WeChatCommonService.ClearDepartmentTagMapCache(this.AccountManageID); } return(Json(doJson(null), JsonRequestBehavior.AllowGet)); }
private IList <TagView> GetListDataBytag(int iPage, int iCount, ref int iTotal) { string strID = Request["TagId"]; string strSearchCondition = Request["SearchCondition"]; var tagMember = MailListApi.GetTagMember(GetToken(), int.Parse(strID)); //var rootDepartment = WeChatCommonService.lstDepartment.First(x => x.parentid == 0); var lst = tagMember.userlist.Select(x => { var user = WeChatCommonService.lstUser.FirstOrDefault(y => y.userid == x.userid); if (user != null) { return(new TagView { LillyId = x.userid, Name = x.name, Avatar = user.avatar, Type = TagType.User.ToString(), DepartmentId = user.department.First(), //DepartmentName = string.Format("{0}-{1}", rootDepartment.name, WeChatCommonService.lstDepartment.First(y => y.id == departmentId).name) }); } return(null); }).Where(x => x != null).ToList(); var departments = tagMember.partylist.Select(x => { var department = WeChatCommonService.lstDepartment.FirstOrDefault(y => y.id == x); return(new TagView { Name = department.name, Type = TagType.Department.ToString(), DepartmentId = department.id, //DepartmentName = string.Format("{0}-{1}", rootDepartment.name, department.name), }); }).Where(x => x != null).ToList(); lst.AddRange(departments); if (!string.IsNullOrEmpty(strSearchCondition)) { lst = lst.Where(x => { if (!string.IsNullOrEmpty(x.LillyId)) { return(x.LillyId.IndexOf(strSearchCondition.Trim(), StringComparison.OrdinalIgnoreCase) >= 0 || x.Name.IndexOf(strSearchCondition.Trim(), StringComparison.OrdinalIgnoreCase) >= 0); } return(x.Name.IndexOf(strSearchCondition.Trim(), StringComparison.OrdinalIgnoreCase) >= 0); }).ToList(); } iTotal = lst.Count(); lst = lst.OrderBy(a => a.LillyId).ToList(); lst = lst.Skip((iPage - 1) * iCount).Take(iCount).ToList(); lst.ForEach(x => { var department = WeChatCommonService.lstDepartment.First(y => y.id == x.DepartmentId); var stackDepartments = GetDepartmentHierarchy(WeChatCommonService.lstDepartment, department); x.DepartmentName = stackDepartments.Select(y => y.name).Aggregate((z, y) => string.Format("{0}-{1}", z, y)); stackDepartments.Clear(); }); return(lst); }
public static GetTagMemberResult GetTagMembers(int tagId, int appId) { return(MailListApi.GetTagMember(WeChatCommonService.GetWeiXinToken(appId), tagId)); }
private string ImportToTag() { Dictionary <string, Stream> dic = new Dictionary <string, Stream>(); Dictionary <string, TagImport> dics = new Dictionary <string, TagImport>(); //获取accesstoken string accessToken = GetToken(); string invalidList = string.Empty; for (int i = 0; i < Request.Files.Count; i++) { HttpPostedFileBase objFile = Request.Files[i]; var f = new byte[objFile.InputStream.Length]; //将csv文件一次性读出来 objFile.InputStream.Read(f, 0, (int)objFile.InputStream.Length); //定义数据格式UTF-8 string str = System.Text.Encoding.GetEncoding("UTF-8").GetString(f); //获取第一行数据然后取两列数据WeChatUserID,TagID string[] sArray = str.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); string[] rowOne = sArray[0].Split(','); int TagidIndex = 0, WeChatUserIDIndex = 0; //循环判断返回数组对应列下标 for (int s = 0; s < rowOne.Length; s++) { if (string.Equals(rowOne[s], "TagID", StringComparison.OrdinalIgnoreCase)) { TagidIndex = s; } else if (string.Equals(rowOne[s], "WeChatUserID", StringComparison.OrdinalIgnoreCase)) { WeChatUserIDIndex = s; } } //循环其他行去把对应下标的数据封装成TagImport对象 for (int x = 1; x < sArray.Length; x++) { string[] rowX = sArray[x].Split(','); string tagid = rowX[TagidIndex]; string WeChatUserID = rowX[WeChatUserIDIndex]; TagImport tagimport = null; //确认dics是否有tagid 有add,没有就新建对象 if (dics.ContainsKey(tagid)) { tagimport = dics[tagid]; tagimport.userlist.Add(WeChatUserID); } else { tagimport = new TagImport(); tagimport.tagid = tagid; tagimport.userlist = new List <string>(); tagimport.userlist.Add(WeChatUserID); tagimport.partylist = new List <int>(); dics.Add(tagid, tagimport); } } //返回invalidlist AddTagMemberResult addResult = new AddTagMemberResult(); //先根据tagid去取当前tagid的userlist再删除掉成员 foreach (var b in dics.Keys) { var lstTagUser = MailListApi.GetTagMember(accessToken, int.Parse(b)).userlist; if (lstTagUser == null || lstTagUser.Count <= 0) { break; } List <string> userList = new List <string>(); lstTagUser.ForEach(a => { userList.Add(a.userid); }); MailListApi.DelTagMember(accessToken, int.Parse(b), userList.ToArray(), null); } //封装完后循环dics,序列化后调用API的接口Post过去 foreach (var a in dics) { var strs = string.Join(",", a.Value.userlist.ToArray()); List <string> lst = new List <string>(); GetStr(strs, lst); foreach (var b in lst) { addResult = MailListApi.AddTagMember( accessToken, int.Parse(a.Key), b.Split(',') ); if (!string.IsNullOrEmpty(addResult.invalidlist)) { invalidList = invalidList + '|' + addResult.invalidlist; } } } dic.Add(objFile.FileName, objFile.InputStream); } return(invalidList); }
private static GetTagMemberResult GetTagMembers(int tagId, int appId) { //return _cacheManager.Get("SmartphoneMenuPermissionManager.Tagmember", () => MailListApi.GetTagMember(GetToken(), int.Parse(tagId))); return(MailListApi.GetTagMember(WeChatCommonService.GetWeiXinToken(appId), tagId)); }
public JsonResult GetDepartmentByTag(int tagId) { var departments = MailListApi.GetTagMember(GetToken(), tagId).partylist; return(Json(departments)); }
private string ImportToTag() { var dic = new Dictionary <string, Stream>(); var dics = new Dictionary <string, TagImport>(); //获取accesstoken string accessToken = GetToken(); string invalidList = string.Empty; for (int i = 0; i < Request.Files.Count; i++) { HttpPostedFileBase objFile = Request.Files[i]; if (objFile != null) { var f = new byte[objFile.InputStream.Length]; //将csv文件一次性读出来 objFile.InputStream.Read(f, 0, (int)objFile.InputStream.Length); //定义数据格式UTF-8 string str = System.Text.Encoding.GetEncoding("UTF-8").GetString(f); //获取第一行数据然后取两列数据lillyID,TagID string[] sArray = str.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); string[] rowOne = sArray[0].Split(','); int tagidIndex = 0, lillyIdIndex = 0; //循环判断返回数组对应列下标 for (int s = 0; s < rowOne.Length; s++) { if (string.Equals(rowOne[s], "TagID", StringComparison.OrdinalIgnoreCase)) { tagidIndex = s; } else if (string.Equals(rowOne[s], "LillyID", StringComparison.OrdinalIgnoreCase)) { lillyIdIndex = s; } } //循环其他行去把对应下标的数据封装成TagImport对象 for (int x = 1; x < sArray.Length; x++) { string[] rowX = sArray[x].Split(','); string tagid = rowX[tagidIndex]; string lillyid = rowX[lillyIdIndex] == null ? rowX[lillyIdIndex] : rowX[lillyIdIndex].Trim(); TagImport tagimport = null; //确认dics是否有tagid 有add,没有就新建对象 if (dics.ContainsKey(tagid)) { tagimport = dics[tagid]; tagimport.userlist.Add(lillyid); } else { tagimport = new TagImport { tagid = tagid, userlist = new List <string> { lillyid }, partylist = new List <int>() }; dics.Add(tagid, tagimport); } } } //返回invalidlist var addResult = new AddTagMemberResult(); //先根据tagid去取当前tagid的userlist再删除掉成员 foreach (var b in dics.Keys) { var lstTagUser = MailListApi.GetTagMember(accessToken, int.Parse(b)).userlist; if (lstTagUser == null || lstTagUser.Count <= 0) { break; } var userList = new List <string>(); lstTagUser.ForEach(a => userList.Add(a.userid)); MailListApi.DelTagMember(accessToken, int.Parse(b), userList.ToArray()); } //封装完后循环dics,序列化后调用API的接口Post过去 foreach (var a in dics) { var strs = string.Join(",", a.Value.userlist.ToArray()); var lst = new List <string>(); GetStr(strs, lst); foreach (var b in lst) { try { addResult = MailListApi.AddTagMember( accessToken, int.Parse(a.Key), b.Split(',') ); } catch (ErrorJsonResultException e) { //WeChatCommonService.lstUser. var invalidUsers = b.Split(',').Distinct().Where(x => WeChatCommonService.lstUser.All(y => y.userid != x)).ToList(); invalidUsers.Add(invalidList); invalidList = string.Join("|", invalidUsers); } if (!string.IsNullOrEmpty(addResult.invalidlist)) { invalidList = invalidList + '|' + addResult.invalidlist; } } } if (objFile != null) { dic.Add(objFile.FileName, objFile.InputStream); } } if (invalidList.StartsWith("|")) { invalidList.Remove(0, 1); } if (invalidList.EndsWith("|")) { invalidList.Remove(invalidList.Length - 1, 1); } return(invalidList); }
/// <summary> /// 更新标签 /// </summary> /// <param name="QyID"></param> private void ReFreshTag(string QyID) { GetTagListResult result = null; try { result = MailListApi.GetTagList(GetAccessToken(QyID)); } catch (Exception ex) { LogWriter.Error(ex, string.Format("获取QyID为{0}的标签失败", QyID)); result = MailListApi.GetTagList(GetAccessToken(QyID, true)); } if (result.errcode != ReturnCode_QY.请求成功) { LogWriter.Info(string.Format("获取QyID为{0}的标签失败,原因:{1}", QyID, result.errmsg)); throw new Exception(string.Format("获取QyID为{0}的标签失败,原因:{1}", QyID, result.errmsg)); } var oldtags = entities.Set <QyTags>().Where(c => c.QyID == QyID).ToList(); var users = entities.Set <QyUser>().Where(c => c.QyID == QyID).ToList(); var departs = entities.Set <QyDepart>().Where(c => c.QyID == QyID).ToList(); for (int i = 0; i < users.Count(); i++) { users[i].TagIDs = ""; } for (int i = 0; i < departs.Count(); i++) { departs[i].TagIDs = ""; } //新增 foreach (var add in result.taglist.Where(c => !oldtags.Select(d => d.TagID).Contains(c.tagid))) { QyTags qt = new QyTags(); qt.ID = FormulaHelper.CreateGuid(); qt.QyID = QyID; qt.TagID = add.tagid; qt.Name = add.tagname; entities.Set <QyTags>().Add(qt); GetTagMemberResult addresult = null; try { addresult = MailListApi.GetTagMember(GetAccessToken(QyID), int.Parse(add.tagid)); } catch (Exception ex) { LogWriter.Error(ex, string.Format("获取QyID为{0}的标签成员失败", QyID)); addresult = MailListApi.GetTagMember(GetAccessToken(QyID, true), int.Parse(add.tagid)); } if (addresult.errcode != ReturnCode_QY.请求成功) { LogWriter.Info(string.Format("获取QyID为{0}的标签成员失败,原因:{1}", QyID, result.errmsg)); throw new Exception(string.Format("获取QyID为{0}的标签成员失败,原因:{1}", QyID, result.errmsg)); } if (addresult.userlist != null) { var tagusers = users.Where(c => addresult.userlist.Select(d => d.userid).Contains(c.UserID)).ToList(); for (int i = 0; i < tagusers.Count(); i++) { tagusers[i].TagIDs += tagusers[i].TagIDs == "" ? qt.ID : ("," + qt.ID); } } if (addresult.partylist != null) { var tagdeparts = departs.Where(c => addresult.partylist.Contains(c.DepartID.Value)).ToList(); for (int i = 0; i < tagdeparts.Count(); i++) { tagdeparts[i].TagIDs += tagdeparts[i].TagIDs == "" ? qt.ID : ("," + qt.ID); } } } //修改 foreach (var update in oldtags.Where(c => result.taglist.Select(d => d.tagid).Contains(c.TagID))) { var item = result.taglist.Where(c => c.tagid == update.TagID).FirstOrDefault(); update.TagID = item.tagid; update.Name = item.tagname; GetTagMemberResult updateresult = null; try { updateresult = MailListApi.GetTagMember(GetAccessToken(QyID), int.Parse(item.tagid)); } catch (Exception ex) { LogWriter.Error(ex, string.Format("获取QyID为{0}的标签成员失败", QyID)); updateresult = MailListApi.GetTagMember(GetAccessToken(QyID, true), int.Parse(item.tagid)); } if (updateresult.errcode != ReturnCode_QY.请求成功) { LogWriter.Info(string.Format("获取QyID为{0}的标签成员失败,原因:{1}", QyID, result.errmsg)); throw new Exception(string.Format("获取QyID为{0}的标签成员失败,原因:{1}", QyID, result.errmsg)); } if (updateresult.userlist != null) { var tagusers = users.Where(c => updateresult.userlist.Select(d => d.userid).Contains(c.UserID)).ToList(); for (int i = 0; i < tagusers.Count(); i++) { tagusers[i].TagIDs += tagusers[i].TagIDs == "" ? update.ID : ("," + update.ID); } } if (updateresult.partylist != null) { var tagdeparts = departs.Where(c => updateresult.partylist.Contains(c.DepartID.Value)).ToList(); for (int i = 0; i < tagdeparts.Count(); i++) { tagdeparts[i].TagIDs += tagdeparts[i].TagIDs == "" ? update.ID : ("," + update.ID); } } } //删除 foreach (var delete in oldtags.Where(c => !result.taglist.Select(d => d.tagid).Contains(c.TagID))) { var relateusers = entities.Set <QyUser>().Where(c => c.TagIDs.Contains(delete.ID)).ToList(); for (int i = 0; i < relateusers.Count(); i++) { var oldchildtags = relateusers[i].TagIDs.Split(',').ToList(); oldchildtags.Remove(delete.ID); relateusers[i].TagIDs = string.Join(",", oldchildtags); } entities.Set <QyTags>().Remove(delete); } entities.SaveChanges(); }
public ActionResult GetUserInfo() { string accessToken = GetToken(); var tags = MailListApi.GetTagList(accessToken).taglist; var empDetails = MailListApi.GetDepartmentMemberInfo(accessToken, 1, 1, 0); // 更新这些人的tag为N foreach (var e in empDetails.userlist) { e.tags = new Dictionary <string, string>(); foreach (var t in tags) { e.tags[t.tagid] = "N"; } } // 获取部门列表 var departments = MailListApi.GetDepartmentList(accessToken); // 处理部门关系,暂定只有5层 foreach (var dept in departments.department) { int level = 1; int parentId = dept.parentid; while (parentId != 0) { var parentDept = departments.department.Where(t => t.id == parentId).FirstOrDefault(); if (parentDept != null) { level++; parentId = parentDept.parentid; } } dept.level = level; } // 更新员工信息,把部门的名称填入 foreach (var emp in empDetails.userlist) { // 如果有多个部门的话,只列出其中一个部门。 if (emp.department.Count() >= 1) { var dept = departments.department.Where(t => t.id == emp.department[0]).FirstOrDefault(); if (dept != null) { int level = dept.level; while (level > 1) { emp.deptLvs[level] = dept.name; dept = departments.department.Where(t => t.id == dept.parentid).FirstOrDefault(); level--; } } if (emp.department.Count() > 1) { emp.name += "*"; } } } // 获取每个标签里的人 foreach (var tagitem in tags) { var tagInfo = MailListApi.GetTagMember(accessToken, int.Parse(tagitem.tagid)); var tagUsers = tagInfo.userlist; //tagInfo.partylist; var departList = WeChatCommonService.GetSubDepartments(tagInfo.partylist).ToList(); foreach (var u in tagUsers) { var employee = empDetails.userlist.FirstOrDefault(a => a.userid == u.userid); if (employee != null) { employee.tags[tagitem.tagid] = "Y"; } } // var u1 = u; var usersUnderCurrentDepartment = WeChatCommonService.lstUserWithDeptTag.AsParallel() .Where(x => x.department.Any(y => departList.Any(id => id.id == y))).Select(x => x.userid).ToList(); var tagitem1 = tagitem; //var user = empDetails.userlist.AsParallel() // .FirstOrDefault(x => x.tags[tagitem1.tagid] == "N" && usersUnderCurrentDepartment.Any(y => y == x.userid)); //if (user != null) //{ // user.tags[tagitem.tagid] = "Y"; //} Parallel.ForEach(empDetails.userlist, userItem => { if (userItem.tags[tagitem1.tagid] == "N" && usersUnderCurrentDepartment.Any(y => y == userItem.userid)) { userItem.tags[tagitem1.tagid] = "Y"; } }); //if (userWithDept != null) //{ // if (userWithDept.department.Any(x => departList.Any(y => x == y.id))) // { // // employee.tags[tagitem.tagid] = "Y"; // } //} } return(ExportToCSV(empDetails.userlist, tags)); }
/// <summary> /// Get the wechat users and save to database. /// </summary> /// <returns></returns> public static bool GetWechatUserToDB() { string token = AccessTokenContainer.TryGetToken(corpID, corpSecret); WechatContext context = new WechatContext(); //todo: 清空现有用户数据 //获取微信企业号内的用户架构信息 Dictionary <string, List <Tag> > _userTags = new Dictionary <string, List <Tag> >(); Dictionary <int, List <Tag> > _partyTags = new Dictionary <int, List <Tag> >(); Dictionary <string, User> Users = new Dictionary <string, User>(); //查找所有Tag并插入数据库 GetTagListResult tagList = MailListApi.GetTagList(token); if (tagList != null && tagList.taglist != null && tagList.taglist.Count > 0) { foreach (var tag in tagList.taglist) { int tagId = -1; if (Int32.TryParse(tag.tagid, out tagId)) { Tag tempTag = new Tag() { TagId = tagId, TagName = tag.tagname }; GetTagMemberResult tagMemberResult = MailListApi.GetTagMember(token, tagId); if (tagMemberResult != null && tagMemberResult.partylist != null && tagMemberResult.partylist.Length > 0) { foreach (int party in tagMemberResult.partylist) { if (!_partyTags.ContainsKey(party)) { _partyTags[party] = new List <Tag>(); } _partyTags[party].Add(tempTag); } } if (tagMemberResult != null && tagMemberResult.userlist != null && tagMemberResult.userlist.Count > 0) { foreach (var tagUser in tagMemberResult.userlist) { if (!_userTags.ContainsKey(tagUser.userid)) { _userTags[tagUser.userid] = new List <Tag>(); } _userTags[tagUser.userid].Add(tempTag); } } context.Tags.Add(tempTag); } } context.SaveChanges(); } //查找所有部门并插入数据库 GetDepartmentListResult departmentList = MailListApi.GetDepartmentList(token); if (departmentList != null && departmentList.department != null) { foreach (var party in departmentList.department) { var tempParty = new Party() { PartyId = party.id, Name = party.name, Order = party.order, ParentPartyId = party.parentid }; //此处需要查询所有的Tag保存到库中 if (_partyTags.ContainsKey(party.id)) { tempParty.PartyTags = _partyTags[party.id].Select(f => new PartyTag() { PartyId = tempParty.PartyId, TagId = f.TagId }).ToList(); } //根据部门查找所有用户并存入缓存 GetDepartmentMemberInfoResult memberInfos = MailListApi.GetDepartmentMemberInfo(token, party.id, 1, 0); if (memberInfos != null && memberInfos.userlist != null && memberInfos.userlist.Count > 0) { foreach (var member in memberInfos.userlist) { if (!Users.ContainsKey(member.userid)) { Users[member.userid] = new User() { Avatar = member.avatar, Email = member.email, Gender = member.gender, Mobile = member.mobile, Name = member.name, Position = member.position, Status = member.status, UserId = member.userid, Weixinid = member.weixinid, UserTags = (_userTags.ContainsKey(member.userid) && _userTags[member.userid].Count > 0) ? _userTags[member.userid].Select(f => new UserTag() { UserId = member.userid, TagId = f.TagId }).ToList() : null }; } Users[member.userid].UserPartys.Add(new UserParty() { PartyId = tempParty.PartyId, UserId = member.userid }); } } context.Partys.Add(tempParty); } context.SaveChanges(); } if (Users != null && Users.Count > 0) { foreach (var user in Users.Values) { context.Users.Add(user); } context.SaveChanges(); } return(true); }