diff --git a/.gitignore b/.gitignore index dfee2d2..4edb32b 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ /.codex /.hermes /.reasonix +/.understand-anything /auth.json /node_modules /public/build diff --git a/app/Console/Commands/AutoSaveExp.php b/app/Console/Commands/AutoSaveExp.php index ed92e66..9b40202 100644 --- a/app/Console/Commands/AutoSaveExp.php +++ b/app/Console/Commands/AutoSaveExp.php @@ -211,11 +211,17 @@ class AutoSaveExp extends Command $activeUP = $user->activePosition; // 已在 refresh 后加载 if ($activeUP?->position) { - // 有在职职务:等级锁定为职务设定值,确保不被经验系统覆盖 + // 有在职职务:职务等级是最低要求,允许用户通过经验值超越职务等级 $requiredLevel = (int) $activeUP->position->level; - if ($requiredLevel > 0 && $user->user_level !== $requiredLevel) { + if ($requiredLevel > 0 && $user->user_level < $requiredLevel) { $user->user_level = $requiredLevel; } + // 职务成员也可以按经验超越职务等级 + $expLevel = Sysparam::calculateLevel($user->exp_num); + if ($expLevel > $user->user_level && $expLevel < $superLevel) { + $user->user_level = $expLevel; + $leveledUp = ($expLevel > $oldLevel); + } } elseif ($oldLevel < $superLevel) { // 普通用户:按经验计算并更新等级 $newLevel = Sysparam::calculateLevel($user->exp_num);