EvaluationSyncInfoController.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using Microsoft.AspNetCore.Http;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.Extensions.Configuration;
  4. using Microsoft.Extensions.Options;
  5. using System.Collections.Generic;
  6. using TEAMModelOS.SDK.DI;
  7. using TEAMModelOS.SDK;
  8. using TEAMModelOS.Models;
  9. using System.Text.Json;
  10. using System.Threading.Tasks;
  11. using TEAMModelOS.Filter;
  12. using System.Text.Json.Nodes;
  13. using TEAMModelOS.SDK.Models.Cosmos.Normal;
  14. using Microsoft.Azure.Cosmos;
  15. using TEAMModelOS.SDK.Models.Service;
  16. using TEAMModelOS.SDK.Models.Cosmos;
  17. namespace TEAMModelOS.Controllers.Both
  18. {
  19. [ProducesResponseType(StatusCodes.Status200OK)]
  20. [ProducesResponseType(StatusCodes.Status400BadRequest)]
  21. [Route("evaluation-sync")]
  22. [ApiController]
  23. public class EvaluationSyncInfoController : ControllerBase
  24. {
  25. private AzureCosmosFactory _azureCosmos;
  26. private readonly DingDing _dingDing;
  27. private readonly CoreAPIHttpService _coreAPIHttpService;
  28. private readonly Option _option;
  29. private readonly AzureServiceBusFactory _serviceBus;
  30. private readonly AzureStorageFactory _azureStorage;
  31. private readonly AzureRedisFactory _azureRedis;
  32. public IConfiguration _configuration { get; set; }
  33. public EvaluationSyncInfoController(AzureRedisFactory azureRedis, AzureCosmosFactory azureCosmos, DingDing dingDing, IOptionsSnapshot<Option> option, CoreAPIHttpService coreAPIHttpService, AzureServiceBusFactory serviceBus, AzureStorageFactory azureStorage, IConfiguration configuration)
  34. {
  35. _azureCosmos = azureCosmos;
  36. _dingDing = dingDing;
  37. _option = option?.Value;
  38. _serviceBus = serviceBus;
  39. _configuration = configuration;
  40. _azureStorage = azureStorage;
  41. _azureRedis = azureRedis; _coreAPIHttpService = coreAPIHttpService;
  42. }
  43. /// <summary>
  44. /// 评测信息打包
  45. /// </summary>
  46. /// <param name="request"></param>
  47. /// <returns></returns>
  48. [ProducesDefaultResponseType]
  49. [AuthToken(Roles = "teacher,admin")]
  50. [HttpPost("package")]
  51. //#if !DEBUG
  52. // [Authorize(Roles = "IES")]
  53. //#endif
  54. public async Task<IActionResult> Package(JsonNode request)
  55. {
  56. /*
  57. {
  58. "id":"活动id",
  59. "scope":"school/private",
  60. "owner":"学校简码/醍摩豆id",
  61. "type":"Art/Exam"
  62. }
  63. */
  64. if (!string.IsNullOrWhiteSpace($"{request["pid"]}"))
  65. {
  66. //区级发布的活动
  67. var result= await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<ArtEvaluation>($"select c.id,c.scope,c.school from c where c.pId ='{request["pid"]}' and c.pk='Art' ");
  68. if (result.list.IsNotEmpty())
  69. {
  70. foreach (var item in result.list)
  71. {
  72. await EvaluationSyncInfoService.PackageEvaluation(item.id, item.scope, item.school, "Art", _azureCosmos, _azureStorage, _coreAPIHttpService, _dingDing);
  73. }
  74. }
  75. }
  76. if (request["evaluation"]!=null)
  77. {
  78. var activity = JsonSerializer.Deserialize<EvaluationSyncInfo>(request["evaluation"]);
  79. ValidResult validResult = activity.Valid();
  80. if (!validResult.isVaild)
  81. {
  82. await EvaluationSyncInfoService.PackageEvaluation(activity.id, activity.scope, activity.owner, activity.type, _azureCosmos, _azureStorage, _coreAPIHttpService,_dingDing);
  83. return BadRequest(validResult);
  84. }
  85. }
  86. return Ok();
  87. }
  88. }
  89. }