栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

.NET 钉钉接口同步钉钉框架,通讯录

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

.NET 钉钉接口同步钉钉框架,通讯录

定义变量

        string DingAppkey = "dingdul5161354SDF5131";//钉钉  应用的唯一标识key
        string DingAppsecret = "zU6w54Wg21DieRC3SSDF15SDFDSF15SDF1DS415S4DF8A791SD4";//钉钉  应用的密钥
        public static string dingAccessToken = ""; //钉钉接口调用凭证

获取钉钉接口调用凭证access_token

        #region 获取钉钉接口调用凭证:access_token
        /// 
        /// 获取钉钉接口调用凭证:access_token
        /// 
        /// 
        public string GetDingAccessToken()
        {
            string access_token = string.Empty;
            try
            {
                string accessToken = string.Empty;
                DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
                OapiGettokenRequest request = new OapiGettokenRequest();
                request.Appkey = DingAppkey;//钉钉  应用的唯一标识key
                request.Appsecret = DingAppsecret;//钉钉  应用的密钥
                request.SetHttpMethod("GET");
                OapiGettokenResponse response = client.Execute(request);
                access_token = response.AccessToken;
            }
            catch (Exception ex)
            {


            }
            return access_token;
        }
        #endregion

获取简单钉钉部门列表

        #region 获取简单钉钉部门列表
        /// 
        /// 获取简单钉钉部门列表
        /// 
        /// 
        public List GetDingAlldepartmentList()
        {
            IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/department/list");
            OapiDepartmentListRequest request = new OapiDepartmentListRequest();
            request.Id = "1";
            request.SetHttpMethod("GET");
            OapiDepartmentListResponse response = client.Execute(request, dingAccessToken);
            return response.Department;
        }
        #endregion

获取钉钉全部通讯录人员

