Beispiel #1
0
        public List <Dept> GetDepts()
        {
            List <Dept>               dlist   = new List <Dept>();
            IDingTalkClient           client  = new DefaultDingTalkClient("https://oapi.dingtalk.com/department/list");
            OapiDepartmentListRequest request = new OapiDepartmentListRequest();

            request.SetHttpMethod("GET");
            OapiDepartmentListResponse response = client.Execute(request, DdOper.AccessToken);

            if (response.Errcode == 0)
            {
                foreach (var p in response.Department)
                {
                    Dept newDept = new Dept();
                    newDept.DeptID   = p.Id;
                    newDept.DeptName = p.Name;
                    if (newDept.DeptID != 1)
                    {
                        newDept.ParentDeptId = p.Parentid;
                    }
                    dlist.Add(newDept);
                }
            }
            return(dlist);
        }
Beispiel #2
0
        /// <summary>
        ///获取所有的部门列表信息
        /// </summary>
        /// <param name="repuestParams"></param>
        /// <returns></returns>
        public List <Department> GetAllDepIds(RequestParams repuestParams)
        {
            List <Department>         depList = new List <Department>();
            IDingTalkClient           client  = new DefaultDingTalkClient("https://oapi.dingtalk.com/department/list");
            OapiDepartmentListRequest request = new OapiDepartmentListRequest();

            request.Id = "1";//如果不传,默认为1表示根部门id
            request.SetHttpMethod("GET");
            OapiDepartmentListResponse response = client.Execute(request, TooUtil.GetAccessToken());

            if (response.Errcode == 0 && response.Department.Count > 0)
            {
                response.Department.ForEach(u =>
                {
                    Department department      = new Department();
                    department.DepId           = u.Id;
                    department.ParentId        = u.Parentid;
                    department.DepName         = u.Name;
                    department.CreateDeptGroup = u.CreateDeptGroup;
                    department.AutoAddUser     = u.AutoAddUser;
                    depList.Add(department);
                });
            }
            return(depList);
        }
Beispiel #3
0
 /// <summary>
 /// 通过父部门找到所有子部门
 /// </summary>
 /// <param name="PdepId"></param>
 /// <returns></returns>
 public static ResponseParameters GetDepListByPDepId(long pdepId)
 {
     try
     {
         DefaultDingTalkClient     client  = new DefaultDingTalkClient("https://oapi.dingtalk.com/department/list");
         OapiDepartmentListRequest request = new OapiDepartmentListRequest();
         request.Id = pdepId.ToString();
         request.SetHttpMethod("GET");
         OapiDepartmentListResponse response = client.Execute(request, Get_Access_Token());
         response.Department.Add(new OapiDepartmentListResponse.DepartmentDomain()
         {
             Id = pdepId
         });
         return(new ResponseParameters()
         {
             ErroCode = response.Errcode,
             ErroMsg = response.Errmsg,
             DepartmentList = response.Department
         });
     }
     catch (Exception ex)
     {
         return(new ResponseParameters()
         {
             ErroCode = -1,
             ErroMsg = ex.Message
         });
     }
 }
Beispiel #4
0
        /// <summary>
        /// 获取部门列表
        /// </summary>
        /// <returns></returns>
        public static OapiDepartmentListResponse GetDepList()
        {
            DefaultDingTalkClient     client  = new DefaultDingTalkClient("https://oapi.dingtalk.com/department/list");
            OapiDepartmentListRequest request = new OapiDepartmentListRequest();

            request.Id = "1";
            request.SetHttpMethod("GET");
            OapiDepartmentListResponse response = client.Execute(request, AccessToken);

            return(response);
        }
Beispiel #5
0
        /// <summary>
        /// 获取部门列表
        /// </summary>
        /// <param name="departId">父部门id(如果不传,默认部门为根部门,根部门ID为1)</param>
        public string GetDepartList(string departId)
        {
            IDingTalkClient           client  = new DefaultDingTalkClient("https://oapi.dingtalk.com/department/list");
            OapiDepartmentListRequest request = new OapiDepartmentListRequest();

            request.Id = departId;
            request.SetHttpMethod("GET");
            OapiDepartmentListResponse response = client.Execute(request, base.AccessToken);

            return(response.Body);
        }
