// +---------------------------------------------------------------------- declare (strict_types = 1); namespace addon\haonav\controller\backend; use think\Request; use addon\haonav\model\Configure as ConfigureModel; use think\facade\Db; use ywxapp\model\BaseModel; /** * Configs 类 * * @author ywxapp */ class Configs extends HaonavBackend { /** * Summary of needLogin * @var array */ /** * Summary of needRight * @var array */ protected $noNeedVerify = ['*']; /** * 控制器初始化 _initialize * @return void */ protected function initialize() { $this->model = new ConfigureModel; } /** * 显示资源列表 * * @param \think\Request $request * @return \think\Response */ public function index() { ConfigureModel::ensureRebateConfig(); ConfigureModel::ensureDeadlinkConfig(); $page = $this->request->param('page', 1); $size = $this->request->param('size', 15); if ($this->request->isAjax()) { $data = ConfigureModel::order('id')->select(); $this->result->success($data); } $this->view->assign('title', '网址导航配置'); return $this->view->fetch('configs/index'); } /** * 保存新建的资源 * * @param \think\Request $request * @return \think\Response */ public function update() { if (!$this->request->isPost()) { return $this->result->error('请求方式错误'); } $postData = $this->request->post(); BaseModel::ensureAutoIncrementPk('wxapp_haonav_config'); $allConfigs = ConfigureModel::column('name,type,rule,value', 'name'); Db::startTrans(); try { foreach ($postData as $name => $value) { if (!isset($allConfigs[$name])) { continue; } $config = $allConfigs[$name]; if (!empty($config['rule'])) { $validate = validate([ $name => $config['rule'] ]); //if (!$validate->check([$name => $value])) { // throw new \Exception("配置项 [{$name}] 验证失败:" . $validate->getError()); // } } // 特殊处理:复选框数组转字符串 if (is_array($value)) { $value = implode(',', $value); } $exists = ConfigureModel::where('name', $name)->find(); if ($exists) { $exists->save(['value' => $value ?? ""]); } else { // 如果没有记录,创建新记录 ConfigureModel::create([ 'name' => $name, 'value' => $value, 'group' => $postData['group'] ?? 'default', 'type' => $config['type'] ?? 'string' ]); } } // Cache::delete('system_config_all'); Db::commit(); $this->result->success('配置保存成功'); } catch (\Exception $e) { Db::rollback(); $this->result->error('保存失败:' . $e->getMessage()); } } }