'desc']; protected string|array $orderGuarantee = ['id' => 'desc']; protected array $withJoinTable = ['user', 'channel', 'gameRecord']; protected function initController(WebmanRequest $request): ?Response { $this->model = new \app\common\model\BetOrder(); return null; } public function add(WebmanRequest $request): Response { $response = $this->initializeBackend($request); if ($response !== null) { return $response; } return $this->error(__('Bet order is generated by game API; manual creation is not allowed')); } public function edit(WebmanRequest $request): Response { $response = $this->initializeBackend($request); if ($response !== null) { return $response; } return $this->error(__('Bet order cannot be edited')); } public function del(WebmanRequest $request): Response { $response = $this->initializeBackend($request); if ($response !== null) { return $response; } return $this->error(__('Bet order cannot be deleted')); } public function sortable(WebmanRequest $request): Response { $response = $this->initializeBackend($request); if ($response !== null) { return $response; } return $this->error(__('Sorting is not supported')); } /** * 渠道管理员仅看本渠道注单 */ protected function _index(): Response { if ($this->request && $this->request->get('select')) { return $this->select($this->request); } list($where, $alias, $limit, $order) = $this->queryBuilder(); $table = strtolower($this->model->getTable()); $mainShort = $alias[$table] ?? ''; if ($mainShort !== '' && $this->shouldApplyUserAdminScope()) { $where[] = ['user.admin_id', 'in', $this->scopedAdminIds()]; } $res = $this->model ->withJoin($this->withJoinTable, $this->withJoinType) ->with($this->withJoinTable) ->visible([ 'user' => ['username', 'phone'], 'channel' => ['name'], 'gameRecord' => ['period_no', 'status'], ]) ->alias($alias) ->where($where) ->order($order) ->paginate($limit); return $this->success('', [ 'list' => $res->items(), 'total' => $res->total(), 'remark' => get_route_remark(), ]); } /** * 当前管理员可见的管理员ID集合(本人 + 下级角色组内管理员) * * @return int[] */ private function scopedAdminIds(): array { if (!$this->auth) { return [0]; } if ($this->auth->isSuperAdmin()) { return []; } $groupIds = $this->auth->getAdminChildGroups(); $adminIds = $groupIds ? $this->auth->getGroupAdmins($groupIds) : []; $adminIds[] = $this->auth->id; $adminIds = array_map(static fn($id) => intval(strval($id)), $adminIds); $adminIds = array_values(array_unique(array_filter($adminIds, static fn($id) => $id > 0))); return $adminIds === [] ? [0] : $adminIds; } }