Преглед изворни кода

update 开放平台,课程

CrazyIter_Bin пре 3 година
родитељ
комит
361bca2511

+ 110 - 104
TEAMModelAPI/Controllers/School/CourseController.cs

@@ -56,6 +56,54 @@ namespace TEAMModelAPI.Controllers
             _coreAPIHttpService = coreAPIHttpService;
             _serviceBus = serviceBus;
         }
+        [ProducesDefaultResponseType]
+        [HttpPost("get-course-list")]
+        [ApiToken(Auth = "1301", Name = "获取课程列表信息", RW = "R", Limit = false)]
+        public async Task<IActionResult> GetCourseList(JsonElement json)
+        {
+            var client = _azureCosmos.GetCosmosClient();
+            var (id, school) = HttpContext.GetApiTokenInfo();
+            json.TryGetProperty("periodId", out JsonElement periodId);
+            json.TryGetProperty("subjectId", out JsonElement subjectId);
+            StringBuilder sql = new StringBuilder($"SELECT c.id,c.name,c.subject,c.period,c.scope,c.no,c.school FROM c where 1=1 ");
+            if (!string.IsNullOrWhiteSpace($"{periodId}"))
+            {
+                sql.Append($" and c.period.id='{periodId}'");
+            }
+            if (!string.IsNullOrWhiteSpace($"{subjectId}"))
+            {
+                sql.Append($" and c.subject.id='{subjectId}'");
+            }
+            List<dynamic> courses = new List<dynamic>();
+            await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "School").
+                    GetItemQueryIterator<dynamic>(queryText: sql.ToString(), requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Course-{school}") }))
+            {
+                courses.Add(item);
+            }
+            return Ok(new { courses });
+        }
+
+        [ProducesDefaultResponseType]
+        [HttpPost("get-course-info")]
+        [ApiToken(Auth = "1302", Name = "课程详细信息", RW = "R", Limit = false)]
+        public async Task<IActionResult> GetCourseInfo(JsonElement json)
+        {
+            var (id, school) = HttpContext.GetApiTokenInfo();
+            json.TryGetProperty("courseId", out JsonElement courseId);
+            Azure.Response response = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School")
+               .ReadItemStreamAsync($"{courseId}", new PartitionKey($"Course-{school}"));
+            if (response.Status == 200)
+            {
+                JsonDocument document = JsonDocument.Parse(response.Content);
+                Course course = document.RootElement.Deserialize<Course>();
+                return Ok(new { course.name, course.id, course.subject, course.period, course.scope, course.school, course.no, course.desc, course.schedule });
+            }
+            else
+            {
+                return Ok(new { error = 1, msg = "课程不存在!" });
+            }
+        }
+
         /// <summary>
         ///  获取指定学段作息
         /// </summary>
@@ -63,7 +111,7 @@ namespace TEAMModelAPI.Controllers
         /// <returns></returns>
         [ProducesDefaultResponseType]
         [HttpPost("get-period-timetable")]
