Esempio n. 1
0
        /// <summary>
        /// 按部门上传通讯录
        /// </summary>
        /// <param name="api"></param>
        /// <param name="listOrg"></param>
        /// <param name="userList"></param>
        /// <param name="joDeps"></param>
        /// <param name="parentId"></param>
        private void UploadTXL(WeiXinApi api,
                               IList <WX_OrganizationUnitDto> orgList,
                               JToken joDeps,
                               JToken joUsers,
                               long parentId)
        {
            //企业微信在UBP中的父级ID
            var depParentId = "-1";
            //查找微信里面的上级
            var parentOrg = orgList.SingleOrDefault(o => o.Id == parentId);

            if (parentOrg != null)
            {
                var parentDep = joDeps.SingleOrDefault(d => d["id"].ToString() == parentOrg.WeiXinDepId);
                if (parentDep != null)
                {
                    depParentId = parentDep["id"].ToString();
                }
            }

            //var depParentId = "-1";
            ////查找出上级名称 然通过名称 找出对应微信部门的ID
            //var parentOrg = listOrg.SingleOrDefault(o => o.Id == parentId);
            //if (parentOrg != null)
            //{
            //    var parentDep = joDeps.SingleOrDefault(d => d["name"].ToString() == parentOrg.DisplayName);
            //    if (parentDep != null)
            //        depParentId = parentDep["id"].ToString();
            //}

            var listO = orgList.Where(a => (a.ParentId ?? 0) == parentId).ToList();

            foreach (var item in listO)
            {
                if (depParentId != "-1" && joDeps.Count(d => d["id"].ToString() == item.WeiXinDepId) == 0)
                {//有父级ID,但是自己是没有创建过的
                    var dep = api.CreateDepartment(item.DisplayName, depParentId);

                    //获取用户
                    var userList = _wx_OrganizationUnitAppService.GetOrganizationUnitAllUsers(item.Id);
                    foreach (var user in userList.Result)
                    {
                        if (joUsers.Count(u => u["userid"].ToString() == user.UserName) == 0)
                        {//创建用户
                            api.CreateUser(user.UserName, user.Surname + user.Name, dep["id"].ToString(), user.EmailAddress);
                        }
                    }
                }

                if (joDeps.Count(d => d["name"].ToString() == item.DisplayName) > 0)
                {//如果没有找到父级ID,但是在微信中已经存在的就直接创建用户
                    var dep      = joDeps.SingleOrDefault(d => d["name"].ToString() == item.DisplayName);
                    var userList = _wx_OrganizationUnitAppService.GetOrganizationUnitAllUsers(item.Id);
                    foreach (var user in userList.Result)
                    {
                        if (joUsers.Count(u => u["userid"].ToString() == user.UserName) == 0)
                        {//创建用户
                            api.CreateUser(user.UserName, user.Surname + user.Name, dep["id"].ToString(), user.EmailAddress);
                        }
                    }
                }
                UploadTXL(api, orgList, joDeps, joUsers, item.Id);
            }
        }