diff --git a/app/admin/controller/Config.php b/app/admin/controller/Config.php index d1e7f23..b89d23f 100755 --- a/app/admin/controller/Config.php +++ b/app/admin/controller/Config.php @@ -73,6 +73,34 @@ class Config extends Base return View::fetch('Config/wechatofficialaccount'); } + //微信小程序 + public function miniprogram(Request $request) + { + // 获取小程序配置 + $config = getConfig('miniprogram_setting'); + + // 获取旧的微信小程序配置,用于兼容 + $wechat_setting = getConfig('wechat_setting'); + + // 获取所有微信支付商户信息 + $merchants = []; + $weixinpay_setting = getConfig('weixinpay_setting'); + if (!empty($weixinpay_setting) && !empty($weixinpay_setting['merchants'])) { + foreach ($weixinpay_setting['merchants'] as $index => $merchant) { + $merchants[$index] = [ + 'id' => $index, + 'name' => $merchant['name'], + 'mch_id' => $merchant['mch_id'] + ]; + } + } + + View::assign("data", $config); + View::assign("wechat_setting", $wechat_setting); + View::assign("merchants", $merchants); + return View::fetch('Config/miniprogram'); + } + //系统设置 public function systemconfig(Request $request) { @@ -117,6 +145,39 @@ class Config extends Base $prefixes[] = $merchant['order_prefix']; } } + + // 处理微信小程序配置 + if ($data['key'] == 'miniprogram_setting' && isset($data['miniprograms']) && is_array($data['miniprograms'])) { + // 检查是否有默认小程序 + $hasDefault = false; + $prefixes = []; + foreach ($data['miniprograms'] as $index => $miniprogram) { + if (isset($miniprogram['is_default']) && $miniprogram['is_default'] == 1) { + $hasDefault = true; + } + + // 验证订单前缀 + if (!empty($miniprogram['order_prefix'])) { + if (strlen($miniprogram['order_prefix']) != 2) { + return $this->renderError('小程序"' . $miniprogram['name'] . '"的订单前缀必须是2位字符'); + } + + if (in_array($miniprogram['order_prefix'], $prefixes)) { + return $this->renderError('订单前缀"' . $miniprogram['order_prefix'] . '"重复,每个小程序的前缀必须唯一'); + } + + $prefixes[] = $miniprogram['order_prefix']; + } + } + + if (!$hasDefault) { + return $this->renderError('请至少设置一个默认小程序'); + } + + // 清除旧的微信小程序配置缓存 + $redis = new RedisHelper(); + ($redis->getRedis())->del('config:miniprogram_setting'); + } // 处理同步地址数据格式 if ($data['key'] == 'systemconfig') { diff --git a/app/admin/route/app.php b/app/admin/route/app.php index c9af307..eb4f8b6 100755 --- a/app/admin/route/app.php +++ b/app/admin/route/app.php @@ -271,6 +271,7 @@ Route::get('sign', 'Config/sign');//签到设置 Route::get('weixinpay', 'Config/weixinpay'); Route::get('uploadsFile', 'Config/uploads'); //上传设置 Route::get('systemconfig', 'Config/systemconfig'); //系统设置 +Route::get('miniprogram', 'Config/miniprogram'); //微信小程序配置 Route::post('update', 'Config/update'); Route::get('wechatofficialaccount', 'Config/wechatofficialaccount'); diff --git a/app/admin/view/Config/miniprogram.html b/app/admin/view/Config/miniprogram.html new file mode 100644 index 0000000..624f51d --- /dev/null +++ b/app/admin/view/Config/miniprogram.html @@ -0,0 +1,370 @@ +{include file="Public:header2"/} +
+ +