コード例 #1
0
        public override void PrepareEditData()
        {
            //修改tag数据源 由于是公共的发消息 没选APP之前不知道应用的allow_tags 取全部tag
            string accessToken = WeChatCommonService.GetWeiXinToken(AppId);
            var    tagList     = MailListApi.GetTagList(accessToken).taglist;

            ViewBag.taglist = tagList;
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
 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));
 }
コード例 #5
0
ファイル: WXHelp.cs プロジェクト: jaysue/zyweb
        public GetTagListResult WX_GetTagList()
        {
            GetTagListResult Ret = new GetTagListResult();

            if (Qyinfo.IsUseWX == "Y")
            {
                Ret = MailListApi.GetTagList(GetToken());
            }
            return(Ret);
        }
コード例 #6
0
        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());
        }
コード例 #7
0
        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;
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        //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);
        }
コード例 #11
0
 private static GetTagListResult GetTagList(int appId)
 {
     return(_cacheManager.Get("SmartphoneMenuPermissionManager.tagList", () => MailListApi.GetTagList(WeChatCommonService.GetWeiXinToken(appId))));
 }
コード例 #12
0
ファイル: WxFO.cs プロジェクト: Luyingjin/Qy
        /// <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();
        }
コード例 #13
0
        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));
        }
コード例 #14
0
        /// <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);
        }