feat: 支付渠道未配置图标时使用差异化默认字体图标

新增按 channel_key 区分的支付渠道默认字体图标配置,修改图标获取逻辑,未配置图片时根据支付方式展示对应默认图标,同时补充线下支付的图标样式。
This commit is contained in:
sugar1569 2026-09-27 16:14:09 +08:00
parent 49b1596cb1
commit 3952b5caa8
2 changed files with 25 additions and 5 deletions

View File

@ -31,6 +31,20 @@ class PayChannelServices extends BaseService
{
protected const DEFAULT_ICON = 'icon-yuezhifu';
/**
* 按 channel_key 区分的默认字体图标(前端 iconfont 已内置对应字形,
* 后台未上传图片时按支付方式展示差异化图标)
*/
protected const DEFAULT_ICONS = [
'weixin' => 'icon-weixinzhifu',
'weixin_v3' => 'icon-weixinzhifu',
'alipay' => 'icon-zhifubao',
'yue' => 'icon-yuezhifu',
'offline' => 'icon-xianxiazhifu',
'friend' => 'icon-haoyoudaizhifu',
'allinpay' => 'icon-tonglianzhifu1',
];
/**
* @var PayChannelDao
*/
@ -372,8 +386,8 @@ class PayChannelServices extends BaseService
$payStatus = $this->checkChannelStatus($data);
$result[] = [
// 优先使用支付管理中配置的图片,未配置时使用统一的默认字体图标。
'icon' => $this->getDisplayIcon($data['icon'] ?? ''),
// 优先使用支付管理中配置的图片,未配置时按 channel_key 使用差异化的默认字体图标。
'icon' => $this->getDisplayIcon($data['icon'] ?? '', (string)($data['channel_key'] ?? '')),
'name' => $data['channel_name'],
'value' => $data['channel_key'],
'title' => $this->getChannelTitle($data),
@ -407,14 +421,16 @@ class PayChannelServices extends BaseService
}
/**
* 获取展示图标。后台未配置图片时统一使用默认字体图标,不写回数据库。
* 获取展示图标。后台未配置图片时按 channel_key 使用对应的默认字体图标,不写回数据库。
*
* @param mixed $icon
* @param string $channelKey 支付方式标识,用于匹配差异化默认图标
* @return string
*/
protected function getDisplayIcon($icon): string
protected function getDisplayIcon($icon, string $channelKey = ''): string
{
return $this->normalizeIcon($icon) ?: self::DEFAULT_ICON;
return $this->normalizeIcon($icon)
?: self::DEFAULT_ICONS[$channelKey] ?? self::DEFAULT_ICON;
}
/**

View File

@ -735,6 +735,10 @@
color: #305fd8;
}
.payment .item .left .iconfont.icon-xianxiazhifu {
color: #999999;
}
.payment .item .iconfont {
font-size: 40rpx;
color: #ccc;