auth) { return false; } $controllerPath = get_controller_path($request); if (!$controllerPath) { return false; } $paths = []; $paths[] = $controllerPath . '/' . $action; $parts = explode('/', $controllerPath); foreach ($parts as &$part) { if (str_contains($part, '_')) { $part = lcfirst(str_replace(' ', '', ucwords(str_replace('_', ' ', $part)))); } } $paths[] = implode('/', $parts) . '/' . $action; foreach (array_values(array_unique($paths)) as $path) { if ($this->auth->check($path)) { return true; } } return false; } protected function initController(WebmanRequest $request): ?Response { return null; } /** * 读取 game_config.deposit_tier 的档位列表 */ public function index(WebmanRequest $request): Response { $response = $this->initializeBackend($request); if ($response !== null) { return $response; } if (!$this->hasNodePermission($request, 'index')) { return $this->error(__('You have no permission'), [], 401); } if ($request->method() !== 'GET') { return $this->error(__('Parameter error')); } $row = Db::name('game_config')->where('config_key', DepositTierLib::CONFIG_KEY)->find(); $items = DepositTierLib::parseFromConfigValue($row['config_value'] ?? null); return $this->success('', [ 'items' => $items, ]); } /** * 保存 JSON 数组(value_type=json) */ public function save(WebmanRequest $request): Response { $response = $this->initializeBackend($request); if ($response !== null) { return $response; } if (!$this->hasNodePermission($request, 'save')) { return $this->error(__('You have no permission'), [], 401); } if ($request->method() !== 'POST') { return $this->error(__('Parameter error')); } $payload = $request->post(); if (!is_array($payload)) { return $this->error(__('Parameter %s can not be empty', [''])); } $items = $payload['items'] ?? null; if (!is_array($items)) { return $this->error('items 必须为数组'); } try { $clean = DepositTierLib::prepareItemsForSave(array_values($items)); $json = DepositTierLib::encodeForDb($clean); } catch (InvalidArgumentException $e) { return $this->error($e->getMessage()); } $now = time(); try { $exists = Db::name('game_config')->where('config_key', DepositTierLib::CONFIG_KEY)->find(); if ($exists) { Db::name('game_config')->where('config_key', DepositTierLib::CONFIG_KEY)->update([ 'config_value' => $json, 'value_type' => 'json', 'update_time' => $now, ]); } else { Db::name('game_config')->insert([ 'config_key' => DepositTierLib::CONFIG_KEY, 'config_value' => $json, 'value_type' => 'json', 'remark' => '充值档位 JSON 数组(独立表单维护)', 'create_time' => $now, 'update_time' => $now, ]); } } catch (Throwable $e) { return $this->error($e->getMessage()); } return $this->success(__('Saved successfully')); } }