Browse Source

修改问卷,投票回写状态逻辑。

CrazyIter_Bin 3 years ago
parent
commit
8efb3fd82b

+ 28 - 1
TEAMModelOS.SDK/Models/Cosmos/School/Area.cs

@@ -10,12 +10,39 @@ namespace TEAMModelOS.SDK.Models
         {
             pk = "Area";
         }
+        /// <summary>
+        /// 区域级名称
+        /// </summary>
         public string name { get; set; }
-
+        /// <summary>
+        /// 省编码
+        /// </summary>
         public string provCode { get; set; }
+        /// <summary>
+        /// 省名称
+        /// </summary>
         public string provName { get; set; }
+        /// <summary>
+        /// 城市编码
+        /// </summary>
         public string cityCode { get; set; }
+        /// <summary>
+        /// 城市名称
+        /// </summary>
         public string cityName { get; set; }
+        /// <summary>
+        /// 能力点版本
+        /// </summary>
         public string standard { get; set; }
+        /// <summary>
+        /// 能力点名称
+        /// </summary>
+        public string standardName { get; set; }
+        /// <summary>
+        /// 单位
+        /// </summary>
+        public string institution { get; set; }
+
+
     }
 }

+ 1 - 1
TEAMModelOS/Controllers/Common/SurveyController.cs

