刘学玺 4 месяцев назад
Родитель
Сommit
4a2a8d70dd
2 измененных файлов с 28 добавлено и 31 удалено
  1. 13 6
      app/Admin/Controllers/MemberUserController.php
  2. 15 25
      app/Services/MemberUserService.php

+ 13 - 6
app/Admin/Controllers/MemberUserController.php

@@ -110,12 +110,14 @@ class MemberUserController extends AdminController
      *
      * @description 获取用户列表,支持条件查询和分页
      *
-     * @queryParam nickname string 用户昵称 Example:
-     * @queryParam mobile string 手机号 Example:
-     * @queryParam state int 用户状态(1:正常,2:禁用) Example:
-     * @queryParam area_code string 注册地区 Example:
+     * @queryParam nickname string 昵称 Example: 张三
+     * @queryParam mobile string 手机号 Example: 13800138000
+     * @queryParam state int 用户状态(1:正常,2:禁用) Example: 1
+     * @queryParam viewName string 视图名称 Example: manage_user_list
      * @queryParam page int 页码 Example: 1
-     * @queryParam per_page int 每页数量 Example: 20
+     * @queryParam perPage int 每页数量 Example: 20
+     * @queryParam orderBy string 排序字段 Example: mobile
+     * @queryParam orderDir string 排序方向 Example: desc
      *
      * @response {
      *  "code": 200,
@@ -139,6 +141,11 @@ class MemberUserController extends AdminController
      */
     public function manageUserList()
     {
-        return $this->service->manageUserList();
+        $viewName = request()->input('viewName');
+        $whereParams = request()->except(['_action', 'page', 'perPage', 'viewName', 'orderBy', 'orderDir']);
+        $pageParams = request()->only(['page', 'perPage']);
+        $sortParams = request()->only(['orderBy', 'orderDir']);
+
+        return $this->service->manageUserList($viewName, $whereParams, $pageParams, $sortParams);
     }
 }

+ 15 - 25
app/Services/MemberUserService.php

@@ -19,38 +19,28 @@ class MemberUserService extends AdminService
 
     /**
      * 获取用户列表
+     *
+     * @param  array  $params  查询参数
      */
-    public function manageUserList()
+    public function manageUserList($viewName, array $whereParams, array $pageParams, array $sortParams = [])
     {
         try {
-            $query = DB::table('manage_user_list');
+            $query = DB::table($viewName);
 
-            // 昵称搜索
-            if ($nickname = request('nickname')) {
-                $query->where('nickname', 'like', "%{$nickname}%");
-            }
-
-            // 手机号搜索
-            if ($mobile = request('mobile')) {
-                $query->where('mobile', 'like', "%{$mobile}%");
-            }
-
-            // 状态筛选
-            if (request()->has('state')) {
-                $query->where('state', request('state'));
-            }
-
-            // 地区筛选
-            if ($register_area = request('area_code')) {
-                $query->where('area_code', $register_area);
+            // 获取分页数据
+            // 条件筛选
+            foreach ($whereParams as $key => $value) {
+                if (is_string($value)) {
+                    $query->where($key, 'like', "%{$value}%");
+                } else {
+                    $query->where($key, $value);
+                }
             }
 
-            // 获取分页数据
-            $perPage = request('per_page', 20);
-            $page = request('page', 1);
+            // 排序
+            ! empty($sortParams) && $query->orderBy($sortParams['orderBy'], $sortParams['orderDir']);
 
-            $result = $query->orderBy('user_id', 'desc')
-                ->paginate($perPage);
+            $result = $query->paginate($pageParams['perPage'], ['*'], 'page', $pageParams['page']);
 
             return response()->json([
                 'code' => 200,