logic = new AgentLogic(); $this->validate = new AgentValidate(); parent::__construct(); } #[Permission('代理列表', 'core:agent:index')] public function index(Request $request): Response { return $this->success($this->logic->indexList($this->agentFilters($request))); } #[Permission('导出代理', 'core:agent:export')] public function export(Request $request): Response { return $this->logic->export($this->agentFilters($request)); } #[Permission('代理详情', 'core:agent:read')] public function read(Request $request): Response { return $this->success($this->logic->readAgent((int) $request->input('id', 0))); } #[Permission('修改代理信息', 'core:agent:update')] public function update(Request $request): Response { $data = $request->post(); if ($data === []) { $json = json_decode($request->rawBody(), true); $data = is_array($json) ? $json : []; } $this->validate('update', $data); $this->logic->updateAgent((int) $data['id'], $data); return $this->success([], '代理信息保存成功'); } #[Permission('删除代理', 'core:agent:destroy')] public function destroy(Request $request): Response { $id = (int) $request->post('id', 0); $this->validate('destroy', ['id' => $id]); $this->logic->destroyAgent($id); return $this->success([], '代理已删除'); } #[Permission('查看代理合同', 'core:agent:contract:read')] public function readContract(Request $request): Response { return $this->success($this->logic->readContract((int) $request->input('id', 0))); } #[Permission('保存代理合同', 'core:agent:contract:update')] public function updateContract(Request $request): Response { $data = $request->post(); if ($data === []) { $json = json_decode($request->rawBody(), true); $data = is_array($json) ? $json : []; } $this->validate('contract', $data); $result = $this->logic->updateContract((int) $data['id'], $data); return $this->success($result, '合同资料保存成功'); } #[Permission('可分配设备', 'core:agent:device:candidates')] public function deviceCandidates(Request $request): Response { return $this->success($this->logic->candidateDevices($request->more([ ['category', 'all'], ['goods_type', ''], ['device_sn', ''], ['qr_code', ''], ]))); } #[Permission('分配设备', 'core:agent:device:assign')] public function assignDevice(Request $request): Response { $data = $request->post(); $this->validate('deviceAction', $data); $result = $this->logic->assignDevices((int) $data['agent_id'], $data['device_sns']); return $this->success($result, (string) $result['message']); } #[Permission('回收设备', 'core:agent:device:recover')] public function recoverDevice(Request $request): Response { $data = $request->post(); $this->validate('deviceAction', $data); $result = $this->logic->recoverDevices((int) $data['agent_id'], $data['device_sns']); return $this->success($result, (string) $result['message']); } #[Permission('设备分配记录', 'core:agent:device:records')] public function deviceRecords(Request $request): Response { $agentId = (int) $request->input('agent_id', 0); return $this->success($this->logic->assignmentRecords($agentId, $request->more([ ['action_type', ''], ['goods_type', ''], ['device_sn', ''], ]))); } private function agentFilters(Request $request): array { return $request->more([ ['agent_type', ''], ['sort', 'default'], ['name', ''], ['phone', ''], ['status', ''], ]); } }