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));
 }
Ejemplo n.º 2
0
        //[TestMethod]
        public void GetTagMemberTest(int tagId)
        {
            var accessToken = AccessTokenContainer.GetToken(_corpId);
            var result      = MailListApi.GetTagMember(accessToken, tagId);

            Assert.IsNotNull(result);
            Assert.IsTrue(result.errcode == ReturnCode.请求成功);
        }
Ejemplo n.º 3
0
        public GetTagMemberResult WX_GetTagMember(int tagid)
        {
            GetTagMemberResult Ret = new GetTagMemberResult();

            if (Qyinfo.IsUseWX == "Y")
            {
                Ret = MailListApi.GetTagMember(GetToken(), tagid);
            }
            return(Ret);
        }
Ejemplo n.º 4
0
        public static GetTagMemberResult GetTagById(int AccountManageId, int tagId)
        {
            var lst = cacheManager.Get <GetTagMemberResult>("Tag_" + tagId, () =>
            {
                Logger.Debug("cache is empty, creating cache....");
                var Config   = WeChatCommonService.lstSysWeChatConfig.FirstOrDefault(a => a.AccountManageId == AccountManageId);
                var strToken = AccessTokenContainer.TryGetToken(Config.WeixinCorpId, Config.WeixinCorpSecret);
                var result   = MailListApi.GetTagMember(strToken, tagId);
                return(result);
            });

            return(lst);
        }
Ejemplo n.º 5
0
        public ActionResult GetNewUserList(string tagname, string clientId)
        {
            if (!VerifyNewParam("tagname", clientId, _signCheckService))
            {
                return(ErrMsg());
            }
            GetTagMemberResult tagMemberResult = new GetTagMemberResult();
            var strToken = GetToken();
            var tag      = WeChatCommonService.lstTag.FirstOrDefault(x => x.tagname == tagname);
            int tagid    = tag != null?Convert.ToInt32(tag.tagid) : 0;


            if (tagid != 0)
            {
                tagMemberResult = MailListApi.GetTagMember(strToken, tagid);
            }

            if (tagMemberResult != null && tagMemberResult.userlist != null)
            {
                var ids = tagMemberResult.userlist.Select(x => x.userid).ToList();

                var userInfo = WeChatCommonService.lstUser.Where(x => ids.Any(y => x.userid == y)).Select(x => new
                {
                    userid = x.userid,
                    name   = x.name,
                    avatar = x.avatar,
                    status = x.status,
                    email  = x.email
                }).ToList();

                var strJson1 = Newtonsoft.Json.JsonConvert.SerializeObject(new
                {
                    message = "",
                    success = true,
                    item    = new
                    {
                        userInfo
                    }
                });
                return(Content(strJson1, "application/json"));
            }
            else
            {
                return(Json(new
                {
                    message = "标签不存在或者标签中无成员!",
                    success = false
                }, JsonRequestBehavior.AllowGet));
            }
        }
Ejemplo n.º 6
0
        public int UpdateEmployee(LocalSADEntity entity)
        {
            var updateEmployee = Repository.Entities.Where(t => t.LilyId.ToUpper() == entity.LillyID.ToUpper()).FirstOrDefault();

            if (updateEmployee == null)
            {
                return(0);
            }

            updateEmployee.EmployeeTime = entity.ACTL_HIRE_DT;
            updateEmployee.BaseLocation = entity.BS_LCTN_GLBL;
            updateEmployee.Tag          = CommonService.GetSysConfig("TagNameNewEmployee", "");

            //过滤条件暂时删除
            //if (updateEmployee.EmployeeTime < DateTime.Now.AddMonths(-6).Date)
            //{
            //    return 0;
            //}

            if (!string.IsNullOrEmpty(updateEmployee.Tag))
            {
                var taglist = WeChatCommonService.lstTag.Where(x => x.tagname == updateEmployee.Tag);
                int tagid   = taglist.FirstOrDefault() != null?Convert.ToInt32(taglist.FirstOrDefault().tagid) : 0;

                string[] userlist = new string[1];
                userlist[0] = entity.LillyID;
                //不超过6个月时,添加标签
                if (tagid != 0 && DateTime.Today <= (updateEmployee.EmployeeTime.AddMonths(6)))
                {
                    var tagMemberResult = MailListApi.GetTagMember(WeChatCommonService.GetWeiXinToken(0), tagid);
                    var hasTag          = tagMemberResult.userlist.Select(a => a.userid.ToUpper() == entity.LillyID.ToUpper()).FirstOrDefault();
                    if (!hasTag)
                    {
                        MailListApi.AddTagMember(WeChatCommonService.GetWeiXinToken(0), tagid, userlist);
                    }
                }

                //超过7个月时,移除标签
                if (tagid != 0 && DateTime.Today > (updateEmployee.EmployeeTime.AddMonths(7)))
                {
                    MailListApi.DelTagMember(WeChatCommonService.GetWeiXinToken(0), tagid, userlist);
                }
            }



            return(Repository.Update(updateEmployee));
        }
