DeviceController.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | saiadmin [ saiadmin快速开发框架 ]
  4. // +----------------------------------------------------------------------
  5. namespace plugin\saiadmin\app\controller\device;
  6. use plugin\saiadmin\app\logic\device\DeviceLogic;
  7. use plugin\saiadmin\basic\BaseController;
  8. use plugin\saiadmin\service\Permission;
  9. use support\Request;
  10. use support\Response;
  11. /**
  12. * 我的设备控制器。
  13. */
  14. class DeviceController extends BaseController
  15. {
  16. public function __construct()
  17. {
  18. $this->logic = new DeviceLogic();
  19. parent::__construct();
  20. }
  21. #[Permission('我的设备列表', 'core:device:index')]
  22. public function index(Request $request): Response
  23. {
  24. return $this->success($this->logic->indexList($this->filters($request)));
  25. }
  26. #[Permission('下级设备列表', 'core:device:subordinate:index')]
  27. public function subordinateIndex(Request $request): Response
  28. {
  29. return $this->success($this->logic->subordinateIndexList($this->filters($request)));
  30. }
  31. #[Permission('导出我的设备', 'core:device:export')]
  32. public function export(Request $request): Response
  33. {
  34. return $this->logic->export($this->filters($request));
  35. }
  36. #[Permission('设备管理详情', 'core:device:read')]
  37. public function read(Request $request): Response
  38. {
  39. return $this->success($this->logic->readDevice((int) $request->input('id', 0)));
  40. }
  41. #[Permission('下级设备归属详情', 'core:device:subordinate:read')]
  42. public function subordinateRead(Request $request): Response
  43. {
  44. return $this->success($this->logic->readDevice((int) $request->input('id', 0), true));
  45. }
  46. #[Permission('设备供电/断电', 'core:device:power')]
  47. public function power(Request $request): Response
  48. {
  49. $data = $request->post();
  50. $action = trim((string) ($data['action'] ?? ''));
  51. if (!in_array($action, ['on', 'off'], true)) {
  52. return $this->fail('请选择设备供电或设备断电操作');
  53. }
  54. return $this->success(
  55. $this->logic->switchPower((int) ($data['id'] ?? 0), $action),
  56. $action === 'on' ? '设备供电指令已下发' : '设备断电指令已下发'
  57. );
  58. }
  59. #[Permission('下级设备供电/断电', 'core:device:subordinate:power')]
  60. public function subordinatePower(Request $request): Response
  61. {
  62. $data = $request->post();
  63. $action = trim((string) ($data['action'] ?? ''));
  64. if (!in_array($action, ['on', 'off'], true)) {
  65. return $this->fail('请选择设备供电或设备断电操作');
  66. }
  67. return $this->success(
  68. $this->logic->switchPower((int) ($data['id'] ?? 0), $action, true),
  69. $action === 'on' ? '设备供电指令已下发' : '设备断电指令已下发'
  70. );
  71. }
  72. #[Permission('从设备页解绑商户', 'core:device:unbind')]
  73. public function unbind(Request $request): Response
  74. {
  75. $this->logic->unbindDevice((int) $request->post('id', 0));
  76. return $this->success([], '设备解绑成功');
  77. }
  78. #[Permission('下级设备解绑商户', 'core:device:subordinate:unbind')]
  79. public function subordinateUnbind(Request $request): Response
  80. {
  81. $this->logic->unbindDevice((int) $request->post('id', 0), true);
  82. return $this->success([], '设备解绑成功');
  83. }
  84. private function filters(Request $request): array
  85. {
  86. return $request->more([
  87. ['category', 'all'],
  88. ['device_state', ''],
  89. ['merchant', ''],
  90. ['qr_code', ''],
  91. ['device_sn', ''],
  92. ['goods_type', ''],
  93. ['signal', ''],
  94. ]);
  95. }
  96. }