ResourceController.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  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.SDK.Context.Exception;
  7. using TEAMModelOS.SDK;
  8. using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
  9. using TEAMModelOS.SDK.DI;
  10. using TEAMModelOS.Service.Models;
  11. namespace TEAMModelOS.Controllers
  12. {
  13. [Route("api/[controller]")]
  14. [ApiController]
  15. public class ResourceController : BaseController
  16. {
  17. private AzureStorageFactory _table;
  18. private AzureCosmosFactory _cosmos;
  19. public ResourceController(AzureStorageFactory table, AzureCosmosFactory cosmos)
  20. {
  21. _table = table;
  22. _cosmos = cosmos;
  23. }
  24. /// <summary>
  25. /// 保存或更新SyllabusResource
  26. /// </summary>
  27. /// <param name="request"></param>
  28. /// <returns></returns>
  29. [HttpPost("upsertAll")]
  30. public async Task<BaseResponse> UpsertAll(JosnRequest<List<Resource>> request)
  31. {
  32. ResponseBuilder builder = ResponseBuilder.custom();
  33. if (request.@params.IsNotEmpty())// != null )
  34. {
  35. List<Resource> resource = request.@params;
  36. foreach (Resource item in resource)
  37. {
  38. if (item.id == null)
  39. {
  40. item.id = Guid.NewGuid().ToString(); //item.sha1Code + "-" + item.extension + "-" + item.size;
  41. }
  42. }
  43. List<Resource> ts = await _cosmos.SaveOrUpdateAll(resource);
  44. builder.Data("保存或新增成功");
  45. }
  46. return builder.build();
  47. }
  48. /// <summary>
  49. /// 获取SyllabusResource
  50. /// </summary>
  51. /// <param name="request"></param>
  52. /// <returns></returns>
  53. [HttpPost("find")]
  54. public async Task<BaseResponse> Find(JosnRequest<Dictionary<string, object>> request)
  55. {
  56. // request.@params.TryAdd("PartitionKey", request.lang);
  57. ResponseBuilder builder = ResponseBuilder.custom();
  58. if (request.@params.Keys.Count > 0)
  59. {
  60. List<Resource> data = new List<Resource>();
  61. data = await _cosmos.FindByDict<Resource>(request.@params);
  62. return builder.Data(data.OrderBy(m => m.createTime)).Extend(new Dictionary<string, object> { { "count", data.IsNotEmpty() ? data.Count : 0 } }).build();
  63. }
  64. else {
  65. return builder.Error(ResponseCode.PARAMS_ERROR, "参数异常!").build();
  66. }
  67. }
  68. /// <summary>
  69. /// 获取SyllabusResource
  70. /// </summary>
  71. /// <param name="request"></param>
  72. /// <returns></returns>
  73. [HttpPost("findById")]
  74. public async Task<BaseResponse> FindSyllabusResourceById(JosnRequest<List<string>> request)
  75. {
  76. // request.@params.TryAdd("PartitionKey", request.lang);
  77. ResponseBuilder builder = ResponseBuilder.custom();
  78. if (request.@params != null)
  79. {
  80. List<Resource> data = new List<Resource>();
  81. data = await _cosmos.FindByIds<Resource>(request.@params);
  82. return builder.Data(data.OrderBy(m => m.createTime)).Extend(new Dictionary<string, object> { { "count", data.IsNotEmpty() ? data.Count : 0 } }).build();
  83. }
  84. else
  85. { return builder.Error(ResponseCode.PARAMS_ERROR, "参数异常!").build(); }
  86. }
  87. /// <summary>
  88. /// 删除 SyllabusResource
  89. /// </summary>
  90. /// <param name="request"></param>
  91. /// <returns></returns>
  92. [HttpPost("delete")]
  93. public async Task<BaseResponse> DeleteSyllabusResource(JosnRequest<Dictionary<string, object>> request)
  94. {
  95. ResponseBuilder builder = ResponseBuilder.custom();
  96. List<Resource> syllabusResources = await Delete<Resource>(request, builder);
  97. foreach (Resource syllabusResource in syllabusResources) {
  98. string blobUrl = syllabusResource.blobUrl;
  99. if (!string.IsNullOrEmpty(blobUrl))
  100. {
  101. // await _azureBlobDBRepository.Deleteblob(blobUrl);
  102. }
  103. string compressUrl = syllabusResource.compressUrl;
  104. if (!string.IsNullOrEmpty(compressUrl))
  105. {
  106. // await _azureBlobDBRepository.Deleteblob(compressUrl);
  107. }
  108. }
  109. return builder.build();
  110. }
  111. private async Task<List<T>> Delete<T>(JosnRequest<Dictionary<string, object>> request, ResponseBuilder builder)where T:ID
  112. {
  113. if (request.@params.IsNotEmpty() && request.@params.Keys.Count > 0)
  114. {
  115. List<T> schoolBlocks = await _cosmos.FindByDict<T>(request.@params);
  116. Type t = typeof(T);
  117. if (schoolBlocks.IsNotEmpty())
  118. {
  119. await _cosmos.DeleteAll<T>(schoolBlocks);
  120. builder.Data("删除成功");
  121. }
  122. return schoolBlocks;
  123. }
  124. else {
  125. builder.Error(ResponseCode.PARAMS_ERROR, "参数异常!");
  126. return null;
  127. }
  128. }
  129. /// <summary>
  130. /// 查询 资源被引用次数
  131. /// </summary>
  132. /// <param name="request"></param>
  133. /// <returns></returns>
  134. [HttpPost("reference")]
  135. public async Task<BaseResponse> Reference(JosnRequest<Dictionary<string, object>> request)
  136. {
  137. ResponseBuilder builder = ResponseBuilder.custom();
  138. List<ResourceReference> data = new List<ResourceReference>();
  139. data = await _table.FindListByDict<ResourceReference>(request.@params);
  140. return builder.Data(data.OrderBy(m => m.CreateTime)).Extend(new Dictionary<string, object> { { "count", data.Count } }).build();
  141. }
  142. }
  143. }