logic = new AlipayMiniProgramLogic(); $this->validate = new AlipayMiniProgramValidate(); parent::__construct(); } #[Permission('支付宝小程序列表', 'core:miniProgram:alipay:index')] public function index(Request $request): Response { $where = $request->more([ ['mini_program_name', ''], ['appid', ''], ]); $query = $this->logic->search($where)->field(self::LIST_FIELDS); if (!$this->isSuperAdmin()) { $query->where('partner_id', '=', $this->adminId); } return $this->success($this->logic->getList($query)); } #[Permission('支付宝小程序详情', 'core:miniProgram:alipay:read')] public function read(Request $request): Response { $id = (int) $request->input('id', 0); if ($id <= 0) { return $this->fail('参数错误'); } return $this->success($this->readAccessibleRecord($id)); } #[Permission('绑定支付宝小程序', 'core:miniProgram:alipay:save')] public function save(Request $request): Response { $data = $request->post(); $this->validate('save', $data); $data['partner_id'] = $this->adminId; $id = $this->logic->add($data); return $id ? $this->success(['id' => $id], '绑定成功') : $this->fail('绑定失败'); } #[Permission('编辑支付宝小程序', 'core:miniProgram:alipay:update')] public function update(Request $request): Response { $data = $request->post(); $id = (int) ($data['id'] ?? 0); if ($id <= 0) { return $this->fail('参数错误'); } $this->readAccessibleRecord($id); $this->validate('update', $data); return $this->logic->edit($id, $data) !== false ? $this->success([], '修改成功') : $this->fail('修改失败'); } #[Permission('删除支付宝小程序', 'core:miniProgram:alipay:destroy')] public function destroy(Request $request): Response { $ids = array_values(array_filter(array_map('intval', (array) $request->post('ids', [])))); if ($ids === []) { return $this->fail('请选择要删除的数据'); } foreach ($ids as $id) { $this->readAccessibleRecord($id); } return $this->logic->destroy($ids) ? $this->success([], '删除成功') : $this->fail('删除失败'); } private function readAccessibleRecord(int $id): array { $model = $this->logic->read($id); $data = is_array($model) ? $model : $model->toArray(); if (!$this->isSuperAdmin() && (int) ($data['partner_id'] ?? 0) !== $this->adminId) { throw new ApiException('无权访问该支付宝小程序配置'); } return $data; } private function isSuperAdmin(): bool { return (int) ($this->adminInfo['is_super'] ?? 0) === 1; } }