CrazyIter_Bin 1 anno fa
parent
commit
7b9b7f22dd

+ 10 - 19
TEAMModelOS.SDK/Models/Service/GroupListService.cs

@@ -226,9 +226,7 @@ namespace TEAMModelOS.SDK
                     }
                     else
                     {
-                        string key = $"GroupList:GroupWaitingList:{item.scope}:{item.id}";
-                        string filed = !string.IsNullOrWhiteSpace(school) ? $"{school}_{userid}" : userid;
-                        await _azureRedis.GetRedisClient(8).HashSetAsync(key, filed, new GroupWaitingList
+                        GroupWaitingList waitingList = new GroupWaitingList
                         {
                             stuListNo=_stuListNo,
                             userid=userid,
@@ -242,25 +240,17 @@ namespace TEAMModelOS.SDK
                             qrcodeExpire=item.qrcodeExpire,
                             groupName= item.name,
                             applyTime=now
-                        }.ToJsonString());
+                        };
+
+                        string key = $"GroupList:GroupWaitingList:{item.scope}:{item.id}";
+                        string filed = !string.IsNullOrWhiteSpace(school) ? $"{school}_{userid}" : userid;
+                        await _azureRedis.GetRedisClient(8).HashSetAsync(key, filed, waitingList.ToJsonString());
+
                         await _azureRedis.GetRedisClient(8).KeyExpireAsync(key, expiry: DateTimeOffset.FromUnixTimeMilliseconds(item.qrcodeExpire).UtcDateTime);
                         string  stuKey = !string.IsNullOrWhiteSpace(school) ? $"GroupList:StudentWaitinglist:{school}_{userid}" :$"GroupList:StudentWaitinglist:{userid}" ;
                         string sutFiled = $"{item.scope}:{item.id}";
-                        await _azureRedis.GetRedisClient(8).HashSetAsync(stuKey, sutFiled, new GroupWaitingList
-                        {
-                            stuListNo=_stuListNo,
-                            userid=userid,
-                            type=type,
-                            school= school,
-                            year = year,
-                            groupId = item.id,
-                            name = name,
-                            picture = picture,
-                            lang = lang,
-                            qrcodeExpire=item.qrcodeExpire,
-                            groupName= item.name,
-                            applyTime=now
-                        }.ToJsonString());
+                        await _azureRedis.GetRedisClient(8).HashSetAsync(stuKey, sutFiled, waitingList.ToJsonString());
+
                         //三十天都不登录,则不需要查看申请清单,30*24=720
                         await _azureRedis.GetRedisClient(8).KeyExpireAsync(stuKey, new TimeSpan(720 , 0, 0));
                         return (6, item, null);
@@ -287,6 +277,7 @@ namespace TEAMModelOS.SDK
             /// </summary>
             public string stuListNo { get; set; }
             public string userid { get; set; }
+            //学生类型,1醍摩豆id,2 校内账号
             public int type { get; set; }
             public string school { get; set; }
             public int  year { get; set; }

+ 75 - 15
TEAMModelOS/Controllers/Both/GroupListController.cs

@@ -29,6 +29,7 @@ using Azure.Core;
 using static TEAMModelOS.SDK.Services.ActivityStudentService;
 using static TEAMModelOS.SDK.GroupListService;
 using DocumentFormat.OpenXml.Bibliography;
