KnowledgeService.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. using Google.Protobuf;
  2. using Grpc.Core;
  3. using Grpc.Extension.Abstract;
  4. using Microsoft.AspNetCore.Authorization;
  5. using System;
  6. using System.Collections.Concurrent;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Threading.Tasks;
  10. using TEAMModelGrpc.Models;
  11. using TEAMModelOS.SDK.Helper.Common.JsonHelper;
  12. using TEAMModelOS.SDK.DI;
  13. using TEAMModelOS.Service.Models;
  14. using TEAMModelOS.Service.Services.Interface;
  15. namespace TEAMModelGrpc.Services
  16. {
  17. public class KnowledgeService : IGrpcService
  18. {
  19. private AzureCosmosFactory cosmosDBV3Repository;
  20. private IKnowledgeService knowledgeService;
  21. public KnowledgeService(AzureCosmosFactory cosmosDBV3Repository, IKnowledgeService knowledgeService)
  22. {
  23. this.cosmosDBV3Repository = cosmosDBV3Repository;
  24. this.knowledgeService = knowledgeService;
  25. }
  26. /// <summary>
  27. /// 查询知识点
  28. /// </summary>
  29. /// <param name="request"></param>
  30. /// <param name="responseStream"></param>
  31. /// <param name="context"></param>
  32. /// <returns></returns>
  33. [Authorize]
  34. public async Task FinKnowledge(Dict request, IServerStreamWriter<Knowledge> responseStream, ServerCallContext context)
  35. {
  36. Dictionary<string, object> keyValuePairs = new Dictionary<string, object>();
  37. keyValuePairs = request.ToDict();
  38. List<Knowledge> knowledges = await cosmosDBV3Repository.FindByDict<Knowledge>(keyValuePairs);
  39. knowledges.ForEach(x =>
  40. {
  41. responseStream.WriteAsync(x);
  42. });
  43. }
  44. /// <summary>
  45. /// 保存知识点
  46. /// </summary>
  47. /// <param name="requestStream"></param>
  48. /// <param name="responseStream"></param>
  49. /// <param name="context"></param>
  50. /// <returns></returns>
  51. [Authorize]
  52. public async Task SaveKnowledge(IAsyncStreamReader<Knowledge> requestStream, IServerStreamWriter<Knowledge> responseStream, ServerCallContext context)
  53. {
  54. //Dictionary<string, object> keyValuePairs = new Dictionary<string, object>();
  55. //keyValuePairs = request.ToDict();
  56. List<Knowledge> knowledges = new List<Knowledge>();
  57. await foreach (var message in requestStream.ReadAllAsync())
  58. {
  59. knowledges.Add(message);
  60. }
  61. await knowledgeService.SaveOrUpdateKnowledge(knowledges);
  62. knowledges.ForEach(x =>
  63. {
  64. responseStream.WriteAsync(x);
  65. });
  66. }
  67. /// <summary>
  68. /// 删除知识点
  69. /// </summary>
  70. /// <param name="listPid"></param>
  71. /// <param name="context"></param>
  72. /// <returns></returns>
  73. [Authorize]
  74. public async Task<ListPid> DeleteKnowledge(ListPid listPid, ServerCallContext context)
  75. {
  76. List<IdPk> idPks = await knowledgeService.DeleteKnowledge(listPid.idPks);//await cosmosDBV3Repository.DeleteAll<Knowledge>(listPid.idPks);
  77. listPid.idPks = idPks;
  78. return listPid;
  79. }
  80. }
  81. }