AddressController.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. namespace app\controller;
  3. use Illuminate\Support\Arr;
  4. use Respect\Validation\Validator;
  5. use support\Db;
  6. use support\Request;
  7. use hg\apidoc\annotation as Apidoc;
  8. #[Apidoc\Title("地址管理")]
  9. #[Apidoc\Group("address")]
  10. #[Apidoc\Sort(2)]
  11. class AddressController
  12. {
  13. #[Apidoc\Title("地址列表")]
  14. #[Apidoc\Url("api/address.html")]
  15. #[Apidoc\Method("POST")]
  16. #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  17. #[Apidoc\Returned(name: "name", type: "int", require: true, desc: '收货人', default: '')]
  18. #[Apidoc\Returned(name: "mobile", type: "int", require: true, desc: '手机号', default: '')]
  19. #[Apidoc\Returned(name: "address", type: "int", require: true, desc: '收货地址', default: '')]
  20. public function index(Request $request)
  21. {
  22. $data = Db::table('wa_address')->where('user_id', $request->user_data['id'])->orderByDesc('id')->get();
  23. return success($data);
  24. }
  25. #[Apidoc\Title("新增和更新地址")]
  26. #[Apidoc\Url("api/address/add.html")]
  27. #[Apidoc\Method("POST")]
  28. #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  29. #[Apidoc\Param("id", type: "int", require: true, desc: "地址ID 没有ID为新增 有ID为更新", mock: 1)]
  30. #[Apidoc\Param(name: "name", type: "int", require: true, desc: '收货人', default: '')]
  31. #[Apidoc\Param(name: "mobile", type: "int", require: true, desc: '手机号', default: '')]
  32. #[Apidoc\Param(name: "address", type: "int", require: true, desc: '收货地址', default: '')]
  33. public function add(Request $request)
  34. {
  35. $param = $request->param_data;
  36. Db::beginTransaction();
  37. try {
  38. Validator::input($param, [
  39. 'name' => Validator::notEmpty()->setName('收货人'),
  40. 'mobile' => Validator::notEmpty()->setName('手机号'),
  41. 'address' => Validator::notEmpty()->setName('收货地址'),
  42. ]);
  43. if (empty(Arr::get($param, 'id', ''))) {
  44. Db::table('wa_address')->insert(
  45. [
  46. 'user_id' => $request->user_data['id'],
  47. 'name' => Arr::get($param, 'name', ''),
  48. 'mobile' => Arr::get($param, 'mobile', ''),
  49. 'address' => Arr::get($param, 'address', ''),
  50. ]
  51. );
  52. } else {
  53. $has = Db::table('wa_address')->where('id', $param['id'])->where('user_id', $request->user_data['id'])->first();
  54. if (empty($has)) {
  55. throw new \Exception('非法操作');
  56. }
  57. Db::table('wa_address')->where('id', $param['id'])->where('user_id', $request->user_data['id'])->update([
  58. 'name' => Arr::get($param, 'name', ''),
  59. 'mobile' => Arr::get($param, 'mobile', ''),
  60. 'address' => Arr::get($param, 'address', ''),
  61. ]);
  62. }
  63. } catch (\Throwable $exception) {
  64. Db::rollBack();
  65. return error($exception->getMessage());
  66. }
  67. Db::commit();
  68. return success([], '操作成功');
  69. }
  70. #[Apidoc\Title("删除")]
  71. #[Apidoc\Url("api/address/del.html")]
  72. #[Apidoc\Method("POST")]
  73. #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  74. #[Apidoc\Param("id", type: "int", require: true, desc: "地址ID", mock: 1)]
  75. public function del(Request $request)
  76. {
  77. $param = $request->param_data;
  78. Db::beginTransaction();
  79. try {
  80. Validator::input($param, [
  81. 'id' => Validator::notEmpty()->setName('地址标识'),
  82. ]);
  83. $has = Db::table('wa_address')->where('id', $param['id'])->where('user_id', $request->user_data['id'])->first();
  84. if (empty($has)) {
  85. throw new \Exception('非法操作');
  86. }
  87. Db::table('wa_address')->where('id', $param['id'])->where('user_id', $request->user_data['id'])->delete();
  88. } catch (\Throwable $exception) {
  89. Db::rollBack();
  90. return error($exception->getMessage());
  91. }
  92. Db::commit();
  93. return success([], '操作成功');
  94. }
  95. }