Beispiel #6
0
        /// <summary>
        /// 获取部门列表
        /// </summary>
        /// <param name="accessToken">accessToken</param>
        /// <param name="id">父部门id(如果不传,默认部门为根部门,根部门ID为1)</param>
        /// <param name="lang">通讯录语言(默认zh_CN,未来会支持en_US)</param>
        /// <param name="fetchChild">是否递归部门的全部子部门,ISV微应用固定传递false</param>
        /// <returns></returns>
        public OapiDepartmentListResponse List(string accessToken, string id, string lang = "zh_CN", bool fetchChild = false)
        {
            IDingTalkClient           client  = new DefaultDingTalkClient("https://oapi.dingtalk.com/department/list");
            OapiDepartmentListRequest request = new OapiDepartmentListRequest();

            request.Id         = id;
            request.Lang       = lang;
            request.FetchChild = fetchChild;
            request.SetHttpMethod("GET");
            OapiDepartmentListResponse response = client.Execute(request, accessToken);

            return(response);
        }
        /// <summary>
        /// 获取部门列表
        /// </summary>
        /// <param name="token"></param>
        /// <returns></returns>
        public virtual List <DepartmentDomain> GetDepartmentList(string token)
        {
            IDingTalkClient           client  = new DefaultDingTalkClient("https://oapi.dingtalk.com/department/list");
            OapiDepartmentListRequest request = new OapiDepartmentListRequest();

            request.SetHttpMethod("GET");
            OapiDepartmentListResponse response = client.Execute(request, token);

            if (response.Errcode != 0)
            {
                Console.WriteLine("错误原因:【" + response.Errmsg + "】");
            }
            return(response.Department);
        }
