AgentController.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. namespace plugin\saiadmin\app\controller\agent;
  3. use plugin\saiadmin\app\logic\agent\AgentLogic;
  4. use plugin\saiadmin\app\validate\agent\AgentValidate;
  5. use plugin\saiadmin\basic\BaseController;
  6. use plugin\saiadmin\service\Permission;
  7. use support\Request;
  8. use support\Response;
  9. class AgentController extends BaseController
  10. {
  11. public function __construct()
  12. {
  13. $this->logic = new AgentLogic();
  14. $this->validate = new AgentValidate();
  15. parent::__construct();
  16. }
  17. #[Permission('代理列表', 'core:agent:index')]
  18. public function index(Request $request): Response
  19. {
  20. return $this->success($this->logic->indexList($this->agentFilters($request)));
  21. }
  22. #[Permission('导出代理', 'core:agent:export')]
  23. public function export(Request $request): Response
  24. {
  25. return $this->logic->export($this->agentFilters($request));
  26. }
  27. #[Permission('代理详情', 'core:agent:read')]
  28. public function read(Request $request): Response
  29. {
  30. return $this->success($this->logic->readAgent((int) $request->input('id', 0)));
  31. }
  32. #[Permission('修改代理信息', 'core:agent:update')]
  33. public function update(Request $request): Response
  34. {
  35. $data = $request->post();
  36. if ($data === []) {
  37. $json = json_decode($request->rawBody(), true);
  38. $data = is_array($json) ? $json : [];
  39. }
  40. $this->validate('update', $data);
  41. $this->logic->updateAgent((int) $data['id'], $data);
  42. return $this->success([], '代理信息保存成功');
  43. }
  44. #[Permission('删除代理', 'core:agent:destroy')]
  45. public function destroy(Request $request): Response
  46. {
  47. $id = (int) $request->post('id', 0);
  48. $this->validate('destroy', ['id' => $id]);
  49. $this->logic->destroyAgent($id);
  50. return $this->success([], '代理已删除');
  51. }
  52. #[Permission('查看代理合同', 'core:agent:contract:read')]
  53. public function readContract(Request $request): Response
  54. {
  55. return $this->success($this->logic->readContract((int) $request->input('id', 0)));
  56. }
  57. #[Permission('保存代理合同', 'core:agent:contract:update')]
  58. public function updateContract(Request $request): Response
  59. {
  60. $data = $request->post();
  61. if ($data === []) {
  62. $json = json_decode($request->rawBody(), true);
  63. $data = is_array($json) ? $json : [];
  64. }
  65. $this->validate('contract', $data);
  66. $result = $this->logic->updateContract((int) $data['id'], $data);
  67. return $this->success($result, '合同资料保存成功');
  68. }
  69. #[Permission('可分配设备', 'core:agent:device:candidates')]
  70. public function deviceCandidates(Request $request): Response
  71. {
  72. return $this->success($this->logic->candidateDevices($request->more([
  73. ['category', 'all'], ['goods_type', ''], ['device_sn', ''], ['qr_code', ''],
  74. ])));
  75. }
  76. #[Permission('分配设备', 'core:agent:device:assign')]
  77. public function assignDevice(Request $request): Response
  78. {
  79. $data = $request->post();
  80. $this->validate('deviceAction', $data);
  81. $result = $this->logic->assignDevices((int) $data['agent_id'], $data['device_sns']);
  82. return $this->success($result, (string) $result['message']);
  83. }
  84. #[Permission('回收设备', 'core:agent:device:recover')]
  85. public function recoverDevice(Request $request): Response
  86. {
  87. $data = $request->post();
  88. $this->validate('deviceAction', $data);
  89. $result = $this->logic->recoverDevices((int) $data['agent_id'], $data['device_sns']);
  90. return $this->success($result, (string) $result['message']);
  91. }
  92. #[Permission('设备分配记录', 'core:agent:device:records')]
  93. public function deviceRecords(Request $request): Response
  94. {
  95. $agentId = (int) $request->input('agent_id', 0);
  96. return $this->success($this->logic->assignmentRecords($agentId, $request->more([
  97. ['action_type', ''], ['goods_type', ''], ['device_sn', ''],
  98. ])));
  99. }
  100. private function agentFilters(Request $request): array
  101. {
  102. return $request->more([
  103. ['agent_type', ''], ['sort', 'default'], ['name', ''], ['phone', ''], ['status', ''],
  104. ]);
  105. }
  106. }