XkwServiceController.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. using Microsoft.AspNetCore.Mvc;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Threading.Tasks;
  6. using TEAMModelOS.Models;
  7. using TEAMModelOS.SDK.DI;
  8. using System.Text.Json;
  9. using TEAMModelOS.SDK.Models;
  10. using Microsoft.AspNetCore.Http;
  11. using TEAMModelOS.SDK.Extension;
  12. using Azure.Cosmos;
  13. using System.Text;
  14. using TEAMModelOS.SDK.DI.AzureCosmos.Inner;
  15. using Microsoft.Extensions.Options;
  16. using Azure.Messaging.ServiceBus;
  17. using Microsoft.Extensions.Configuration;
  18. using HTEXLib.COMM.Helpers;
  19. using TEAMModelOS.SDK;
  20. using System.IdentityModel.Tokens.Jwt;
  21. using TEAMModelOS.Services;
  22. using TEAMModelOS.SDK.Models.Service;
  23. using System.IO;
  24. using System.Dynamic;
  25. using Microsoft.AspNetCore.Authorization;
  26. using Azure.Storage.Blobs.Models;
  27. using static TEAMModelOS.SDK.Models.Teacher;
  28. using System.Web;
  29. using static TEAMModelOS.Controllers.FixDataController;
  30. using static TEAMModelOS.SDK.SchoolService;
  31. using Microsoft.AspNetCore.Hosting;
  32. using TEAMModelOS.Filter;
  33. using TEAMModelOS.Controllers.Third.Xkw;
  34. using Microsoft.Extensions.Primitives;
  35. using System.Net.Http;
  36. using TEAMModelOS.Controllers.Third.Xkw.Sdk;
  37. using TEAMModelOS.SDK.Models.Table;
  38. namespace TEAMModelOS.Controllers.Third.Xkw
  39. {
  40. // <summary>
  41. /// 标准OAuth2
  42. /// </summary>
  43. ///
  44. [ProducesResponseType(StatusCodes.Status200OK)]
  45. [ProducesResponseType(StatusCodes.Status400BadRequest)]
  46. //
  47. //[Route("")]
  48. [Route("xkw")]
  49. [ApiController]
  50. public class XkwServiceController: ControllerBase
  51. {
  52. private readonly SnowflakeId _snowflakeId;
  53. private readonly AzureCosmosFactory _azureCosmos;
  54. private readonly DingDing _dingDing;
  55. private readonly Option _option;
  56. private readonly AzureStorageFactory _azureStorage;
  57. private readonly AzureServiceBusFactory _serviceBus;
  58. private readonly AzureRedisFactory _azureRedis;
  59. private readonly CoreAPIHttpService _coreAPIHttpService;
  60. private readonly ThirdApisService _scsApisService;
  61. private readonly HttpTrigger _httpTrigger;
  62. private readonly IWebHostEnvironment _environment;
  63. private readonly XkwAPIHttpService _xkwAPIHttpService;
  64. public IConfiguration _configuration { get; set; }
  65. public XkwServiceController(XkwAPIHttpService xkwAPIHttpService, IWebHostEnvironment environment, AzureCosmosFactory azureCosmos, SnowflakeId snowflakeId, DingDing dingDing, IOptionsSnapshot<Option> option, AzureStorageFactory azureStorage,
  66. AzureRedisFactory azureRedis, AzureServiceBusFactory serviceBus, IConfiguration configuration, CoreAPIHttpService coreAPIHttpService, ThirdApisService scsApisService, HttpTrigger httpTrigger)
  67. {
  68. _azureCosmos = azureCosmos;
  69. _snowflakeId = snowflakeId;
  70. _dingDing = dingDing;
  71. _option = option?.Value;
  72. _azureStorage = azureStorage;
  73. _serviceBus = serviceBus;
  74. _configuration = configuration;
  75. _azureRedis = azureRedis;
  76. _coreAPIHttpService = coreAPIHttpService;
  77. _scsApisService = scsApisService;
  78. _httpTrigger = httpTrigger;
  79. _environment = environment;
  80. _xkwAPIHttpService=xkwAPIHttpService;
  81. }
  82. [HttpGet("get-xkw-baseinfo")]
  83. //[Authorize(Roles = "IES")]
  84. //[AuthToken(Roles = "teacher,admin,area,student")]
  85. public async Task<IActionResult> GetXkwBaseInfo([FromQuery] OAuthCode authCode)
  86. {
  87. //var courses = _xkwAPIHttpService.Get<JsonElement>("/xopqbm/courses/all", null);
  88. List<XkwQuestionType> questionTypes = new List<XkwQuestionType>();
  89. XkwConstant.xkwCourses.ForEach(x =>
  90. {
  91. Dictionary<string, string> dict = new Dictionary<string, string>() { { "course_id", $"{x.id}" } };
  92. var question_types = _xkwAPIHttpService.Get<JsonElement>($"/xopqbm/question-types", dict);
  93. if (question_types.TryGetProperty("code", out JsonElement code) && $"{code}".Equals("2000000"))
  94. {
  95. questionTypes.AddRange(question_types.GetProperty("data").ToObject<List<XkwQuestionType>>());
  96. }
  97. });
  98. return Ok(questionTypes);
  99. }
  100. [HttpGet("paper-notice")]
  101. //[Authorize(Roles = "IES")]
  102. //[AuthToken(Roles = "teacher,admin,area,student")]
  103. public async Task<IActionResult> PaperNotice([FromQuery] OAuthCode authCode)
  104. {
  105. await _dingDing.SendBotMsg($"学科网推送消息:{authCode.ToJsonString()}", GroupNames.成都开发測試群組);
  106. return Ok(authCode);
  107. }
  108. }
  109. }