优化会员显示

This commit is contained in:
2026-04-11 17:18:31 +08:00
parent f91772b019
commit 0a764a3a86
+29 -5
View File
@@ -496,12 +496,22 @@ class ChatController extends Controller
if ($eventChance > 0 && rand(1, 100) <= $eventChance) {
$autoEvent = Autoact::randomEvent();
if ($autoEvent) {
// 计算会员倍率加成(仅正向奖励有效)
$expMul = $this->vipService->getExpMultiplier($user);
$jjbMul = $this->vipService->getJjbMultiplier($user);
$finalExp = $autoEvent->exp_change > 0 ? (int) round($autoEvent->exp_change * $expMul) : $autoEvent->exp_change;
$finalJjb = $autoEvent->jjb_change > 0 ? (int) round($autoEvent->jjb_change * $jjbMul) : $autoEvent->jjb_change;
$bonusExp = ($autoEvent->exp_change > 0 && $finalExp > $autoEvent->exp_change) ? $finalExp - $autoEvent->exp_change : 0;
$bonusJjb = ($autoEvent->jjb_change > 0 && $finalJjb > $autoEvent->jjb_change) ? $finalJjb - $autoEvent->jjb_change : 0;
// 经验变化:通过 UserCurrencyService 写日志
if ($autoEvent->exp_change !== 0) {
if ($finalExp !== 0) {
$this->currencyService->change(
$user,
'exp',
$autoEvent->exp_change,
$finalExp,
CurrencySource::AUTO_EVENT,
"随机事件:{$autoEvent->text_body}",
$id,
@@ -509,11 +519,11 @@ class ChatController extends Controller
}
// 金币变化:通过 UserCurrencyService 写日志
if ($autoEvent->jjb_change !== 0) {
if ($finalJjb !== 0) {
$this->currencyService->change(
$user,
'gold',
$autoEvent->jjb_change,
$finalJjb,
CurrencySource::AUTO_EVENT,
"随机事件:{$autoEvent->text_body}",
$id,
@@ -529,13 +539,27 @@ class ChatController extends Controller
$user->save();
}
// 构建会员额外加成文案(参考钓鱼系统,确保不弄错)
$bonusParts = [];
if ($bonusExp > 0) {
$bonusParts[] = "+经验{$bonusExp}";
}
if ($bonusJjb > 0) {
$bonusParts[] = "+金币{$bonusJjb}";
}
$eventContent = $autoEvent->renderText($user->username);
if (! empty($bonusParts)) {
$eventContent .= ''.$user->vipName().'追加:'.implode('', $bonusParts).'';
}
// 广播随机事件消息到聊天室
$eventMsg = [
'id' => $this->chatState->nextMessageId($id),
'room_id' => $id,
'from_user' => '星海小博士',
'to_user' => '大家',
'content' => $autoEvent->renderText($user->username),
'content' => $eventContent,
'is_secret' => false,
'font_color' => match ($autoEvent->event_type) {
'good' => '#16a34a', // 绿色(好运)