/// <summary> /// 微信关注数据追加 /// </summary> private static void InsertWechatFollowReport(int AccountManageID) { var objConfig = WeChatCommonService.GetWeChatConfigByID(AccountManageID); string strToken = AccessTokenContainer.TryGetToken(objConfig.WeixinCorpId, objConfig.WeixinCorpSecret); var departmentList = MailListApi.GetDepartmentMemberInfo(strToken, 1, 1, 0); //关注用户列表 var followerList = departmentList.userlist.Where(a => a.status == 1).ToList(); //为关注用户列表 var unFollowerList = departmentList.userlist.Where(a => a.status == 4).ToList(); DateTime dtNow = DateTime.Now; WechatFollowReport wechatFollowReport = new WechatFollowReport() { StatisticsDate = Convert.ToDateTime(dtNow.AddDays(-1).ToString("yyyy-MM-dd")), FollowCount = followerList.Count, UnFollowCount = unFollowerList.Count, CreatedDate = dtNow }; BaseService <WechatFollowReport> ser = new BaseService <WechatFollowReport>(); ser.Repository.Insert(wechatFollowReport); }
/// <summary> /// 根据部门获取该部门下所有的Member /// </summary> /// <param name="DepPKID">部门在数据库的主键ID</param> /// <returns></returns> public static List <QYMemberBL> GetMemberAllByDep(QYDepartmentBL department) { List <string> l = GetAllDepID(department); QYMemberDA MembertDA = new QYMemberDA(); List <QYMemberBL> members = MembertDA.TableToEntity <QYMemberBL>(MembertDA.GetMemberByDepPKIDs(l)); if (members.Count > 0) { QYConfig.RegistWX(); var accessToken = AccessTokenContainer.GetToken(QYConfig.CorpId); var mlist = MailListApi.GetDepartmentMemberInfo(accessToken, int.Parse(members.First().DepartMent.DepartmentID), 1, 0).userlist; GetMemberResult item; for (int i = 0; i < members.Count; i++) { item = mlist.Find(p => p.userid == members[i].UserId); if (item != null) { if (item.status.ToString() != members[i].Status || item.avatar != members[i].Avatar) { members[i].Status = item.status.ToString(); members[i].Avatar = item.avatar; string errMsg = ""; members[i].UpdateMember("1", ref errMsg); } } } } return(members); }
public List <GetMemberResult> GetListData(int iPage, int iCount, ref int iTotal) { string strID = Request["DeptId"]; //Defect #14487 bug修正 string strSearchCondition = Request["SearchCondition"]; if (!string.IsNullOrEmpty(strID)) { var lst = MailListApi.GetDepartmentMemberInfo(GetToken(), int.Parse(strID), 1, 0).userlist;//递归的去取子部门下面的成员 if (!string.IsNullOrEmpty(strSearchCondition)) { // Defect#15596修正&性能改善 strSearchCondition = strSearchCondition.Trim().ToLower(); lst = lst.Where(x => x.userid.ToLower().Contains(strSearchCondition) || (x.email != null && x.email.ToLower().Contains(strSearchCondition)) || x.name.ToLower().Contains(strSearchCondition)).ToList(); } iTotal = lst.Count(); return(lst.Skip((iPage - 1) * iCount).Take(iCount).ToList()); } return(null); }
public void GetDepartmentMemberInfoTest() { var appKeyOrAccessToken = ""; var result = MailListApi.GetDepartmentMemberInfo(appKeyOrAccessToken, 1, 1 /*, Int32.MaxValue*/); Assert.IsNotNull(result); }
public WorkJsonResult GetDepartmentMemberInfo(GetDepartmentMemberInfoDto dto) { //dto.AccessToken = GetAccessToken(QyConfig.CorpID, QyConfig.CorpSecret); var result = MailListApi.GetDepartmentMemberInfo(dto.AccessToken, dto.DepartmentId, dto.FetchChild); return(result); }
//[TestMethod] public void GetDepartmentMemberInfoTest() { var accessToken = AccessTokenContainer.GetToken(_corpId, base._corpSecret); var result = MailListApi.GetDepartmentMemberInfo(accessToken, 2, 0, 0); Assert.IsNotNull(result); Assert.IsTrue(result.errcode == ReturnCode_Work.请求成功); }
public List <GetMemberResult> GetAllMembers(string appId, int AccountManageID) { var appInfo = lstSysWeChatConfig.SingleOrDefault(a => a.AccountManageId == AccountManageID); var token = CommonApi.GetToken(appInfo.WeixinCorpId, appInfo.WeixinCorpSecret); var members = MailListApi.GetDepartmentMemberInfo(token.access_token, 7, 1, 0); return(members.userlist); }
public GetDepartmentMemberInfoResult WX_GetDepartmentMemberInfo(int depid) { GetDepartmentMemberInfoResult Ret = new GetDepartmentMemberInfoResult(); if (Qyinfo.IsUseWX == "Y") { Ret = MailListApi.GetDepartmentMemberInfo(GetToken(), depid, 1); } return(Ret); }
//将所有成员列表加入到缓存中去 public static List <GetMemberResult> lstUser(int AccountManageId) { var lst = cacheManager.Get <List <GetMemberResult> >("UserItem" + AccountManageId, () => { var Config = WeChatCommonService.lstSysWeChatConfig.FirstOrDefault(a => a.AccountManageId == AccountManageId); string accessToken = AccessTokenContainer.TryGetToken(Config.WeixinCorpId, Config.WeixinCorpSecret); var userlist = MailListApi.GetDepartmentMemberInfo(accessToken, 1, 1, 0).userlist; return(userlist); }); return(lst); }
public List <WorkUser> GetDepartmentMemberInfo(long depId, int isAll = 0) { var reModel = MailListApi.GetDepartmentMemberInfo(workSetting.Value.ContactsAccessTokenKey, depId, isAll); return(reModel.userlist.Select(s => new WorkUser { Avatar = s.avatar, Name = s.name, Mobile = s.mobile, UserID = s.userid, Gender = s.gender, DepartmentIds = string.Join(",", s.department) }).ToList()); }
/// <summary> /// 当前用户是否在指定部门 /// </summary> /// <param name="deptName">部门名称,可以是子部门</param> /// <returns>true|false</returns> public bool IsInDept(string deptName, WorkOption option) { if(string.IsNullOrEmpty(option.AccessToken)) option.AccessToken = AccessTokenContainer.TryGetToken(option.CorpId, option.Secret); GetDepartmentMemberInfoResult membersinfo = MailListApi.GetDepartmentMemberInfo(option.AccessToken, 1, 1); GetMemberResult user = membersinfo.userlist.FirstOrDefault(m => m.name == CurrentUser); GetDepartmentListResult depts = MailListApi.GetDepartmentList(option.AccessToken); long landDeptId = depts.department.First(d => d.name == deptName).id; foreach (var deptId in user.department) { if (deptId == landDeptId) return true; } return false; }
private static void Init() { //var token = CommonApi.GetToken(WeixinWorkOptions.CorpId, WeixinWorkOptions.ContactsSecret); var token = AccessTokenContainer.TryGetToken(WeixinWorkOptions.CorpId, WeixinWorkOptions.Secret); var result = MailListApi.GetDepartmentMemberInfo(token, 1, 1); if (result.errcode != Senparc.Weixin.ReturnCode_Work.请求成功) { throw new Exception("部门列表接口获取失败"); } else { _members = result.userlist; } }
private List <GetMemberResult> Init() { var token = AccessTokenContainer.TryGetToken(WeixinWorkOptions.CorpId, WeixinWorkOptions.Secret); var result = MailListApi.GetDepartmentMemberInfo(token, 1, 1); if (result.errcode != Senparc.Weixin.ReturnCode_Work.请求成功) { throw new Exception("用户列表接口获取失败"); } else { _cacheHelper.Set("WeixinUsers", result.userlist); return(result.userlist); } }
/// <summary> /// 获取部门成员(详情) /// </summary> /// <param name="departmentId">获取的部门id</param> /// <param name="fetchChild">1/0:是否递归获取子部门下面的成员</param> /// <param name="status">0获取全部成员,1获取已关注成员列表,2获取禁用成员列表,4获取未关注成员列表。status可叠加,未填写则默认为4</param> /// <returns></returns> public static GetDepartmentMemberInfoResult GetDepartmentMemberInfo(int departmentId, int fetchChild, int status) { AccessTokenResult access_token_result = new AccessTokenResult(); QYConfigInfo config = GetQYConfig(); access_token_result = CommonApi.GetToken(config.QYCorpId, config.QYSecret); //调用接口 var result = MailListApi.GetDepartmentMemberInfo(access_token_result.access_token, departmentId, fetchChild, status); if (result.errmsg == "ok") { return(result); } else { return(null); } }
public List <PersonGroup> GetAllVisibleByGroup(string appId, string groupId, int accountManageId) { var id = int.Parse(appId); SysWechatConfig appInfo = null; if (id == 0) { appInfo = lstSysWeChatConfig.FirstOrDefault(a => a.AccountManageId == accountManageId); } else { appInfo = lstSysWeChatConfig.SingleOrDefault(a => a.Id == id && a.AccountManageId == accountManageId); } string token = (appInfo.IsCorp != null && !appInfo.IsCorp.Value) ? Innocellence.Weixin.MP.CommonAPIs.AccessTokenContainer.GetToken(appInfo.WeixinCorpId, appInfo.WeixinCorpSecret) : Innocellence.Weixin.QY.CommonAPIs.AccessTokenContainer.TryGetToken(appInfo.WeixinCorpId, appInfo.WeixinCorpSecret); var allDeptList = MailListApi.GetDepartmentList(token).department; var subDepts = allDeptList.Where(a => a.parentid == Int32.Parse(groupId)); List <PersonGroup> list = new List <PersonGroup>(); foreach (var dept in subDepts) { PersonGroup person = new PersonGroup(); person.WeixinId = dept.id.ToString(); person.WeixinName = dept.name; person.Type = "Group"; list.Add(person); } var members = MailListApi.GetDepartmentMemberInfo(token, Int32.Parse(groupId), 0, 1); foreach (var member in members.userlist) { PersonGroup person = new PersonGroup(); person.WeixinId = member.userid; person.WeixinName = member.name; person.Avatar = member.avatar; person.Type = "Person"; list.Add(person); } return(list); }
/// <summary> /// 获取部门成员 /// </summary> /// <param name="QyID">企业ID</param> /// <param name="departmentId">获取的部门id</param> /// <param name="fetchChild">1/0:是否递归获取子部门下面的成员</param> /// <param name="status">0获取全部员工,1获取已关注成员列表,2获取禁用成员列表,4获取未关注成员列表。status可叠加</param> /// <returns></returns> public GetDepartmentMemberInfoResult GetUserList(string QyID, int departmentId, int fetchChild, int status) { GetDepartmentMemberInfoResult result = null; try { result = MailListApi.GetDepartmentMemberInfo(GetAccessToken(QyID), departmentId, fetchChild, status); } catch (Exception ex) { LogWriter.Error(ex, string.Format("获取QyID为{0}的部门成员失败", QyID)); result = MailListApi.GetDepartmentMemberInfo(GetAccessToken(QyID, true), departmentId, fetchChild, status); } if (result.errcode != ReturnCode_QY.请求成功) { LogWriter.Info(string.Format("获取QyID为{0}的部门成员失败,原因:{1}", QyID, result.errmsg)); } return(result); }
public static void DownloadDatafromWX() { QYConfig.RegistWX(); var accessToken = AccessTokenContainer.GetToken(QYConfig.CorpId); var result = MailListApi.GetDepartmentList(accessToken); for (int i = 0; i < result.department.Count; i++) { DepartmentDA.AddDepartment(result.department[i].id.ToString(), result.department[i].parentid.ToString(), result.department[i].name, "1", "1"); } QYDepartmentBL d = GetAllDepartments(); var l = MailListApi.GetDepartmentMemberInfo(accessToken, 1, 1, 0); for (int i = 0; i < l.userlist.Count; i++) { QYMemberDA mda = new QYMemberDA(); QYDepartmentBL p = QYDepartmentBL.GetByWXID(l.userlist[i].department[0].ToString()); mda.AddMember(l.userlist[i].userid, l.userlist[i].name, l.userlist[i].position, l.userlist[i].mobile, l.userlist[i].email, l.userlist[i].weixinid, l.userlist[i].avatar, l.userlist[i].status.ToString(), "1", p.ID.ToString()); } }
public List <Member> GetMembers(string accessToken) { var result = MailListApi.GetDepartmentMemberInfo(accessToken, 1, 1, 0); if (result.errcode != ReturnCode_QY.请求成功) { throw new Exception(result.errcode.ToString()); } return(result.userlist.Select(x => new Member(x.userid, x.name, x.weixinid) { Department = new List <int>(x.department), Position = x.position, Gender = x.gender, Mobile = x.mobile, Email = x.email, Status = x.status, Avatar = x.avatar, Enable = x.status == 2 ? 0 : 1 }).ToList()); }
/// <summary> /// 获取部门成员 /// </summary> /// <param name="accessTokenOrAppKey">调用接口凭证(AccessToken)或AppKey(根据AccessTokenContainer.BuildingKey(corpId, corpSecret)方法获得)</param> /// <param name="departmentId">获取的部门id</param> /// <param name="fetchChild">1/0:是否递归获取子部门下面的成员</param> /// <param name="maxJsonLength">设置 JavaScriptSerializer 类接受的 JSON 字符串的最大长度</param> /// <remarks> /// 2016-04-16:Zeje添加参数maxJsonLength:企业号通讯录扩容后,存在Json长度不够的情况。 /// </remarks> /// <returns></returns> public static List <MemberResult> ListDepartmentMemberInfo(string accessTokenOrAppKey, long departmentId, int fetchChild, int?maxJsonLength = null) { var result = MailListApi.GetDepartmentMemberInfo(accessTokenOrAppKey, departmentId, fetchChild, maxJsonLength); return(result.ToDepartmentMemberInfoResult()); }
public GetDepartmentMemberInfoResult Get() { return MailListApi.GetDepartmentMemberInfo(option.AccessToken, 1, 1); }
/// <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); }
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)); }
public static List <EmployeeInfoWithDept> lstUserWithDeptTag(int AccountManageId) { var lst = cacheManager.Get <List <EmployeeInfoWithDept> >("UserWithDeptTagItem", () => { var Config = WeChatCommonService.lstSysWeChatConfig.FirstOrDefault(a => a.AccountManageId == AccountManageId); string accessToken = AccessTokenContainer.TryGetToken(Config.WeixinCorpId, Config.WeixinCorpSecret); var userlist = MailListApi.GetDepartmentMemberInfo(accessToken, 1, 1, 0).userlist; var userWithDeptTagList = new List <EmployeeInfoWithDept>(); var tags = lstTag(AccountManageId); // 取人 foreach (var getMemberResult in userlist) { userWithDeptTagList.Add(new EmployeeInfoWithDept() { avatar = getMemberResult.avatar, department = getMemberResult.department.ToList(), deptLvs = getMemberResult.deptLvs, email = getMemberResult.email, gender = getMemberResult.gender.ToString(), mobile = getMemberResult.mobile, name = getMemberResult.name, position = getMemberResult.position, status = getMemberResult.status, userid = getMemberResult.userid, weixinid = getMemberResult.weixinid }); } // 更新人的标签,默认为N foreach (var us in userWithDeptTagList) { us.tags = new Dictionary <string, string>(); foreach (var t in tags) { us.tags[t.tagid] = "N"; } } // 获取每个标签里的人,给人打标签 foreach (var tagitem in tags) { var tagUsers = GetTagMembers(int.Parse(tagitem.tagid), 0).userlist; foreach (var u in tagUsers) { var employee = userWithDeptTagList.FirstOrDefault(a => a.userid.ToUpper() == u.userid.ToUpper()); if (employee != null) { employee.tags[tagitem.tagid] = "Y"; } } } // 获取部门列表 var departments = lstDepartment(AccountManageId); // 处理部门关系,暂定只有5层 foreach (var dept in departments) { int level = 1; int parentId = dept.parentid; while (parentId != 0) { var parentDept = departments.FirstOrDefault(t => t.id == parentId); if (parentDept != null) { level++; parentId = parentDept.parentid; } } dept.level = level; } // 更新员工信息,把部门的名称填入 foreach (var emp in userWithDeptTagList) { // 如果有多个部门的话,只列出其中一个部门。 if (emp.department.Count() >= 1) { var dept = departments.FirstOrDefault(t => t.id == emp.department[0]); if (dept != null) { int level = dept.level; while (level > 1) { emp.deptLvs[level] = dept.name; dept = departments.FirstOrDefault(t => t.id == dept.parentid); level--; } } if (emp.department.Count() > 1) { emp.deptLvs[2] = "*" + emp.deptLvs[2]; } } } return(userWithDeptTagList); }); return(lst); }
private async Task <GetDepartmentMemberInfoResult> getEmployeesDetail(string token) { return(MailListApi.GetDepartmentMemberInfo(token, 1, 1, 0)); }
public ActionResult GetNewUserList(string tagname, string clientId) { if (!VerifyNewParam("tagname", clientId, _signCheckService)) { return(ErrMsg()); } GetTagMemberResult tagMemberResult = new GetTagMemberResult(); GetDepartmentMemberInfoResult departmentResult = new GetDepartmentMemberInfoResult(); 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 partyIds = tagMemberResult.partylist.ToList(); if (partyIds.Count > 0) { foreach (var item in partyIds) { departmentResult = MailListApi.GetDepartmentMemberInfo(strToken, item, 1, 0); if (departmentResult != null && departmentResult.userlist.Count > 0) { var dIds = departmentResult.userlist.Select(d => d.userid).ToList(); ids.AddRange(dIds); } } } 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)); } }
/// <summary> /// 更新用户 /// </summary> /// <param name="QyID"></param> private void ReFreshDepartUser(string QyID) { GetDepartmentMemberInfoResult result = null; try { result = MailListApi.GetDepartmentMemberInfo(GetAccessToken(QyID), 1, 1, 0); } catch (Exception ex) { LogWriter.Error(ex, string.Format("获取QyID为{0}的部门成员失败", QyID)); result = MailListApi.GetDepartmentMemberInfo(GetAccessToken(QyID, true), 1, 1, 0); } 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 oldusers = entities.Set <QyUser>().Where(c => c.QyID == QyID).ToList(); var depts = entities.Set <QyDepart>().Where(c => c.QyID == QyID).ToList(); //新增 foreach (var add in result.userlist.Where(c => !oldusers.Select(d => d.UserID).Contains(c.userid))) { QyUser qu = new QyUser(); qu.ID = FormulaHelper.CreateGuid(); qu.QyID = QyID; qu.UserID = add.userid; qu.UserName = add.name; qu.Position = add.position; qu.Mobile = add.mobile; qu.Gender = add.gender; qu.Email = add.email; qu.WeixinID = add.weixinid; qu.AvatarMediaid = add.avatar; qu.Status = add.status; qu.DepartIDs = add.department == null ? "" : string.Join(",", depts.Where(c => add.department.Contains(c.DepartID.Value)).Select(c => c.ID)); entities.Set <QyUser>().Add(qu); } //修改 foreach (var update in oldusers.Where(c => result.userlist.Select(d => d.userid).Contains(c.UserID))) { var item = result.userlist.Where(c => c.userid == update.UserID).FirstOrDefault(); update.UserName = item.name; update.Position = item.position; update.Mobile = item.mobile; update.Gender = item.gender; update.Email = item.email; update.WeixinID = item.weixinid; update.AvatarMediaid = item.avatar; update.Status = item.status; update.DepartIDs = item.department == null ? "" : string.Join(",", depts.Where(c => item.department.Contains(c.DepartID.Value)).Select(c => c.ID)); } //删除 foreach (var delete in oldusers.Where(c => !result.userlist.Select(d => d.userid).Contains(c.UserID))) { var relateexts = entities.Set <QyUserExt>().Where(c => c.UserID == delete.ID).ToList(); for (int i = 0; i < relateexts.Count(); i++) { entities.Set <QyUserExt>().Remove(relateexts[i]); } entities.Set <QyUser>().Remove(delete); } entities.SaveChanges(); }