@@ -427,7 +427,7 @@ namespace TEAMModelOS.Controllers
         {
             var (userid, _, _, school) = HttpContext.GetAuthTokenInfo();
             if (request.TryGetProperty("userid", out JsonElement _userid)) {
-                (int msgid ,int taskStatus) = await ActivityStudentService.Answer(request, _azureCosmos, _azureRedis, $"{userid}",school, _azureStorage);
+                (int msgid ,int taskStatus) = await ActivityStudentService.Answer(_dingDing,_option, request, _azureCosmos, _azureRedis, $"{userid}",school, _azureStorage);
                 return Ok(new { msgid , taskStatus });
             }
             else { return Ok(new { msgid = 0 }); }

+ 2 - 2
TEAMModelOS/Controllers/Common/VoteController.cs

@@ -483,7 +483,7 @@ namespace TEAMModelOS.Controllers.Learn
         public async Task<IActionResult> Decide(JsonElement request)
         {
             var (userid, _, _, school) = HttpContext.GetAuthTokenInfo();
-            (int msgid,int taskStatus) = await ActivityStudentService.Decide(request, _azureCosmos, _azureRedis ,_azureStorage, userid, school);
+            (int msgid,int taskStatus) = await ActivityStudentService.Decide(_dingDing,_option, request, _azureCosmos, _azureRedis ,_azureStorage, userid, school);
             return Ok(new { msgid, taskStatus });
         }
         /// <summary>
@@ -510,7 +510,7 @@ namespace TEAMModelOS.Controllers.Learn
             //活动id
             if (request.TryGetProperty("userid", out JsonElement userid)&& request.TryGetProperty("school", out JsonElement _school))
             {
-                (int msgid, int taskStatus) = await ActivityStudentService.Decide(request, _azureCosmos, _azureRedis, _azureStorage, $"{userid}",$"{_school}");
+                (int msgid, int taskStatus) = await ActivityStudentService.Decide(_dingDing,_option,request, _azureCosmos, _azureRedis, _azureStorage, $"{userid}",$"{_school}");
                 return Ok(new { msgid ,taskStatus });
             }
             else { return Ok(new { msgid = 0 }); }

+ 41 - 10
TEAMModelOS/Services/Common/ActivityStudentService.cs

@@ -14,12 +14,13 @@ using TEAMModelOS.SDK.Models.Cosmos.Common.Inner;
 using StackExchange.Redis;
 using TEAMModelOS.SDK.Models.Cosmos.Common;
 using TEAMModelOS.Controllers;
+using TEAMModelOS.Models;
 
 namespace TEAMModelOS.Services.Common
 {
     public static class ActivityStudentService
     {
-        public static async Task<(int msgid,int taskStatus)> Decide(JsonElement request,AzureCosmosFactory _azureCosmos,AzureRedisFactory _azureRedis , AzureStorageFactory _azureStorage, string userid ,string school) {
+        public static async Task<(int msgid,int taskStatus)> Decide(DingDing _dingDing, Option _option, JsonElement request,AzureCosmosFactory _azureCosmos,AzureRedisFactory _azureRedis , AzureStorageFactory _azureStorage, string userid ,string school) {
             Vote vote = null;
             DateTimeOffset now = DateTimeOffset.UtcNow;
             long curr = now.ToUnixTimeMilliseconds();
@@ -164,9 +165,22 @@ namespace TEAMModelOS.Services.Common
                     {
                         if (ex.Status == 404)
                         {
-                            StuActivity activity = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Student").ReadItemAsync<StuActivity>(vote.id, new PartitionKey($"Activity-{userid}"));
-                            activity.taskStatus = taskStatus;
-                            await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Student").ReplaceItemAsync<StuActivity>(activity, vote.id, new PartitionKey($"Activity-{userid}"));
+                            try
+                            {
+                                StuActivity activity = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Student").ReadItemAsync<StuActivity>(vote.id, new PartitionKey($"Activity-{userid}"));
+                                activity.taskStatus = taskStatus;
+                                await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Student").ReplaceItemAsync<StuActivity>(activity, vote.id, new PartitionKey($"Activity-{userid}"));
+                            }
+                            catch (CosmosException cex) {
+                                try {
+                                    StuActivity activity = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").ReadItemAsync<StuActivity>(vote.id, new PartitionKey($"Activity-{userid}"));
+                                    activity.taskStatus = taskStatus;
+                                    await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync<StuActivity>(activity, vote.id, new PartitionKey($"Activity-{userid}"));
+                                }
+                                catch(CosmosException cosex) {
+                                    taskStatus = -1;
+                                }
+                            }
                         }
 
                     }
@@ -176,9 +190,10 @@ namespace TEAMModelOS.Services.Common
                     return (msgid, -1);
                 }
             }
-            catch (Exception e)
+            catch (Exception ex)
             {
-                throw new Exception(e.StackTrace);
+                await _dingDing.SendBotMsg($"OS,{_option.Location},common/delete-activity\n{ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                throw new Exception(ex.StackTrace);
             }
             if (msgid == 1 && vote!= null) 
             {
@@ -461,7 +476,7 @@ namespace TEAMModelOS.Services.Common
         }
 
         
-        public static async Task<(int msgid,int taskStatus)> Answer(JsonElement request, AzureCosmosFactory _azureCosmos, AzureRedisFactory azureRedis, string userid,string school, AzureStorageFactory _azureStorage)
+        public static async Task<(int msgid,int taskStatus)> Answer(DingDing _dingDing, Option _option, JsonElement request, AzureCosmosFactory _azureCosmos, AzureRedisFactory azureRedis, string userid,string school, AzureStorageFactory _azureStorage)
         {
 
             DateTimeOffset now = DateTimeOffset.UtcNow;
@@ -684,9 +699,25 @@ namespace TEAMModelOS.Services.Common
                     {
                         if (ex.Status == 404)
                         {
-                            StuActivity activity = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Student").ReadItemAsync<StuActivity>(survey.id, new PartitionKey($"Activity-{userid}"));
-                            activity.taskStatus = taskStatus;
-                            await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Student").ReplaceItemAsync<StuActivity>(activity, survey.id, new PartitionKey($"Activity-{userid}"));
+                            try
+                            {
+                                StuActivity activity = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Student").ReadItemAsync<StuActivity>(survey.id, new PartitionKey($"Activity-{userid}"));
+                                activity.taskStatus = taskStatus;
+                                await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Student").ReplaceItemAsync<StuActivity>(activity, survey.id, new PartitionKey($"Activity-{userid}"));
+                            }
+                            catch (CosmosException cex) {
+                                if (cex.Status == 404) {
+                                    try {
+                                        StuActivity activity = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").ReadItemAsync<StuActivity>(survey.id, new PartitionKey($"Activity-{userid}"));
+                                        activity.taskStatus = taskStatus;
+                                        await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync<StuActivity>(activity, survey.id, new PartitionKey($"Activity-{userid}"));
+                                    } catch (CosmosException cosex) {
+                                        if (cosex.Status == 404) {
+                                            taskStatus = -1;
+                                        }
+                                    }
+                                }
+                            }
                         }
                     }
                 }