-        [ApiToken(Auth = "1301", Name = "试卷和评测的条件信息", RW = "R", Limit = false)]
+        [ApiToken(Auth = "1303", Name = "试卷和评测的条件信息", RW = "R", Limit = false)]
         public async Task<IActionResult> GetPaperExamCondition(JsonElement json)
         {
             json.TryGetProperty("periodId", out JsonElement _periodId);
@@ -83,57 +131,27 @@ namespace TEAMModelAPI.Controllers
 
 
         [ProducesDefaultResponseType]
-        [HttpPost("upsert-course-info")]
-        [ApiToken(Auth = "1302", Name = "课程详细信息", RW = "W", Limit = false)]
+        [HttpPost("upsert-course-infos")]
+        [ApiToken(Auth = "1304", Name = "课程详细信息", RW = "W", Limit = false)]
         public async Task<IActionResult> UpsertCourseInfo(JsonElement json)
         {
             var (id, school) = HttpContext.GetApiTokenInfo();
-            if (!json.TryGetProperty("course", out JsonElement _course)) { return Ok(new { error = 1, msg = "课程对象不存在" }); }
-            var courseDto = _course.ToObject<CourseDto>();
-            Course course = null;
-            if (courseDto != null && courseDto.Valid().isVaild) {
+            if (!json.TryGetProperty("courses", out JsonElement _courses)) { return Ok(new { error = 1, msg = "课程对象不存在" }); }
+            List<CourseDto> courseDtos = _courses.ToObject<List<CourseDto>>();
+            List<Dictionary<string, string>> errorData = new List<Dictionary<string, string>>();
+            List<Course> courses = new List<Course>() ;
+            if (courseDtos != null && courseDtos.Valid().isVaild) {
                 School data = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>(school, new PartitionKey("Base"));
-                var period = data.period.Find(x => x.id.Equals($"{courseDto.periodId}"));
-                if (period != null)
-                {
-                    var subject = period.subjects.Find(x => x.id.Equals($"{courseDto.subjectId}"));
-                    if (subject != null)
+                foreach (var courseDto in courseDtos) {
+                    var period = data.period.Find(x => x.id.Equals($"{courseDto.periodId}"));
+                    if (period != null)
                     {
-                        if (string.IsNullOrWhiteSpace(courseDto?.id))
-                        {
-                            course = new Course
-                            {
-                                pk = "Course",
-                                id = Guid.NewGuid().ToString(),
-                                code = $"Course-{school}",
-                                name = courseDto.name,
-                                subject = new SubjectSimple { id = subject.id, name = subject.name },
-                                period = new PeriodSimple { id = period.id, name = period.name },
-                                school = school,
-                                desc = courseDto.desc,
-                                scope = "school",
-                                no = courseDto.no,
-                            };
-                            await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).CreateItemAsync(course, new PartitionKey(course.code));
-                        }
-                        else
+                        var subject = period.subjects.Find(x => x.id.Equals($"{courseDto.subjectId}"));
+                        if (subject != null)
                         {
-                            Azure.Response response = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync($"{course.id}", new PartitionKey($"Course-{school}"));
-                            if (response.Status == 200)
+                            Course course = null;
+                            if (string.IsNullOrWhiteSpace(courseDto?.id))
                             {
-                                JsonDocument jsonDocument = JsonDocument.Parse(response.Content);
-                                course = jsonDocument.RootElement.ToObject<Course>();
-                                course.pk = "Course";
-                                course.name = string.IsNullOrWhiteSpace(courseDto.name) ? course.name : courseDto.name;
-                                course.subject = new SubjectSimple { id = subject.id, name = subject.name };
-                                course.period = new PeriodSimple { id = period.id, name = period.name };
-                                course.school = school;
-                                course.desc = string.IsNullOrWhiteSpace(courseDto.desc) ? course.desc : courseDto.desc;
-                                course.scope = "school";
-                                course.no = string.IsNullOrWhiteSpace(courseDto.no) ? course.no : courseDto.no;
-                                await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReplaceItemAsync(course,course.id, new PartitionKey(course.code));
-                            }
-                            else {
                                 course = new Course
                                 {
                                     pk = "Course",
@@ -149,22 +167,60 @@ namespace TEAMModelAPI.Controllers
                                 };
                                 await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).CreateItemAsync(course, new PartitionKey(course.code));
                             }
+                            else
+                            {
+                                Azure.Response response = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync($"{course.id}", new PartitionKey($"Course-{school}"));
+                                if (response.Status == 200)
+                                {
+                                    JsonDocument jsonDocument = JsonDocument.Parse(response.Content);
+                                    course = jsonDocument.RootElement.ToObject<Course>();
+                                    course.pk = "Course";
+                                    course.name = string.IsNullOrWhiteSpace(courseDto.name) ? course.name : courseDto.name;
+                                    course.subject = new SubjectSimple { id = subject.id, name = subject.name };
+                                    course.period = new PeriodSimple { id = period.id, name = period.name };
+                                    course.school = school;
+                                    course.desc = string.IsNullOrWhiteSpace(courseDto.desc) ? course.desc : courseDto.desc;
+                                    course.scope = "school";
+                                    course.no = string.IsNullOrWhiteSpace(courseDto.no) ? course.no : courseDto.no;
+                                    await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReplaceItemAsync(course, course.id, new PartitionKey(course.code));
+                                }
+                                else
+                                {
+                                    course = new Course
+                                    {
+                                        pk = "Course",
+                                        id = Guid.NewGuid().ToString(),
+                                        code = $"Course-{school}",
+                                        name = courseDto.name,
+                                        subject = new SubjectSimple { id = subject.id, name = subject.name },
+                                        period = new PeriodSimple { id = period.id, name = period.name },
+                                        school = school,
+                                        desc = courseDto.desc,
+                                        scope = "school",
+                                        no = courseDto.no,
+                                    };
+                                    await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).CreateItemAsync(course, new PartitionKey(course.code));
+                                }
+                            }
+                            if (course != null) { courses.Add(course); }
+                        }
+                        else
+                        {
+                            errorData.Add(new Dictionary<string, string> { { "course", courseDto.name }, { "subjectId", courseDto.subjectId } });
                         }
-                        return Ok(new { period.subjects, period.timetable, course = course });
                     }
-                    else {
-                        return Ok(new { error =4, msg = "科目不存在!" });
+                    else
+                    {
+                        errorData.Add(new Dictionary<string, string> { { "course", courseDto.name }, { "periodId", courseDto.periodId } });
+                        //return Ok(new { error = 2, msg = "学段不存在!" });
                     }
                 }
-                else
-                {
-                    return Ok(new { error = 2, msg = "学段不存在!" });
-                }
             }
             else
             {
-                return Ok(new { error = 3, msg = courseDto.Valid() });
+                return Ok(new { error = 3, msg = courseDtos.Valid() });
             }
+            return Ok(new { courses = courses ,errorData});
         }
 
         public class ImportCourse {
@@ -185,7 +241,7 @@ namespace TEAMModelAPI.Controllers
         
         [ProducesDefaultResponseType]
         [HttpPost("upsert-course-schedule")]
-        [ApiToken(Auth = "1303", Name = "更新课程的排课信息", RW = "W", Limit = false)]
+        [ApiToken(Auth = "1305", Name = "更新课程的排课信息", RW = "W", Limit = false)]
         public async Task<IActionResult> UpsertCourseSchedule(JsonElement json)
         {
             var (id, school) = HttpContext.GetApiTokenInfo();
@@ -569,55 +625,5 @@ namespace TEAMModelAPI.Controllers
                 updateCourse= update_course
             });
         }
