wesmiler 2 месяцев назад
Родитель
Сommit
c03561e43a
1 измененных файлов с 50 добавлено и 65 удалено
  1. 50 65
      app/Services/Common/MemberService.php

+ 50 - 65
app/Services/Common/MemberService.php

@@ -55,83 +55,68 @@ class MemberService extends BaseService
     public function getList()
     {
         $params = request()->all();
-
-        $page = $params['page'] ?? 1;
-        $limit = $params['limit'] ?? 20;
-        $status = $params['status'] ?? '';
-        $keyword = $params['keyword'] ?? '';
-        $mobile = $params['mobile'] ?? '';
-        $parent = $params['parent'] ?? '';
-        $userType = $params['user_type'] ?? 1;
-        $parentId = $params['parent_id'] ?? '';
-
-        $query = $this->model->with(['parent','account'])->from('member as a')
-            ->leftJoin('member as b','b.id','=','a.parent_id')
-            ->where('a.mark', 1);
-
-        // 状态筛选
-        if ($status !== '' && $status != 0) {
-            $query->where('a.status', $status);
+        $pageSize = $params['limit'] ?? 20;
+        $where = ['a.mark' => 1];
+        $status = isset($params['status']) ? $params['status'] : 0;
+        if ($status > 0) {
+            $where['a.status'] = $status;
         }
 
-        // 用户类型筛选
-        if ($userType !== '') {
-            $query->where('a.user_type', $userType);
-        }
+        $query = $this->model->from('member as a')
+            ->leftJoin('member as b','b.id','=','a.parent_id')
+            ->where($where)
+            ->where(function ($query) use ($params) {
+                $keyword = isset($params['keyword']) ? $params['keyword'] : '';
+                if ($keyword) {
+                    $query->where('a.nickname', 'like', "%{$keyword}%")->orWhere('a.realname', 'like', "%{$keyword}%");
+                }
+            })
+            ->where(function ($query) use ($params) {
+                $mobile = isset($params['mobile']) ? trim($params['mobile']) : '';
+                if ($mobile) {
+                    $query->where('a.mobile', 'like', "%{$mobile}%");
+                }
 
-        // 推荐人ID
-        if ($parentId !== '') {
-            $query->where('a.parent_id', $parentId);
-        }
+                // 推荐人ID
+                $parentId = intval($params['parent_id']) ?? 0;
+                if ($parentId>0) {
+                    $query->where('a.parent_id', $parentId);
+                }
 
-        // 手机号搜索
-        if (!empty($mobile)) {
-            $query->where('a.mobile', 'like', "%{$mobile}%");
-        }
+                $parent = isset($params['parent']) ? trim($params['parent']) : '';
+                if (!empty($parent)) {
+                    $query->where(function ($q) use ($parent) {
+                        $q->where('b.nickname', 'like', "%{$parent}%")
+                            ->orWhere('b.realname', 'like', "%{$parent}%");
+                    });
+                }
 
-        // 关键词搜索(昵称/姓名)
-        if (!empty($keyword)) {
-            $query->where(function ($q) use ($keyword) {
-                $q->where('a.nickname', 'like', "%{$keyword}%")
-                    ->orWhere('a.realname', 'like', "%{$keyword}%");
-            });
-        }
 
-        // 推荐人搜索
-        if (!empty($parent)) {
-            $query->where(function ($q) use ($parent) {
-                $q->where('b.nickname', 'like', "%{$parent}%")
-                    ->orWhere('b.realname', 'like', "%{$parent}%");
-            });
-        }
 
-        $model = clone $query;
-        $total = $model->count('a.id');
-        $list = $query->withCount(['invites'])
+            })
+            ->select(['a.*'])
+            ->withCount(['invites'])
             ->orderBy('a.create_time', 'desc')
-            ->orderBy('a.id', 'desc')
-            ->offset(($page - 1) * $limit)
-            ->limit($limit)
-            ->get()
-            ->toArray();
-
-        // 格式化数据
-        foreach ($list as &$item) {
-            $item['avatar'] = $item['avatar'] ? get_image_url($item['avatar']) : '';
-            $item['balance'] = number_format($item['balance'], 2, '.', '');
-            $item['create_time_text'] = date('Y-m-d H:i:s', (int)$item['create_time']);
-            $item['login_time_text'] = $item['login_time'] ? date('Y-m-d H:i:s', (int)$item['login_time']) : '-';
-            $item['gender_text'] = ['', '男', '女', '未知'][$item['gender']] ?? '未知';
-            $item['status_text'] = $item['status'] == 1 ? '正常' : '冻结';
-            $item['user_type_text'] = $item['user_type'] == 1 ? '用户' : '其他';
-            $item['invites_count'] = $item['invites_count']?$item['invites_count']:0;
-        }
+            ->orderBy('a.id', 'desc');
+        $list = $query->paginate($pageSize > 0 ? $pageSize : 9999999);
+        $list = $list ? $list->toArray() : [];
 
+        if ($list) {
+            foreach ($list['data'] as &$item) {
+                $item['avatar'] = $item['avatar'] ? get_image_url($item['avatar']) : '';
+                $item['balance'] = number_format($item['balance'], 2, '.', '');
+                $item['create_time_text'] = date('Y-m-d H:i:s', (int)$item['create_time']);
+                $item['login_time_text'] = $item['login_time'] ? date('Y-m-d H:i:s', (int)$item['login_time']) : '-';
+                $item['status_text'] = $item['status'] == 1 ? '正常' : '冻结';
+                $item['invites_count'] = $item['invites_count']?$item['invites_count']:0;
+            }
+        }
+        
         return [
             'code' => 0,
             'msg' => '获取成功',
-            'data' => $list,
-            'count' => $total
+            'data' => isset($list['data'])?$list['data']:[],
+            'count' => isset($list['total'])?$list['total']:0
         ];
     }