LessonService.cs 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using Azure.Cosmos;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using System.Text.Json;
  6. using System.Threading.Tasks;
  7. using TEAMModelOS.SDK.DI;
  8. using TEAMModelOS.SDK.Extension;
  9. using TEAMModelOS.SDK.Helper.Common.DateTimeHelper;
  10. using TEAMModelOS.SDK.Models.Cosmos.Common;
  11. namespace TEAMModelOS.SDK.Models.Service
  12. {
  13. public class LessonService
  14. {
  15. public static async Task FixLessonCount(CosmosClient client, DingDing _dingDing, LessonRecord data)
  16. {
  17. try
  18. {
  19. int day = DateTimeOffset.FromUnixTimeMilliseconds(data.startTime).DayOfYear;
  20. int year = DateTimeOffset.FromUnixTimeMilliseconds(data.startTime).Year;
  21. int days = DateTimeHelper.getDays(year);
  22. //int years = DateTimeOffset.UtcNow.DayOfYear;
  23. string tbname = string.Empty;
  24. string code = string.Empty;
  25. if (data.scope.Equals("school"))
  26. {
  27. code = $"LessonCount-{data.school}";
  28. tbname = "School";
  29. }
  30. else
  31. {
  32. code = $"LessonCount";
  33. tbname = "Teacher";
  34. }
  35. var response = await client.GetContainer(Constant.TEAMModelOS, tbname).ReadItemStreamAsync(data.id.ToString(), new PartitionKey(code));
  36. if (response.Status == 200)
  37. {
  38. using var json = await JsonDocument.ParseAsync(response.ContentStream);
  39. LessonCount count = json.ToObject<LessonCount>();
  40. if (count.courseIds.Count > 0)
  41. {
  42. if (!count.courseIds.Contains(data.courseId))
  43. {
  44. count.courseIds.Add(data.courseId);
  45. count.beginCount[day] += 1;
  46. }
  47. }
  48. await client.GetContainer("TEAMModelOS", tbname).ReplaceItemAsync(count, count.id, new PartitionKey(code));
  49. }
  50. else
  51. {
  52. LessonCount count = new LessonCount
  53. {
  54. id = data.tmdid,
  55. code = code,
  56. year = year
  57. };
  58. double[] da = new double[days];
  59. List<double> list = new List<double>(da);
  60. list[day] += 1;
  61. count.beginCount.AddRange(list);
  62. count.courseIds.Add(data.courseId);
  63. await client.GetContainer("TEAMModelOS", "tbname").CreateItemAsync(count, new PartitionKey(code));
  64. }
  65. }
  66. catch (Exception ex)
  67. {
  68. await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-LessonCount-FixLessonCount\n{ex.Message}{ex.StackTrace}{data.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
  69. }
  70. }
  71. }
  72. }