Ejemplo n.º 7
0
        public ActionResult GetUserList(string clientid, string tagname)
        {
            if (!string.IsNullOrEmpty(clientid))
            {
                var clientUrl = _clientDataService.Repository.Entities.Where(x => x.ClientId == clientid && x.ClientName == tagname).Select(x => x.ClientCallBackUrl).FirstOrDefault();

                if (string.IsNullOrEmpty(clientUrl))
                {
                    throw new ArgumentException(@"clientid 不正确!", clientid);
                }
            }
            GetTagMemberResult tagMemberResult = new GetTagMemberResult();
            var strToken = GetToken();
            var taglist  = WeChatCommonService.lstTag.Where(x => x.tagname == tagname);
            int tagid    = taglist.FirstOrDefault() != null?Convert.ToInt32(taglist.FirstOrDefault().tagid) : 0;


            if (tagid != 0)
            {
                tagMemberResult = MailListApi.GetTagMember(strToken, tagid);
            }

            if (tagMemberResult != null)
            {
                var strJson = Newtonsoft.Json.JsonConvert.SerializeObject(new
                {
                    message = "",
                    success = true,
                    item    = new
                    {
                        tagMemberResult.userlist
                    }
                });

                return(Content(strJson, "application/json"));
            }
            else
            {
                return(Json(new
                {
                    message = "标签不存在!",
                    success = false
                }, JsonRequestBehavior.AllowGet));
            }
        }
