AddressService.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. /**
  3. * @Name
  4. * @Description
  5. * @Author 刘学玺
  6. * @Date 2024/9/27 12:05
  7. */
  8. namespace App\Http\Services\Frontend\Client\Member;
  9. use App\Exceptions\ApiException;
  10. use App\Http\Requests\Request;
  11. use App\Http\Services\Frontend\Client\Common\AuthService;
  12. use App\Http\Services\Service;
  13. use App\Models\Member\Address;
  14. use App\Models\Member\User;
  15. use Illuminate\Support\Facades\Auth;
  16. use Illuminate\Support\Facades\DB;
  17. class AddressService extends Service
  18. {
  19. protected array $select_column = ['id', 'user_name', 'mobile', 'address', 'address_info', 'city_code', 'adcode', 'lat', 'lng', 'status'];
  20. public function getAddressList()
  21. {
  22. $id = Auth::id();
  23. return Address::query()->where('user_id', $id)->select($this->select_column)->get();
  24. }
  25. /**
  26. * @throws ApiException
  27. */
  28. public function createAddress(array $params)
  29. {
  30. $user_id = Auth::id();
  31. $params['user_id'] = $user_id;
  32. DB::beginTransaction();
  33. try {
  34. // 判断状态
  35. if ($params['status']) {
  36. // 更改所有地址状态为0
  37. Address::query()->where('user_id', $user_id)->update(['status' => 0]);
  38. }
  39. $address = self::toModel($params, Address::class);
  40. $admin_id = Address::query()->create($address->getAttributes())->id;
  41. DB::commit();
  42. return $admin_id;
  43. } catch (\Exception) {
  44. DB::rollBack();
  45. self::error('操作失败');
  46. }
  47. }
  48. public function getAddress(int $address_id)
  49. {
  50. $id = Auth::id();
  51. return Address::query()->where('user_id', $id)->select($this->select_column)->find($address_id);
  52. }
  53. /**
  54. * @throws ApiException
  55. */
  56. public function updateAddress(array $data, int $id): void
  57. {
  58. $user_id = Auth::id();
  59. $data['user_id'] = $user_id;
  60. DB::beginTransaction();
  61. try {
  62. // 判断状态
  63. if ($data['status']) {
  64. // 更改所有地址状态为0
  65. Address::query()->where('user_id', $user_id)->update(['status' => 0]);
  66. }
  67. $user = self::toModel(['id' => $id, ...$data], Address::class);
  68. $user->save();
  69. DB::commit();
  70. } catch (\Exception) {
  71. DB::rollBack();
  72. self::error('操作失败');
  73. }
  74. }
  75. public function delAddress($id): void
  76. {
  77. $user_id = Auth::id();
  78. $user = Address::query()->where('user_id', $user_id)->find($id);
  79. $user->delete();
  80. }
  81. public function getDefault()
  82. {
  83. $user_id = Auth::id();
  84. $where = ['user_id' => $user_id, 'status' => 1];
  85. return Address::query()->where($where)->select($this->select_column)->first();
  86. }
  87. public function setDefault(int $id): void
  88. {
  89. $user_id = Auth::id();
  90. // 更改所有地址状态为0
  91. Address::query()->where('user_id', $user_id)->update(['status' => 0]);
  92. $address = self::toModel(['id' => $id,'status' => 1], Address::class);
  93. $address->save();
  94. }
  95. }