using Azure.Cosmos; using DocumentFormat.OpenXml.Bibliography; using Microsoft.VisualBasic; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.Json; using System.Threading.Tasks; using TEAMModelOS.SDK.DI; using TEAMModelOS.SDK.Extension; using TEAMModelOS.SDK.Models.Cosmos.BI; using TEAMModelOS.SDK.Models.Cosmos.BI.BICommon; namespace TEAMModelOS.SDK.Models.Service.BI { public static class BIStatsNotice { /// /// 统计通知 /// /// 连接 /// 错误消息发送 /// 统计类型 /// 账号类型 private:个人 school 学校 /// 账号id /// 数量 /// 创建时间 /// public static async Task SetStatsNotice(CosmosClient cosmosClient, DingDing _dingDing, string type, string idType, string id, int count, long careDate = 0) { try { DateTimeOffset dateOff = DateTimeOffset.UtcNow; if (careDate > 1000000000000) dateOff = DateTimeOffset.FromUnixTimeMilliseconds(careDate); else dateOff = DateTimeOffset.FromUnixTimeSeconds(careDate); StatsNotice statsNotice = new(); var resStsInfo = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReadItemStreamAsync($"{dateOff.Year}-{id}", new PartitionKey("StatsNotice")); if (resStsInfo.Status == 200) { using var fileJson = await JsonDocument.ParseAsync(resStsInfo.ContentStream); statsNotice = fileJson.ToObject(); } else { statsNotice.id = $"{dateOff.Year}-{id}"; statsNotice.type = idType; statsNotice.rangeId = id; } switch (type) { case "Student": statsNotice.stuDayCnt += count; break; case "Classroom": statsNotice.classroomDayCnt += count; break; case "Weigh": statsNotice.weighDayCnt += count; break; case "Homework": statsNotice.homeworkDayCnt = count; break; } if (resStsInfo.Status == 200) { statsNotice = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReplaceItemAsync(statsNotice, statsNotice.id, new PartitionKey("StatsNotice")); } else { statsNotice = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").CreateItemAsync(statsNotice, new PartitionKey("StatsNotice")); } } catch (Exception ex) { await _dingDing.SendBotMsg($"BI,{Environment.GetEnvironmentVariable("Option:Location")},SetStatsNotice(),参数: 统计类型:{type},类型私人/学校:{idType},id:{id}, 增/减数:{count},时间戳:{careDate}\n {ex.Message}\n {ex.StackTrace}", GroupNames.成都开发測試群組); } } /// /// 发送消息 /// /// public static async Task MonitorStatsNotice() { } } }