修复bug

This commit is contained in:
马梓彭 2026-06-21 16:22:38 +08:00
parent b7440c99ab
commit 0041776c98
2 changed files with 23 additions and 13 deletions

View File

@ -2027,35 +2027,44 @@ public class UnifiedRegistrationService : ITransient
var project = projects.FirstOrDefault(p => p.Id == eventProject.ProjectId);
if (project == null) continue;
// ==================== 项目完成人数验证 ====================
// 只要项目配置了完成人数(单一值或范围值),就进行验证
// 不再依赖 isTeamProject 判断,确保所有类型的项目都能正确验证
bool hasValidCompletionConfig = false;
// ==================== 项目类型判断 ====================
// 个人项目不进行完成人数限制
var isTeamProject = project.IsTeamProject();
if (!isTeamProject)
{
continue;
}
// ==================== 完成人数配置解析 ====================
// 解析完成人数范围(单一值模式:min==max;范围值模式:min<max)
int completionMin = 0;
int completionMax = 0;
bool hasValidCompletionConfig = false;
if (project.CompletionCountType == 0)
{
// 单一值模式
if (project.CompletionCount > 0)
{
hasValidCompletionConfig = true;
completionMin = project.CompletionCount;
completionMax = project.CompletionCount;
hasValidCompletionConfig = true;
}
}
else
else if (project.CompletionCountType == 1)
{
// 范围值模式
// 范围值模式 — 必须同时配置 Min/Max 且 Min <= Max
if (project.CompletionCountMin.HasValue && project.CompletionCountMax.HasValue &&
project.CompletionCountMin.Value > 0 && project.CompletionCountMax.Value > 0)
project.CompletionCountMin.Value > 0 && project.CompletionCountMax.Value > 0 &&
project.CompletionCountMin.Value <= project.CompletionCountMax.Value)
{
hasValidCompletionConfig = true;
completionMin = project.CompletionCountMin.Value;
completionMax = project.CompletionCountMax.Value;
hasValidCompletionConfig = true;
}
}
// 未配置有效完成人数时跳过
if (!hasValidCompletionConfig)
{
continue;
@ -2065,7 +2074,7 @@ public class UnifiedRegistrationService : ITransient
if (teams.Count > 0)
{
// ========== 多团队模式 ==========
// 对每个团队单独验证人数是否在范围内(或等于单一值)
// 对每个团队单独验证人数是否在范围内
foreach (var team in teams)
{
var teamMemberCount = team.Persons?.Count ?? 0;

View File

@ -1405,11 +1405,12 @@ public class UserEventRegistrationService : IDynamicApiController, ITransient
completionMax = project.CompletionCount;
}
}
else
else if (project.CompletionCountType == 1)
{
// 范围值模式
// 范围值模式 — 必须同时配置 Min/Max 且 Min <= Max
if (project.CompletionCountMin.HasValue && project.CompletionCountMax.HasValue &&
project.CompletionCountMin.Value > 0 && project.CompletionCountMax.Value > 0)
project.CompletionCountMin.Value > 0 && project.CompletionCountMax.Value > 0 &&
project.CompletionCountMin.Value <= project.CompletionCountMax.Value)
{
hasValidCompletionConfig = true;
completionMin = project.CompletionCountMin.Value;