优化:全站金币图标由 🪙(银灰色)统一替换为 💰(金黄色)

🪙 在多数平台/字体上渲染为银灰色,与「金币」语义不符;
💰 各平台均渲染为金黄色,更直观传达金币概念。

涉及文件(43处):
- app/Jobs:百家乐、赛马结算广播
- app/Http/Controllers:管理员命令、红包、老虎机、神秘箱子
- app/Listeners
- resources/views:聊天室各游戏面板、商店、toolbar、后台页面等
This commit is contained in:
2026-03-04 15:00:02 +08:00
parent 349eb5a338
commit 040dbdef3c
23 changed files with 43 additions and 43 deletions

View File

@@ -560,7 +560,7 @@ class AdminCommandController extends Controller
'room_id' => $roomId,
'from_user' => '系统公告',
'to_user' => '',
'content' => "🪙 <b>{$admin->username}</b>{$positionName})向 <b>{$targetUsername}</b> 发放了 <b>{$amount}</b> 枚奖励金币!",
'content' => "💰 <b>{$admin->username}</b>{$positionName})向 <b>{$targetUsername}</b> 发放了 <b>{$amount}</b> 枚奖励金币!",
'is_secret' => false,
'font_color' => '#d97706',
'action' => '',
@@ -584,9 +584,9 @@ class AdminCommandController extends Controller
'sent_at' => now()->toDateTimeString(),
// 前端 toast-notification 组件识别此字段,弹出右下角通知卡片
'toast_notification' => [
'title' => '🪙 奖励金币到账',
'title' => '💰 奖励金币到账',
'message' => "<b>{$admin->username}</b>{$positionName})向你发放了 <b>{$amount}</b> 枚金币!",
'icon' => '🪙',
'icon' => '💰',
'color' => '#f59e0b',
'duration' => 8000,
],

View File

@@ -147,11 +147,11 @@ class MysteryBoxController extends Controller
if ($reward >= 0) {
$content = "{$emoji}【开箱播报】恭喜 【{$username}】 抢到了神秘{$typeName}"
. "获得 🪙" . number_format($reward) . " 金币!";
. "获得 💰" . number_format($reward) . " 金币!";
$color = $box->box_type === 'rare' ? '#c4b5fd' : '#34d399';
} else {
$content = "【黑化陷阱】haha{$username}】 中了神秘黑化箱的陷阱!"
. "被扣除 🪙" . number_format(abs($reward)) . " 金币!点背~";
. "被扣除 💰" . number_format(abs($reward)) . " 金币!点背~";
$color = '#f87171';
}

View File

