public override void PrepareEditData() { //修改tag数据源 由于是公共的发消息 没选APP之前不知道应用的allow_tags 取全部tag string accessToken = WeChatCommonService.GetWeiXinToken(AppId); var tagList = MailListApi.GetTagList(accessToken).taglist; ViewBag.taglist = tagList; }
public static List <TagItem> GetTagListByAccountManageID(int accountManageId) { var config = WeChatCommonService.lstSysWeChatConfig.Find(a => a.AccountManageId == accountManageId); var token = AccessTokenContainer.TryGetToken(config.WeixinCorpId, config.WeixinCorpSecret); var tagList = MailListApi.GetTagList(token).taglist; return(tagList); }
/// <summary> /// tag信息列表情报获得 /// </summary> /// <param name="appId">appid</param> /// <returns>tag列表</returns> private List <TagItem> PrepareEditData(int appId) { var Config = WeChatCommonService.GetWeChatConfig(appId); string accessToken = AccessTokenContainer.TryGetToken(Config.WeixinCorpId, Config.WeixinCorpSecret); var tagList = MailListApi.GetTagList(accessToken).taglist; return(tagList); }
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)); }
public GetTagListResult WX_GetTagList() { GetTagListResult Ret = new GetTagListResult(); if (Qyinfo.IsUseWX == "Y") { Ret = MailListApi.GetTagList(GetToken()); } return(Ret); }
public override ActionResult Index() { string accessToken = GetToken(); var tagList = MailListApi.GetTagList(accessToken).taglist.OrderBy(a => a.tagname).ToList(); ViewBag.taglist = tagList; //ViewBag.Departments = WeChatCommonService.lstDepartment.ToArray(); return(View()); }
public virtual void PrepareEditData() { string accessToken = WeChatCommonService.GetWeiXinToken(AppId); //修改tag数据源 先根据AppId获取应用信息 allowTag Pending var app = AppApi.GetAppInfo(accessToken, AppId); GetAppInfo_AllowTags allowTags = app.allow_tags; var tagList = MailListApi.GetTagList(accessToken).taglist;//.Where(x=> allowTags.tagid.Contains(int.Parse(x.tagid))).ToList() ViewBag.taglist = tagList; }
public static List <TagItem> lstTag(int AccountManageId) { var lst = cacheManager.Get <List <TagItem> >("TagItem", () => { var Config = WeChatCommonService.lstSysWeChatConfig.FirstOrDefault(a => a.AccountManageId == AccountManageId); string accessToken = AccessTokenContainer.TryGetToken(Config.WeixinCorpId, Config.WeixinCorpSecret); var tagList = MailListApi.GetTagList(accessToken).taglist; return(tagList); }); return(lst); }
public static Dictionary <int, List <Tuple <string, string> > > lstDepartmentTagMap(int AccountManageId) { var lst = cacheManager.Get <Dictionary <int, List <Tuple <string, string> > > >("TagDepartmentMap" + AccountManageId, () => { var Config = WeChatCommonService.lstSysWeChatConfig.FirstOrDefault(a => a.AccountManageId == AccountManageId); string accessToken = AccessTokenContainer.TryGetToken(Config.WeixinCorpId, Config.WeixinCorpSecret); var tagList = MailListApi.GetTagList(accessToken).taglist; var departmentList = lstDepartment(AccountManageId); var result = new Dictionary <int, List <Tuple <string, string> > >(); foreach (var tag in tagList) { string token = AccessTokenContainer.TryGetToken(Config.WeixinCorpId, Config.WeixinCorpSecret); var ret = GetTagById(AccountManageId, int.Parse(tag.tagid));// MailListApi.GetTagMember(token, int.Parse(tag.tagid)); if (ret.partylist != null) { foreach (var pId in ret.partylist) { var department = departmentList.Where(p => p.id == pId).FirstOrDefault(); if (department != null) { var ids = GetAllSubDepartmentIds(pId, departmentList); ids.Add(pId); ids.ForEach(i => { if (result.Keys.Contains(i)) { result[i].Add(new Tuple <string, string>(tag.tagid, tag.tagname)); } else { result.Add(i, new List <Tuple <string, string> >() { new Tuple <string, string>(tag.tagid, tag.tagname) }); } }); } } } } return(result); }); return(lst); }
//public SysWechatConfig GetAppSysWechatConfig(string appId) { // return lstSysWeChatConfig.Find(a => a.WeixinAppId == appId); //} public List <PersonGroup> GetAllPersonAndGroup(string appId, 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 results = AppApi.GetAppInfo(token, int.Parse(appInfo.WeixinAppId)); List <PersonGroup> list = new List <PersonGroup>(); if (results.allow_userinfos != null) { foreach (var person in results.allow_userinfos.user) { PersonGroup personGroup = new PersonGroup(); personGroup.Type = "Person"; var p = MailListApi.GetMember(token, person.userid); personGroup.WeixinName = p.name; personGroup.WeixinId = p.userid; personGroup.Avatar = p.avatar; list.Add(personGroup); } } if (results.allow_partys != null) { foreach (var groupId in results.allow_partys.partyid) { PersonGroup personGroup = new PersonGroup(); personGroup.Type = "Group"; var d = MailListApi.GetDepartmentList(token, groupId).department.FirstOrDefault(); if (d != null) { personGroup.WeixinName = d.name; personGroup.WeixinId = d.id.ToString(); list.Add(personGroup); } } } if (results.allow_tags != null) { var allTagList = MailListApi.GetTagList(token).taglist; foreach (var groupId in results.allow_tags.tagid) //foreach (var tag in allTagList) { PersonGroup personGroup = new PersonGroup(); personGroup.Type = "Tag"; var tag = allTagList.Find(a => a.tagid == groupId.ToString()); if (tag != null) { personGroup.WeixinName = tag.tagname; personGroup.WeixinId = tag.tagid; list.Add(personGroup); } } } return(list); }
private static GetTagListResult GetTagList(int appId) { return(_cacheManager.Get("SmartphoneMenuPermissionManager.tagList", () => MailListApi.GetTagList(WeChatCommonService.GetWeiXinToken(appId)))); }
/// <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); }