From d1409d16bb4f342f4f64005a44669d3a639c9a3b Mon Sep 17 00:00:00 2001 From: pllx Date: Sat, 27 Jun 2026 17:54:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=AD=98=E7=82=B9=E5=AF=BC=E8=87=B4=E6=9C=89=E8=81=8C=E5=8A=A1?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AD=89=E7=BA=A7=E5=8F=8D=E5=A4=8D=E5=8D=87?= =?UTF-8?q?=E9=99=8D=E7=9A=84=E5=BE=AA=E7=8E=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复 AutoSaveExp 自动存点指令中,有职务用户的等级处理逻辑: - 职务等级改为最低要求(不足时补级),不再强制锁定 - 允许职务成员通过经验值超越职务等级 - 与 ChatController::calculateNewLevel 保持一致 之前 AutoSaveExp 每5分钟把蔚蓝的心情(LV.91/金牌聊务员) 强制降到90级,心跳60秒后又升回91并触发升级广播, 导致用户反复看到"升级到91级"的提示。 --- .gitignore | 1 + app/Console/Commands/AutoSaveExp.php | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) 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);