CrazyIter_Bin 1 年之前
父節點
當前提交
94853593de
共有 2 個文件被更改,包括 81 次插入12 次删除
  1. 8 1
      TEAMModelOS.SDK/Models/Cosmos/Common/Activity.cs
  2. 73 11
      TEAMModelOS/Controllers/Common/ActivityController.cs

+ 8 - 1
TEAMModelOS.SDK/Models/Cosmos/Common/Activity.cs

@@ -35,6 +35,11 @@ namespace TEAMModelOS.SDK.Models
         [Required(ErrorMessage = "Required")]
         public string owner { get; set; }
         /// <summary>
+        /// "所有者名称",
+        /// </summary>
+        [Required(ErrorMessage = "Required")]
+        public string ownerName { get; set; }
+        /// <summary>
         /// "public公开/area区级/school校级",  public公开活动 只能是醍摩豆智慧学区才能选择,
         /// </summary>
         [Required(ErrorMessage = "Required")]
@@ -86,6 +91,7 @@ namespace TEAMModelOS.SDK.Models
         public string name { get; set; }
         public string picture { get; set; }
         public string school { get; set; }
+        public string schoolName { get; set; }
         /// <summary>
         /// 0 未确认,1已确认,用于区级发布, publish=1,joinMode=invite,学校可以去进行邀请某一些教师。
         /// </summary>
@@ -96,11 +102,12 @@ namespace TEAMModelOS.SDK.Models
         public string id { get; set; }
         public string name { get; set; }
         public string picture { get; set; }
-        public string school { get; set; }
         /// <summary>
         /// 0 未确认,1已确认,用于区级发布, publish=1,joinMode=invite,学校可以去进行邀请某一些教师。
         /// </summary>
         public int status { get; set; }
+        public string areaId { get; set; }
+        public string areaName { get; set; }
     }
 
     /// <summary>

+ 73 - 11
TEAMModelOS/Controllers/Common/ActivityController.cs

@@ -21,6 +21,7 @@ using StackExchange.Redis;
 
 using System.Text.RegularExpressions;
 using Microsoft.AspNetCore.Authorization;
+using OpenXmlPowerTools;
 
 namespace TEAMModelOS.Controllers
 {
@@ -55,12 +56,12 @@ namespace TEAMModelOS.Controllers
 
 
         /// <summary>
-        /// 活动创建
+        /// 添加活动参与对象,学校,教师
         /// </summary>
         /// <param name="request"></param>
         /// <returns></returns>
         [ProducesDefaultResponseType]
-        [AuthToken(Roles = "teacher,admin,area")]
+        [AuthToken(Roles = "admin,area")]
         [HttpPost("invite-target")]
         [Authorize(Roles = "IES")]
 
@@ -72,23 +73,50 @@ namespace TEAMModelOS.Controllers
             {
                 case bool when $"{grant_type}".Equals("schools", StringComparison.OrdinalIgnoreCase):
                     {
-                        if (!request.TryGetProperty("areaId", out JsonElement _areaId)) return BadRequest();
-                        if (_areaId.GetString().Equals("02944f32-f534-3397-ea56-e6f1fc6c3714", StringComparison.OrdinalIgnoreCase))
+                        
+                        if (!request.TryGetProperty("scope", out JsonElement _scope)) return BadRequest();
+                        string sql = string.Empty;
+                        if (_scope.GetString().Equals("public", StringComparison.OrdinalIgnoreCase))
                         {
-                            string sql = "select c.id,c.name ,c.picture,c.region,c.province,c.city,c.areaId   from c where c.code='Base' ";
+                            sql = "select c.id,c.name ,c.picture,c.region,c.province,c.city,c.areaId   from c where c.code='Base' ";
                         }
                         else {
-                            string sql = "select c.id,c.name ,c.picture,c.region,c.province,c.city,c.areaId   from c where c.code='Base' ";
+                            if (!request.TryGetProperty("areaId", out JsonElement _areaId)) return BadRequest();
+                            sql = $"select c.id,c.name ,c.picture,c.region,c.province,c.city,c.areaId   from c where c.code='Base' and c.areaId='{_areaId}' ";
                         }
-                        break;
+                        var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).GetList<School>(sql, "Base");
+                        var sc= result.list.FindAll(z => !string.IsNullOrWhiteSpace(z.areaId));
+                        if (sc.IsNotEmpty()) {
+                            string areaSql = $"select value c from c where c.id in ({string.Join(",",sc.Select(z=>$"'{z.areaId}'").ToHashSet())})";
+                            var areaResult =  await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Normal).GetList<Area>(sql, "Base-Area");
+                            if (areaResult.list.IsNotEmpty()) {
+                                List<dynamic> schools= new List<dynamic>();
+                                foreach (var item in result.list) {
+                                    if (!string.IsNullOrWhiteSpace(item.areaId))
+                                    {
+                                        var area = areaResult.list.Find(z => z.id.Equals(item.areaId));
+                                        schools.Add(new { item.id, item.name, item.picture, item.region, item.province, item.city, item.areaId, areaName = area?.name });
+                                    }
+                                    else {
+                                        schools.Add(new { item.id, item.name, item.picture, item.region, item.province, item.city, item.areaId, areaName = string.Empty });
+                                    }
+                                }
+                            }
+                        }
+                        return Ok(new {code=200, schools = result.list.Select(z=>new { z.id,z.name,z.picture,z.region,z.province,z.city,z.areaId, areaName = string.Empty }) });
                     }
                 case bool when $"{grant_type}".Equals("teachers", StringComparison.OrdinalIgnoreCase):
                     {
-                        if (!request.TryGetProperty("schoolId", out JsonElement _schoolId)) return BadRequest();
+                        if (!string.IsNullOrWhiteSpace(school)) {
+                            School schoolbase = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(school, new PartitionKey("Base"));
+                            string  sql = $"select c.id,c.name ,c.picture   from c where c.code='Teacher-{school}' ";
+                            var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).GetList<SchoolTeacher>(sql, $"Teacher-{school}");
+                            return Ok(new { code = 200, teachers  = result.list.Select(z=>new { z.id,z.name,z.picture,school,schooName = schoolbase.name}) });
+                        }
                         break;
                     }
             }
