89 lines
2.7 KiB
PHP
89 lines
2.7 KiB
PHP
<?php
|
||
|
||
/**
|
||
* 文件功能:后台 VIP 支付配置控制器
|
||
* 用于管理聊天室对接 NovaLink 支付中心所需的开关、地址、App Key 与 App Secret
|
||
*/
|
||
|
||
namespace App\Http\Controllers\Admin;
|
||
|
||
use App\Http\Controllers\Controller;
|
||
use App\Http\Requests\Admin\UpdateVipPaymentConfigRequest;
|
||
use App\Models\SysParam;
|
||
use App\Services\ChatStateService;
|
||
use Illuminate\Http\RedirectResponse;
|
||
use Illuminate\View\View;
|
||
|
||
class VipPaymentConfigController extends Controller
|
||
{
|
||
/**
|
||
* 构造函数注入聊天室状态服务
|
||
*
|
||
* @param ChatStateService $chatState 系统参数缓存同步服务
|
||
*/
|
||
public function __construct(
|
||
private readonly ChatStateService $chatState,
|
||
) {}
|
||
|
||
/**
|
||
* 显示 VIP 支付配置页
|
||
*/
|
||
public function edit(): View
|
||
{
|
||
$aliases = array_keys($this->fieldDescriptions());
|
||
|
||
// 仅读取 VIP 支付专属配置,避免与系统参数页重复展示。
|
||
$params = SysParam::query()
|
||
->whereIn('alias', $aliases)
|
||
->pluck('body', 'alias')
|
||
->toArray();
|
||
|
||
return view('admin.vip-payment.config', [
|
||
'params' => $params,
|
||
'descriptions' => $this->fieldDescriptions(),
|
||
]);
|
||
}
|
||
|
||
/**
|
||
* 保存 VIP 支付配置并刷新缓存
|
||
*
|
||
* @param UpdateVipPaymentConfigRequest $request 已校验的后台配置请求
|
||
*/
|
||
public function update(UpdateVipPaymentConfigRequest $request): RedirectResponse
|
||
{
|
||
$data = $request->validated();
|
||
$descriptions = $this->fieldDescriptions();
|
||
|
||
foreach ($descriptions as $alias => $guidetxt) {
|
||
$body = (string) ($data[$alias] ?? '');
|
||
|
||
// 写入数据库并同步描述文案,确保后续后台与缓存读取一致。
|
||
SysParam::updateOrCreate(
|
||
['alias' => $alias],
|
||
['body' => $body, 'guidetxt' => $guidetxt]
|
||
);
|
||
|
||
$this->chatState->setSysParam($alias, $body);
|
||
SysParam::clearCache($alias);
|
||
}
|
||
|
||
return redirect()->route('admin.vip-payment.edit')->with('success', 'VIP 支付配置已成功保存。');
|
||
}
|
||
|
||
/**
|
||
* 返回 VIP 支付字段说明文案
|
||
*
|
||
* @return array<string, string>
|
||
*/
|
||
private function fieldDescriptions(): array
|
||
{
|
||
return [
|
||
'vip_payment_enabled' => 'VIP 在线支付开关(1=开启,0=关闭)',
|
||
'vip_payment_base_url' => 'NovaLink 支付中心地址(例如 https://novalink.test)',
|
||
'vip_payment_app_key' => 'NovaLink 支付中心 App Key',
|
||
'vip_payment_app_secret' => 'NovaLink 支付中心 App Secret',
|
||
'vip_payment_timeout' => '调用支付中心超时时间(秒)',
|
||
];
|
||
}
|
||
}
|