DingTalkService.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
  2. //
  3. // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
  4. //
  5. // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
  6. using Admin.Net.Plugin.DingTalk.RequestProxy.Top;
  7. using Admin.Net.Plugin.DingTalk.RequestProxy.Top.DTO;
  8. using Admin.NET.Plugin.DingTalk.RequestProxy.HRM;
  9. using Admin.NET.Plugin.DingTalk.RequestProxy.HRM.DTO;
  10. namespace Admin.NET.Plugin.DingTalk.Service;
  11. /// <summary>
  12. /// 钉钉服务 🧩
  13. /// </summary>
  14. [ApiDescriptionSettings(DingTalkConst.GroupName, Order = 100)]
  15. public class DingTalkService : IDynamicApiController, IScoped
  16. {
  17. private readonly IDingTalkApi _dingTalkApi;
  18. private readonly DingTalkOptions _dingTalkOptions;
  19. private readonly TopRequest _topRequest;
  20. private readonly HrmRequest _hrmRequest;
  21. public DingTalkService(IDingTalkApi dingTalkApi,
  22. IOptions<DingTalkOptions> dingTalkOptions,
  23. TopRequest topRequest,
  24. HrmRequest hrmRequest)
  25. {
  26. _dingTalkApi = dingTalkApi;
  27. _dingTalkOptions = dingTalkOptions.Value;
  28. _topRequest = topRequest;
  29. _hrmRequest = hrmRequest;
  30. }
  31. /// <summary>
  32. /// 获取企业内部应用的access_token
  33. /// </summary>
  34. /// <returns></returns>
  35. [DisplayName("获取企业内部应用的access_token")]
  36. public async Task<GetAccessTokenResponse> GetDingTalkToken()
  37. {
  38. var tokenRes = await _topRequest.GetAccessToken(_dingTalkOptions.ClientId, _dingTalkOptions.ClientSecret);
  39. return tokenRes;
  40. }
  41. /// <summary>
  42. /// 获取在职员工列表 🔖
  43. /// </summary>
  44. /// <param name="access_token"></param>
  45. /// <param name="statusList"></param>
  46. /// <param name="size"></param>
  47. /// <param name="offset"></param>
  48. /// <returns></returns>
  49. [HttpPost, DisplayName("获取在职员工列表")]
  50. public async Task<EmployeeQueryonjobResponse> GetDingTalkCurrentEmployeesList(string access_token,List<string> statusList,int size,int offset)
  51. {
  52. return await _hrmRequest.EmployeeQueryonjob(access_token, statusList, size, offset);
  53. }
  54. /// <summary>
  55. /// 获取员工花名册字段信息 🔖
  56. /// </summary>
  57. /// <param name="access_token"></param>
  58. /// <param name="input"></param>
  59. /// <returns></returns>
  60. [HttpPost, DisplayName("获取员工花名册字段信息")]
  61. public async Task<RosterListsQueryResponse> GetDingTalkCurrentEmployeesRosterList(string access_token, List<string> useridList,List<string> fieldFilterList,long appAgentId)
  62. {
  63. return await _hrmRequest.RosterListsQuery(access_token,useridList,fieldFilterList,appAgentId);
  64. }
  65. /// <summary>
  66. /// 发送钉钉互动卡片 🔖
  67. /// </summary>
  68. /// <param name="token"></param>
  69. /// <param name="input"></param>
  70. /// <returns></returns>
  71. [DisplayName("给指定用户发送钉钉互动卡片")]
  72. public async Task<DingTalkSendInteractiveCardsOutput> DingTalkSendInteractiveCards(string token, DingTalkSendInteractiveCardsInput input)
  73. {
  74. return await _dingTalkApi.DingTalkSendInteractiveCards(token, input);
  75. }
  76. }