EnterpriseController.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. declare(strict_types=1);
  3. namespace app\miniapi\controller;
  4. use support\Request;
  5. use support\Response;
  6. use support\annotation\route\DisableDefaultRoute;
  7. use app\miniapi\http\Input;
  8. use app\miniapi\http\Fields;
  9. use app\miniapi\exception\ApiException;
  10. use app\miniapi\service\EnterpriseQuery;
  11. use app\miniapi\service\EnterpriseCommands;
  12. #[DisableDefaultRoute]
  13. final class EnterpriseController extends BaseController
  14. {
  15. public function me(Request $request): Response
  16. {
  17. $enterprise = $request->get('enterprise_id') === null ? null : Fields::id($request->get(), 'enterprise_id');
  18. $service = new EnterpriseQuery($this->access($request));
  19. return $this->success($request, $service->profile($enterprise));
  20. }
  21. public function addresses(Request $request): Response
  22. {
  23. return $this->success($request, (new EnterpriseQuery($this->access($request)))->addresses());
  24. }
  25. public function enterprise(Request $request, string $enterprise, string $section): Response
  26. {
  27. $service = new EnterpriseQuery($this->access($request));
  28. $id = $this->id($enterprise);
  29. $data = match($section) {
  30. 'home' => $service->home($id),
  31. 'rights' => $service->rights($id),
  32. 'ledger' => $service->ledger($id, $request->get()),
  33. 'orders' => $service->orders($id, $request->get()),
  34. 'devices' => $service->devices($id, $request->get()),
  35. 'rewards' => $service->rewards($id, $request->get()),
  36. default => throw new ApiException(40401, '接口不存在', 404)
  37. };
  38. return $this->success($request, $data);
  39. }
  40. public function device(Request $request, string $enterprise, string $id): Response
  41. {
  42. return $this->success($request, (new EnterpriseQuery($this->access($request)))->deviceDetail($this->id($enterprise), $this->id($id)));
  43. }
  44. public function tracking(Request $request, string $enterprise, string $id): Response
  45. {
  46. return $this->success($request, (new EnterpriseQuery($this->access($request)))->tracking($this->id($enterprise), $this->id($id)));
  47. }
  48. public function address(Request $request, string $enterprise): Response
  49. {
  50. return $this->success($request, (new EnterpriseCommands($this->access($request)))->address($this->id($enterprise), Input::json($request)));
  51. }
  52. public function addressDetail(Request $request, string $enterprise): Response
  53. {
  54. return $this->success($request, (new EnterpriseQuery($this->access($request)))->addressDetail($this->id($enterprise)));
  55. }
  56. public function addressSiteDetail(Request $request, string $enterprise, string $address): Response
  57. {
  58. return $this->success($request, (new EnterpriseQuery($this->access($request)))->addressDetailById(
  59. $this->id($enterprise),
  60. $this->id($address),
  61. ));
  62. }
  63. public function createAddress(Request $request, string $enterprise): Response
  64. {
  65. return $this->success($request, (new EnterpriseCommands($this->access($request)))->createAddress(
  66. $this->id($enterprise),
  67. Input::json($request),
  68. ));
  69. }
  70. public function updateAddress(Request $request, string $enterprise, string $address): Response
  71. {
  72. return $this->success($request, (new EnterpriseCommands($this->access($request)))->updateAddress(
  73. $this->id($enterprise),
  74. $this->id($address),
  75. Input::json($request),
  76. ));
  77. }
  78. public function book(Request $request, string $enterprise): Response
  79. {
  80. return $this->success($request, (new EnterpriseCommands($this->access($request)))->book($this->id($enterprise), Input::json($request)));
  81. }
  82. public function cancelDelivery(Request $request, string $enterprise, string $id): Response
  83. {
  84. return $this->success($request, (new EnterpriseCommands($this->access($request)))->cancel($this->id($enterprise), $this->id($id), Input::json($request)));
  85. }
  86. }