فهرست منبع

feat:用户端-地址列表

刘学玺 4 ماه پیش
والد
کامیت
747f56688f
3فایلهای تغییر یافته به همراه76 افزوده شده و 0 حذف شده
  1. 38 0
      app/Http/Controllers/Client/UserAddressController.php
  2. 36 0
      app/Services/Client/UserAddressService.php
  3. 2 0
      routes/api.php

+ 38 - 0
app/Http/Controllers/Client/UserAddressController.php

@@ -129,4 +129,42 @@ class UserAddressController extends Controller
     {
         return $this->userAddressService->setDefault(Auth::user()->id, $id);
     }
+
+    /**
+     * [地址管理]地址列表
+     *
+     * @description 获取用户的地址列表
+     *
+     * @queryParam page int 页码. Example: 1
+     * @queryParam per_page int 每页数量. Example: 15
+     *
+     * @response {
+     *  "code": 200,
+     *  "message": "success",
+     *  "data": {
+     *    "items": [
+     *      {
+     *        "id": 1,
+     *        "user_id": 1,
+     *        "name": "张三",
+     *        "phone": "13800138000",
+     *        "province": "广东省",
+     *        "city": "深圳市",
+     *        "district": "南山区",
+     *        "address": "科技园",
+     *        "is_default": 1,
+     *        "created_at": "2024-03-20 10:00:00",
+     *        "updated_at": "2024-03-20 10:00:00"
+     *      }
+     *    ],
+     *    "total": 1
+     *  }
+     * }
+     */
+    public function list()
+    {
+        $perPage = request('per_page', 15);
+
+        return $this->userAddressService->list(Auth::user()->id, $perPage);
+    }
 }

+ 36 - 0
app/Services/Client/UserAddressService.php

@@ -203,4 +203,40 @@ class UserAddressService
             return ['code' => 500, 'message' => '设置默认地址失败'];
         }
     }
+
+    /**
+     * 获取地址列表
+     */
+    public function list($userId, $perPage = 15)
+    {
+        try {
+            // 根据用户编号查询用户数据
+            $user = MemberUser::findOrFail($userId);
+            if ($user->state != UserStatus::OPEN->value) {
+                return ['code' => 400, 'message' => '用户状态异常'];
+            }
+
+            // 查询用户地址列表并分页
+            $addresses = $user->addresses()
+                ->orderBy('is_default', 'desc')
+                ->orderBy('id', 'desc')
+                ->paginate($perPage);
+
+            return [
+                'code' => 200,
+                'message' => 'success',
+                'data' => [
+                    'items' => $addresses->items(),
+                    'total' => $addresses->total(),
+                ],
+            ];
+        } catch (\Exception $e) {
+            Log::error('获取地址列表失败', [
+                'user_id' => $userId,
+                'error' => $e->getMessage(),
+            ]);
+
+            return ['code' => 500, 'message' => '获取地址列表失败'];
+        }
+    }
 }

+ 2 - 0
routes/api.php

@@ -88,10 +88,12 @@ Route::prefix('client')->group(function () {
         // 用户地址相关
         Route::prefix('address')->group(function () {
             Route::get('default', [UserAddressController::class, 'getDefault']);
+            Route::get('/', [UserAddressController::class, 'list']);
             Route::post('/', [UserAddressController::class, 'store']);
             Route::put('/{id}', [UserAddressController::class, 'update']);
             Route::delete('/{id}', [UserAddressController::class, 'destroy']);
             Route::put('/{id}/default', [UserAddressController::class, 'setDefault']);
+
         });
 
         // 订单相关