123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- using Azure.Cosmos;
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Text.Json;
- using System.Threading.Tasks;
- using TEAMModelOS.SDK.DI;
- using TEAMModelOS.SDK.Extension;
- using TEAMModelOS.SDK.Helper.Common.DateTimeHelper;
- using TEAMModelOS.SDK.Models.Cosmos.Common;
- namespace TEAMModelOS.SDK.Models.Service
- {
- public class LessonService
- {
- /// <summary>
- ///
- /// </summary>
- /// <param name="client"></param>
- /// <param name="_dingDing"></param>
- /// <param name="data"></param>
- /// <returns></returns>
- public static LessonDis DisLessonCount( LessonRecord oldRecord, LessonRecord newRecord, LessonDis lessonDis) {
- //创建课堂的情况
- if (oldRecord == null && newRecord != null)
- {
- lessonDis.record = 1;
- }
- //删除数据的情况
- else if (oldRecord != null && newRecord == null){
- lessonDis.record = -1;
- //P分数量加减
- if (oldRecord.pScore >= 70)
- {
- lessonDis.disPCount = -1;
- }
- //T分数量加减
- if (oldRecord.tScore >= 70)
- {
- lessonDis.disTCount = -1;
- }
- if (oldRecord.tScore >= 70 && oldRecord.pScore >= 70) {
- lessonDis.disTCount = -1;
- }
- }
- //无效操作
- else if (oldRecord == null && newRecord == null){
- //前后操作都有值,则表示更新
- }else {
- //P分数量加减
- if (oldRecord.pScore >= 70)
- {
- if (newRecord.pScore < 70)
- {
- lessonDis.disPCount = -1;
- }
- }
- else
- {
- if (newRecord.pScore >= 70)
- {
- lessonDis.disPCount = 1;
- }
- }
- //T分数量加减
- if (oldRecord.tScore >= 70)
- {
- if (newRecord.tScore < 70)
- {
- lessonDis.disTCount = -1;
- }
- }
- else
- {
- if (newRecord.tScore >= 70)
- {
- lessonDis.disTCount = 1;
- }
- }
- //双绿灯数量
- if (oldRecord.tScore >= 70 && oldRecord.pScore >= 70)
- {
- if (newRecord.tScore < 70 || newRecord.pScore < 70)
- {
- lessonDis.disDCount = -1;
- }
- }
- else
- {
- if (newRecord.tScore >= 70 && newRecord.pScore >= 70)
- {
- lessonDis.disDCount = 1;
- }
- }
- }
- return lessonDis;
- }
- public static async Task FixLessonCount(CosmosClient client, DingDing _dingDing, LessonRecord data, LessonDis lessonDis)
- {
- try
- {
- int day = DateTimeOffset.FromUnixTimeMilliseconds(data.startTime).DayOfYear;
- int year = DateTimeOffset.FromUnixTimeMilliseconds(data.startTime).Year;
- int days = DateTimeHelper.getDays(year);
- //int years = DateTimeOffset.UtcNow.DayOfYear;
- string tbname = string.Empty;
- string code = string.Empty;
- if (data.scope.Equals("school"))
- {
- code = $"LessonCount-{data.school}-{year}";
- tbname = "School";
- }
- else
- {
- code = $"LessonCount-{year}";
- tbname = "Teacher";
- }
- var response = await client.GetContainer(Constant.TEAMModelOS, tbname).ReadItemStreamAsync(data.id.ToString(), new PartitionKey(code));
- if (response.Status == 200)
- {
- using var json = await JsonDocument.ParseAsync(response.ContentStream);
- LessonCount count = json.ToObject<LessonCount>();
- if (count.courseIds.Count > 0)
- {
- count.tCount[day] += lessonDis.disTCount;
- count.pCount[day] += lessonDis.disPCount;
- count.ptCount[day] += lessonDis.disDCount;
- if (!count.courseIds.Contains(data.courseId))
- {
- count.courseIds.Add(data.courseId);
- count.beginCount[day] += 1;
- }
- }
- await client.GetContainer("TEAMModelOS", tbname).ReplaceItemAsync(count, count.id, new PartitionKey(code));
- }
- else
- {
- LessonCount count = new LessonCount
- {
- id = data.tmdid,
- code = code
- };
- double[] da = new double[days];
- List<double> list = new List<double>(da);
- list[day] += 1;
- count.beginCount.AddRange(list);
- count.tCount[day] += lessonDis.disTCount;
- count.pCount[day] += lessonDis.disPCount;
- count.ptCount[day] += lessonDis.disDCount;
- count.courseIds.Add(data.courseId);
- await client.GetContainer("TEAMModelOS", "tbname").CreateItemAsync(count, new PartitionKey(code));
- }
- }
- catch (Exception ex)
- {
- await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-LessonCount-FixLessonCount\n{ex.Message}{ex.StackTrace}{data.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
- }
- }
- }
- }
|