DingdingAPI.cs 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327
  1. using ConsoleApp1.Controller.Sql_controller;
  2. using DingTalk.Api;
  3. using DingTalk.Api.Request;
  4. using DingTalk.Api.Response;
  5. using Newtonsoft.Json;
  6. using Newtonsoft.Json.Linq;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. namespace ConsoleApp1.Controller.DDing_API
  13. {
  14. /// <summary>
  15. /// 钉钉接口类
  16. /// </summary>
  17. public class DingdingAPI
  18. {
  19. private DateTime dtttime;
  20. private static HttpHepler http = new HttpHepler();
  21. //房德
  22. //AUTHCORPID(被授权方(房德)corpid)
  23. //private static String auth_corpid = "ding81b4dfad3a436bd735c2f4657eb6378f";
  24. //CUSTOMKEY
  25. private static String accessKey = "dingrfl7dbbgi0t1ygdl";
  26. //CUSTOMSECTET
  27. private static String accessSecret = "ocqGE5j-fW4yHIdqV2CLH8vTBY34EEoRT-FRh_wPO9uvvZoDDbrUFKdYcdXby1gB";
  28. private static string access_token = "";
  29. private static string agentid = "1109021768";
  30. /// <summary>
  31. /// 获取Token
  32. /// </summary>
  33. /// <returns></returns>·
  34. public string getAccessToken()
  35. {
  36. IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
  37. OapiGettokenRequest req = new OapiGettokenRequest();
  38. req.Appkey = accessKey;
  39. req.Appsecret = accessSecret;
  40. req.SetHttpMethod("GET");
  41. OapiGettokenResponse rsp = client.Execute(req, access_token);
  42. Console.WriteLine(rsp.Body);
  43. JObject json = JsonConvert.DeserializeObject<JObject>(rsp.Body.ToString());
  44. access_token = json["access_token"].ToString();
  45. return access_token;
  46. }
  47. public string dttoken()
  48. {
  49. if (dtttime.ToString() == "0001/1/1 0:00:00")
  50. {
  51. dtttime = DateTime.Now;
  52. access_token = getAccessToken();
  53. }
  54. if (dtttime.ToString() != "0001/1/1 0:00:00" && (dtttime.AddHours(2) < dtttime))
  55. {
  56. access_token = getAccessToken();
  57. }
  58. return access_token;
  59. }
  60. /// <summary>
  61. /// 获取企业授权信息
  62. /// </summary>
  63. /// <returns></returns>
  64. //public string get_auth_info()
  65. //{
  66. // IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/service/get_auth_info");
  67. // OapiServiceGetAuthInfoRequest req = new OapiServiceGetAuthInfoRequest();
  68. // req.AuthCorpid = "ding81b4dfad3a436bd735c2f4657eb6378f";
  69. // OapiServiceGetAuthInfoResponse rsp = client.Execute(req, accessKey, accessSecret, suiteTicket);
  70. // JObject json = JsonConvert.DeserializeObject<JObject>(rsp.Body.ToString());
  71. // //string aaa = json["auth_corp_info"]["corpid"].ToString();
  72. // agentid = json["auth_info"]["agent"][0]["agentid"].ToString();
  73. // return agentid;
  74. //}
  75. /// <summary>
  76. /// 获取花名册元数据
  77. /// </summary>
  78. /// <returns></returns>
  79. public string smartwork(string token)
  80. {
  81. string url = "https://oapi.dingtalk.com/topapi/smartwork/hrm/roster/meta/get?access_token=" + token;
  82. string dictionary = "{\"agentid\"" + ":" + "\"" + agentid + "\"}";
  83. var str = http.HttpPost(url, dictionary);
  84. return str.ToString();
  85. }
  86. /// <summary>
  87. /// 更新员工花名册信息
  88. /// </summary>
  89. /// <returns></returns>
  90. public string employee(Dictionary<string, object> dic)
  91. {
  92. try
  93. {
  94. IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/update");
  95. OapiV2UserUpdateRequest req = new OapiV2UserUpdateRequest();
  96. req.Userid = dic["F0000019"].ToString();
  97. req.Title = dic["F0000011"].ToString();
  98. req.DeptIdList = dic["F0000009"].ToString();
  99. List<OapiV2UserUpdateRequest.DeptOrderDomain> list2 = new List<OapiV2UserUpdateRequest.DeptOrderDomain>();
  100. OapiV2UserUpdateRequest.DeptOrderDomain obj3 = new OapiV2UserUpdateRequest.DeptOrderDomain();
  101. list2.Add(obj3);
  102. obj3.DeptId = Convert.ToInt32(dic["F0000009"].ToString());
  103. obj3.Order = 1L;
  104. req.DeptOrderList_ = list2;
  105. List<OapiV2UserUpdateRequest.DeptTitleDomain> list5 = new List<OapiV2UserUpdateRequest.DeptTitleDomain>();
  106. OapiV2UserUpdateRequest.DeptTitleDomain obj6 = new OapiV2UserUpdateRequest.DeptTitleDomain();
  107. list5.Add(obj6);
  108. obj6.DeptId = Convert.ToInt32(dic["F0000009"].ToString());
  109. obj6.Title = dic["F0000010"].ToString();
  110. req.DeptTitleList_ = list5;
  111. OapiV2UserUpdateResponse rsp = client.Execute(req, access_token);
  112. Console.WriteLine(rsp.Body);
  113. return rsp.Body;
  114. }
  115. catch (Exception ex)
  116. {
  117. throw ex;
  118. }
  119. }
  120. /// <summary>
  121. /// 更新花名册信息
  122. /// </summary>
  123. /// <param name="Userid">Userid</param>
  124. /// <param name="GroupId">GroupId</param>
  125. /// <param name="Value">值</param>
  126. /// <param name="FieldCode">Code</param>
  127. /// <returns></returns>
  128. public string employee(string Userid, string GroupId, string Value, string FieldCode)
  129. {
  130. try
  131. {
  132. IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/v2/update");
  133. OapiSmartworkHrmEmployeeV2UpdateRequest req = new OapiSmartworkHrmEmployeeV2UpdateRequest();
  134. req.Agentid = 1041506050L;
  135. OapiSmartworkHrmEmployeeV2UpdateRequest.EmpUpdateByCustomParamDomain obj1 = new OapiSmartworkHrmEmployeeV2UpdateRequest.EmpUpdateByCustomParamDomain();
  136. List<OapiSmartworkHrmEmployeeV2UpdateRequest.EmpGroupFieldVoDomain> list3 = new List<OapiSmartworkHrmEmployeeV2UpdateRequest.EmpGroupFieldVoDomain>();
  137. OapiSmartworkHrmEmployeeV2UpdateRequest.EmpGroupFieldVoDomain obj4 = new OapiSmartworkHrmEmployeeV2UpdateRequest.EmpGroupFieldVoDomain();
  138. list3.Add(obj4);
  139. List<OapiSmartworkHrmEmployeeV2UpdateRequest.EmpListFieldVoDomain> list6 = new List<OapiSmartworkHrmEmployeeV2UpdateRequest.EmpListFieldVoDomain>();
  140. OapiSmartworkHrmEmployeeV2UpdateRequest.EmpListFieldVoDomain obj7 = new OapiSmartworkHrmEmployeeV2UpdateRequest.EmpListFieldVoDomain();
  141. list6.Add(obj7);
  142. List<OapiSmartworkHrmEmployeeV2UpdateRequest.EmpFieldVoDomain> list9 = new List<OapiSmartworkHrmEmployeeV2UpdateRequest.EmpFieldVoDomain>();
  143. OapiSmartworkHrmEmployeeV2UpdateRequest.EmpFieldVoDomain obj10 = new OapiSmartworkHrmEmployeeV2UpdateRequest.EmpFieldVoDomain();
  144. list9.Add(obj10);
  145. obj10.FieldCode = FieldCode;
  146. obj10.Value = Value;
  147. obj7.Section = list9;
  148. obj4.Sections = list6;
  149. obj4.GroupId = GroupId;
  150. obj1.Groups = list3;
  151. obj1.Userid = Userid;
  152. req.Param_ = obj1;
  153. OapiSmartworkHrmEmployeeV2UpdateResponse rsp = client.Execute(req, access_token);
  154. Console.WriteLine(rsp.Body);
  155. return rsp.Body;
  156. }
  157. catch (Exception ex)
  158. {
  159. throw ex;
  160. }
  161. }
  162. public string The_Contract(Dictionary<string, object> dic)
  163. {
  164. string FieldCode = "", Value = "", Userid = dic["F0000014"].ToString();
  165. try
  166. {
  167. foreach (var item in dic.Keys)
  168. {
  169. switch (item)
  170. {
  171. case "F0000010": //现合同开始日期
  172. FieldCode = "sys05-nowContractStartTime";
  173. Value = dic["F0000010"].ToString();
  174. The_Contract(Userid, Value, FieldCode);
  175. break;
  176. case "F0000011": //现合同结束日期
  177. FieldCode = "sys05-nowContractEndTime";
  178. Value = dic["F0000011"].ToString();
  179. The_Contract(Userid, Value, FieldCode);
  180. break;
  181. case "F0000026": //续签期限
  182. FieldCode = "sys05-contractPeriodType";
  183. Value = dic["F0000026"].ToString();
  184. switch (Value)
  185. {
  186. case "无":
  187. Value = "1";
  188. break;
  189. case "6个月":
  190. Value = "2";
  191. break;
  192. case "12个月":
  193. Value = "3";
  194. break;
  195. case "24个月":
  196. Value = "4";
  197. break;
  198. case "36个月或以上":
  199. Value = "5";
  200. break;
  201. default:
  202. break;
  203. }
  204. The_Contract(Userid, Value, FieldCode);
  205. break;
  206. case "F0000016": //续签次数
  207. FieldCode = "sys05-contractRenewCount";
  208. Value = dic["F0000016"].ToString();
  209. The_Contract(Userid, Value, FieldCode);
  210. break;
  211. default:
  212. break;
  213. }
  214. }
  215. return "Ok";
  216. }
  217. catch (Exception ex)
  218. {
  219. throw ex;
  220. }
  221. }
  222. /// <summary>
  223. /// 更新花名册信息
  224. /// </summary>
  225. /// <returns></returns>
  226. public string The_Contract(string Userid, string value, string FieldCode)
  227. {
  228. IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/update");
  229. OapiSmartworkHrmEmployeeUpdateRequest req = new OapiSmartworkHrmEmployeeUpdateRequest();
  230. OapiSmartworkHrmEmployeeUpdateRequest.PreEntryEmployeeAddParamDomain obj1 = new OapiSmartworkHrmEmployeeUpdateRequest.PreEntryEmployeeAddParamDomain();
  231. obj1.Userid = Userid;
  232. List<OapiSmartworkHrmEmployeeUpdateRequest.GroupMetaInfoDomain> list3 = new List<OapiSmartworkHrmEmployeeUpdateRequest.GroupMetaInfoDomain>();
  233. OapiSmartworkHrmEmployeeUpdateRequest.GroupMetaInfoDomain obj4 = new OapiSmartworkHrmEmployeeUpdateRequest.GroupMetaInfoDomain();
  234. list3.Add(obj4);
  235. obj4.GroupId = "sys05";
  236. List<OapiSmartworkHrmEmployeeUpdateRequest.EmpListFieldVODomain> list6 = new List<OapiSmartworkHrmEmployeeUpdateRequest.EmpListFieldVODomain>();
  237. OapiSmartworkHrmEmployeeUpdateRequest.EmpListFieldVODomain obj7 = new OapiSmartworkHrmEmployeeUpdateRequest.EmpListFieldVODomain();
  238. list6.Add(obj7);
  239. List<OapiSmartworkHrmEmployeeUpdateRequest.EmpFieldVoDomain> list9 = new List<OapiSmartworkHrmEmployeeUpdateRequest.EmpFieldVoDomain>();
  240. OapiSmartworkHrmEmployeeUpdateRequest.EmpFieldVoDomain obj10 = new OapiSmartworkHrmEmployeeUpdateRequest.EmpFieldVoDomain();
  241. list9.Add(obj10);
  242. obj10.Value = value;
  243. obj10.FieldCode = FieldCode; //起始日
  244. obj7.Section = list9;
  245. obj4.Sections = list6;
  246. obj1.Groups = list3;
  247. req.Param_ = obj1;
  248. req.Agentid = Convert.ToInt32(agentid);
  249. OapiSmartworkHrmEmployeeUpdateResponse rsp = client.Execute(req, access_token);
  250. Console.WriteLine(rsp.Body);
  251. return rsp.Body;
  252. }
  253. /// <summary>
  254. /// 批量获取员工花名册字段信息
  255. /// </summary>
  256. /// <param name="access_token">Token</param>
  257. /// <param name="userid_list">员工ID列表-最长长度20</param>
  258. /// <returns></returns>
  259. public string smartwork_list(string access_token, string userid_list, string field_filter_list)
  260. {
  261. IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/list");
  262. OapiSmartworkHrmEmployeeListRequest req = new OapiSmartworkHrmEmployeeListRequest();
  263. req.UseridList = userid_list;
  264. //req.FieldFilterList = field_filter_list.ToString();
  265. OapiSmartworkHrmEmployeeListResponse rsp = client.Execute(req, access_token);
  266. return rsp.Body;
  267. }
  268. /// <summary>
  269. /// 查询公司在职员工列表
  270. /// </summary>
  271. /// <param name="access_token">Token</param>
  272. /// <param name="status_list">员工状态</param>
  273. /// <param name="offset">分页起始值</param>
  274. /// <param name="size">分页大小</param>
  275. /// <returns>UserId 员工ID</returns>
  276. public string smartwork_smartwork(string access_token, string status_list = "2,3,5,-1", int offset = 0, int size = 50)
  277. {
  278. IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/queryonjob");
  279. OapiSmartworkHrmEmployeeQueryonjobRequest req = new OapiSmartworkHrmEmployeeQueryonjobRequest();
  280. req.StatusList = "2,3,5,-1";
  281. req.Offset = offset;
  282. req.Size = size;
  283. OapiSmartworkHrmEmployeeQueryonjobResponse rsp = client.Execute(req, access_token);
  284. return rsp.Body;
  285. }
  286. /// <summary>
  287. /// 智能人事获取员工花名册信息
  288. /// </summary>
  289. /// <returns></returns>
  290. public string listemployee(string userid)
  291. {
  292. IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/v2/list");
  293. OapiSmartworkHrmEmployeeV2ListRequest req = new OapiSmartworkHrmEmployeeV2ListRequest();
  294. req.UseridList = userid;
  295. req.Agentid = Convert.ToInt32(agentid);
  296. OapiSmartworkHrmEmployeeV2ListResponse rsp = client.Execute(req, access_token);
  297. //Console.WriteLine(rsp.Body);
  298. return rsp.Body;
  299. }
  300. }
  301. }