-
-        [ProducesDefaultResponseType]
-        [HttpPost("get-course-list")]
-        [ApiToken(Auth = "1303", Name = "获取课程列表信息", RW = "R", Limit = false)]
-        public async Task<IActionResult> GetCourseList(JsonElement json)
-        {
-            var client = _azureCosmos.GetCosmosClient();
-            var (id, school) = HttpContext.GetApiTokenInfo();
-            json.TryGetProperty("periodId", out JsonElement periodId);
-            json.TryGetProperty("subjectId", out JsonElement subjectId);
-            StringBuilder sql = new StringBuilder($"SELECT c.id,c.name,c.subject,c.period,c.scope,c.no,c.school FROM c where 1=1 ");
-            if (!string.IsNullOrWhiteSpace($"{periodId}"))
-            {
-                sql.Append($" and c.period.id='{periodId}'");
-            }
-            if (!string.IsNullOrWhiteSpace($"{subjectId}"))
-            {
-                sql.Append($" and c.subject.id='{subjectId}'");
-            }
-            List<dynamic> courses = new List<dynamic>();
-            await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "School").
-                    GetItemQueryIterator<dynamic>(queryText: sql.ToString(), requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Course-{school}") }))
-            {
-                courses.Add(item);
-            }
-            return Ok(new { courses });
-        }
-
-        [ProducesDefaultResponseType]
-        [HttpPost("get-course-info")]
-        [ApiToken(Auth = "1304", Name = "课程详细信息", RW = "R", Limit = false)]
-        public async Task<IActionResult> GetCourseInfo(JsonElement json)
-        {
-            var (id, school) = HttpContext.GetApiTokenInfo();
-            json.TryGetProperty("courseId", out JsonElement courseId);
-            Azure.Response response = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School")
-               .ReadItemStreamAsync($"{courseId}", new PartitionKey($"Course-{school}"));
-            if (response.Status == 200)
-            {
-                JsonDocument document = JsonDocument.Parse(response.Content);
-                Course course = document.RootElement.Deserialize<Course>();
-                return Ok(new { course.name, course.id, course.subject, course.period, course.scope, course.school, course.no, course.desc, course.schedule });
-            }
-            else
-            {
-                return Ok(new { error = 1, msg = "课程不存在!" });
-            }
-        }
-
-
     }
 }

