TriggerStuActivity.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. using Azure;
  2. using Azure.Cosmos;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.IO;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Text.Json;
  9. using System.Threading.Tasks;
  10. using TEAMModelOS.SDK.DI;
  11. using TEAMModelOS.SDK.Extension;
  12. using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
  13. using TEAMModelOS.SDK.Models;
  14. using TEAMModelOS.SDK.Models.Cosmos.Common;
  15. namespace TEAMModelFunction
  16. {
  17. public class TriggerStuActivity
  18. {
  19. public static async Task<string> SaveStuActivity(CosmosClient client, DingDing _dingDing, List<StuActivity> stuActivities,List<StuActivity> tmdActivities) {
  20. try {
  21. if (stuActivities.IsNotEmpty())
  22. {
  23. foreach (var x in stuActivities)
  24. {
  25. await client.GetContainer("TEAMModelOS", "Student").UpsertItemAsync(x, new PartitionKey(x.code));
  26. }
  27. }
  28. if (tmdActivities.IsNotEmpty())
  29. {
  30. foreach (var x in tmdActivities)
  31. {
  32. await client.GetContainer("TEAMModelOS", "Teacher").UpsertItemAsync(x, new PartitionKey(x.code));
  33. }
  34. }
  35. } catch (Exception ex) {
  36. await _dingDing.SendBotMsg($"OS,TriggerStuActivity-SaveStuActivity\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
  37. }
  38. return "";
  39. }
  40. public static async Task<(List<string> tmdids, List<Students> studentss)> GetStuList(CosmosClient client, DingDing _dingDing, List<string> classes, string school) {
  41. try {
  42. List<string> tmdids = new List<string>();
  43. List<Students> studentss = new List<Students>();
  44. if (!classes.IsNotEmpty()) { return (tmdids, studentss); }
  45. List<string> sqlList = new List<string>();
  46. classes.ForEach(x => { sqlList.Add($" '{x}' "); });
  47. string sql = string.Join(" , ", sqlList);
  48. List<StuList> schList = new List<StuList>();
  49. List<Student> students = new List<Student>();
  50. if (!string.IsNullOrEmpty(school)) {
  51. await foreach (var item in client.GetContainer("TEAMModelOS", "School").GetItemQueryIterator<StuList>(queryText: $"select value(c) from c where c.id in ({sql})",
  52. requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"StuList-{school}") }))
  53. {
  54. schList.Add(item);
  55. }
  56. await foreach (var item in client.GetContainer("TEAMModelOS", "Student").GetItemQueryIterator<Student>(queryText: $"select value(c) from c where c.classId in ({sql})",
  57. requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"Base-{school}") }))
  58. {
  59. students.Add(item);
  60. }
  61. }
  62. List<StuList> tchLists = new List<StuList>();
  63. await foreach (var item in client.GetContainer("TEAMModelOS", "Teacher").GetItemQueryIterator<StuList>(queryText: $"select value(c) from c where c.id in ({sql})",
  64. requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"StuList") }))
  65. {
  66. tchLists.Add(item);
  67. }
  68. schList.ForEach(x => {
  69. if (x.students.IsNotEmpty())
  70. {
  71. studentss.AddRange(x.students);
  72. }
  73. if (x.tmids.IsNotEmpty())
  74. {
  75. tmdids.AddRange(x.tmids);
  76. }
  77. });
  78. tchLists.ForEach(x =>
  79. {
  80. if (x.students.IsNotEmpty()) {
  81. studentss.AddRange(x.students);
  82. }
  83. if (x.tmids.IsNotEmpty())
  84. {
  85. tmdids.AddRange(x.tmids);
  86. }
  87. });
  88. students.ForEach(x => {
  89. studentss.Add(new Students { id = x.id, code = x.code, schoolId = x.schoolId });
  90. });
  91. return (tmdids, studentss);
  92. }
  93. catch (Exception ex)
  94. {
  95. await _dingDing.SendBotMsg($"OS,TriggerStuActivity-SaveStuActivity\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
  96. }
  97. return (null, null);
  98. }
  99. }
  100. }