SchoolController.cs 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. using Microsoft.AspNetCore.Mvc;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using TEAMModelOS.Models;
  7. using TEAMModelOS.SDK;
  8. using TEAMModelOS.SDK.DI;
  9. using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
  10. using TEAMModelOS.SDK.Context.Exception;
  11. using System.Text.Json;
  12. using TEAMModelOS.Models.SchoolInfo;
  13. namespace TEAMModelOS.Controllers
  14. {
  15. [Route("api/[controller]")]
  16. [ApiController]
  17. public class SchoolController : Controller
  18. {
  19. public AzureCosmosFactory _azureCosmos;
  20. public SchoolController(AzureCosmosFactory azureCosmos)
  21. {
  22. _azureCosmos = azureCosmos;
  23. }
  24. /// <summary>
  25. /// 保存或更新学校
  26. /// </summary>
  27. /// <param name="request"></param>
  28. /// <returns></returns>
  29. [HttpPost("upsert")]
  30. public async Task<BaseResponse> Upsert(School request)
  31. {
  32. ResponseBuilder builder = ResponseBuilder.custom();
  33. if (string.IsNullOrEmpty(request.id))
  34. {
  35. List<School> schools = await _azureCosmos.FindByDict<School>(new Dictionary<string, object> { { "code", request.schoolCode } });
  36. if (schools.IsNotEmpty())
  37. {
  38. return builder.Error(ResponseCode.DATA_EXIST, "学校编码已存在!").build();
  39. }
  40. request.code = request.schoolCode;
  41. request.id = request.schoolCode;
  42. }
  43. else {
  44. List<School> schools = await _azureCosmos.FindByDict<School>(new Dictionary<string, object> { { "id", request.id } });
  45. if (schools.IsEmpty())
  46. {
  47. return builder.Error(ResponseCode.PARAMS_ERROR, "id不存在,不能更新").build();
  48. }
  49. }
  50. if (request.id.Equals(request.code) && request.id.Equals(request.schoolCode))
  51. {
  52. School datas = await _azureCosmos.SaveOrUpdate<School>(request);
  53. return builder.Data(datas).build();
  54. }
  55. else {
  56. return builder.Error(ResponseCode.PARAMS_ERROR, "id,code,schoolCode必须相同!").build();
  57. }
  58. }
  59. /// <summary>
  60. /// 查找学校
  61. /// </summary>
  62. /// <param name="request"></param>
  63. /// <returns></returns>
  64. [HttpPost("find")]
  65. public async Task<BaseResponse> Find(JsonElement request)
  66. {
  67. ResponseBuilder builder = ResponseBuilder.custom();
  68. if (request.TryGetProperty("code", out JsonElement code) &&! string.IsNullOrEmpty(code.ToString()))
  69. {
  70. List<School> sc = await _azureCosmos.FindByDict<School>(request);
  71. return builder.Data(sc).build();
  72. }
  73. else {
  74. return builder.Data(null).build();
  75. }
  76. }
  77. /// <summary>
  78. /// 取得所有學校基本資料("id","schoolCode","schoolName")
  79. /// </summary>
  80. /// <param name="GetAllSchoolBaesInfo"></param>
  81. /// <returns></returns>
  82. [HttpPost("GetAllSchoolBaesInfo")]
  83. public async Task<BaseResponse> GetAllSchoolBaesInfo(JsonElement request)
  84. {
  85. ResponseBuilder builder = ResponseBuilder.custom();
  86. List<School> sc = await _azureCosmos.FindSQL<School>("SELECT c.id, c.schoolCode, c.schoolName, c.address, c.picture FROM c WHERE c.pk='School'");
  87. return builder.Data(sc).build();
  88. }
  89. }
  90. }