KnowledgeService.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Threading.Tasks;
  5. using TEAMModelOS.SDK.Module.AzureCosmosDBV3;
  6. using TEAMModelOS.Service.Models.Syllabus;
  7. using TEAMModelOS.Service.Services.Syllabus.Interface;
  8. namespace TEAMModelOS.Service.Services.Syllabus.Implement
  9. {
  10. public class KnowledgeService : IKnowledgeService
  11. {
  12. private IAzureCosmosDBV3Repository _cosmos;
  13. public KnowledgeService(IAzureCosmosDBV3Repository cosmos)
  14. {
  15. _cosmos = cosmos;
  16. }
  17. public async Task<List<IdPk>> DeleteKnowledge(List<IdPk> listPid)
  18. {
  19. List<IdPk> idPks = await _cosmos.DeleteAll<Knowledge>(listPid);
  20. foreach (IdPk Knowledge in idPks)
  21. {
  22. List<Knowledge> knowledges = await _cosmos.FindSQL<Knowledge>($"select value(c) from c join A0 in c.points where 1=1 and c.type = 0 and A0 = '"+ Knowledge.id + "' ");
  23. List<SyllabusResource> Resources = await _cosmos.FindSQL<SyllabusResource>($"select value(c) from c join A0 in c.points where 1=1 and c.type = 0 and A0 = '" + Knowledge.id + "' ");
  24. foreach (Knowledge knowledge in knowledges) knowledge.points.Remove(Knowledge.id);
  25. foreach (SyllabusResource Resource in Resources) Resource.points.Remove(Knowledge.id);
  26. await _cosmos.SaveOrUpdateAll(Resources);
  27. await _cosmos.SaveOrUpdateAll(knowledges);
  28. }
  29. return idPks;
  30. }
  31. public async Task<List<Knowledge>> SaveOrUpdateKnowledge(List<Knowledge> request)
  32. {
  33. foreach (Knowledge item in request)
  34. {
  35. if (item.id == null)
  36. {
  37. item.id = Guid.NewGuid().ToString();
  38. }
  39. if (item.type == 1 && item.points.Count > 0)
  40. {
  41. List<string> vs = item.points;
  42. foreach (string s in vs)
  43. {
  44. List<Knowledge> knowledges = await _cosmos.FindByDict<Knowledge>(new Dictionary<string, object>() { { "id", s } });
  45. foreach (Knowledge knowledge in knowledges)
  46. {
  47. knowledge.points.Remove(item.id);
  48. knowledge.points.Add(item.id);
  49. }
  50. await _cosmos.SaveOrUpdateAll(knowledges);
  51. }
  52. item.points.Clear();
  53. }
  54. }
  55. List<Knowledge> ts = await _cosmos.SaveOrUpdateAll(request);
  56. return ts;
  57. }
  58. }
  59. }