UserAddressController.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. <?php
  2. namespace App\Http\Controllers\Api\Dwbs;
  3. use App\Http\Controllers\Controller;
  4. use App\Services\Dwbs\UserAddressService;
  5. use App\Support\Sdk\Address\Address;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Facades\Crypt;
  8. /**
  9. * 用户收件人地址管理
  10. */
  11. class UserAddressController extends Controller
  12. {
  13. /**
  14. * @var UserAddressService
  15. */
  16. private $service;
  17. /**
  18. * UserAddressController constructor.
  19. *
  20. * @param UserAddressService $userAddressService
  21. */
  22. public function __construct(UserAddressService $service)
  23. {
  24. parent::__construct();
  25. // $this->middleware('checkUserPermission');
  26. $this->service = $service;
  27. }
  28. /**
  29. * 列表
  30. * @param Request $request
  31. *
  32. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  33. * @throws \Prettus\Repository\Exceptions\RepositoryException
  34. */
  35. public function index(Request $request)
  36. {
  37. $this->validateData($request, ['user_id' => 'required|integer']);
  38. $lists = $this->service->handleList($request);
  39. return $this->response->success($lists);
  40. }
  41. /**
  42. * 新增
  43. * @param Request $request
  44. *
  45. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  46. * @throws \Prettus\Validator\Exceptions\ValidatorException
  47. */
  48. public function store(Request $request)
  49. {
  50. $data = $this->validateData($request, [
  51. 'is_default' => 'required|integer',
  52. 'province' => 'required|string',
  53. 'city' => 'required|string',
  54. 'area' => 'required|string',
  55. 'address' => 'required|string',
  56. 'name' => 'required|string',
  57. 'mobile' => 'required',
  58. 'mobile_code' => 'required',
  59. ], [
  60. 'is_default' => '是否为默认',
  61. 'province' => '省',
  62. 'city' => '市',
  63. 'area' => '县',
  64. 'address' => '详细地址',
  65. 'name' => '收件人姓名',
  66. 'mobile' => '收件人电话',
  67. 'mobile_code' => '收件人电话-区码',
  68. ]);
  69. $area_code = $request->get('mobile_code', '+86');
  70. switch ($area_code) {
  71. case "+886":
  72. //中国台湾
  73. $this->validateData($request, [
  74. 'mobile' => 'required|mobile_TW',
  75. ], ['mobile' => '手机号']);
  76. break;
  77. case "+853":
  78. //中国澳门
  79. $this->validateData($request, [
  80. 'mobile' => 'required|mobile_OM',
  81. ], ['mobile' => '手机号']);
  82. break;
  83. case "+852":
  84. //中国香港
  85. $this->validateData($request, [
  86. 'mobile' => 'required|mobile_XG',
  87. ], ['mobile' => '手机号']);
  88. break;
  89. case '+86':
  90. default:
  91. //大陆
  92. $this->validateData($request, [
  93. 'mobile' => 'required|mobile',
  94. ], ['mobile' => '手机号']);
  95. $data['mobile_code'] = '+86';
  96. break;
  97. }
  98. $data['user_id'] = login_user_id();
  99. $model = $this->service->handleStore($data);
  100. return $this->response->created($model, '创建成功');
  101. }
  102. /**
  103. * 详情
  104. * @param Request $request
  105. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  106. */
  107. public function show(Request $request)
  108. {
  109. $this->validate($request, ['id' => 'required|integer']);
  110. $model = $this->service->handleProfile($request->get('id'));
  111. return $this->response->success($model);
  112. }
  113. /**
  114. * 更新
  115. * @param Request $request
  116. *
  117. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  118. * @throws \Prettus\Validator\Exceptions\ValidatorException
  119. */
  120. public function update(Request $request)
  121. {
  122. $data = $this->validateData($request, [
  123. 'id' => 'required|integer',
  124. 'is_default' => 'required|integer',
  125. 'province' => 'required|string',
  126. 'city' => 'required|string',
  127. 'area' => 'required|string',
  128. 'address' => 'required|string',
  129. 'name' => 'required|string',
  130. 'mobile' => 'required',
  131. 'mobile_code' => 'required',
  132. ], [
  133. 'is_default' => '是否为默认',
  134. 'province' => '省',
  135. 'city' => '市',
  136. 'area' => '县',
  137. 'address' => '详细地址',
  138. 'name' => '收件人姓名',
  139. 'mobile' => '收件人电话',
  140. 'mobile_code' => '收件人电话-区码',
  141. ]);
  142. if (array_key_exists('mobile', $data) && strpos($data['mobile'], '*') === false) {
  143. $area_code = $request->get('mobile_code', '+86');
  144. switch ($area_code) {
  145. case "+886":
  146. //中国台湾
  147. $this->validateData($request, [
  148. 'mobile' => 'required|mobile_TW',
  149. ], ['mobile' => '手机号']);
  150. break;
  151. case "+853":
  152. //中国澳门
  153. $this->validateData($request, [
  154. 'mobile' => 'required|mobile_OM',
  155. ], ['mobile' => '手机号']);
  156. break;
  157. case "+852":
  158. //中国香港
  159. $this->validateData($request, [
  160. 'mobile' => 'required|mobile_XG',
  161. ], ['mobile' => '手机号']);
  162. break;
  163. case '+86':
  164. default:
  165. //大陆
  166. $this->validateData($request, [
  167. 'mobile' => 'required|mobile',
  168. ], ['mobile' => '手机号']);
  169. $data['mobile_code'] = '+86';
  170. break;
  171. }
  172. $data['mobile_encryption'] = Crypt::encryptString($data['mobile']);
  173. $data['mobile'] = mobile_hidden($data['mobile']);
  174. }
  175. $model = $this->service->handleUpdate($data);
  176. return $this->response->success($model, '更新成功');
  177. }
  178. /**
  179. * 更新
  180. * @param Request $request
  181. *
  182. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  183. * @throws \Prettus\Validator\Exceptions\ValidatorException
  184. */
  185. public function updateIsDefault(Request $request)
  186. {
  187. $data = $this->validateData($request, [
  188. 'id' => 'required|integer',
  189. 'is_default' => 'required|integer',
  190. ], [
  191. 'is_default' => '是否为默认',
  192. ]);
  193. $model = $this->service->handleUpdate($data);
  194. return $this->response->success($model, '更新成功');
  195. }
  196. /**
  197. * 删除
  198. * @param Request $request
  199. */
  200. public function destroy(Request $request)
  201. {
  202. $this->validate($request, ['id' => 'required|integer']);
  203. $re = $this->service->handleDelete($request->get('id'));
  204. if ($re) {
  205. return $this->response->ok('删除成功');
  206. }
  207. return $this->response->fail('删除失败');
  208. }
  209. /**
  210. * 批量删除
  211. * @param Request $request
  212. */
  213. public function batchDelete(Request $request)
  214. {
  215. $ids = $this->validateData($request, ['ids' => 'required|array']);
  216. $re = $this->service->handleBatchDelete($ids);
  217. if ($re) {
  218. return $this->response->ok('删除成功');
  219. }
  220. return $this->response->fail('删除失败');
  221. }
  222. /**
  223. * 选项
  224. * @must
  225. * @param Request $request
  226. */
  227. public function selectOptions(Request $request)
  228. {
  229. $lists = $this->service->handleSelectOptions($request);
  230. return $this->response->success($lists);
  231. }
  232. /**
  233. * 地址解析
  234. * @param Request $request
  235. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  236. * @throws \Illuminate\Validation\ValidationException
  237. */
  238. public function analysis(Request $request)
  239. {
  240. $this->validateData($request, ['body' => 'required|string'], ['body' => '地址']);
  241. $body = $request->get('body');
  242. $re = Address::encode($body);
  243. return $this->response->success($re);
  244. }
  245. /**
  246. * 获取默认地址
  247. * @param Request $request
  248. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  249. */
  250. public function meDefault(Request $request)
  251. {
  252. $data = $this->service->handleMeDefaule(login_user_id());
  253. return $this->response->success($data);
  254. }
  255. }