#region 定时器---获取钉钉全部通讯录人员

        void ToPandian(object sender, System.Timers.ElapsedEventArgs e)
        {
            //if (true)//每月一号执行 false true
            if (DateTime.Now.Day == 1)//每月一号执行
            {
                dingAccessToken = GetDingAccessToken();//获取钉钉接口调用凭证
                List dingUserList = new List(); //所有用户
                List dingDptList = GetDingAlldepartmentList();//获取所有部门 
                                                                                //ResultInfo resultInfo = new ResultInfo() { State = false };
                try
                {
                    string cacheKey = "F7C16F00-6A13-4063-8019-CEA4E51A5AF2";
                    var dingdingUserCache = Common.GetCache(cacheKey);//读取用户缓存
                    if (dingdingUserCache == null)//没有缓存记录
                    {
                        //遍历部门获取所有通讯录人员
                        foreach (var item in dingDptList)
                        {
                            List tempUserList = new List();
                            IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/user/listbypage");
                            OapiUserListbypageRequest req = new OapiUserListbypageRequest();
                            req.DepartmentId = item.Id;
                            req.Offset = 0;
                            req.Size = 100;
                            req.SetHttpMethod("GET");
                            OapiUserListbypageResponse rsp = client.Execute(req, dingAccessToken);
                            tempUserList = rsp.Userlist;
                            if (rsp.Errcode != 0)//请求不成功
                            {
                                throw new Exception("网速有点慢E");
                            }
                            if (tempUserList != null)
                            {
                                dingUserList.AddRange(tempUserList);
                            }

                            Thread.Sleep(5);
                        }
                        if (dingUserList.Count > 0)
                        {
                            Common.SetCache(cacheKey, dingUserList, DateTime.Now.AddMinutes(300), TimeSpan.Zero);//存储钉钉用户到缓存(每5小时更新一次)
                        }
                        else
                        {
                            HttpRuntime.Cache.Remove(cacheKey);//清除缓存
                            throw new Exception("网速有点慢N001");
                        }
                    }
                    else
                    {
                        dingUserList = (List)dingdingUserCache;
                        if (dingUserList.Count == 0)
                        {
                            throw new Exception("网速有点慢N002");
                        }
                    }
                    //resultInfo.State = true;//Jobnumber钉钉里的工号
                    string Data = "[" + JsonHelper.ObjectToJSON(dingDptList) + "," + JsonHelper.ObjectToJSON(dingUserList) + "]";
                    //List listuser30 = null;

                    

                    

                    StringBuilder sbDeptUpdate = new StringBuilder();
                    sbDeptUpdate.Append(string.Format(" update MyUser_Department set isDel=0  ; "));//先全部更改为已删除状态
                    for (int i = 0; i < dingDptList.Count; i++)
                    {
                        MyUser_DepartmentModel model = MyUser_DepartmentBLL.SelectModel(" and departmentID='" + dingDptList[i].Id + "' ");
                        if (model == null)
                        {
                            sbDeptUpdate.Append(string.Format(" insert into MyUser_Department (departmentID,departmentName,parentid) values ('{0}','{1}','{2}') ; ", dingDptList[i].Id.ToString(), dingDptList[i].Name, dingDptList[i].Parentid.ToString()));
                        }
                        else
                        {
                            //如果数据库有就更新
                            sbDeptUpdate.Append(string.Format(" update MyUser_Department set departmentName='{0}',parentid='{1}' where departmentID='{2}' ; ", dingDptList[i].Name, dingDptList[i].Parentid.ToString(), dingDptList[i].Id.ToString()));
                        }
                    }


                    StringBuilder sbUserUpdate = new StringBuilder();
                    sbDeptUpdate.Append(string.Format(" update MyUser_Yuyue set isDel=0  ; "));//先全部更改为已删除状态
                    for (int i = 0; i < dingUserList.Count; i++)
                    {
                        sbUserUpdate.Append(string.Format(" update MyUser_Yuyue set dingdingUserid='{0}' where userName='{1}' ; ", dingUserList[i].Userid, dingUserList[i].Name));//初始化时候先用姓名同步一下钉钉ID,以后不执行
                        if (!string.IsNullOrEmpty(dingUserList[i].Jobnumber))//如果有工号才同步
                        {
                            MyUserModel model = MyUserBLL.SelectModel(" and userID='" + dingUserList[i].Jobnumber + "' ");
                            if (model == null)
                            {
                                sbDeptUpdate.Append(string.Format(" insert into MyUser_Yuyue (userID,userName,mobile,department,avatar,dingdingUserid,isDel,unionid) values ('{0}','{1}','{2}','{3}','{4}','{5}',1,'{6}') ; ", dingUserList[i].Jobnumber, dingUserList[i].Name, dingUserList[i].Mobile, dingUserList[i].Department, dingUserList[i].Avatar, dingUserList[i].Userid, dingUserList[i].Unionid));

                            }
                            else
                            {
                                //Common.CreateWebLog("更新语句", string.Format(" update MyUser_Yuyue set userName='{0}',mobile='{1}',department='{2}',avatar='{3}',isDel=1,unionid='{5}',dingdingUserid='{6}' where userID='{4}' ; ", dingUserList[i].Name, dingUserList[i].Mobile, dingUserList[i].Department.Replace("[", "").Replace("]", ""), dingUserList[i].Avatar, dingUserList[i].Jobnumber, dingUserList[i].Unionid, dingUserList[i].Userid));
                                //如果数据库有就更新
                                sbUserUpdate.Append(string.Format(" update MyUser_Yuyue set userName='{0}',mobile='{1}',department='{2}',avatar='{3}',isDel=1,unionid='{5}',dingdingUserid='{6}' where userID='{4}' ; ", dingUserList[i].Name, dingUserList[i].Mobile, dingUserList[i].Department.ToString().Replace("[", "").Replace("]", ""), dingUserList[i].Avatar, dingUserList[i].Jobnumber, dingUserList[i].Unionid, dingUserList[i].Userid));
                            }
                        }

                    }
                    SqlHelper.ExecuteNonQuery(sbDeptUpdate.ToString() + sbUserUpdate.ToString(), CommandType.Text);

                }
                catch (Exception ex)
                {
                    Common.CreateWebLog("同步钉钉信息异常182", ex.ToString());
                }
            }

        }
        #endregion

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/909056.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号