VolumeService.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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.DI;
  10. using TEAMModelOS.Service.Models;
  11. using TEAMModelOS.Service.Services.Interface;
  12. namespace TEAMModelGrpc.Services
  13. {
  14. public class VolumeService :IGrpcService
  15. {
  16. private readonly AzureCosmosFactory azureCosmosDBRepository;
  17. private IVolumeService volumeService;
  18. public VolumeService(AzureCosmosFactory azureCosmosDBRepository, IVolumeService volumeService)
  19. {
  20. this.azureCosmosDBRepository = azureCosmosDBRepository;
  21. this.volumeService = volumeService;
  22. }
  23. /// <summary>
  24. /// 保存册别
  25. /// </summary>
  26. /// <param name="requestStream"></param>
  27. /// <param name="responseStream"></param>
  28. /// <param name="context"></param>
  29. /// <returns></returns>
  30. [Authorize]
  31. public async Task SaveOrUpdateVolume(IAsyncStreamReader<Volume> requestStream, IServerStreamWriter<Volume> responseStream, ServerCallContext context) {
  32. List<Volume> volumes = new List<Volume>();
  33. await foreach (Volume syllabusNode in requestStream.ReadAllAsync())
  34. {
  35. List<Volume> volume = await volumeService.SaveOrUpdateVolume(syllabusNode);
  36. volumes.AddRange(volume);
  37. }
  38. volumes.ForEach(x => {
  39. responseStream.WriteAsync(x);
  40. });
  41. }
  42. /// <summary>
  43. /// 查询册别
  44. /// </summary>
  45. /// <param name="request"></param>
  46. /// <param name="responseStream"></param>
  47. /// <param name="context"></param>
  48. /// <returns></returns>
  49. [Authorize]
  50. public async Task FindVolume(Dict request, IServerStreamWriter<Volume> responseStream, ServerCallContext context) {
  51. Dictionary<string, object> dict = request.ToDict();
  52. List<Volume> syllabusVolumes = await azureCosmosDBRepository.FindByDict<Volume>(dict);
  53. syllabusVolumes.ForEach(x => {
  54. responseStream.WriteAsync(x);
  55. });
  56. }
  57. /// <summary>
  58. /// 删除册别
  59. /// </summary>
  60. /// <param name="listPid"></param>
  61. /// <param name="context"></param>
  62. /// <returns></returns>
  63. [Authorize]
  64. public async Task<ListPid> Delete(ListPid listPid, ServerCallContext context)
  65. {
  66. List<IdPk> idPks = await azureCosmosDBRepository.DeleteAll<Volume>(listPid.idPks);
  67. listPid.idPks = idPks;
  68. return listPid;
  69. }
  70. }
  71. }