Ejemplo n.º 8
0
        public JsonResult AddDepartmentToTag(IList <int> departments, string tagId)
        {
            if (string.IsNullOrEmpty(tagId))
            {
                return(ErrorNotification("数据异常!"));
            }

            departments = departments ?? new List <int>();

            var accessToken = GetToken();

            var partList = MailListApi.GetTagMember(accessToken, int.Parse(tagId)).partylist;

            var deletedList = partList.Where(x => departments.All(y => y != x)).ToArray();
            var addedList   = departments.Where(x => !partList.Any(y => y == x)).ToArray();

            if (addedList.Any())
            {
                var addResult = MailListApi.AddTagMember(accessToken, Int32.Parse(tagId), null, addedList);

                if (addResult.errcode != ReturnCode_QY.请求成功)
                {
                    return(ErrorNotification(addResult.errcode.ToString()));
                }
            }

            if (deletedList.Any())
            {
                var delResult = MailListApi.DelTagMember(accessToken, Int32.Parse(tagId), null, deletedList);

                if (delResult.errcode != ReturnCode_QY.请求成功)
                {
                    return(ErrorNotification(delResult.errcode.ToString()));
                }
            }

            //if (addedList.Any() || deletedList.Any())
            //{
            //    WeChatCommonService.lstTag.Clear();
            //}

            return(Json(doJson(null), JsonRequestBehavior.AllowGet));
        }
        public JsonResult delTag(string Id)
        {
            try
            {
                string   accessToken  = GetToken();
                var      memberResult = MailListApi.GetTagMember(accessToken, Int32.Parse(Id));
                string[] userList     = null;
                if (memberResult.userlist != null && memberResult.userlist.Count > 0)
                {
                    userList = memberResult.userlist.Select(a => a.userid).ToArray();
                }
                if ((userList != null && userList.Count() > 0) || (memberResult.partylist != null && memberResult.partylist.Count() > 0))
                {
                    MailListApi.DelTagMember(accessToken, Int32.Parse(Id), userList, memberResult.partylist);
                    foreach (var userId in userList)
                    {
                        _addressBookService.delMemberTag(userId, Int32.Parse(Id));
                    }
                }
                MailListApi.DeleteTag(accessToken, Int32.Parse(Id));
            }
            catch (ErrorJsonResultException ex)
            {
                if ((int)ex.JsonResult.errcode == 60018)
                {
                    var e = new Exception("请在微信企业号管理平台中,取消各应用对此标签的可见范围,再进行删除操作。");
                    throw e;
                }
            }
            finally
            {
                WeChatCommonService.ClearDepartmentTagMapCache(this.AccountManageID);
            }

            return(Json(doJson(null), JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 10
0
        private IList <TagView> GetListDataBytag(int iPage, int iCount, ref int iTotal)
        {
            string strID = Request["TagId"];
            string strSearchCondition = Request["SearchCondition"];

            var tagMember = MailListApi.GetTagMember(GetToken(), int.Parse(strID));
            //var rootDepartment = WeChatCommonService.lstDepartment.First(x => x.parentid == 0);

            var lst = tagMember.userlist.Select(x =>
            {
                var user =
                    WeChatCommonService.lstUser.FirstOrDefault(y => y.userid == x.userid);

                if (user != null)
                {
                    return(new TagView
                    {
                        LillyId = x.userid,
                        Name = x.name,
                        Avatar = user.avatar,
                        Type = TagType.User.ToString(),
                        DepartmentId = user.department.First(),
                        //DepartmentName = string.Format("{0}-{1}", rootDepartment.name, WeChatCommonService.lstDepartment.First(y => y.id == departmentId).name)
                    });
                }
                return(null);
            }).Where(x => x != null).ToList();


            var departments = tagMember.partylist.Select(x =>
            {
                var department = WeChatCommonService.lstDepartment.FirstOrDefault(y => y.id == x);
                return(new TagView
                {
                    Name = department.name,
                    Type = TagType.Department.ToString(),
                    DepartmentId = department.id,
                    //DepartmentName = string.Format("{0}-{1}", rootDepartment.name, department.name),
                });
            }).Where(x => x != null).ToList();

            lst.AddRange(departments);

            if (!string.IsNullOrEmpty(strSearchCondition))
            {
                lst = lst.Where(x =>
                {
                    if (!string.IsNullOrEmpty(x.LillyId))
                    {
                        return(x.LillyId.IndexOf(strSearchCondition.Trim(), StringComparison.OrdinalIgnoreCase) >= 0 ||
                               x.Name.IndexOf(strSearchCondition.Trim(), StringComparison.OrdinalIgnoreCase) >= 0);
                    }
                    return(x.Name.IndexOf(strSearchCondition.Trim(), StringComparison.OrdinalIgnoreCase) >= 0);
                }).ToList();
            }

            iTotal = lst.Count();
            lst    = lst.OrderBy(a => a.LillyId).ToList();
            lst    = lst.Skip((iPage - 1) * iCount).Take(iCount).ToList();

            lst.ForEach(x =>
            {
                var department       = WeChatCommonService.lstDepartment.First(y => y.id == x.DepartmentId);
                var stackDepartments = GetDepartmentHierarchy(WeChatCommonService.lstDepartment, department);
                x.DepartmentName     = stackDepartments.Select(y => y.name).Aggregate((z, y) => string.Format("{0}-{1}", z, y));
                stackDepartments.Clear();
            });

            return(lst);
        }
Ejemplo n.º 11
0
 public static GetTagMemberResult GetTagMembers(int tagId, int appId)
 {
     return(MailListApi.GetTagMember(WeChatCommonService.GetWeiXinToken(appId), tagId));
 }
        private string ImportToTag()
        {
            Dictionary <string, Stream>    dic  = new Dictionary <string, Stream>();
            Dictionary <string, TagImport> dics = new Dictionary <string, TagImport>();
            //获取accesstoken
            string accessToken = GetToken();
            string invalidList = string.Empty;

            for (int i = 0; i < Request.Files.Count; i++)
            {
                HttpPostedFileBase objFile = Request.Files[i];
                var f = new byte[objFile.InputStream.Length];
                //将csv文件一次性读出来
                objFile.InputStream.Read(f, 0, (int)objFile.InputStream.Length);
                //定义数据格式UTF-8
                string str = System.Text.Encoding.GetEncoding("UTF-8").GetString(f);
                //获取第一行数据然后取两列数据WeChatUserID,TagID
                string[] sArray = str.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
                string[] rowOne = sArray[0].Split(',');
                int      TagidIndex = 0, WeChatUserIDIndex = 0;
                //循环判断返回数组对应列下标
                for (int s = 0; s < rowOne.Length; s++)
                {
                    if (string.Equals(rowOne[s], "TagID", StringComparison.OrdinalIgnoreCase))
                    {
                        TagidIndex = s;
                    }
                    else if (string.Equals(rowOne[s], "WeChatUserID", StringComparison.OrdinalIgnoreCase))
                    {
                        WeChatUserIDIndex = s;
                    }
                }

                //循环其他行去把对应下标的数据封装成TagImport对象
                for (int x = 1; x < sArray.Length; x++)
                {
                    string[]  rowX         = sArray[x].Split(',');
                    string    tagid        = rowX[TagidIndex];
                    string    WeChatUserID = rowX[WeChatUserIDIndex];
                    TagImport tagimport    = null;
                    //确认dics是否有tagid 有add,没有就新建对象
                    if (dics.ContainsKey(tagid))
                    {
                        tagimport = dics[tagid];
                        tagimport.userlist.Add(WeChatUserID);
                    }
                    else
                    {
                        tagimport          = new TagImport();
                        tagimport.tagid    = tagid;
                        tagimport.userlist = new List <string>();
                        tagimport.userlist.Add(WeChatUserID);
                        tagimport.partylist = new List <int>();
                        dics.Add(tagid, tagimport);
                    }
                }

                //返回invalidlist
                AddTagMemberResult addResult = new AddTagMemberResult();

                //先根据tagid去取当前tagid的userlist再删除掉成员
                foreach (var b in dics.Keys)
                {
                    var lstTagUser = MailListApi.GetTagMember(accessToken, int.Parse(b)).userlist;
                    if (lstTagUser == null || lstTagUser.Count <= 0)
                    {
                        break;
                    }

                    List <string> userList = new List <string>();
                    lstTagUser.ForEach(a =>
                    {
                        userList.Add(a.userid);
                    });
                    MailListApi.DelTagMember(accessToken, int.Parse(b), userList.ToArray(), null);
                }

                //封装完后循环dics,序列化后调用API的接口Post过去
                foreach (var a in dics)
                {
                    var           strs = string.Join(",", a.Value.userlist.ToArray());
                    List <string> lst  = new List <string>();
                    GetStr(strs, lst);

                    foreach (var b in lst)
                    {
                        addResult = MailListApi.AddTagMember(
                            accessToken,
                            int.Parse(a.Key),
                            b.Split(',')
                            );
                        if (!string.IsNullOrEmpty(addResult.invalidlist))
                        {
                            invalidList = invalidList + '|' + addResult.invalidlist;
                        }
                    }
                }
                dic.Add(objFile.FileName, objFile.InputStream);
            }

            return(invalidList);
        }
Ejemplo n.º 13
0
 private static GetTagMemberResult GetTagMembers(int tagId, int appId)
 {
     //return _cacheManager.Get("SmartphoneMenuPermissionManager.Tagmember", () => MailListApi.GetTagMember(GetToken(), int.Parse(tagId)));
     return(MailListApi.GetTagMember(WeChatCommonService.GetWeiXinToken(appId), tagId));
 }
Ejemplo n.º 14
0
        public JsonResult GetDepartmentByTag(int tagId)
        {
            var departments = MailListApi.GetTagMember(GetToken(), tagId).partylist;

            return(Json(departments));
        }
Ejemplo n.º 15
0
        private string ImportToTag()
        {
            var dic  = new Dictionary <string, Stream>();
            var dics = new Dictionary <string, TagImport>();
            //获取accesstoken
            string accessToken = GetToken();
            string invalidList = string.Empty;

            for (int i = 0; i < Request.Files.Count; i++)
            {
                HttpPostedFileBase objFile = Request.Files[i];
                if (objFile != null)
                {
                    var f = new byte[objFile.InputStream.Length];
                    //将csv文件一次性读出来
                    objFile.InputStream.Read(f, 0, (int)objFile.InputStream.Length);
                    //定义数据格式UTF-8
                    string str = System.Text.Encoding.GetEncoding("UTF-8").GetString(f);
                    //获取第一行数据然后取两列数据lillyID,TagID
                    string[] sArray = str.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
                    string[] rowOne = sArray[0].Split(',');
                    int      tagidIndex = 0, lillyIdIndex = 0;
                    //循环判断返回数组对应列下标
                    for (int s = 0; s < rowOne.Length; s++)
                    {
                        if (string.Equals(rowOne[s], "TagID", StringComparison.OrdinalIgnoreCase))
                        {
                            tagidIndex = s;
                        }
                        else if (string.Equals(rowOne[s], "LillyID", StringComparison.OrdinalIgnoreCase))
                        {
                            lillyIdIndex = s;
                        }
                    }

                    //循环其他行去把对应下标的数据封装成TagImport对象
                    for (int x = 1; x < sArray.Length; x++)
                    {
                        string[]  rowX      = sArray[x].Split(',');
                        string    tagid     = rowX[tagidIndex];
                        string    lillyid   = rowX[lillyIdIndex] == null ? rowX[lillyIdIndex] : rowX[lillyIdIndex].Trim();
                        TagImport tagimport = null;
                        //确认dics是否有tagid 有add,没有就新建对象
                        if (dics.ContainsKey(tagid))
                        {
                            tagimport = dics[tagid];
                            tagimport.userlist.Add(lillyid);
                        }
                        else
                        {
                            tagimport = new TagImport
                            {
                                tagid    = tagid,
                                userlist = new List <string> {
                                    lillyid
                                },
                                partylist = new List <int>()
                            };
                            dics.Add(tagid, tagimport);
                        }
                    }
                }

                //返回invalidlist
                var addResult = new AddTagMemberResult();

                //先根据tagid去取当前tagid的userlist再删除掉成员
                foreach (var b in dics.Keys)
                {
                    var lstTagUser = MailListApi.GetTagMember(accessToken, int.Parse(b)).userlist;
                    if (lstTagUser == null || lstTagUser.Count <= 0)
                    {
                        break;
                    }

                    var userList = new List <string>();
                    lstTagUser.ForEach(a => userList.Add(a.userid));
                    MailListApi.DelTagMember(accessToken, int.Parse(b), userList.ToArray());
                }

                //封装完后循环dics,序列化后调用API的接口Post过去
                foreach (var a in dics)
                {
                    var strs = string.Join(",", a.Value.userlist.ToArray());
                    var lst  = new List <string>();
                    GetStr(strs, lst);

                    foreach (var b in lst)
                    {
                        try
                        {
                            addResult = MailListApi.AddTagMember(
                                accessToken,
                                int.Parse(a.Key),
                                b.Split(',')
                                );
                        }
                        catch (ErrorJsonResultException e)
                        {
                            //WeChatCommonService.lstUser.
                            var invalidUsers = b.Split(',').Distinct().Where(x => WeChatCommonService.lstUser.All(y => y.userid != x)).ToList();
                            invalidUsers.Add(invalidList);
                            invalidList = string.Join("|", invalidUsers);
                        }

                        if (!string.IsNullOrEmpty(addResult.invalidlist))
                        {
                            invalidList = invalidList + '|' + addResult.invalidlist;
                        }
                    }
                }
                if (objFile != null)
                {
                    dic.Add(objFile.FileName, objFile.InputStream);
                }
            }

            if (invalidList.StartsWith("|"))
            {
                invalidList.Remove(0, 1);
            }
            if (invalidList.EndsWith("|"))
            {
                invalidList.Remove(invalidList.Length - 1, 1);
            }
            return(invalidList);
        }
Ejemplo n.º 16
0
Archivo: WxFO.cs Proyecto: 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();
        }
Ejemplo n.º 17
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));
        }
Ejemplo n.º 18
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);
        }