StudentController.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. using Microsoft.AspNetCore.Mvc;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using TEAMModelOS.API.Models.Core;
  8. using TEAMModelOS.SDK.Extension.DataResult.JsonRpcRequest;
  9. using TEAMModelOS.SDK.Extension.DataResult.JsonRpcResponse;
  10. using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
  11. using TEAMModelOS.SDK.Module.AzureCosmosDB.Interfaces;
  12. namespace TEAMModelOS.API.Controllers.Core
  13. {
  14. [Route("api/[controller]")]
  15. [ApiController]
  16. // [Authorize]
  17. public class StudentController : BaseController
  18. {
  19. private readonly IAzureCosmosDBRepository azureCosmosDBRepository;
  20. public StudentController(IAzureCosmosDBRepository _azureCosmosDBRepository)
  21. {
  22. azureCosmosDBRepository = _azureCosmosDBRepository;
  23. }
  24. [HttpPost("SaveStudent")]
  25. public async Task<BaseJosnRPCResponse> SaveStudentInfo(JosnRPCRequest<Student> request)
  26. {
  27. JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
  28. Student data = await azureCosmosDBRepository.Save<Student>(request.@params);
  29. return builder.Data(data).build();
  30. }
  31. [HttpPost("FindStudent")]
  32. public async Task<BaseJosnRPCResponse> FindStudent(JosnRPCRequest<Dictionary<string, object>> request)
  33. {
  34. JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
  35. if (request.@params.TryGetValue("SchoolCode", out object SchoolCode))
  36. {
  37. List<Student> data = await azureCosmosDBRepository.FindByParams<Student>(request.@params);
  38. return builder.Data(data).build();
  39. }
  40. else
  41. {
  42. return builder.Error("SchoolCode is null !").build();
  43. }
  44. }
  45. [HttpPost("SaveAllStudent")]
  46. public async Task<BaseJosnRPCResponse> SaveAllStudentInfo(JosnRPCRequest<List<Student>> request)
  47. {
  48. JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
  49. Dictionary<string, List<Student>> dictInfo = new Dictionary<string, List<Student>>();
  50. foreach (IGrouping<string, Student> group in request.@params.GroupBy(c => c.classroomCode))
  51. {
  52. dictInfo.Add(group.Key, group.ToList());
  53. }
  54. List<Student> studentInfos = new List<Student>();
  55. foreach (string key in dictInfo.Keys)
  56. {
  57. List<Classroom> classroom = await azureCosmosDBRepository.FindByParams<Classroom>(new Dictionary<string, object> { { "ClassroomCode", key } });
  58. if (classroom.IsNotEmpty())
  59. {
  60. dictInfo.TryGetValue(key, out List<Student> sts);
  61. sts.ForEach(x => {
  62. x.gradeCode = classroom[0].gradeCode;
  63. x.periodCode = classroom[0].periodCode;
  64. x.schoolCode = classroom[0].schoolCode;
  65. x.id = x.studentId;
  66. });
  67. List<Student> data = await azureCosmosDBRepository.SaveAll<Student>(sts);
  68. studentInfos.AddRange(data);
  69. }
  70. }
  71. return builder.Data(studentInfos).build();
  72. }
  73. [HttpPost("UpdateStudent")]
  74. public async Task<BaseJosnRPCResponse> UpdateStudentInfo(JosnRPCRequest<Student> request)
  75. {
  76. JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
  77. Student data = await azureCosmosDBRepository.Update<Student>(request.@params);
  78. return builder.Data(data).build();
  79. }
  80. [HttpPost("UpdateAllStudent")]
  81. public async Task<BaseJosnRPCResponse> DeleteALlStudentInfo(JosnRPCRequest<Dictionary<string, Dictionary<string, object>>> request)
  82. {
  83. JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
  84. bool find = request.@params.TryGetValue("find", out Dictionary<string, object> findObj);
  85. bool update = request.@params.TryGetValue("update", out Dictionary<string, object> updateObj);
  86. List<Student> data = null;
  87. if (find && update)
  88. {
  89. data = await azureCosmosDBRepository.UpdateAll<Student>(findObj, updateObj);
  90. }
  91. return builder.Data(data).build();
  92. }
  93. /// <summary>
  94. /// 根据ID删除
  95. /// </summary>
  96. /// <param name="request"></param>
  97. /// <returns></returns>
  98. [HttpPost("DeleteStudent")]
  99. public async Task<BaseJosnRPCResponse> DeleteStudentInfo(JosnRPCRequest<Student> request)
  100. {
  101. JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
  102. string data = await azureCosmosDBRepository.DeleteAsync<Student>(request.@params.id, request.@params.schoolCode);
  103. return builder.Data(data).build();
  104. }
  105. }
  106. }