+ 56 - 48
TEAMModelAPI/Controllers/School/GroupListController.cs

@@ -287,56 +287,27 @@ namespace TEAMModelAPI.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [ProducesDefaultResponseType]
-        [HttpPost("upsert-teach-group")]
+        [HttpPost("upsert-teach-groups")]
         [ApiToken(Auth = "1206", Name = "创建或更新教学班", RW = "W", Limit = false)]
-        public async Task<IActionResult> UpsertTeachGroup(JsonElement json) {
-            var (id, school) = HttpContext.GetApiTokenInfo();
-            if (!json.TryGetProperty("groupList", out JsonElement _groupList)) { return Ok(new { error=1,msg="名单对象不存在"}); }
-            var list= _groupList.ToObject<GroupListDto>();
-            GroupList groupList = null;
-          
-            if (list != null && list.Valid().isVaild)
+        public async Task<IActionResult> UpsertTeachGroups(JsonElement json) {
+            var (_, school) = HttpContext.GetApiTokenInfo();
+            if (!json.TryGetProperty("groupLists", out JsonElement _groupLists)  || !_groupLists.ValueKind.Equals(JsonValueKind.Array)) { return Ok(new { error=1,msg="名单对象不存在"}); }
+            var groupListsDto = _groupLists.ToObject<List<GroupListDto>>();
+            List<GroupList> groupLists = new List<GroupList>(); ;
+            List<Dictionary<string, string>> errorData = new List<Dictionary<string, string>>();
+            if (groupListsDto != null && groupListsDto.Valid().isVaild)
             {
                 School data = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>(school, new PartitionKey("Base"));
-                Period period = data.period.Find(x => x.id.Equals($"{list.periodId}"));
-                if (period != null)
-                {
-                    if (string.IsNullOrWhiteSpace(list.id))
-                    {
-                        groupList = new GroupList()
-                        {
-                            pk = "GroupList",
-                            id = Guid.NewGuid().ToString(),
-                            code = $"GroupList-{school}",
-                            name = list.name,
-                            periodId = list.periodId,
-                            scope = "school",
-                            school = school,
-                            type = "teach",
-                            year = list.year,
-                            froms = 3
-                        };
-                        groupList = await GroupListService.CheckListNo(groupList, _azureCosmos, _dingDing, _option);
-                        await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).CreateItemAsync(groupList, new PartitionKey(groupList.code));
-                    }
-                    else
+                foreach (var list in groupListsDto) {
+                    Period period = data.period.Find(x => x.id.Equals($"{list.periodId}"));
+                    if (period != null)
                     {
-                        Azure.Response response = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync($"{list.id}", new PartitionKey($"GroupList-{school}"));
-                        if (response.Status == 200)
-                        {
-                            JsonDocument jsonDocument = JsonDocument.Parse(response.Content);
-                            groupList = jsonDocument.RootElement.ToObject<GroupList>();
-                            groupList.name = string.IsNullOrWhiteSpace(list.name) ? groupList.name : list.name;
-                            groupList.periodId = string.IsNullOrWhiteSpace(list.periodId) ? groupList.periodId : list.periodId;
-                            groupList.school = school;
-                            groupList.scope = "school";
-                            groupList.froms = 3;
-                            await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReplaceItemAsync(groupList, groupList.id, new PartitionKey(groupList.code));
-                        }
-                        else
+                        GroupList groupList = null;
+                        if (string.IsNullOrWhiteSpace(list.id))
                         {
                             groupList = new GroupList()
                             {
+                                pk = "GroupList",
                                 id = Guid.NewGuid().ToString(),
                                 code = $"GroupList-{school}",
                                 name = list.name,
@@ -350,17 +321,54 @@ namespace TEAMModelAPI.Controllers
                             groupList = await GroupListService.CheckListNo(groupList, _azureCosmos, _dingDing, _option);
                             await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).CreateItemAsync(groupList, new PartitionKey(groupList.code));
                         }
+                        else
+                        {
+                            Azure.Response response = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync($"{list.id}", new PartitionKey($"GroupList-{school}"));
+                            if (response.Status == 200)
+                            {
+                                JsonDocument jsonDocument = JsonDocument.Parse(response.Content);
+                                groupList = jsonDocument.RootElement.ToObject<GroupList>();
+                                groupList.name = string.IsNullOrWhiteSpace(list.name) ? groupList.name : list.name;
+                                groupList.periodId = string.IsNullOrWhiteSpace(list.periodId) ? groupList.periodId : list.periodId;
+                                groupList.school = school;
+                                groupList.scope = "school";
+                                groupList.froms = 3;
+                                await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReplaceItemAsync(groupList, groupList.id, new PartitionKey(groupList.code));
+                            }
+                            else
+                            {
+                                groupList = new GroupList()
+                                {
+                                    id = Guid.NewGuid().ToString(),
+                                    code = $"GroupList-{school}",
+                                    name = list.name,
+                                    periodId = list.periodId,
+                                    scope = "school",
+                                    school = school,
+                                    type = "teach",
+                                    year = list.year,
+                                    froms = 3
+                                };
+                                groupList = await GroupListService.CheckListNo(groupList, _azureCosmos, _dingDing, _option);
+                                await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).CreateItemAsync(groupList, new PartitionKey(groupList.code));
+                            }
+                        }
+                        if (groupList != null) {
+                            groupLists.Add(groupList);
+                        }
+                    }
+                    else
+                    {
+                        errorData.Add(new Dictionary<string, string> { { "group",list.name}, { "periodId",list.periodId} });
+                        // return Ok(new { error = 2, msg ="学段不存在!" });
                     }
-                }
-                else {
-                    return Ok(new { error = 2, msg ="学段不存在!" });
                 }
             }
             else
             {
-                return Ok(new { error = 3, msg = list.Valid() });
+                return Ok(new { error = 3, msg = groupListsDto.Valid() });
             }
-            return Ok(new { groupList });
+            return Ok(new { groupLists, errorData });
         }
 
         /// <summary>

