Address.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <?php
  2. declare (strict_types=1);
  3. namespace app\api\controller;
  4. use app\BaseController;
  5. use app\model\api\UserAddress;
  6. use app\Request;
  7. use library\services\UtilService;
  8. use think\facade\Db;
  9. class Address extends BaseController
  10. {
  11. /**
  12. * 获取地址列表
  13. * @param Request $request
  14. */
  15. public function list(Request $request)
  16. {
  17. $list = (new UserAddress())->getAddressList($request->user['uid']);
  18. return app('json')->success($list);
  19. }
  20. /**
  21. * 获取地址详情
  22. * @param Request $request
  23. */
  24. public function detail(Request $request)
  25. {
  26. $post = UtilService::getMore([
  27. ['id', '', 'empty', '参数错误'],
  28. ], $request);
  29. $address = Db::name('user_address')
  30. ->where('id', $post['id'])
  31. ->where('uid', $request->user['uid'])
  32. ->find();
  33. if (!$address) {
  34. return app('json')->fail('地址不存在');
  35. }
  36. return app('json')->success($address);
  37. }
  38. /**
  39. * 添加地址
  40. * @param Request $request
  41. */
  42. public function add(Request $request)
  43. {
  44. $post = UtilService::getMore([
  45. ['real_name', '', 'empty', '请输入收货人姓名'],
  46. ['phone', '', 'empty', '请输入联系电话'],
  47. ['province', '', 'empty', '请选择省份'],
  48. ['city', '', 'empty', '请选择城市'],
  49. ['district', '', 'empty', '请选择区县'],
  50. ['detail', '', 'empty', '请输入详细地址'],
  51. ['is_default', 0],
  52. ], $request);
  53. // 验证手机号
  54. if (!preg_match('/^1[3-9]\d{9}$/', $post['phone'])) {
  55. return app('json')->fail('手机号格式不正确');
  56. }
  57. $data = [
  58. 'uid' => $request->user['uid'],
  59. 'real_name' => $post['real_name'],
  60. 'phone' => $post['phone'],
  61. 'province' => $post['province'],
  62. 'city' => $post['city'],
  63. 'district' => $post['district'],
  64. 'detail' => $post['detail'],
  65. 'is_default' => $post['is_default'] == 1 ? 1 : 0,
  66. 'time' => time(),
  67. ];
  68. // 如果设置为默认地址,先取消其他默认地址
  69. if ($data['is_default'] == 1) {
  70. Db::name('user_address')->where('uid', $request->user['uid'])->update(['is_default' => 0]);
  71. }
  72. $id = Db::name('user_address')->insertGetId($data);
  73. if ($id) {
  74. return app('json')->success('添加成功');
  75. } else {
  76. return app('json')->fail('添加失败');
  77. }
  78. }
  79. /**
  80. * 编辑地址
  81. * @param Request $request
  82. */
  83. public function edit(Request $request)
  84. {
  85. $post = UtilService::getMore([
  86. ['id', '', 'empty', '参数错误'],
  87. ['real_name', '', 'empty', '请输入收货人姓名'],
  88. ['phone', '', 'empty', '请输入联系电话'],
  89. ['province', '', 'empty', '请选择省份'],
  90. ['city', '', 'empty', '请选择城市'],
  91. ['district', '', 'empty', '请选择区县'],
  92. ['detail', '', 'empty', '请输入详细地址'],
  93. ['is_default', 0],
  94. ], $request);
  95. // 验证手机号
  96. if (!preg_match('/^1[3-9]\d{9}$/', $post['phone'])) {
  97. return app('json')->fail('手机号格式不正确');
  98. }
  99. $data = [
  100. 'real_name' => $post['real_name'],
  101. 'phone' => $post['phone'],
  102. 'province' => $post['province'],
  103. 'city' => $post['city'],
  104. 'district' => $post['district'],
  105. 'detail' => $post['detail'],
  106. 'is_default' => $post['is_default'] == 1 ? 1 : 0,
  107. ];
  108. // 如果设置为默认地址,先取消其他默认地址
  109. if ($data['is_default'] == 1) {
  110. Db::name('user_address')->where('uid', $request->user['uid'])->update(['is_default' => 0]);
  111. }
  112. $result = Db::name('user_address')
  113. ->where('id', $post['id'])
  114. ->where('uid', $request->user['uid'])
  115. ->update($data);
  116. if ($result) {
  117. return app('json')->success('修改成功');
  118. } else {
  119. return app('json')->fail('修改失败');
  120. }
  121. }
  122. /**
  123. * 删除地址
  124. * @param Request $request
  125. */
  126. public function delete(Request $request)
  127. {
  128. $post = UtilService::getMore([
  129. ['id', '', 'empty', '参数错误'],
  130. ], $request);
  131. $result = Db::name('user_address')
  132. ->where('id', $post['id'])
  133. ->where('uid', $request->user['uid'])
  134. ->delete();
  135. if ($result) {
  136. return app('json')->success('删除成功');
  137. } else {
  138. return app('json')->fail('删除失败');
  139. }
  140. }
  141. /**
  142. * 设置默认地址
  143. * @param Request $request
  144. */
  145. public function setDefault(Request $request)
  146. {
  147. $post = UtilService::getMore([
  148. ['id', '', 'empty', '参数错误'],
  149. ], $request);
  150. $result = (new UserAddress())->setDefault($post['id'], $request->user['uid']);
  151. if ($result) {
  152. return app('json')->success('设置成功');
  153. } else {
  154. return app('json')->fail('设置失败');
  155. }
  156. }
  157. }