SyllabusService.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. using Grpc.Core;
  2. using Grpc.Extension.Abstract;
  3. using Microsoft.AspNetCore.Authorization;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Threading.Tasks;
  8. using TEAMModelGrpc.Models;
  9. using TEAMModelOS.SDK.Helper.Common.JsonHelper;
  10. using TEAMModelOS.SDK.DI;
  11. using TEAMModelOS.Service.Models;
  12. using TEAMModelOS.Service.Services.Interface;
  13. namespace TEAMModelGrpc.Services
  14. {
  15. /// <summary>
  16. /// 课纲业务
  17. /// </summary>
  18. public class SyllabusService : IGrpcService
  19. {
  20. private ISyllabusService syllabusService;
  21. private AzureCosmosFactory cosmosDBV3Repository;
  22. /// <summary>
  23. /// 构造函数
  24. /// </summary>
  25. /// <param name="syllabusService"></param>
  26. /// <param name="cosmosDBV3Repository"></param>
  27. public SyllabusService(ISyllabusService syllabusService, AzureCosmosFactory cosmosDBV3Repository)
  28. {
  29. this.syllabusService = syllabusService;
  30. this.cosmosDBV3Repository = cosmosDBV3Repository;
  31. }
  32. /// <summary>
  33. /// 查找课纲
  34. /// </summary>
  35. /// <param name="request"></param>
  36. /// <param name="responseStream"></param>
  37. /// <param name="context"></param>
  38. /// <returns></returns>
  39. [Authorize]
  40. public async Task FindSyllabusTree(Dict request, IServerStreamWriter<SyllabusTreeDto> responseStream, ServerCallContext context)
  41. {
  42. Dictionary<string, object> keyValuePairs = new Dictionary<string, object>();
  43. keyValuePairs = request.ToDict();
  44. List<SyllabusTree> knowledges = await syllabusService.Find(keyValuePairs);
  45. List<SyllabusTreeDto> list = knowledges.ToJson().FromJson<List<SyllabusTreeDto>>();
  46. list.ForEach(x =>
  47. {
  48. responseStream.WriteAsync(x);
  49. });
  50. }
  51. /// <summary>
  52. /// 按节点新增课纲
  53. /// </summary>
  54. /// <param name="requestStream"></param>
  55. /// <param name="context"></param>
  56. /// <returns></returns>
  57. public async Task<Response> SaveOrUpdateAsNodes(IAsyncStreamReader<SyllabusNode> requestStream, ServerCallContext context)
  58. {
  59. List<SyllabusNode> syllabusNodes = new List<SyllabusNode>();
  60. await foreach (SyllabusNode syllabusNode in requestStream.ReadAllAsync())
  61. {
  62. syllabusNodes.Add(syllabusNode);
  63. }
  64. await syllabusService.SaveOrUpdateAsNodes(syllabusNodes);
  65. Response response = new Response();
  66. return response.Success();
  67. }
  68. /// <summary>
  69. /// 按树形新增课纲结构
  70. /// </summary>
  71. /// <param name="requestStream"></param>
  72. /// <param name="responseStream"></param>
  73. /// <param name="context"></param>
  74. /// <returns></returns>
  75. public async Task SaveOrUpdateAsTree(IAsyncStreamReader<SyllabusTreeDto> requestStream, IServerStreamWriter<SyllabusTreeDto> responseStream, ServerCallContext context)
  76. {
  77. List<SyllabusTree> syllabusTrees = new List<SyllabusTree>();
  78. List<SyllabusTreeDto> syllabusTreeDtos = new List<SyllabusTreeDto>();
  79. await foreach (SyllabusTreeDto syllabusNode in requestStream.ReadAllAsync())
  80. {
  81. syllabusTreeDtos.Add(syllabusNode);
  82. SyllabusTree syllabusTree = syllabusNode.ToJson().FromJson<SyllabusTree>();
  83. syllabusTrees.Add(syllabusTree);
  84. }
  85. await syllabusService.SaveOrUpdateAsTree(syllabusTrees);
  86. syllabusTreeDtos.ForEach(x => {
  87. responseStream.WriteAsync(x);
  88. });
  89. }
  90. /// <summary>
  91. /// 删除课纲
  92. /// </summary>
  93. /// <param name="request"></param>
  94. /// <param name="responseStream"></param>
  95. /// <param name="context"></param>
  96. /// <returns></returns>
  97. [Authorize]
  98. public async Task DeleteSyllabus(Dict request, IServerStreamWriter<SyllabusTreeDto> responseStream, ServerCallContext context)
  99. {
  100. Dictionary<string, object> keyValuePairs = new Dictionary<string, object>();
  101. keyValuePairs = request.ToDict();
  102. List<Syllabus> syllabuses = await syllabusService.DeleteSyllabus(keyValuePairs);//await cosmosDBV3Repository.DeleteAll<Knowledge>(listPid.idPks);
  103. List<SyllabusTreeDto> syllabusTreeDtos = syllabuses.ToJson().FromJson<List<SyllabusTreeDto>>();
  104. syllabusTreeDtos.ForEach(x => {
  105. responseStream.WriteAsync(x);
  106. });
  107. }
  108. }
  109. }