修复:自动存点导致有职务用户等级反复升降的循环问题
修复 AutoSaveExp 自动存点指令中,有职务用户的等级处理逻辑: - 职务等级改为最低要求(不足时补级),不再强制锁定 - 允许职务成员通过经验值超越职务等级 - 与 ChatController::calculateNewLevel 保持一致 之前 AutoSaveExp 每5分钟把蔚蓝的心情(LV.91/金牌聊务员) 强制降到90级,心跳60秒后又升回91并触发升级广播, 导致用户反复看到"升级到91级"的提示。
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
/.codex
|
||||
/.hermes
|
||||
/.reasonix
|
||||
/.understand-anything
|
||||
/auth.json
|
||||
/node_modules
|
||||
/public/build
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user