BatchAreaController.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. using Microsoft.AspNetCore.Http;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.Extensions.Configuration;
  4. using Microsoft.Extensions.Options;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Threading.Tasks;
  9. using TEAMModelOS.Models;
  10. using TEAMModelOS.SDK.DI;
  11. using TEAMModelOS.SDK.Models;
  12. using DingTalk.Api;
  13. using DingTalk.Api.Request;
  14. using DingTalk.Api.Response;
  15. namespace TEAMModeBI.Controllers.BISchool
  16. {
  17. [Route("batcharea")]
  18. [ApiController]
  19. public class BatchAreaController : ControllerBase
  20. {
  21. private readonly AzureCosmosFactory _azureCosmos;
  22. private readonly DingDing _dingDing;
  23. private readonly Option _option;
  24. private readonly AzureStorageFactory _azureStorage;
  25. public BatchAreaController(AzureCosmosFactory azureCosmos, DingDing dingDing, AzureStorageFactory azureStorage, IOptionsSnapshot<Option> option)
  26. {
  27. _azureCosmos = azureCosmos;
  28. _dingDing = dingDing;
  29. _azureStorage = azureStorage;
  30. _option = option?.Value;
  31. }
  32. //public async Task<IActionResult> BatchArea(Area area)
  33. //{
  34. //}
  35. private readonly IConfiguration _configuration;
  36. public IActionResult DingDingLogin(string loginTmpCode)
  37. {
  38. string appKey = _configuration["DingDingAuth:appKey"];
  39. string appSecret = _configuration["DingDingAuth:appSecret"];
  40. string getuserinfo_bycode = _configuration["DingDingAuth:getuserinfo_bycode"];
  41. //判断参数是否为空
  42. if (string.IsNullOrEmpty(loginTmpCode))
  43. {
  44. return BadRequest("temp code error");
  45. }
  46. //获取access_token
  47. DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
  48. OapiGettokenRequest request = new OapiGettokenRequest();
  49. request.Appkey = appKey;
  50. request.Appsecret = appSecret;
  51. request.SetHttpMethod("Get");
  52. OapiGettokenResponse response = client.Execute(request);
  53. if (response.IsError)
  54. {
  55. return BadRequest();
  56. }
  57. string access_token = response.AccessToken;
  58. //获取临时授权码 获取授权用户的个人信息
  59. DefaultDingTalkClient client1 = new DefaultDingTalkClient("https://oapi.dingtalk.com/sns/getuserinfo_bycode");
  60. OapiSnsGetuserinfoBycodeRequest bycodeRequest = new OapiSnsGetuserinfoBycodeRequest()
  61. {
  62. //通过扫描二维码,跳转到指定的Url后,向Url中追加Code临时授权码
  63. TmpAuthCode = loginTmpCode
  64. };
  65. OapiSnsGetuserinfoBycodeResponse bycodeResponse = client1.Execute(bycodeRequest, appKey, appSecret);
  66. if (bycodeResponse.IsError)
  67. {
  68. return BadRequest();
  69. }
  70. //根据unionid获取userid
  71. string unionid = bycodeResponse.UserInfo.Unionid;
  72. DefaultDingTalkClient clientDingTalkClient = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/user/getbyunionid");
  73. OapiUserGetbyunionidRequest byunionidRequest = new OapiUserGetbyunionidRequest()
  74. {
  75. Unionid = unionid
  76. };
  77. OapiUserGetbyunionidResponse byunionidResponse = clientDingTalkClient.Execute(byunionidRequest, access_token);
  78. if (byunionidResponse.IsError)
  79. {
  80. return BadRequest();
  81. }
  82. string userid = byunionidResponse.Result.Userid;
  83. //根据userId获取用户信息
  84. DefaultDingTalkClient clientDingTalkClient2 = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/get");
  85. OapiV2UserGetRequest getRequest = new OapiV2UserGetRequest()
  86. {
  87. Userid = userid,
  88. Language = "zh_CN"
  89. };
  90. getRequest.SetHttpMethod("Get");
  91. OapiV2UserGetResponse getResponse = clientDingTalkClient2.Execute(getRequest, access_token);
  92. if (getResponse.IsError)
  93. {
  94. return BadRequest();
  95. }
  96. return Ok(getResponse.Body);
  97. }
  98. }
  99. }