+ 124 - 0
TEAMModelAPI/Controllers/School/RoomController.cs

@@ -0,0 +1,124 @@
+using Azure.Cosmos;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Options;
+using System;
+using System.Collections.Generic;
+using System.IdentityModel.Tokens.Jwt;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Text.Json;
+using System.Threading.Tasks;
+using TEAMModelOS.Models;
+using TEAMModelOS.Models.Dto;
+using TEAMModelOS.SDK.Models;
+using TEAMModelOS.SDK;
+using TEAMModelOS.SDK.DI;
+using TEAMModelOS.SDK.DI.AzureCosmos.Inner;
+using TEAMModelOS.SDK.Extension;
+using TEAMModelOS.SDK.Helper.Common.StringHelper;
+using System.Dynamic;
+using Azure;
+using TEAMModelOS.SDK.Models.Cosmos.Common;
+using Azure.Messaging.ServiceBus;
+using Microsoft.Extensions.Configuration;
+using TEAMModelOS.Filter;
+using Azure.Storage.Blobs.Models;
+using HTEXLib.COMM.Helpers;
+using Microsoft.AspNetCore.Authorization;
+namespace TEAMModelAPI.Controllers
+{
+    [Route("school")]
+    [ApiController]
+    public class RoomController : ControllerBase
+    {
+        private AzureCosmosFactory _azureCosmos;
+        private readonly DingDing _dingDing;
+        private readonly Option _option;
+        private readonly AzureServiceBusFactory _serviceBus;
+        private readonly AzureStorageFactory _azureStorage;
+        public IConfiguration _configuration { get; set; }
+        public RoomController(AzureCosmosFactory azureCosmos, DingDing dingDing, IOptionsSnapshot<Option> option, AzureServiceBusFactory serviceBus, AzureStorageFactory azureStorage, IConfiguration configuration)
+        {
+            _azureCosmos = azureCosmos;
+            _dingDing = dingDing;
+            _option = option?.Value;
+            _serviceBus = serviceBus;
+            _configuration = configuration;
+            _azureStorage = azureStorage;
+        }
+        /// <summary>
+        /// 获取物理教室列表
+        /// </summary>
+        /// <param name="json"></param>
+        /// <returns></returns>
+        [ProducesDefaultResponseType]
+        [HttpPost("get-room-list")]
+        [ApiToken(Auth = "1401", Name = "获取物理教室列表", RW = "R", Limit = false)]
+        public async Task<IActionResult> GetRoomList(JsonElement json)
+        {
+            var client = _azureCosmos.GetCosmosClient();
+            var (id, school) = HttpContext.GetApiTokenInfo();
+            StringBuilder sql = new StringBuilder($"select value(c) from c where 1=1 ");
+            json.TryGetProperty("openType", out JsonElement openType);
+            if (!string.IsNullOrWhiteSpace($"{openType}"))
+            {
+                sql.Append($" and c.openType='{openType}'");
+            }
+
+            List<Room> rooms = new List<Room>();
+            await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<Room>(queryText: sql.ToString(),
+            requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"Room-{school}") }))
+            {
+                rooms.Add(item);
+            }
+            return Ok(new { rooms = rooms.Select(x => new { x.id, x.name, x.x, x.y, x.openType, x.style, x.area, x.address, school = school }) });
+        }
+        /// <summary>
+        /// 获取物理教室详细信息
+        /// </summary>
+        /// <param name="json"></param>
+        /// <returns></returns>
+        [ProducesDefaultResponseType]
+        [HttpPost("get-room-info")]
+        [ApiToken(Auth = "1402", Name = "获取物理教室详细信息", RW = "R", Limit = false)]
+        public async Task<IActionResult> GetRoomInfo(JsonElement json)
+        {
+            var (id, school) = HttpContext.GetApiTokenInfo();
+            if (!json.TryGetProperty("roomId", out JsonElement roomId)) return BadRequest();
+            Azure.Response response = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School")
+              .ReadItemStreamAsync($"{roomId}", new PartitionKey($"Room-{school}"));
+            if (response.Status == 200)
+            {
+                JsonDocument document = JsonDocument.Parse(response.Content);
+                Room room = document.RootElement.Deserialize<Room>();
+                return Ok(new { room.id, room.name, room.x, room.y, room.openType, room.style, room.area, room.address, school = school });
+            }
+            else
+            {
+                return Ok(new { error = 1, msg = "教室不存在!" });
+            }
+        }
+        /// <summary>
+        /// 创建或更新教学班基本信息
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [ProducesDefaultResponseType]
+        [HttpPost("upsert-room-infos")]
+        [ApiToken(Auth = "1206", Name = "创建或更新教学班", RW = "W", Limit = false)]
+        public async Task<IActionResult> UpsertRoomInfo(JsonElement json)
+        {
+            var (id, school) = HttpContext.GetApiTokenInfo();
+            if (!json.TryGetProperty("rooms", out JsonElement _rooms)) { return Ok(new { error = 1, msg = "名单对象不存在" }); }
+            var rooms = _rooms.ToObject<RoomDto>();
+            List<Room> roomList = new List<Room>();
+            if (rooms != null && rooms.Valid().isVaild)
+            { 
+            }
+            return Ok();
+        }
+
+    }
+}

