ClassRoomController.cs 4.0 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.Service.Models;
  7. using TEAMModelOS.SDK.Context.Exception;
  8. using TEAMModelOS.SDK;
  9. using TEAMModelOS.SDK;
  10. using TEAMModelOS.SDK.Module.AzureCosmosDB.Interfaces;
  11. using TEAMModelOS.SDK.Module.AzureCosmosDBV3;
  12. using TEAMModelOS.SDK.Helper.Common.ValidateHelper;
  13. using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
  14. using System.Linq;
  15. namespace TEAMModelOS.Controllers
  16. {
  17. [Route("api/[controller]")]
  18. [ApiController]
  19. public class ClassroomController : BaseController
  20. {
  21. public readonly IAzureCosmosDBV3Repository cosmosrepository;
  22. public ClassroomController(IAzureCosmosDBV3Repository _cosmosrepository) {
  23. cosmosrepository = _cosmosrepository;
  24. }
  25. [HttpPost("upsert")]
  26. public async ValueTask<BaseResponse> Upsert(JosnRequest<Classroom> request)
  27. {
  28. ResponseBuilder builder = ResponseBuilder.custom();
  29. List<Student> students = null;
  30. if (request.@params.id != null)
  31. {
  32. await cosmosrepository.SaveOrUpdate(request.@params);
  33. students = await cosmosrepository.FindByDict<Student>(new Dictionary<string, object>() { { "classroomCode", request.@params.classroomCode }, { "schoolCode", request.@params.code } });
  34. }
  35. else
  36. {
  37. List<int> sc = await cosmosrepository.FindCountByDict<Classroom>(new Dictionary<string, object> { { "classroomCode", request.@params.classroomCode } });
  38. if (sc.IsNotEmpty() && sc[0]>0) {
  39. return builder.Error(ResponseCode.DATA_EXIST, "班级代码已经存在!").build();
  40. }
  41. request.@params.id = request.@params.classroomCode;
  42. await cosmosrepository.SaveOrUpdate<Classroom>(request.@params);
  43. }
  44. //强制关联原生班级的id
  45. List<ClassStudent> classroomStudents = await cosmosrepository.FindByDict<ClassStudent>(new Dictionary<string, object> { { "id", request.@params.classroomCode } });
  46. if (classroomStudents.IsNotEmpty())
  47. {
  48. if (students.IsNotEmpty()) {
  49. List<ClassStudent> newClassStudents = new List<ClassStudent>();
  50. students.ForEach(x=> {
  51. if (!classroomStudents.Select(m=>m.code).Contains(x.studentId)) {
  52. newClassStudents.Add(new ClassStudent { code = x.studentId, id= request.@params.classroomCode });
  53. }
  54. });
  55. await cosmosrepository.SaveOrUpdateAll<ClassStudent>(newClassStudents);
  56. }
  57. }
  58. return builder.Data(request.@params).build();
  59. }
  60. [HttpPost("find")]
  61. public async Task<BaseResponse> Find(JosnRequest<Dictionary<string, object>> request)
  62. {
  63. ResponseBuilder builder = ResponseBuilder.custom();
  64. List<Classroom> sc = await cosmosrepository.FindByDict<Classroom>(request.@params);
  65. return builder.Data(sc).build();
  66. }
  67. [HttpPost("delete")]
  68. public async Task<BaseResponse> Delete(JosnRequest<Dictionary<string, object>> request)
  69. {
  70. ResponseBuilder builder = ResponseBuilder.custom();
  71. if (request.@params.TryGetValue("id", out object id))
  72. {
  73. List<Classroom> sc = await cosmosrepository.FindByDict<Classroom>(request.@params);
  74. if (sc.IsNotEmpty())
  75. {
  76. await cosmosrepository.DeleteAll<ClassStudent>(new Dictionary<string, object> { { "id", sc.Select(x=>x.classroomCode).ToArray()} });
  77. List<IdPk> idPks = await cosmosrepository.DeleteAll<Classroom>(sc);
  78. builder.Data(idPks);
  79. }
  80. }
  81. else {
  82. return builder.Error(ResponseCode.PARAMS_ERROR, "参数未定义!").build();
  83. }
  84. return builder.build();
  85. }
  86. }
  87. }