CourseService.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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;
  11. namespace TEAMModelGrpc.Services
  12. {
  13. public class CourseService : IGrpcService
  14. {
  15. public IAzureCosmosDBV3Repository _cosmos;
  16. public CourseService(IAzureCosmosDBV3Repository cosmosDBV3Repository)
  17. {
  18. this._cosmos = cosmosDBV3Repository;
  19. }
  20. /// <summary>
  21. /// 查询课程
  22. /// </summary>
  23. /// <param name="request"></param>
  24. /// <param name="responseStream"></param>
  25. /// <param name="context"></param>
  26. /// <returns></returns>
  27. [Authorize]
  28. public async Task FindCourseByDict(Dict request, IServerStreamWriter<Course> responseStream, ServerCallContext context)
  29. {
  30. Dictionary<string, object> keyValuePairs = new Dictionary<string, object>();
  31. keyValuePairs = request.ToDict();
  32. List<Course> course = await _cosmos.FindByDict<Course>(keyValuePairs);
  33. course.ForEach(x =>
  34. {
  35. responseStream.WriteAsync(x);
  36. });
  37. }
  38. /// <summary>
  39. /// 保存课程
  40. /// </summary>
  41. /// <param name="requestStream"></param>
  42. /// <param name="responseStream"></param>
  43. /// <param name="context"></param>
  44. /// <returns></returns>
  45. [Authorize]
  46. public async Task SaveCourse(IAsyncStreamReader<Course> requestStream, IServerStreamWriter<Course> responseStream, ServerCallContext context)
  47. {
  48. //Dictionary<string, object> keyValuePairs = new Dictionary<string, object>();
  49. //keyValuePairs = request.ToDict();
  50. List<Course> knowledges = new List<Course>();
  51. await foreach (var message in requestStream.ReadAllAsync())
  52. {
  53. knowledges.Add(message);
  54. }
  55. await _cosmos.SaveOrUpdateAll(knowledges);
  56. knowledges.ForEach(x =>
  57. {
  58. responseStream.WriteAsync(x);
  59. });
  60. }
  61. /// <summary>
  62. /// 删除课程
  63. /// </summary>
  64. /// <param name="listPid"></param>
  65. /// <param name="context"></param>
  66. /// <returns></returns>
  67. [Authorize]
  68. public async Task<ListPid> DeleteCourse(ListPid listPid, ServerCallContext context)
  69. {
  70. List<IdPk> idPks = await _cosmos.DeleteAll<Course>(listPid.idPks);
  71. listPid.idPks = idPks;
  72. return listPid;
  73. }
  74. }
  75. }