123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- using Azure.Cosmos;
- using System;
- using System.Linq;
- using System.Text.Json;
- using System.Threading.Tasks;
- using TEAMModelOS.SDK.DI;
- using TEAMModelOS.SDK.Extension;
- using TEAMModelOS.SDK.Models.Cosmos.BI.BICommon;
- namespace TEAMModelOS.SDK.Models.Service.BI
- {
- public static class ProductUseRecordService
- {
- /// <summary>
- /// 产品使用量增加
- /// </summary>
- /// <param name="cosmosClient"></param>
- /// <param name="_dingDing"></param>
- /// <param name="type"></param>
- /// <returns></returns>
- public static async Task SetProductUseRecord(CosmosClient cosmosClient, DingDing _dingDing,string type)
- {
- DateTimeOffset dateOff = DateTimeOffset.UtcNow;
- try
- {
- ProductUseRecord productUseRecord = new();
- var resUseRecord = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReadItemStreamAsync($"{dateOff.Year}", new PartitionKey("ProductUseRecord"));
- if (resUseRecord.Status == 200)
- {
- using var fileJson = await JsonDocument.ParseAsync(resUseRecord.ContentStream);
- productUseRecord = fileJson.ToObject<ProductUseRecord>();
- }
- else
- {
- productUseRecord.time = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
- productUseRecord.hiTaHour = new double[24].ToList();
- productUseRecord.hiTeachHour = new double[24].ToList();
- productUseRecord.hiTeachccHour = new double[24].ToList();
- productUseRecord.hiTaDay = new double[366].ToList();
- productUseRecord.hiTeachDay = new double[366].ToList();
- productUseRecord.hiTeachccDay = new double[366].ToList();
- }
- DateTimeOffset upTime = DateTimeOffset.UtcNow;
- double[] doub = new double[24];
- if (dateOff.DayOfYear > upTime.DayOfYear)
- {
- doub[dateOff.Hour] = 1;
- }
- if (productUseRecord.time > 1000000000000)
- upTime = DateTimeOffset.FromUnixTimeMilliseconds(productUseRecord.time);
- else
- upTime = DateTimeOffset.FromUnixTimeSeconds(productUseRecord.time);
- switch ($"{type}")
- {
- case "hita":
- if (dateOff.DayOfYear == upTime.DayOfYear)
- {
- productUseRecord.hiTaHour[dateOff.Hour] += 1;
- }
- else
- {
- productUseRecord.hiTaHour = doub.ToList();
- }
- productUseRecord.hiTaDay[dateOff.DayOfYear - 1] += 1;
- break;
- case "hiTeach":
- if (dateOff.DayOfYear == upTime.DayOfYear)
- {
- productUseRecord.hiTeachHour[dateOff.Hour] += 1;
- }
- else
- {
- productUseRecord.hiTeachHour = doub.ToList();
- }
- productUseRecord.hiTeachDay[dateOff.DayOfYear - 1] += 1;
- break;
- case "hiTeachcc":
- if (dateOff.DayOfYear == upTime.DayOfYear)
- {
- productUseRecord.hiTeachccHour[dateOff.Hour] += 1;
- }
- else
- {
- productUseRecord.hiTeachccHour = doub.ToList();
- }
- productUseRecord.hiTeachccDay[dateOff.DayOfYear - 1] += 1;
- break;
- }
- if (resUseRecord.Status == 200)
- {
- productUseRecord = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReplaceItemAsync<ProductUseRecord>(productUseRecord, productUseRecord.id, new PartitionKey("ProductUseRecord"));
- }
- else
- {
- productUseRecord = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").CreateItemAsync<ProductUseRecord>(productUseRecord, new PartitionKey("ProductUseRecord"));
- }
- }
- catch (Exception ex)
- {
- await _dingDing.SendBotMsg($"BI,SetProductUseRecord(),参数:统计类型:{type},时间:{dateOff}\n {ex.Message}\n {ex.StackTrace}", GroupNames.成都开发測試群組);
- }
- }
- }
- }
|