manghe/app/admin/controller/Config.php
2025-04-07 07:57:33 +00:00

166 lines
5.5 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\admin\controller;
use app\common\server\RedisHelper;
use \think\facade\Request;
use \think\facade\View;
use think\facade\Db;
class Config extends Base
{
public function base(Request $request)
{
$config = getConfig('base');
View::assign("key", "base");
View::assign("data", $config);
return View::fetch('Config/base');
}
//微信支付
public function weixinpay(Request $request)
{
$config = getConfig('weixinpay_setting');
if (empty($config)) {
// 兼容旧数据,如果新配置为空,则尝试获取旧配置并转换格式
$old_config = getConfig('weixinpay');
if (!empty($old_config)) {
$config = [
'merchants' => [
[
'name' => '默认商户',
'mch_id' => $old_config['mch_id'] ?? '',
'keys' => $old_config['keys'] ?? '',
'order_prefix' => $old_config['order_prefix'] ?? 'MYH',
'weight' => 1
]
]
];
}
}
View::assign("key", "weixinpay_setting");
View::assign("data", $config);
return View::fetch('Config/weixinpay');
}
//签到设置
public function sign(Request $request)
{
$config = getConfig('sign');
View::assign("key", "sign");
View::assign("data", $config);
return View::fetch('Config/sign');
}
//上传设置
public function uploads(Request $request)
{
$config = getConfig('uploads');
View::assign("key", "uploads");
View::assign("data", $config);
return View::fetch('Config/uploads');
}
//微信公众号
public function wechatofficialaccount(Request $request)
{
$config = getConfig('wechatofficialaccount');
View::assign("key", "wechatofficialaccount");
View::assign("data", $config);
return View::fetch('Config/wechatofficialaccount');
}
//系统设置
public function systemconfig(Request $request)
{
$config = getConfig('systemconfig');
$user_config = getConfig('user_config');
$wechat_setting = getConfig('wechat_setting');
$app_setting = getConfig('app_setting');
$infinite_multiple = getConfig('infinite_multiple');
$wechatofficialaccount_setting = getConfig('wechatofficialaccount_setting');
$rank_setting = getConfig('rank_setting');
View::assign("key", "systemconfig");
View::assign("data", $config);
View::assign("user_config", $user_config);
View::assign("wechat_setting", $wechat_setting);
View::assign("app_setting", $app_setting);
View::assign("wechatofficialaccount_setting", $wechatofficialaccount_setting);
View::assign("infinite_multiple", $infinite_multiple);
View::assign("rank_setting", $rank_setting);
return View::fetch('Config/systemconfig');
}
//修改
public function update()
{
$data = input("post.");
$data['update_time'] = time();
// 处理微信支付商户前缀验证
if ($data['key'] == 'weixinpay_setting' && isset($data['merchants']) && is_array($data['merchants'])) {
// 检查前缀的唯一性
$prefixes = [];
foreach ($data['merchants'] as $index => $merchant) {
if (empty($merchant['order_prefix']) || strlen($merchant['order_prefix']) !== 3) {
return $this->renderError('商户前缀必须是3位字符');
}
if (in_array($merchant['order_prefix'], $prefixes)) {
return $this->renderError('商户前缀"' . $merchant['order_prefix'] . '"重复,每个商户的前缀必须唯一');
}
$prefixes[] = $merchant['order_prefix'];
}
}
// 处理同步地址数据格式
if ($data['key'] == 'systemconfig') {
$syncAddresses = [];
$addressNames = isset($data['sync_address_names']) ? $data['sync_address_names'] : [];
$addressUrls = isset($data['sync_address_urls']) ? $data['sync_address_urls'] : [];
// 移除原有数组
unset($data['sync_address_names']);
unset($data['sync_address_urls']);
// 构建新的数据格式
for ($i = 0; $i < count($addressUrls); $i++) {
if (!empty($addressUrls[$i])) {
$syncAddresses[] = [
'name' => isset($addressNames[$i]) ? $addressNames[$i] : '',
'sync_address' => $addressUrls[$i]
];
}
}
// 使用新的格式设置同步地址
$data['sync_address'] = $syncAddresses;
}
if ($data['key'] == 'infinite_multiple') {
//清除redis缓存infinite_multiple
$redis = new RedisHelper();
($redis->getRedis())->del('config:infinite_multiple');
}
if ($data['key'] == 'rank_setting') {
//清除排行榜设置缓存
\app\common\helper\ConfigHelper::clearRankSettingsCache();
}
$result = setConfig($data['key'], $data);
if ($result) {
return $this->renderSuccess('修改成功');
} else {
return $this->renderError('修改失败');
}
}
}
?>