Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #4
0
        public void GetDepartmentMemberInfoTest()
        {
            var appKeyOrAccessToken = "";
            var result = MailListApi.GetDepartmentMemberInfo(appKeyOrAccessToken, 1, 1 /*, Int32.MaxValue*/);

            Assert.IsNotNull(result);
        }
Beispiel #5
0
        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.请求成功);
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
        public GetDepartmentMemberInfoResult WX_GetDepartmentMemberInfo(int depid)
        {
            GetDepartmentMemberInfoResult Ret = new GetDepartmentMemberInfoResult();

            if (Qyinfo.IsUseWX == "Y")
            {
                Ret = MailListApi.GetDepartmentMemberInfo(GetToken(), depid, 1);
            }
            return(Ret);
        }
Beispiel #9
0
        //将所有成员列表加入到缓存中去
        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);
        }
Beispiel #10
0
        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;
 }
Beispiel #12
0
        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;
            }
        }
Beispiel #13
0
        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);
            }
        }
Beispiel #14
0
        /// <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);
            }
        }
Beispiel #15
0
        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);
        }
Beispiel #16
0
        /// <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);
        }
Beispiel #17
0
        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());
            }
        }
Beispiel #18
0
        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());
        }
Beispiel #19
0
        /// <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());
        }
Beispiel #20
0
 public GetDepartmentMemberInfoResult Get()
 {
     return MailListApi.GetDepartmentMemberInfo(option.AccessToken, 1, 1);
 }
Beispiel #21
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);
        }
        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));
        }
Beispiel #23
0
        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));
 }
Beispiel #25
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));
            }
        }
Beispiel #26
0
        /// <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();
        }