ProductUseRecordService.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. using Azure.Cosmos;
  2. using DocumentFormat.OpenXml.Bibliography;
  3. using Microsoft.VisualBasic;
  4. using System;
  5. using System.Collections.Generic;
  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.Models.Cosmos.BI;
  13. using TEAMModelOS.SDK.Models.Cosmos.BI.BICommon;
  14. namespace TEAMModelOS.SDK.Models.Service.BI
  15. {
  16. public static class ProductUseRecordService
  17. {
  18. /// <summary>
  19. /// 产品使用量增加
  20. /// </summary>
  21. /// <param name="cosmosClient"></param>
  22. /// <param name="_dingDing"></param>
  23. /// <param name="type"></param>
  24. /// <returns></returns>
  25. public static async Task SetProductUseRecord(CosmosClient cosmosClient, DingDing _dingDing,string type)
  26. {
  27. DateTimeOffset dateOff = DateTimeOffset.UtcNow;
  28. try
  29. {
  30. ProductUseRecord productUseRecord = new();
  31. var resUseRecord = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReadItemStreamAsync($"{dateOff.Year}", new PartitionKey("ProductUseRecord"));
  32. if (resUseRecord.Status == 200)
  33. {
  34. using var fileJson = await JsonDocument.ParseAsync(resUseRecord.ContentStream);
  35. productUseRecord = fileJson.ToObject<ProductUseRecord>();
  36. }
  37. else
  38. {
  39. productUseRecord.time = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
  40. productUseRecord.hiTaHour = new double[24].ToList();
  41. productUseRecord.hiTeachHour = new double[24].ToList();
  42. productUseRecord.hiTeachccHour = new double[24].ToList();
  43. productUseRecord.hiTaDay = new double[366].ToList();
  44. productUseRecord.hiTeachDay = new double[366].ToList();
  45. productUseRecord.hiTeachccDay = new double[366].ToList();
  46. }
  47. DateTimeOffset upTime = DateTimeOffset.UtcNow;
  48. double[] doub = new double[24];
  49. if (dateOff.DayOfYear > upTime.DayOfYear)
  50. {
  51. doub[dateOff.Hour] = 1;
  52. }
  53. if (productUseRecord.time > 1000000000000)
  54. upTime = DateTimeOffset.FromUnixTimeMilliseconds(productUseRecord.time);
  55. else
  56. upTime = DateTimeOffset.FromUnixTimeSeconds(productUseRecord.time);
  57. switch ($"{type}")
  58. {
  59. case "hita":
  60. if (dateOff.DayOfYear == upTime.DayOfYear)
  61. {
  62. productUseRecord.hiTaHour[dateOff.Hour] += 1;
  63. }
  64. else
  65. {
  66. productUseRecord.hiTaHour = doub.ToList();
  67. }
  68. productUseRecord.hiTaDay[dateOff.DayOfYear - 1] += 1;
  69. break;
  70. case "hiTeach":
  71. if (dateOff.DayOfYear == upTime.DayOfYear)
  72. {
  73. productUseRecord.hiTeachHour[dateOff.Hour] += 1;
  74. }
  75. else
  76. {
  77. productUseRecord.hiTeachHour = doub.ToList();
  78. }
  79. productUseRecord.hiTeachDay[dateOff.DayOfYear - 1] += 1;
  80. break;
  81. case "hiTeachcc":
  82. if (dateOff.DayOfYear == upTime.DayOfYear)
  83. {
  84. productUseRecord.hiTeachccHour[dateOff.Hour] += 1;
  85. }
  86. else
  87. {
  88. productUseRecord.hiTeachccHour = doub.ToList();
  89. }
  90. productUseRecord.hiTeachccDay[dateOff.DayOfYear - 1] += 1;
  91. break;
  92. }
  93. if (resUseRecord.Status == 200)
  94. {
  95. productUseRecord = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReplaceItemAsync<ProductUseRecord>(productUseRecord, productUseRecord.id, new PartitionKey("ProductUseRecord"));
  96. }
  97. else
  98. {
  99. productUseRecord = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").CreateItemAsync<ProductUseRecord>(productUseRecord, new PartitionKey("ProductUseRecord"));
  100. }
  101. }
  102. catch (Exception ex)
  103. {
  104. await _dingDing.SendBotMsg($"BI,SetProductUseRecord(),参数:统计类型:{type},时间:{dateOff}\n {ex.Message}\n {ex.StackTrace}", GroupNames.成都开发測試群組);
  105. }
  106. }
  107. }
  108. }