using ConsoleApp1.Controller.Sql_controller; using DingTalk.Api; using DingTalk.Api.Request; using DingTalk.Api.Response; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp1.Controller.DDing_API { /// /// 钉钉接口类 /// public class DingdingAPI { private DateTime dtttime; private static HttpHepler http = new HttpHepler(); //房德 //AUTHCORPID(被授权方(房德)corpid) //private static String auth_corpid = "ding81b4dfad3a436bd735c2f4657eb6378f"; //CUSTOMKEY private static String accessKey = "dingrfl7dbbgi0t1ygdl"; //CUSTOMSECTET private static String accessSecret = "ocqGE5j-fW4yHIdqV2CLH8vTBY34EEoRT-FRh_wPO9uvvZoDDbrUFKdYcdXby1gB"; private static string access_token = ""; private static string agentid = "1109021768"; /// /// 获取Token /// /// · public string getAccessToken() { IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken"); OapiGettokenRequest req = new OapiGettokenRequest(); req.Appkey = accessKey; req.Appsecret = accessSecret; req.SetHttpMethod("GET"); OapiGettokenResponse rsp = client.Execute(req, access_token); Console.WriteLine(rsp.Body); JObject json = JsonConvert.DeserializeObject(rsp.Body.ToString()); access_token = json["access_token"].ToString(); return access_token; } public string dttoken() { if (dtttime.ToString() == "0001/1/1 0:00:00") { dtttime = DateTime.Now; access_token = getAccessToken(); } if (dtttime.ToString() != "0001/1/1 0:00:00" && (dtttime.AddHours(2) < dtttime)) { access_token = getAccessToken(); } return access_token; } /// /// 获取企业授权信息 /// /// //public string get_auth_info() //{ // IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/service/get_auth_info"); // OapiServiceGetAuthInfoRequest req = new OapiServiceGetAuthInfoRequest(); // req.AuthCorpid = "ding81b4dfad3a436bd735c2f4657eb6378f"; // OapiServiceGetAuthInfoResponse rsp = client.Execute(req, accessKey, accessSecret, suiteTicket); // JObject json = JsonConvert.DeserializeObject(rsp.Body.ToString()); // //string aaa = json["auth_corp_info"]["corpid"].ToString(); // agentid = json["auth_info"]["agent"][0]["agentid"].ToString(); // return agentid; //} /// /// 获取花名册元数据 /// /// public string smartwork(string token) { string url = "https://oapi.dingtalk.com/topapi/smartwork/hrm/roster/meta/get?access_token=" + token; string dictionary = "{\"agentid\"" + ":" + "\"" + agentid + "\"}"; var str = http.HttpPost(url, dictionary); return str.ToString(); } /// /// 更新员工花名册信息 /// /// public string employee(Dictionary dic) { try { IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/update"); OapiV2UserUpdateRequest req = new OapiV2UserUpdateRequest(); req.Userid = dic["F0000019"].ToString(); req.Title = dic["F0000011"].ToString(); req.DeptIdList = dic["F0000009"].ToString(); List list2 = new List(); OapiV2UserUpdateRequest.DeptOrderDomain obj3 = new OapiV2UserUpdateRequest.DeptOrderDomain(); list2.Add(obj3); obj3.DeptId = Convert.ToInt32(dic["F0000009"].ToString()); obj3.Order = 1L; req.DeptOrderList_ = list2; List list5 = new List(); OapiV2UserUpdateRequest.DeptTitleDomain obj6 = new OapiV2UserUpdateRequest.DeptTitleDomain(); list5.Add(obj6); obj6.DeptId = Convert.ToInt32(dic["F0000009"].ToString()); obj6.Title = dic["F0000010"].ToString(); req.DeptTitleList_ = list5; OapiV2UserUpdateResponse rsp = client.Execute(req, access_token); Console.WriteLine(rsp.Body); return rsp.Body; } catch (Exception ex) { throw ex; } } /// /// 更新花名册信息 /// /// Userid /// GroupId /// 值 /// Code /// public string employee(string Userid, string GroupId, string Value, string FieldCode) { try { IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/v2/update"); OapiSmartworkHrmEmployeeV2UpdateRequest req = new OapiSmartworkHrmEmployeeV2UpdateRequest(); req.Agentid = 1041506050L; OapiSmartworkHrmEmployeeV2UpdateRequest.EmpUpdateByCustomParamDomain obj1 = new OapiSmartworkHrmEmployeeV2UpdateRequest.EmpUpdateByCustomParamDomain(); List list3 = new List(); OapiSmartworkHrmEmployeeV2UpdateRequest.EmpGroupFieldVoDomain obj4 = new OapiSmartworkHrmEmployeeV2UpdateRequest.EmpGroupFieldVoDomain(); list3.Add(obj4); List list6 = new List(); OapiSmartworkHrmEmployeeV2UpdateRequest.EmpListFieldVoDomain obj7 = new OapiSmartworkHrmEmployeeV2UpdateRequest.EmpListFieldVoDomain(); list6.Add(obj7); List list9 = new List(); OapiSmartworkHrmEmployeeV2UpdateRequest.EmpFieldVoDomain obj10 = new OapiSmartworkHrmEmployeeV2UpdateRequest.EmpFieldVoDomain(); list9.Add(obj10); obj10.FieldCode = FieldCode; obj10.Value = Value; obj7.Section = list9; obj4.Sections = list6; obj4.GroupId = GroupId; obj1.Groups = list3; obj1.Userid = Userid; req.Param_ = obj1; OapiSmartworkHrmEmployeeV2UpdateResponse rsp = client.Execute(req, access_token); Console.WriteLine(rsp.Body); return rsp.Body; } catch (Exception ex) { throw ex; } } public string The_Contract(Dictionary dic) { string FieldCode = "", Value = "", Userid = dic["F0000014"].ToString(); try { foreach (var item in dic.Keys) { switch (item) { case "F0000010": //现合同开始日期 FieldCode = "sys05-nowContractStartTime"; Value = dic["F0000010"].ToString(); The_Contract(Userid, Value, FieldCode); break; case "F0000011": //现合同结束日期 FieldCode = "sys05-nowContractEndTime"; Value = dic["F0000011"].ToString(); The_Contract(Userid, Value, FieldCode); break; case "F0000026": //续签期限 FieldCode = "sys05-contractPeriodType"; Value = dic["F0000026"].ToString(); switch (Value) { case "无": Value = "1"; break; case "6个月": Value = "2"; break; case "12个月": Value = "3"; break; case "24个月": Value = "4"; break; case "36个月或以上": Value = "5"; break; default: break; } The_Contract(Userid, Value, FieldCode); break; case "F0000016": //续签次数 FieldCode = "sys05-contractRenewCount"; Value = dic["F0000016"].ToString(); The_Contract(Userid, Value, FieldCode); break; default: break; } } return "Ok"; } catch (Exception ex) { throw ex; } } /// /// 更新花名册信息 /// /// public string The_Contract(string Userid, string value, string FieldCode) { IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/update"); OapiSmartworkHrmEmployeeUpdateRequest req = new OapiSmartworkHrmEmployeeUpdateRequest(); OapiSmartworkHrmEmployeeUpdateRequest.PreEntryEmployeeAddParamDomain obj1 = new OapiSmartworkHrmEmployeeUpdateRequest.PreEntryEmployeeAddParamDomain(); obj1.Userid = Userid; List list3 = new List(); OapiSmartworkHrmEmployeeUpdateRequest.GroupMetaInfoDomain obj4 = new OapiSmartworkHrmEmployeeUpdateRequest.GroupMetaInfoDomain(); list3.Add(obj4); obj4.GroupId = "sys05"; List list6 = new List(); OapiSmartworkHrmEmployeeUpdateRequest.EmpListFieldVODomain obj7 = new OapiSmartworkHrmEmployeeUpdateRequest.EmpListFieldVODomain(); list6.Add(obj7); List list9 = new List(); OapiSmartworkHrmEmployeeUpdateRequest.EmpFieldVoDomain obj10 = new OapiSmartworkHrmEmployeeUpdateRequest.EmpFieldVoDomain(); list9.Add(obj10); obj10.Value = value; obj10.FieldCode = FieldCode; //起始日 obj7.Section = list9; obj4.Sections = list6; obj1.Groups = list3; req.Param_ = obj1; req.Agentid = Convert.ToInt32(agentid); OapiSmartworkHrmEmployeeUpdateResponse rsp = client.Execute(req, access_token); Console.WriteLine(rsp.Body); return rsp.Body; } /// /// 批量获取员工花名册字段信息 /// /// Token /// 员工ID列表-最长长度20 /// public string smartwork_list(string access_token, string userid_list, string field_filter_list) { IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/list"); OapiSmartworkHrmEmployeeListRequest req = new OapiSmartworkHrmEmployeeListRequest(); req.UseridList = userid_list; //req.FieldFilterList = field_filter_list.ToString(); OapiSmartworkHrmEmployeeListResponse rsp = client.Execute(req, access_token); return rsp.Body; } /// /// 查询公司在职员工列表 /// /// Token /// 员工状态 /// 分页起始值 /// 分页大小 /// UserId 员工ID public string smartwork_smartwork(string access_token, string status_list = "2,3,5,-1", int offset = 0, int size = 50) { IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/queryonjob"); OapiSmartworkHrmEmployeeQueryonjobRequest req = new OapiSmartworkHrmEmployeeQueryonjobRequest(); req.StatusList = "2,3,5,-1"; req.Offset = offset; req.Size = size; OapiSmartworkHrmEmployeeQueryonjobResponse rsp = client.Execute(req, access_token); return rsp.Body; } /// /// 智能人事获取员工花名册信息 /// /// public string listemployee(string userid) { IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/v2/list"); OapiSmartworkHrmEmployeeV2ListRequest req = new OapiSmartworkHrmEmployeeV2ListRequest(); req.UseridList = userid; req.Agentid = Convert.ToInt32(agentid); OapiSmartworkHrmEmployeeV2ListResponse rsp = client.Execute(req, access_token); //Console.WriteLine(rsp.Body); return rsp.Body; } } }