@@ -92,7 +92,7 @@ class RedPacketController extends Controller
// 货币展示文案
$typeLabel = $type === 'exp' ? '经验' : '金币';
$typeIcon = $type === 'exp' ? '✨' : '🪙';
$typeIcon = $type === 'exp' ? '✨' : '💰';
$btnBg = $type === 'exp'
? 'linear-gradient(135deg,#7c3aed,#4f46e5)'
: 'linear-gradient(135deg,#dc2626,#ea580c)';
@@ -303,7 +303,7 @@ class RedPacketController extends Controller
// 在聊天室发送领取播报(所有人可见)
$typeLabel = $envelopeType === 'exp' ? '经验' : '金币';
$typeIcon = $envelopeType === 'exp' ? '✨' : '🪙';
$typeIcon = $envelopeType === 'exp' ? '✨' : '💰';
$claimedMsg = [
'id' => $this->chatState->nextMessageId($roomId),
'room_id' => $roomId,

View File

@@ -168,11 +168,11 @@ class SlotMachineController extends Controller
} elseif (in_array($resultType, ['triple_gem', 'triple', 'pair'], true)) {
// 普通中奖:仅向本人发送聊天室系统通知
$net = $payout - $cost;
$content = "🎰 {$resultLabel}{$e1}{$e2}{$e3} 赢得 +🪙".number_format($net).' 金币';
$content = "🎰 {$resultLabel}{$e1}{$e2}{$e3} 赢得 +💰".number_format($net).' 金币';
$this->broadcastPersonal($user->username, $content);
} elseif ($resultType === 'curse') {
// 诅咒:通知本人
$content = "☠️ 三骷髅诅咒!{$e1}{$e2}{$e3} 额外扣除 🪙".number_format($cost).' 金币!';
$content = "☠️ 三骷髅诅咒!{$e1}{$e2}{$e3} 额外扣除 💰".number_format($cost).' 金币!';
$this->broadcastPersonal($user->username, $content);
}
@@ -243,7 +243,7 @@ class SlotMachineController extends Controller
{
$net = $payout - $cost;
$content = "🎰🎉【老虎机大奖】恭喜 【{$username}】 转出三个7"
.'狂揽 🪙'.number_format($net).' 金币!全服见证奇迹!';
.'狂揽 💰'.number_format($net).' 金币!全服见证奇迹!';
$msg = [
'id' => $this->chatState->nextMessageId(1),

View File

@@ -168,13 +168,13 @@ class CloseBaccaratRoundJob implements ShouldQueue
};
$payoutText = $round->total_payout > 0
? '共派发 🪙'.number_format($round->total_payout).' 金币'
? '共派发 💰'.number_format($round->total_payout).' 金币'
: '本局无人获奖';
// 拼接用户输赢明细(最多显示 10 人,防止消息过长)
$detailParts = [];
if ($winners) {
$detailParts[] = '🏆 中奖:'.implode('、', array_slice($winners, 0, 10)).' 🪙';
$detailParts[] = '🏆 中奖:'.implode('、', array_slice($winners, 0, 10)).' 💰';
}
if ($losers) {
$detailParts[] = '😔 未中:'.implode('、', array_slice($losers, 0, 10));

View File

@@ -148,7 +148,7 @@ class CloseHorseRaceJob implements ShouldQueue
}
$payoutText = $totalPayout > 0
? '共派发 🪙'.number_format($totalPayout).' 金币'
? '共派发 💰'.number_format($totalPayout).' 金币'
: '本场无人获奖';
$content = "🏆 【赛马】第 #{$race->id} 场结束!冠军:{$winnerName}{$payoutText}";

View File

@@ -213,7 +213,7 @@ class TriggerHolidayEventJob implements ShouldQueue
private function pushSystemMessage(HolidayEvent $event, int $claimCount, ChatStateService $chatState): void
{
$typeLabel = $event->distribute_type === 'fixed' ? "每人固定 {$event->fixed_amount} 金币" : '随机分配';
$content = "🎊 【{$event->name}】节日福利开始啦!总奖池 🪙".number_format($event->total_amount)
$content = "🎊 【{$event->name}】节日福利开始啦!总奖池 💰".number_format($event->total_amount)
." 金币,{$typeLabel},共 {$claimCount} 名在线用户可领取!点击弹窗按钮立即领取!";
$msg = [

View File

@@ -74,7 +74,7 @@ class SaveMarriageSystemMessage
$amount = number_format((int) $ceremony->total_amount);
$content = "{$tierIcon}{$userName}】与【{$partnerName}】举办了【{$tierName}】婚礼大典!"
."总计 🪙{$amount} 金币红包已向全场分发,快去领取吧!";
."总计 💰{$amount} 金币红包已向全场分发,快去领取吧!";
$this->pushAndSave($content, '#f59e0b');
}

View File

@@ -25,7 +25,7 @@
{{-- ── 汇总统计卡片 ── --}}
@php
$statCards = [
'reward' => ['label' => '奖励发放', 'icon' => '🪙', 'color' => 'yellow'],
'reward' => ['label' => '奖励发放', 'icon' => '💰', 'color' => 'yellow'],
'kick' => ['label' => '踢出操作', 'icon' => '🚫', 'color' => 'red'],
'mute' => ['label' => '禁言操作', 'icon' => '🔇', 'color' => 'purple'],
'warn' => ['label' => '警告操作', 'icon' => '⚠️', 'color' => 'orange'],

View File

@@ -44,7 +44,7 @@
{{-- 奖励配置 --}}
<div class="mb-6">
<h3 class="text-sm font-bold text-gray-700 mb-3 pb-2 border-b">🪙 奖励配置</h3>
<h3 class="text-sm font-bold text-gray-700 mb-3 pb-2 border-b">💰 奖励配置</h3>
<div class="grid grid-cols-2 gap-4">
<div>
<label class="block text-xs font-bold text-gray-600 mb-1">总金币奖池 <span

View File

@@ -58,7 +58,7 @@
@endif
</td>
<td class="p-3 font-bold text-amber-600">
🪙 {{ number_format($event->total_amount) }}
💰 {{ number_format($event->total_amount) }}
</td>
<td class="p-3">
@if ($event->distribute_type === 'random')

View File

@@ -138,7 +138,7 @@
}">
<div class="flex items-center gap-6 flex-wrap">
<div class="flex-1 min-w-0">
<h3 class="text-sm font-bold text-amber-800 mb-1">🪙 全局奖励接收上限</h3>
<h3 class="text-sm font-bold text-amber-800 mb-1">💰 全局奖励接收上限</h3>
<p class="text-xs text-amber-700 leading-relaxed">
每位用户单日内可从<b>所有职务持有者</b>处累计接收奖励金币的最高次数。
设为 <code class="bg-amber-100 px-1 rounded">0</code> 表示不限制。

View File

@@ -232,7 +232,7 @@
<div style="font-size:32px; margin-bottom:4px;">🎉</div>
<div style="color:#16a34a; font-size:18px; font-weight:900;">恭喜中奖!</div>
<div style="color:#15803d; font-size:24px; font-weight:bold; margin:6px 0;"
x-text="'+' + Number(myPayout).toLocaleString() + ' 🪙'"></div>
x-text="'+' + Number(myPayout).toLocaleString() + ' 💰'"></div>
<div style="color:#86a896; font-size:11px;"
x-text="'押「' + betTypeLabel(myBetType) + '」' + Number(myBetAmount).toLocaleString() + ' 金币 → 赢得 ' + Number(myPayout).toLocaleString() + ' 金币'">
</div>

View File

@@ -46,7 +46,7 @@
<div
style="font-size:12px; color:#d0e8ff; display:flex; align-items:center; gap:3px;
background:rgba(0,0,0,.2); padding:2px 8px; border-radius:10px;">
🪙 <strong id="game-hall-jjb" style="color:#ffe082; font-size:13px;">--</strong> 金币
💰 <strong id="game-hall-jjb" style="color:#ffe082; font-size:13px;">--</strong> 金币
</div>
<span onclick="closeGameHall()"
style="cursor:pointer; font-size:18px; opacity:.8; line-height:1; transition:opacity .15s;"

View File

@@ -33,7 +33,7 @@
{{-- 奖池信息 --}}
<div style="background:rgba(0,0,0,.25); border-radius:14px; padding:12px 16px; margin-bottom:16px;">
<div style="color:rgba(254,243,199,.6); font-size:11px; margin-bottom:4px;">🪙 本次节日总奖池</div>
<div style="color:rgba(254,243,199,.6); font-size:11px; margin-bottom:4px;">💰 本次节日总奖池</div>
<div style="color:#fcd34d; font-size:24px; font-weight:bold;"
x-text="totalAmount.toLocaleString() + ' 金币'"></div>
<div style="color:rgba(254,243,199,.5); font-size:11px; margin-top:4px;">
@@ -214,7 +214,7 @@
'随机金额';
const quotaText = detail.max_claimants > 0 ? `前 ${detail.max_claimants} 名` : '全体';
appendSystemMessage(
`🎊 【${detail.name}】节日福利开始啦!总奖池 🪙${Number(detail.total_amount).toLocaleString()} 金币,${typeLabel}${quotaText}在线用户可领取!`
`🎊 【${detail.name}】节日福利开始啦!总奖池 💰${Number(detail.total_amount).toLocaleString()} 金币,${typeLabel}${quotaText}在线用户可领取!`
);
}

View File

@@ -222,7 +222,7 @@
<div style="font-size:24px; margin-bottom:4px;">🎉</div>
<div style="color:#16a34a; font-size:16px; font-weight:bold;">恭喜中奖!</div>
<div style="color:#15803d; font-size:18px; font-weight:bold; margin:4px 0;"
x-text="'+' + Number(myPayout).toLocaleString() + ' 🪙'"></div>
x-text="'+' + Number(myPayout).toLocaleString() + ' 💰'"></div>
<div style="color:#888; font-size:10px;"
x-text="'押「' + myBetHorseName + '」' + Number(myBetAmount).toLocaleString() + ' 金币 → 赢得 ' + Number(myPayout).toLocaleString() + ' 金币'">
</div>

View File

@@ -128,7 +128,7 @@
<select x-model="selectedTierId" required
style="width:100%; padding:8px 10px; border-radius:8px; border:1px solid #f43f5e; background:#fff; font-size:13px; color:#1f2937; margin-bottom:10px;">
<template x-for="tier in tiers" :key="tier.id">
<option :value="tier.id" x-text="`${tier.icon} ${tier.name} (🪙 ${tier.amount})`">
<option :value="tier.id" x-text="`${tier.icon} ${tier.name} (💰 ${tier.amount})`">
</option>
</template>
</select>
@@ -145,11 +145,11 @@
</div>
<div style="color:#6b7280;">
婚礼预冻结:<strong style="color:#f43f5e;"
x-text="'🪙 ' + (selectedTier ? Number(selectedTier.amount).toLocaleString() : 0)"></strong>
x-text="'💰 ' + (selectedTier ? Number(selectedTier.amount).toLocaleString() : 0)"></strong>
金币
</div>
<div :style="canAfford ? 'color:#15803d' : 'color:#dc2626'">
当前余额:<strong>🪙 {{ number_format($user->jjb) }}</strong> 金币
当前余额:<strong>💰 {{ number_format($user->jjb) }}</strong> 金币
</div>
<div style="color:#9ca3af; font-size:11px; margin-top:4px;">需男方独自承担预冻结金币,对方同意后即刻举行。被拒则全额退回!
</div>
@@ -1346,7 +1346,7 @@
vertical-align:middle; line-height:1.8; box-shadow:0 2px 8px rgba(0,0,0,.3);"
title="点击领取婚礼红包">🧧 点击领取红包</button>`;
appendSystemMessage(
`${tierIcon} ${groomName} 与 ${brideName} 举办了【${tierName}】!总金额 🪙${amount} 金币,快来抢红包!${claimBtn}`
`${tierIcon} ${groomName} 与 ${brideName} 举办了【${tierName}】!总金额 💰${amount} 金币,快来抢红包!${claimBtn}`
);
}

View File

@@ -2701,7 +2701,7 @@
titleColor: '#fde68a',
autoClose: 0,
buttons: [{
label: '🪙 金币礼包',
label: '💰 金币礼包',
color: '#d97706',
onClick(btn, close) {
close();
@@ -2788,7 +2788,7 @@
// 根据类型调整配色和标签
const isExp = (type === 'exp');
const typeIcon = isExp ? '✨' : '🪙';
const typeIcon = isExp ? '✨' : '💰';
const typeName = isExp ? '经验' : '金币';
const headerBg = isExp ?
'linear-gradient(160deg,#6d28d9 0%,#5b21b6 50%,#4c1d95 100%)' :

View File

@@ -247,7 +247,7 @@
{{-- 余额栏 --}}
<div id="shop-balance-bar">
🪙 <span id="shop-jjb">--</span> 金币
💰 <span id="shop-jjb">--</span> 金币
<span id="shop-week-badge"></span>
</div>
@@ -410,7 +410,7 @@
btn.onclick = openRenameModal;
} else {
btn.className = 'shop-btn';
btn.innerHTML = `🪙 ${Number(item.price).toLocaleString()}`;
btn.innerHTML = `💰 ${Number(item.price).toLocaleString()}`;
btn.onclick = () => buyItem(item.id, item.name, item.price);
}
row.appendChild(btn);

View File

@@ -29,7 +29,7 @@
<div style="font-size:14px; font-weight:bold; color:#fff; flex:1;">🎰 老虎机</div>
<div
style="font-size:12px; color:rgba(255,255,255,.8); background:rgba(0,0,0,.15); padding:2px 10px; border-radius:10px; display:flex; align-items:center; gap:4px;">
🪙 <span x-text="Number(balance).toLocaleString()" style="color:#fef08a; font-weight:bold;"></span>
💰 <span x-text="Number(balance).toLocaleString()" style="color:#fef08a; font-weight:bold;"></span>
</div>
<div x-show="dailyLimit > 0"
style="font-size:11px; color:rgba(255,255,255,.7); background:rgba(255,255,255,.15); padding:2px 8px; border-radius:10px;"
@@ -120,10 +120,10 @@
{{-- \u76c8\u4e8f\u663e\u793a --}}
<div x-show="!spinning && resultType" style="text-align:center; margin-bottom:12px;">
<div x-show="netChange > 0" style="color:#16a34a; font-size:22px; font-weight:bold;"
x-text="'+' + Number(netChange).toLocaleString() + ' 🪙'">
x-text="'+' + Number(netChange).toLocaleString() + ' 💰'">
</div>
<div x-show="netChange < 0" style="color:#dc2626; font-size:16px; font-weight:bold;"
x-text="Number(netChange).toLocaleString() + ' 🪙'">
x-text="Number(netChange).toLocaleString() + ' 💰'">
</div>
<div x-show="netChange === 0 && resultType === 'miss'" style="color:#999; font-size:13px;">
损失 <span x-text="costPerSpin"></span> 金币

View File

@@ -11,7 +11,7 @@
- action: { label, onClick } 可选操作按钮
使用示例:
window.chatToast.show({ title: '奖励金币', message: '你收到 100 枚金币!', icon: '🪙', color: '#f59e0b' });
window.chatToast.show({ title: '奖励金币', message: '你收到 100 枚金币!', icon: '💰', color: '#f59e0b' });
多条 Toast 从右下角向上堆叠,各自独立计时。

View File

@@ -721,7 +721,7 @@
{{-- 标题栏 --}}
<div id="shop-modal-header">
<div id="shop-modal-title">🛍 道具商店</div>
<div id="shop-modal-jjb">🪙 <strong id="shop-jjb">--</strong> 金币</div>
<div id="shop-modal-jjb">💰 <strong id="shop-jjb">--</strong> 金币</div>
<span id="shop-week-badge"></span>
<span id="shop-modal-close" onclick="closeShopModal()"></span>
</div>
@@ -937,15 +937,15 @@
} else if (item.type === 'instant') {
// 单次卡:打开送礼弹框
btn.className = 'shop-btn';
btn.innerHTML = `🪙 ${Number(item.price).toLocaleString()}`;
btn.innerHTML = `💰 ${Number(item.price).toLocaleString()}`;
btn.onclick = () => openGiftDialog(item);
} else {
// 周卡、道具、戒指、自动钓鱼卡:弹确认窗口再购买
btn.className = 'shop-btn';
btn.innerHTML = `🪙 ${Number(item.price).toLocaleString()}`;
btn.innerHTML = `💰 ${Number(item.price).toLocaleString()}`;
btn.onclick = async () => {
const confirmMsg =
`确认花费 🪙 ${Number(item.price).toLocaleString()} 金币购买\n【${item.name}】吗?`;
`确认花费 💰 ${Number(item.price).toLocaleString()} 金币购买\n【${item.name}】吗?`;
const ok = await window.chatDialog.confirm(confirmMsg, '确认购买');
if (ok) buyItem(item.id, item.name, item.price, 'all', '');
};
@@ -968,7 +968,7 @@
document.getElementById('gift-message').value = '';
document.getElementById('gift-err').textContent = '';
document.getElementById('gift-item-name').textContent =
`${item.icon} ${item.name}🪙 ${Number(item.price).toLocaleString()}`;
`${item.icon} ${item.name}💰 ${Number(item.price).toLocaleString()}`;
document.getElementById('gift-dialog').style.display = 'flex';
};

View File

@@ -744,7 +744,7 @@
style="flex:1; padding: 7px 10px; border-radius: 5px; font-size: 12px; font-weight: bold; cursor: pointer;
background: linear-gradient(135deg,#f59e0b,#d97706); color:#fff; border:none;"
x-on:click="openRewardModal(userInfo.username)">
🪙 送金币
💰 送金币
</button>
{{-- 求婚按钮:对方未婚 + 双方均已设置性别 + 异性 --}}
@@ -1059,7 +1059,7 @@
style="background:linear-gradient(135deg,#f59e0b,#d97706); padding:14px 20px;
display:flex; align-items:center; justify-content:space-between;">
<div>
<div style="color:#fff; font-weight:bold; font-size:16px;">🪙 发放奖励金币</div>
<div style="color:#fff; font-weight:bold; font-size:16px;">💰 发放奖励金币</div>
<div style="color:rgba(255,255,255,.9); font-size:12px; margin-top:2px;"
x-text="'发给:' + targetUsername"></div>
</div>