UserAddressController.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. <?php
  2. namespace App\Http\Controllers\Client;
  3. use App\Http\Controllers\Controller;
  4. use App\Services\Client\UserAddressService;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\Auth;
  7. /**
  8. * @group 用户端
  9. *
  10. * 用户地址相关的API接口
  11. */
  12. class UserAddressController extends Controller
  13. {
  14. protected $userAddressService;
  15. public function __construct(UserAddressService $userAddressService)
  16. {
  17. $this->userAddressService = $userAddressService;
  18. }
  19. /**
  20. * [地址管理]获取默认地址
  21. *
  22. *
  23. * @description 根据用户编号查询用户数据,用户状态为正常,查询用户地址列表,返回用户默认地址
  24. *
  25. * @response {
  26. * "code": 200,
  27. * "message": "success",
  28. * "data": {
  29. * "id": 1,
  30. * "user_id": 1,
  31. * "name": "张三",
  32. * "phone": "13800138000",
  33. * "province": "广东省",
  34. * "city": "深圳市",
  35. * "district": "南山区",
  36. * "address": "科技园",
  37. * "is_default": 1,
  38. * "created_at": "2024-01-01 00:00:00",
  39. * "updated_at": "2024-01-01 00:00:00"
  40. * }
  41. * }
  42. */
  43. public function getDefault()
  44. {
  45. return $this->userAddressService->getDefault(Auth::user()->id);
  46. }
  47. /**
  48. * [地址管理]添加地址
  49. *
  50. * @description 根据用户编号查询用户数据,用户状态为正常,保存用户地址,如果用户只有一个地址则设置为默认地址
  51. *
  52. * @bodyParam phone string required 手机号 Example: 13800138000
  53. * @bodyParam province string required 省份 Example: 广东省
  54. * @bodyParam city string required 城市 Example: 深圳市
  55. * @bodyParam district string required 区县 Example: 南山区
  56. * @bodyParam longitude string required 经度 Example: 113.93041
  57. * @bodyParam latitude string required 纬度 Example: 22.53332
  58. * @bodyParam area_code string required 区划代码 Example: 440305
  59. * @bodyParam is_default number required 是否默认地址 Example: 1
  60. * @bodyParam location string required 定位地址 Example: 科技园
  61. * @bodyParam detail string required 详细地址 Example: 科技园南区
  62. *
  63. * @response {"code": 200,"message": "添加成功"}
  64. */
  65. public function store(Request $request)
  66. {
  67. $data = $request->only(['phone', 'province', 'city', 'district', 'longitude', 'latitude', 'area_code', 'is_default', 'location', 'detail']);
  68. return $this->userAddressService->store(Auth::user()->id, $data);
  69. }
  70. /**
  71. * [地址管理]修改地址
  72. *
  73. * @description 根据用户编号查询用户数据,用户状态为正常,根据地址编号查询地址数据,修改地址信息
  74. *
  75. * @urlParam id integer required 地址ID Example: 1
  76. *
  77. * @bodyParam phone string required 手机号 Example: 13800138000
  78. * @bodyParam province string required 省份 Example: 广东省
  79. * @bodyParam city string required 城市 Example: 深圳市
  80. * @bodyParam district string required 区县 Example: 南山区
  81. * @bodyParam longitude string required 经度 Example: 113.93041
  82. * @bodyParam latitude string required 纬度 Example: 22.53332
  83. * @bodyParam area_code string required 区划代码 Example: 440305
  84. * @bodyParam is_default number required 是否默认地址 Example: 1
  85. * @bodyParam location string required 定位地址 Example: 科技园
  86. * @bodyParam detail string required 详细地址 Example: 科技园南区
  87. *
  88. * @response {"code": 200,"message": "修改成功"}
  89. */
  90. public function update(Request $request, $id)
  91. {
  92. $data = $request->only(['phone', 'province', 'city', 'district', 'longitude', 'latitude', 'area_code', 'is_default', 'location', 'detail']);
  93. return $this->userAddressService->update(Auth::user()->id, $id, $data);
  94. }
  95. /**
  96. * [地址管理]删除地址
  97. *
  98. * @description 根据用户编号查询用户数据,用户状态为正常,根据地址编号查询地址数据,删除地址
  99. *
  100. * @urlParam id integer required 地址ID Example: 1
  101. *
  102. * @response {"code": 200,"message": "删除成功"}
  103. */
  104. public function destroy($id)
  105. {
  106. return $this->userAddressService->destroy(Auth::user()->id, $id);
  107. }
  108. /**
  109. * [地址管理]设置默认地址
  110. *
  111. * @description 根据用户编号查询用户数据,用户状态为正常,根据地址编号查询地址数据,设置为默认地址
  112. *
  113. * @urlParam id integer required 地址ID Example: 1
  114. *
  115. * @response {"code": 200,"message": "设置成功"}
  116. */
  117. public function setDefault($id)
  118. {
  119. return $this->userAddressService->setDefault(Auth::user()->id, $id);
  120. }
  121. /**
  122. * [地址管理]地址列表
  123. *
  124. * @description 获取用户的地址列表
  125. *
  126. * @queryParam page int 页码. Example: 1
  127. * @queryParam per_page int 每页数量. Example: 15
  128. *
  129. * @response {
  130. * "code": 200,
  131. * "message": "success",
  132. * "data": {
  133. * "items": [
  134. * {
  135. * "id": 1,
  136. * "user_id": 1,
  137. * "name": "张三",
  138. * "phone": "13800138000",
  139. * "province": "广东省",
  140. * "city": "深圳市",
  141. * "district": "南山区",
  142. * "address": "科技园",
  143. * "is_default": 1,
  144. * "created_at": "2024-03-20 10:00:00",
  145. * "updated_at": "2024-03-20 10:00:00"
  146. * }
  147. * ],
  148. * "total": 1
  149. * }
  150. * }
  151. */
  152. public function list()
  153. {
  154. $perPage = request('per_page', 15);
  155. return $this->userAddressService->list(Auth::user()->id, $perPage);
  156. }
  157. }