-            return Ok();
+            return Ok(new { code = 400 });
         }
 
         /// <summary>
@@ -198,17 +226,51 @@ namespace TEAMModelOS.Controllers
                     case bool when $"{grant_type}".Equals("list-area", StringComparison.OrdinalIgnoreCase):
                         {
                             if (!request.TryGetProperty("areaId", out JsonElement _areaId)) return BadRequest();
-                            string sql = $"select value c from c where c.scope='area' and c.owner='{_areaId}'  ";
+                            string yearSql = $" and c.year={DateTimeOffset.Now.Year}";
+                            
+                            if (request.TryGetProperty("year", out JsonElement _year)) {
+                                yearSql = $" and c.year={_year}";
+                            }
+                            string sql = $"select value c from c where c.scope='area' and c.owner='{_areaId}' {yearSql}  ";
                             //醍摩豆智慧学区
                             if (_areaId.GetString().Equals("02944f32-f534-3397-ea56-e6f1fc6c3714", StringComparison.OrdinalIgnoreCase)) {
-                                sql = $"select value c from c where   c.owner='{_areaId}' and ( c.scope='area' or c.scope='public' ) ";
+                                sql = $"select value c from c where   c.owner='{_areaId}' {yearSql } and ( c.scope='area' or c.scope='public' ) ";
                             }
                             var  result =  await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<Activity>(sql, "Activity");
                             return Ok(new { activities = result.list.OrderByDescending(z=>z.stime) });
                         }
                     case bool when $"{grant_type}".Equals("list-school", StringComparison.OrdinalIgnoreCase):
                         {
+                            if (!string.IsNullOrWhiteSpace(school)) {
+                                List<Activity> activities = new List<Activity>();   
+                                string yearSql = $" and c.year={DateTimeOffset.Now.Year}";
+
+                                if (request.TryGetProperty("year", out JsonElement _year))
+                                {
+                                    yearSql = $" and c.year={_year}";
+                                }
+                                //获取开放的
+                                {
+                                    string sqlOpen = $"select value c from c where c.scope='public'{yearSql} and( ARRAY_LENGTH(c.schools)=0 or IS_DEFINED(c.schools) = false  ) ";
+                                    string sqlSchool = $"select value c from c  join s in c.schools  where c.scope='public'{yearSql} and s.id='{school}' ";
+                                }
+                                //获取区级下放的
+                                {
+                                    School schoolbase = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(school, new PartitionKey("Base"));
+                                    if (!string.IsNullOrWhiteSpace(schoolbase.areaId)) {
+                                        string sqlOpen = $"select value c from c where c.scope='area'{yearSql} and  c.owner='{schoolbase.areaId}'  and( ARRAY_LENGTH(c.schools)=0 or IS_DEFINED(c.schools) = false) ";
+                                        string sqlSchool = $"select value c from c  join s in c.schools  where c.scope='area'{yearSql} and  c.owner='{schoolbase.areaId}' and s.id='{school}' ";
+                                    }
+                                }
+                                //获取学校自己的
+                                {
+                                    string sqlOpen = $"select value c from c where c.scope='school'{yearSql} and  c.owner='{school}'  ";
+                                }
+                                var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<Activity>("", "Activity");
+                                return Ok(new { activities = result.list.OrderByDescending(z => z.stime) });
+                            }
                             break;
+
                         }
                  
                     case bool when $"{grant_type}".Equals("list-teacher", StringComparison.OrdinalIgnoreCase):