+using DocumentFormat.OpenXml.Spreadsheet;
 
 namespace TEAMModelOS.Controllers
 {
@@ -940,13 +941,13 @@ namespace TEAMModelOS.Controllers
                                         {
                                             GroupListService.JoinList(list, t.userid, t.type, t.school, t.year);
                                             string stuKey = !string.IsNullOrWhiteSpace(school) ? $"GroupList:StudentWaitinglist:{school}_{t.userid}" : $"GroupList:StudentWaitinglist:{t.userid}";
-                                            string sutFiled = $"{list.scope}:{list.id}";
-                                            var data = await _azureRedis.GetRedisClient(8).HashGetAsync(stuKey, sutFiled);
+                                            string stuFiled = $"{list.scope}:{list.id}";
+                                            var data = await _azureRedis.GetRedisClient(8).HashGetAsync(stuKey, stuFiled);
                                             if (data != default && !data.IsNullOrEmpty)
                                             {
                                                 var value = data.ToString().ToObject<GroupWaitingList>();
                                                 value.status=0;
-                                                await _azureRedis.GetRedisClient(8).HashSetAsync(stuKey, sutFiled, value.ToJsonString());
+                                                await _azureRedis.GetRedisClient(8).HashSetAsync(stuKey, stuFiled, value.ToJsonString());
                                             }
                                         }
                                         //未自动加入的,直接拒绝
@@ -956,13 +957,13 @@ namespace TEAMModelOS.Controllers
                                             foreach (var t in takes)
                                             {
                                                 string stuKey = !string.IsNullOrWhiteSpace(school) ? $"GroupList:StudentWaitinglist:{school}_{t.userid}" : $"GroupList:StudentWaitinglist:{t.userid}";
-                                                string sutFiled = $"{list.scope}:{list.id}";
-                                                var data = await _azureRedis.GetRedisClient(8).HashGetAsync(stuKey, sutFiled);
+                                                string stuFiled = $"{list.scope}:{list.id}";
+                                                var data = await _azureRedis.GetRedisClient(8).HashGetAsync(stuKey, stuFiled);
                                                 if (data != default && !data.IsNullOrEmpty)
                                                 {
                                                     var value = data.ToString().ToObject<GroupWaitingList>();
                                                     value.status=1;
-                                                    await _azureRedis.GetRedisClient(8).HashSetAsync(stuKey, sutFiled, value.ToJsonString());
+                                                    await _azureRedis.GetRedisClient(8).HashSetAsync(stuKey, stuFiled, value.ToJsonString());
                                                 }
                                             }
                                         }
@@ -974,13 +975,13 @@ namespace TEAMModelOS.Controllers
                                     foreach (var t in groupWaitingLists)
                                     {
                                         string stuKey = !string.IsNullOrWhiteSpace(school) ? $"GroupList:StudentWaitinglist:{school}_{t.userid}" : $"GroupList:StudentWaitinglist:{t.userid}";
-                                        string sutFiled = $"{list.scope}:{list.id}";
-                                        var data = await _azureRedis.GetRedisClient(8).HashGetAsync(stuKey, sutFiled);
+                                        string stuFiled = $"{list.scope}:{list.id}";
+                                        var data = await _azureRedis.GetRedisClient(8).HashGetAsync(stuKey, stuFiled);
                                         if (data != default && !data.IsNullOrEmpty)
                                         {
                                             var value = data.ToString().ToObject<GroupWaitingList>();
                                             value.status=1;
-                                            await _azureRedis.GetRedisClient(8).HashSetAsync(stuKey, sutFiled, value.ToJsonString());
+                                            await _azureRedis.GetRedisClient(8).HashSetAsync(stuKey, stuFiled, value.ToJsonString());
                                         }
                                     }
                                 }
@@ -1152,27 +1153,86 @@ namespace TEAMModelOS.Controllers
         /// <param name="json"></param>
         /// <returns></returns>
         [ProducesDefaultResponseType]