Beispiel #8
0
        public OapiDepartmentListResponse GetDepartmentListAsync()
        {
            var client  = new DefaultDingTalkClient(_domain + "/department/list");
            var request = new OapiDepartmentListRequest
            {
                FetchChild = true,
                Id         = _dingOrgYimiRootId
            };
            var accesstoken = GetAccessTokenAsync().AccessToken;

            request.SetHttpMethod("Get");
            var res = client.Execute(request, accesstoken);

            return(res);
        }
        /// <summary>
        /// 获取部门信息
        /// </summary>
        /// <param name="accessToken"></param>
        /// <param name="parentId">父级部门ID</param>
        /// <returns></returns>
        public static List <DepartmentInfo> GetDepartmentList(string accessToken, string parentId = "1")
        {
            try
            {
                IDingTalkClient           client  = new DefaultDingTalkClient("https://oapi.dingtalk.com/department/list");
                OapiDepartmentListRequest request = new OapiDepartmentListRequest();
                request.Id = parentId;
                request.SetHttpMethod("GET");

                OapiDepartmentListResponse response = client.Execute(request, accessToken);
                if (response != null)
                {
                    if (response.Errcode == 0)
                    {
                        List <DepartmentInfo> departmentinfolist = new List <DepartmentInfo>();
                        foreach (OapiDepartmentListResponse.DepartmentDomain info in response.Department)
                        {
                            DepartmentInfo depart = new DepartmentInfo();
                            depart.Id              = info.Id.ToString();
                            depart.Name            = info.Name;
                            depart.Parentid        = info.Parentid.ToString();
                            depart.CreateDeptGroup = info.CreateDeptGroup;
                            depart.AutoAddUser     = info.AutoAddUser;
                            departmentinfolist.Add(depart);
                        }
                        return(departmentinfolist);
                    }
                    else
                    {
                        throw new Exception(response.ErrMsg);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return(null);
        }
Beispiel #10
0
        public List <UserlistDomain> GetDingDingUserList()
        {
            var client   = new DefaultDingTalkClient(_domain + "/department/list");
            var drequest = new OapiDepartmentListRequest
            {
                FetchChild = true,
                Id         = _dingOrgYimiRootId
            };
            var accesstoken = GetAccessTokenAsync().AccessToken;

            drequest.SetHttpMethod("GET");
            var res = client.Execute(drequest, accesstoken);
            List <UserlistDomain> list = new List <UserlistDomain>();

            foreach (var department in res.Department)
            {
                OapiUserListRequest userListRequest = new OapiUserListRequest {
                    DepartmentId = department.Id, Offset = 0, Size = 100
                };
                list.AddRange(PrepareDingdingUsers(userListRequest));
            }

            return(list);
        }
Beispiel #11
0
        static void Main(string[] args)
        {
            try
            {
                YiFang_CustomerComplaintEntities dbContext = new YiFang_CustomerComplaintEntities();
                //同步部门信息
                string                    accessToken = AccessToken.GetAccessToken();
                IDingTalkClient           client      = new DefaultDingTalkClient("https://oapi.dingtalk.com/department/list");
                OapiDepartmentListRequest request     = new OapiDepartmentListRequest();
                //request.Id
                request.SetHttpMethod("GET");
                OapiDepartmentListResponse response = client.Execute(request, accessToken);
                if (response.Errcode != 0)
                {
                    Console.WriteLine("错误原因:【" + response.Errmsg + "】");
                }
                //移除部门-人员信息
                dbContext.Database.ExecuteSqlCommand("delete REF_Person_Department");
                //获取钉钉部门和人员集合
                List <long>   DepartmentList = new List <long>();
                List <string> PersonList     = new List <string>();
                //获取普通用户
                var nomal = dbContext.AC_SysRoles.FirstOrDefault(p => p.Name == "普通用户");
                if (nomal == null)
                {
                    Console.WriteLine("请维护角色");
                    return;
                }
                DingTalkDepartmentList(dbContext, 0, response.Department);
                foreach (var item in response.Department.OrderBy(k => k.Id))
                {
                    //部门人员
                    //添加读取该部门所有人员信息
                    var personlist = JsonConvert.DeserializeObject <Jusoft_DepartmentPerson>(HttpRequestHelper.HttpGet("https://oapi.dingtalk.com/user/list?access_token=" + accessToken + "&department_id=" + item.Id));
                    foreach (var user in personlist.userlist)
                    {
                        var person = dbContext.OR_Person.FirstOrDefault(k => k.PsnNum == user.userid);
                        //person.REF_Person_Department.Add(new REF_Person_Department { });
                        if (person == null)
                        {
                            person = new OR_Person {
                                PsnNum = user.userid, Sex = 0
                            };
                            dbContext.OR_Person.Add(person);
                        }
                        person.Name           = user.name;
                        person.CodeDepartment = user.department[0].ToString();
                        person.PsnMobilePhone = user.mobile;
                        person.HeadUrl        = user.avatar;
                        person.LoginName      = user.userid;
                        person.ExternalBit    = false;
                        dbContext.SaveChanges();
                        Console.WriteLine("【" + user.name + "】人员-同步成功");
                        dbContext.REF_Person_Department.Add(new REF_Person_Department
                        {
                            CodeDepartment = item.Id.ToString(),
                            IdPerson       = person.Id
                        });

                        //同步信息到账户表
                        if (!dbContext.AC_SysUsers.Any(k => k.UserName == user.userid))
                        {
                            var _newUser = new AC_SysUsers
                            {
                                UserName     = user.userid,
                                PasswordType = 1,
                                PasswordHash = user.userid,
                            };
                            dbContext.AC_SysUsers.Add(_newUser);
                            dbContext.SaveChanges();
                            string sql = string.Format("INSERT dbo.REF_User_Roles(IdSysUsers,IdSysRoles)VALUES({0},{1})", _newUser.Id, nomal.Id);
                            Console.WriteLine(sql);
                            dbContext.Database.ExecuteSqlCommand(sql);
                        }

                        dbContext.SaveChanges();
                        //部门及人员 赋值
                        PersonList.Add(user.userid);
                    }
                    DepartmentList.Add(item.Id);
                }
                //离职人员 -(我们系统存在钉钉不存在)
                var employee = dbContext.OR_Person.Where(k => k.ExternalBit == false).Select(k => k.PsnNum).ToList();
                foreach (var item in employee.Except(PersonList))
                {
                    var yee = dbContext.OR_Person.FirstOrDefault(k => k.PsnNum == item);
                    yee.CodeDepartment = "1";
                    yee.LeaveDate      = DateTime.Now;
                    dbContext.REF_Person_Department.RemoveRange(dbContext.REF_Person_Department.Where(w => w.IdPerson == yee.Id));
                    dbContext.SaveChanges();
                    Console.WriteLine("【" + yee.Name + "】人员-离职成功");
                }
                //删除部门-(我们系统存在钉钉不存在)
                var Deletedepartment = dbContext.OR_Department.Select(k => k.Code).ToList().Select(k => Convert.ToInt64(k)).ToList();
                foreach (var item in Deletedepartment.Except(DepartmentList).OrderByDescending(k => k))
                {
                    var delete = dbContext.OR_Department.FirstOrDefault(k => k.Code == item.ToString());
                    dbContext.OR_Department.Remove(delete);
                    dbContext.SaveChanges();
                    Console.WriteLine("【" + delete.Name + "】部门-删除成功");
                }

                Console.WriteLine("同步完成");
            }
            catch (Exception ex)
            {
                Console.WriteLine("【异常】【" + ex.ToString() + "】");
            }
            Console.WriteLine();
        }