VolumeService.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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.Module.AzureCosmosDBV3;
  10. using TEAMModelOS.Service.Models.Syllabus;
  11. using TEAMModelOS.Service.Services.Syllabus.Interface;
  12. namespace TEAMModelGrpc.Services
  13. {
  14. public class VolumeService :IGrpcService
  15. {
  16. private readonly IAzureCosmosDBV3Repository azureCosmosDBRepository;
  17. private IVolumeService volumeService;
  18. public VolumeService(IAzureCosmosDBV3Repository 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<SyllabusVolume> requestStream, IServerStreamWriter<SyllabusVolume> responseStream, ServerCallContext context) {
  32. List<SyllabusVolume> volumes = new List<SyllabusVolume>();
  33. await foreach (SyllabusVolume syllabusNode in requestStream.ReadAllAsync())
  34. {
  35. List<SyllabusVolume> 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<SyllabusVolume> responseStream, ServerCallContext context) {
  51. Dictionary<string, object> dict = request.ToDict();
  52. List<SyllabusVolume> syllabusVolumes = await azureCosmosDBRepository.FindByDict<SyllabusVolume>(dict);
  53. syllabusVolumes.ForEach(x => {
  54. responseStream.WriteAsync(x);
  55. });
  56. }
  57. }
  58. }