+ 1 - 52
TEAMModelAPI/Controllers/School/SchoolController.cs

@@ -139,58 +139,7 @@ namespace TEAMModelAPI.Controllers
         }
        
       
-        /// <summary>
-        /// 获取物理教室列表
-        /// </summary>
-        /// <param name="json"></param>
-        /// <returns></returns>
-        [ProducesDefaultResponseType]
-        [HttpPost("get-room-list")]
-        [ApiToken(Auth = "1004", Name = "获取物理教室列表", RW = "R", Limit = false)]
-        public async Task<IActionResult> GetRoomList(JsonElement json)
-        {
-            var client = _azureCosmos.GetCosmosClient();
-            var (id, school) = HttpContext.GetApiTokenInfo();
-            StringBuilder sql = new StringBuilder($"select value(c) from c where 1=1 ");
-            json.TryGetProperty("openType", out JsonElement openType);
-            if (!string.IsNullOrWhiteSpace($"{openType}"))
-            {
-                sql.Append($" and c.openType='{openType}'");
-            }
-            
-            List<Room> rooms = new List<Room>();
-            await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<Room>(queryText: sql.ToString(),
-            requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"Room-{school}") }))
-            {
-                rooms.Add(item);
-            }
-            return Ok(new { rooms =rooms.Select(x=>new {x.id,x.name,x.x,x.y, x.openType,x.style,x.area,x.address,school=school})  });
-        }
-        /// <summary>
-        /// 获取物理教室详细信息
-        /// </summary>
-        /// <param name="json"></param>
-        /// <returns></returns>
-        [ProducesDefaultResponseType]
-        [HttpPost("get-room-info")]
-        [ApiToken(Auth = "1005", Name = "获取物理教室详细信息", RW = "R", Limit = false)]
-        public async Task<IActionResult> GetRoomInfo(JsonElement json)
-        {
-            var (id, school) = HttpContext.GetApiTokenInfo();
-            if (!json.TryGetProperty("roomId", out JsonElement roomId)) return BadRequest();
-            Azure.Response response = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School")
-              .ReadItemStreamAsync($"{roomId}", new PartitionKey($"Room-{school}"));
-            if (response.Status == 200)
-            {
-                JsonDocument document = JsonDocument.Parse(response.Content);
-                Room room = document.RootElement.Deserialize<Room>();
-                return Ok(new { room.id, room.name, room.x, room.y, room.openType, room.style, room.area,room.address, school = school });
-            }
-            else
-            {
-                return Ok(new { error = 1, msg = "教室不存在!" });
-            }
-        }
+       
 
         
     }

+ 11 - 0
TEAMModelOS.SDK/Models/Cosmos/School/Room.cs

@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
 using System.Text;
 
 namespace TEAMModelOS.SDK.Models
@@ -43,4 +44,14 @@ namespace TEAMModelOS.SDK.Models
         public string address { get; set; }
 
     }
+
+    public class RoomDto
+    {
+        public string id { get; set; }
+        [Required(ErrorMessage = "{0} 教室的名称必须填写")]
+        public string name { get; set; }
+        public string no { get; set; }
+        public string address { get; set; }
+
+    }
 }