CrazyIter_Bin 2 年之前
父节点
当前提交
574f0bd4e3

+ 42 - 1
TEAMModelOS.SDK/Models/Service/SchoolService.cs

@@ -20,7 +20,48 @@ namespace TEAMModelOS.SDK
 {
 {
     public class SchoolService
     public class SchoolService
     {
     {
-
+        /// <summary>
+        /// 处理学期排序
+        /// </summary>
+        /// <param name="semesterList"></param>
+        /// <returns></returns>
+        public static List<Semester> SortSemester(List<Semester> semesterList)
+        {
+            int Year = DateTimeOffset.UtcNow.Year;
+            List<KeyValuePair<int, Semester>> pairs = new List<KeyValuePair<int, Semester>>();
+            semesterList.ForEach(se => {
+                string sm = se.month >= 10 ? $"{se.month}" : $"0{se.month}";
+                string sd = se.day >= 10 ? $"{se.day}" : $"0{se.day}";
+                int order = int.Parse($"{Year}{sm}{sd}");
+                pairs.Add(new KeyValuePair<int, Semester>(order, se));
+            });
+            var orderPairs = pairs.OrderBy(z => z.Key);
+            semesterList = orderPairs.Select(z => z.Value).ToList();
+            int startIndex = semesterList.FindIndex(z => z.start == 1);
+            if (startIndex == -1)
+            {
+                //未设置学期的情况默认9月份开始的。
+                startIndex = semesterList.FindIndex(z => z.month == 9);
+                //如果还未找到,就以排序结果为准
+                if (startIndex == -1)
+                {
+                    startIndex = 0;
+                }
+            }
+            if (startIndex > 0)
+            {
+                List<Semester> before = semesterList.Take(startIndex).ToList();
+                List<Semester> after = semesterList.Skip(startIndex).ToList();
+                semesterList = new List<Semester>();
+                semesterList.AddRange(after);
+                semesterList.AddRange(before);
+                return semesterList;
+            }
+            else
+            {
+                return semesterList;
+            }
+        }
 
 
         public static async Task<(List<Class> school_classes, List<Class> graduate_classes)> DoGraduateClasses(HttpTrigger _httpTrigger, AzureCosmosFactory _azureCosmos, List<string> periodIds, School school_base, Option _option,DingDing _dingDing, int waite = 0) {
         public static async Task<(List<Class> school_classes, List<Class> graduate_classes)> DoGraduateClasses(HttpTrigger _httpTrigger, AzureCosmosFactory _azureCosmos, List<string> periodIds, School school_base, Option _option,DingDing _dingDing, int waite = 0) {
             List<Class> school_classes = new List<Class>();
             List<Class> school_classes = new List<Class>();

+ 78 - 3
TEAMModelOS/Controllers/OpenApi/OpenApiService.cs

@@ -1383,12 +1383,87 @@ namespace TEAMModelOS.Controllers
                 if (!json.TryGetProperty("semesterData", out JsonElement semesterData)) {
                 if (!json.TryGetProperty("semesterData", out JsonElement semesterData)) {
                     return responseData = new() { code = RespondCode.ParamsError, msg = "semesterData为空!" };
                     return responseData = new() { code = RespondCode.ParamsError, msg = "semesterData为空!" };
                 }
                 }
-
-                if(!$"{subjectId}".Equals("") && !$"{subjectId}".Equals("") && !$"{subjectId}".Equals("") && !$"{subjectId}".Equals(""))
+                if(!$"{subjectId}".Equals("subject_sport") && !$"{subjectId}".Equals("subject_virtue") && !$"{subjectId}".Equals("subject_labour") 
+                    && !$"{subjectId}".Equals("subject_music") && !$"{subjectId}".Equals("subject_painting"))
                 {
                 {
+                    return responseData = new() { code = RespondCode.ParamsError, msg = "当前subjectId未开放画像业务!" };
+                }
+                return responseData = new() { code = RespondCode.Ok, msg = "成功" };
+                School schoolBase = await client.GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(school, new PartitionKey("Base"));
+                Period period= schoolBase.period.Find(x => x.id.Equals($"{periodId}"));
+                if (period == null)
+                {
+                    return responseData = new() { code = RespondCode.NotFound, msg = "periodId不存在!" };
+                }
+                else {
+                    //是否需要创建科目 
+                    var bind = period.subjects.Find(x => x.bindId.Equals($"{subjectId}"));
+                    if (bind == null) 
+                    {
+                        string subjectName = "";
+                        switch (true) {
+                            case bool when $"{subjectId}".Equals("subject_sport") :
+                                subjectName = "体育";
+                                break;
+                            case bool when $"{subjectId}".Equals("subject_virtue"):
+                                subjectName = "德育";
+                                break;
+                            case bool when $"{subjectId}".Equals("subject_labour"):
+                                subjectName = "劳动";
+                                break;
+                            case bool when $"{subjectId}".Equals("subject_music"):
+                                subjectName = "音乐";
+                                break;
+                            case bool when $"{subjectId}".Equals("subject_painting"):
+                                subjectName = "美术";
+                                break;
+                        }
+                        var subName = period.subjects.Find(z => z.name.Contains(subjectName));
+                        if (subName != null)
+                        {
+                            subName.bindId = $"{subjectId}";
+                        }
+                        else {
+                            period.subjects.Add(new Subject { id= Guid.NewGuid().ToString(),name=subjectName,bindId=$"{subjectId}",type=1 });
+                        }
+                        await client.GetContainer(Constant.TEAMModelOS, Constant.School).ReplaceItemAsync<School>(schoolBase,school, new PartitionKey("Base"));
+                    }
+                    List<SemesterData> semesterDatas = semesterData.ToObject<List<SemesterData>>();
+                    if (semesterDatas.Any()) {
+                        semesterDatas.ForEach(data => {
+                            if (!string.IsNullOrWhiteSpace(data.semesterId)) {
+                                if (!period.semesters.Any()) {
+                                    period.semesters.Add(new Semester
+                                    {
+                                        id =Guid.NewGuid().ToString(),
+                                        name = "第一学期",
+                                        start = 1,
+                                        month = 9,
+                                        day = 1
+                                    }); period.semesters.Add(new Semester
+                                    {
+                                        id = Guid.NewGuid().ToString(),
+                                        name = "第二学期",
+                                        start = 0,
+                                        month = 3,
+                                        day = 1
+                                    });
+                                }
+                                var semester =  period.semesters.Find(s => s.id.Equals(data.semesterId));
+                                if (semester == null) {
+                                    if (data.semester > 0)
+                                    {
 
 
+                                    }
+                                    else {
+                                        //无效的学期
+                                    }
+                                }
+                            }
+                        });
+                    }
                 }
                 }
-                List<SemesterData> semesterDatas = semesterData.ToObject<List<SemesterData>>();
+               
                 return responseData = new() { code = RespondCode.Ok, msg = "成功" };
                 return responseData = new() { code = RespondCode.Ok, msg = "成功" };
             } catch (Exception ex) {
             } catch (Exception ex) {
                 await _dingDing.SendBotMsg($"OpenApi,{Environment.GetEnvironmentVariable("Option:Location")} OpenApiService/UpsertStudentPortrait()  参数:bizId:{bizId},school:{school},参数json:{json.ToJsonString()} \n  {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 await _dingDing.SendBotMsg($"OpenApi,{Environment.GetEnvironmentVariable("Option:Location")} OpenApiService/UpsertStudentPortrait()  参数:bizId:{bizId},school:{school},参数json:{json.ToJsonString()} \n  {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);

+ 79 - 2
TEAMModelOS/Controllers/XTest/TestController.cs

@@ -70,8 +70,85 @@ namespace TEAMModelOS.Controllers
             _coreAPIHttpService = coreAPIHttpService;
             _coreAPIHttpService = coreAPIHttpService;
             _searcher = searcher;
             _searcher = searcher;
         }
         }
-
-
+        [ProducesDefaultResponseType]
+        [HttpPost("get-semester")]
+        public async Task<IActionResult> GetSemester(JsonElement json) {
+            List<Semester> semesterList = new List<Semester>();
+            semesterList.Add(
+               new Semester
+               {
+                   id = Guid.NewGuid().ToString(),
+                   name = "第二学期",
+                   start = 0,
+                   month = 3,
+                   day = 1
+               });
+            semesterList.Add(
+                new Semester
+                {
+                    id = Guid.NewGuid().ToString(),
+                    name = "第一学期",
+                    start = 1,
+                    month = 9,
+                    day = 1
+                });
+           
+            //semesterList.Add(
+            //    new Semester
+            //    {
+            //        id = "q",
+            //        name = "第四学期",
+            //        start = 0,
+            //        month = 7,
+            //        day = 1
+            //    });
+            //semesterList.Add(
+            //    new Semester
+            //    {
+            //        id = "q",
+            //        name = "第三学期",
+            //        start = 0,
+            //        month = 4,
+            //        day = 1
+            //    });
+            semesterList= SortSemester(semesterList);
+            return Ok(semesterList);
+        }
+        private List<Semester> SortSemester(List<Semester> semesterList) {
+            int Year = DateTimeOffset.UtcNow.Year;
+            List<KeyValuePair<int, Semester>> pairs = new List<KeyValuePair<int, Semester>>();
+            semesterList.ForEach(se => {
+                string sm = se.month >= 10 ? $"{se.month}" : $"0{se.month}";
+                string sd = se.day >= 10 ? $"{se.day}" : $"0{se.day}";
+                int order = int.Parse($"{Year}{sm}{sd}");
+                pairs.Add(new KeyValuePair<int, Semester>(order, se));
+            });
+            var orderPairs = pairs.OrderBy(z => z.Key);
+            semesterList = orderPairs.Select(z => z.Value).ToList();
+            int startIndex = semesterList.FindIndex(z => z.start == 1);
+            if (startIndex == -1)
+            {
+                //未设置学期的情况默认9月份开始的。
+                startIndex= semesterList.FindIndex(z => z.month == 9);
+                //如果还未找到,就以排序结果为准
+                if (startIndex == -1) {
+                    startIndex = 0;
+                }
+            }
+            if (startIndex > 0)
+            {
+                List<Semester> before = semesterList.Take(startIndex ).ToList();
+                List<Semester> after = semesterList.Skip(startIndex).ToList();
+                semesterList = new List<Semester>();
+                semesterList.AddRange(after);
+                semesterList.AddRange(before);
+                return semesterList;
+            }
+            else
+            {
+                return semesterList;
+            }
+        }
         /*
         /*
 [
 [
 {"method":"台北市","params":{"CountryId":"TW","CityId":"30"}},1
 {"method":"台北市","params":{"CountryId":"TW","CityId":"30"}},1