diff --git a/QYZH.InteractiveMagazine.Models/Entity/JournalPageTaskUserAnswer.cs b/QYZH.InteractiveMagazine.Models/Entity/JournalPageTaskUserAnswer.cs index 9d22c65..3c5fc6f 100644 --- a/QYZH.InteractiveMagazine.Models/Entity/JournalPageTaskUserAnswer.cs +++ b/QYZH.InteractiveMagazine.Models/Entity/JournalPageTaskUserAnswer.cs @@ -128,13 +128,6 @@ namespace QYZH.InteractiveMagazine.Models.Entity /// public int Revision { get; set; } - /// - /// Desc:作答状态 - /// Default: - /// Nullable:False - /// - public AnswerStatusEnum AnswerStatus { get; set; } - /// /// Desc:作答开始时间 /// Default: diff --git a/QYZH.InteractiveMagazine.Models/Entity/JournalPageTaskUserAnswerSnapshot.cs b/QYZH.InteractiveMagazine.Models/Entity/JournalPageTaskUserAnswerSnapshot.cs index 6bf3ef3..1d0ee51 100644 --- a/QYZH.InteractiveMagazine.Models/Entity/JournalPageTaskUserAnswerSnapshot.cs +++ b/QYZH.InteractiveMagazine.Models/Entity/JournalPageTaskUserAnswerSnapshot.cs @@ -96,12 +96,7 @@ namespace QYZH.InteractiveMagazine.Models.Entity /// /// Optimistic concurrency revision. /// - public int Revision { get; set; } - - /// - /// Answer status. - /// - public int AnswerStatus { get; set; } + public int Revision { get; set; } /// /// Answer start time. diff --git a/QYZH.InteractiveMagazine.Models/Enum/AnswerStatusEnum.cs b/QYZH.InteractiveMagazine.Models/Enum/AnswerStatusEnum.cs deleted file mode 100644 index be5937c..0000000 --- a/QYZH.InteractiveMagazine.Models/Enum/AnswerStatusEnum.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System.ComponentModel; - -namespace QYZH.InteractiveMagazine.Models.Enum -{ - /// - /// 答题状态枚举: 10-已答题,20-进行中,30-已完成 - /// - public enum AnswerStatusEnum - { - /// - /// 已答题 - /// - [Description("已答题")] - Answer = 10, - - /// - /// 进行中 - /// - [Description("进行中")] - Processing = 20, - - /// - /// 已完成 - /// - [Description("已完成")] - Complete = 30, - } -} diff --git a/QYZH.InteractiveMagazine.Service/UserAnswerTaskService.cs b/QYZH.InteractiveMagazine.Service/UserAnswerTaskService.cs index 094c69a..7b31a88 100644 --- a/QYZH.InteractiveMagazine.Service/UserAnswerTaskService.cs +++ b/QYZH.InteractiveMagazine.Service/UserAnswerTaskService.cs @@ -132,11 +132,9 @@ public class UserAnswerTaskService( // 用户已完成的任务ID集合 // 【已完成判断逻辑】 - // Status: 0=未批阅,1=已批阅 - // AnswerStatus: 0=未答题,1=已答题,2=正确,3=半对,4=错误 - // 必须同时满足: AnswerStatus >= 1(Correct/HalfRight/Error),作业才算完成,看情况再加Status == 1(已批阅) + // Status: 0=未批阅,1=已批阅 var userCompletedTaskIds = userAnswers - .Where(a => a.AnswerStatus >= AnswerStatusEnum.Answer) + .Where(a => a.Status == (int)UserAnswerStatusEnum.Complete) .Select(a => a.JournalPageTaskId) .ToHashSet(); @@ -179,11 +177,9 @@ public class UserAnswerTaskService( // ============================================ // 该期刊下用户已完成的作答记录 // 【已完成判断逻辑】 - // Status: 0=未批阅,1=已批阅 - // AnswerStatus: 0=未答题,1=已答题,2=正确,3=半对,4=错误 - // 必须同时满足: AnswerStatus >= 1(Correct/HalfRight/Error),作业才算完成,看情况再加:Status == 1(已批阅)且 + // Status: 0=未批阅,1=已批阅 var completedAnswers = userAnswers - .Where(a => a.JournalId == journal.Id && a.AnswerStatus >= AnswerStatusEnum.Answer) + .Where(a => a.JournalId == journal.Id && a.Status == (int)UserAnswerStatusEnum.Complete) .ToList(); // 按 JournalPageTaskGroupId 去重,获取已完成的主任务 ID 列表 @@ -348,11 +344,9 @@ public class UserAnswerTaskService( var userAnsweredTaskIds = userAnswers.Select(a => a.JournalPageTaskId).ToHashSet(); // 用户已完成的任务ID集合 - // 【已完成判断逻辑】 - // AnswerStatus: 0=未答题,1=已答题,2=正确,3=半对,4=错误 - // 只要 AnswerStatus >= 1(已答题)说明作业已完成 + // 【已完成判断逻辑】 var userCompletedTaskIds = userAnswers - .Where(a => a.AnswerStatus >= AnswerStatusEnum.Answer) + .Where(a => a.Status == (int)UserAnswerStatusEnum.Complete) .Select(a => a.JournalPageTaskId) .ToHashSet(); #endregion @@ -420,7 +414,7 @@ public class UserAnswerTaskService( var totalPageCount = pagesWithTasks.Count; // 已完成页面数:该页面有答题记录且 AnswerStatus >= 1 var completedPageCount = pagesWithTasks - .Count(pageId => userAnswers.Any(a => a.JournalPageId == pageId && a.AnswerStatus >= AnswerStatusEnum.Answer)); + .Count(pageId => userAnswers.Any(a => a.JournalPageId == pageId && a.Status == (int)UserAnswerStatusEnum.Complete)); // 已作答页面数:该页面有答题记录即可 var answeredPageCount = pagesWithTasks .Count(pageId => userAnswers.Any(a => a.JournalPageId == pageId)); @@ -561,7 +555,7 @@ public class UserAnswerTaskService( // AnswerStatus: 0=未答题,1=已答题,2=正确,3=半对,4=错误 // 只要 AnswerStatus >= 1(已答题)说明作业已完成 var userCompletedTaskIds = userAnswers - .Where(a => a.AnswerStatus >= AnswerStatusEnum.Answer) + .Where(a => a.Status == (int)UserAnswerStatusEnum.Complete) .Select(a => a.JournalPageTaskId) .ToHashSet(); #endregion @@ -1134,11 +1128,8 @@ public class UserAnswerTaskService( if (!existingRecord) { // 未领取过积分,检查任务是否完成 - // 条件:Status=1 且 AnswerStatus>=1 - canClaimPoints = relatedTasks.All(t => - userAnswers.Any(a => a.JournalPageTaskId == t.Id - && a.Status == (int)UserAnswerStatusEnum.Complete - && a.AnswerStatus >= AnswerStatusEnum.Answer)); + // 条件:Status=1 + canClaimPoints = relatedTasks.All(t => userAnswers.Any(a => a.JournalPageTaskId == t.Id && a.Status == (int)UserAnswerStatusEnum.Complete)); } } @@ -1245,11 +1236,11 @@ public class UserAnswerTaskService( // ============================================ // 2. 完成校验 // 主任务校验 + 跨页题目所有任务校验 - // 完成条件:Status=1 且 AnswerStatus>=1 + // 完成条件:Status=1 // ============================================ // 校验主任务 var mainTaskAnswer = userAnswers.FirstOrDefault(a => a.JournalPageTaskId == groupId); - if (mainTaskAnswer == null || mainTaskAnswer.Status != (int)UserAnswerStatusEnum.Complete || mainTaskAnswer.AnswerStatus < AnswerStatusEnum.Answer) + if (mainTaskAnswer == null || mainTaskAnswer.Status != (int)UserAnswerStatusEnum.Complete) { throw new BusinessException("请先完成答题再领取积分", ResultCode.BAD_REQUEST); } @@ -1260,7 +1251,7 @@ public class UserAnswerTaskService( foreach (var task in relatedTasks) { var answer = userAnswers.FirstOrDefault(a => a.JournalPageTaskId == task.Id); - if (answer == null || answer.Status != (int)UserAnswerStatusEnum.Complete || answer.AnswerStatus < AnswerStatusEnum.Answer) + if (answer == null || answer.Status != (int)UserAnswerStatusEnum.Complete) { throw new BusinessException("跨页题目需要完成所有任务才能领取积分", ResultCode.BAD_REQUEST); } @@ -1476,9 +1467,9 @@ public class UserAnswerTaskService( #endregion #region 3.4 完成校验 - // 校验主任务完成状态:Status=1 且 AnswerStatus>=1 + // 校验主任务完成状态:Status=1 var mainTaskAnswer = userAnswers.FirstOrDefault(a => a.JournalPageTaskId == groupId); - if (mainTaskAnswer == null || mainTaskAnswer.Status != (int)UserAnswerStatusEnum.Complete || mainTaskAnswer.AnswerStatus < AnswerStatusEnum.Answer) + if (mainTaskAnswer == null || mainTaskAnswer.Status != (int)UserAnswerStatusEnum.Complete) { result.FailItems.Add(new BatchClaimFailItem { @@ -1495,7 +1486,7 @@ public class UserAnswerTaskService( foreach (var task in relatedTasks) { var answer = userAnswers.FirstOrDefault(a => a.JournalPageTaskId == task.Id); - if (answer == null || answer.Status != (int)UserAnswerStatusEnum.Complete || answer.AnswerStatus < AnswerStatusEnum.Answer) + if (answer == null || answer.Status != (int)UserAnswerStatusEnum.Complete) { allCompleted = false; break; diff --git a/QYZH.InteractiveMagazine.WorkService/Consumers/JournalTaskReceiveConsumer.cs b/QYZH.InteractiveMagazine.WorkService/Consumers/JournalTaskReceiveConsumer.cs index fdf8660..b39a879 100644 --- a/QYZH.InteractiveMagazine.WorkService/Consumers/JournalTaskReceiveConsumer.cs +++ b/QYZH.InteractiveMagazine.WorkService/Consumers/JournalTaskReceiveConsumer.cs @@ -590,8 +590,7 @@ public class JournalTaskReceiveConsumer( QuestionAnswerUrl = question.Url, AnswerUrl = JsonSerializer.Serialize(question.AnswerUrl ?? []), PageAnswerUrl = data.PageAnswerUrl, - Revision = 0, - AnswerStatus = AnswerStatusEnum.Answer, + Revision = 0, AnswerStartTime = question.AnswerStartTime, AnswerEndTime = question.AnswerEndTime, AnswerSeconds = question.AnswerTime, @@ -637,8 +636,7 @@ public class JournalTaskReceiveConsumer( QuestionAnswerUrl = answer.QuestionAnswerUrl, AnswerUrl = answer.AnswerUrl, PageAnswerUrl = answer.PageAnswerUrl, - Revision = answer.Revision, - AnswerStatus = (int)answer.AnswerStatus, + Revision = answer.Revision, AnswerStartTime = answer.AnswerStartTime, AnswerEndTime = answer.AnswerEndTime, AnswerSeconds = answer.AnswerSeconds,