-        [AuthToken(Roles = "teacher,admin")]
+        [AuthToken(Roles = "teacher,admin,student")]
         [HttpPost("review")]
 #if DEBUG
         [Authorize(Roles = "IES")]
 #endif
         public async Task<IActionResult> review(JsonElement request)
         {
-            (string tmdid, _, _, string school) = HttpContext.GetAuthTokenInfo();
+            (string userId, _, _, string school) = HttpContext.GetAuthTokenInfo();
             if (!request.TryGetProperty("grant_type", out JsonElement grant_type)) return BadRequest();
           
             var client = _azureCosmos.GetCosmosClient();
+
             switch (true)
             {
                 //待加入列表
                 case bool when $"{grant_type}".Equals("waitlist", StringComparison.OrdinalIgnoreCase):
-
-                    break;
+                    {
+                        if (!request.TryGetProperty("id", out JsonElement _id)) return BadRequest();
+                        if (!request.TryGetProperty("scope", out JsonElement _scope)) return BadRequest();
+                        //string tbname = ($"{_scope}".Equals("school")) ? Constant.School : Constant.Teacher;
+                        //string code = $"";
+                        string key = $"GroupList:GroupWaitingList:{_scope}:{_id}";
+                        var datas = await _azureRedis.GetRedisClient(8).HashGetAllAsync(key);
+                        List<GroupWaitingList> waitingLists = new List<GroupWaitingList>();
+                        if (datas!=null && datas.Length>0)
+                        {
+                            foreach (var data in datas)
+                            {
+                                var group = data.ToString().ToObject<GroupWaitingList>();
+                                if (group!=null)
+                                {
+                                    waitingLists.Add(group);
+                                }
+                            }
+                        }
+                        return Ok(waitingLists);
+                    }
                 //处理审核
                 case bool when $"{grant_type}".Equals("process", StringComparison.OrdinalIgnoreCase):
-                    await _azureRedis.GetRedisClient(8).KeyExpireTimeAsync("");
-                    break;
+                    {
+                        if (!request.TryGetProperty("id", out JsonElement _id)) return BadRequest();
+                        if (!request.TryGetProperty("scope", out JsonElement _scope)) return BadRequest();
+                        if (!request.TryGetProperty("type", out JsonElement _type)) return BadRequest();
+                        if (!request.TryGetProperty("userid", out JsonElement _userid)) return BadRequest();
+                        if (!request.TryGetProperty("pass", out JsonElement _pass)) return BadRequest();
+                        string tbname = $"{_scope}".Equals("school") ? Constant.School : Constant.Teacher;
+                        string code = $"{_scope}".Equals("school") ?$"GroupList-{school}" : "GroupList"; 
+                        string key = $"GroupList:GroupWaitingList:{_scope}:{_id}";
+                        string filed = $"{_type}".Equals("1") ? $"{school}_{_userid}" : _userid.ToString();
+                        var data = await _azureRedis.GetRedisClient(8).HashGetAsync(key, filed);
+                        if (data != default && !data.IsNullOrEmpty)
+                        {
+                            var value = data.ToString().ToObject<GroupWaitingList>();
+                            if ($"{_pass}".Equals("0"))
+                            {
+                                //通过
+                                value.status=0;
+                                await _azureRedis.GetRedisClient(8).HashDeleteAsync(key, filed);
+
+                                string stuKey = !string.IsNullOrWhiteSpace(school) ? $"GroupList:StudentWaitinglist:{school}_{userid}" : $"GroupList:StudentWaitinglist:{userid}";
+                                string sutFiled = $"{item.scope}:{item.id}";
+                                await _azureRedis.GetRedisClient(8).HashSetAsync(stuKey, sutFiled, waitingList.ToJsonString());
+                            }
+                            else if ($"{_pass}".Equals("1"))
+                            {
+                                //拒绝
+                                value.status=1;
+                                await _azureRedis.GetRedisClient(8).HashDeleteAsync(key, filed);
+                            }
+                            else {
+                                return BadRequest(new { code = 1, msg = "参数错误" });
+                            }
+                           
+                         
+                        }
+                        else {
+                            return Ok(new { code = 0, msg = "未找到申请人" }) ;
+                        }
+                        break;
+                    }
                     //审核结果,学生端获取到被拒绝的,或者过期的自动删除,未被审核的保存
                 case bool when $"{grant_type}".Equals("result", StringComparison.OrdinalIgnoreCase):
                     break;