Pārlūkot izejas kodu

Default Changelist

yingzi 2 gadi atpakaļ
vecāks
revīzija
ee77c4a4be
1 mainītis faili ar 56 papildinājumiem un 38 dzēšanām
  1. 56 38
      app/api/controller/User.php

+ 56 - 38
app/api/controller/User.php

@@ -122,45 +122,63 @@ class User extends BaseController
      * 获取用户总邀请人数排行榜
      * @param Request $request
      */
-     public function getInviterRanking(Request $request){
-         $time = $request->param('time', time());
-         $times = explode(" - ",$time);
-         $page = $request->param('page', 1); // 获取请求中的页码参数,默认为 1
-         $pageSize = $request->param('pageSize', 6); // 获取请求中的每页记录数参数,默认为 6
-         if(sizeof($times)==2)
-         {
-             $count = (new UserModel) -> where('parent_uid', $request->user['uid'])->where('regtime','>=',$times[0])->where('regtime','<',$times[1])->count();
-         }
-         else
-         {
-             $count = (new UserModel) -> where('parent_uid', $request->user['uid'])->count();
-         }
-         $uids = (new UserModel) -> where('parent_uid', $request->user['uid'])
-                                 -> column('uid');
-         $InfoAudit= new InfoAudit();
-          $list = [];
-          if($count) 
-          {
-              $list = (new UserModel)  -> where('parent_uid', 'in',$uids)
-                                  -> group('parent_uid')
-                                  -> field('parent_uid, COUNT(*) AS count')
-                                  -> order('count', 'DESC')
-                                  -> page($page,$pageSize)
-                                  -> select()
-                                  -> toArray();
+    public function getInviterRanking(Request $request)
+    {
+        $time = $request->param('time', time());
+        $times = explode(' - ', $time);
+        $page = $request->param('page', 1); // 获取请求中的页码参数,默认为 1
+        $pageSize = $request->param('pageSize', 6); // 获取请求中的每页记录数参数,默认为 6
+        $uids = [];
+
+        // 判断用户和 $times 是否存在
+        if ($request->has('user') && $request->has('time')) {
+            if (sizeof($times) == 2) {
+                $count = (new UserModel)
+                    ->where('parent_uid', $request->user['uid'])
+                    ->where('regtime', '>=', $times[0])
+                    ->where('regtime', '<', $times[1])
+                    ->count();
+            } else {
+                $count = (new UserModel)
+                    ->where('parent_uid', $request->user['uid'])
+                    ->count();
+            }
+
+            // 获取所有下级用户的唯一标识
+            $uids = (new UserModel)
+                ->where('parent_uid', $request->user['uid'])
+                ->column('uid');
+        } else {
+            $count = 0;
+        }
+
+        $list = [];
+
+        if ($count) {
+            $InfoAudit = new InfoAudit();
 
-              foreach ($list as &$v)
-              {
-                  $v['auth_info'] = $InfoAudit->where('uid',$v['uid'])->where('status',1)->find();
-              }
-          } else { $list = array_fill(0, 6, []);
-                foreach ($list as &$v) {
-                    $v['auth_info'] = $InfoAudit
-                                    ->where('uid', $v['uid'])
-                                    ->where('status', 1)
-                                    ->find(); } }
-        return app('json')->success(compact('count','list'));
-     }
+            $list = (new UserModel)
+                ->whereIn('parent_uid', $uids)
+                ->group('parent_uid')
+                ->field('parent_uid, COUNT(*) AS count')
+                ->order('count', 'DESC')
+                ->page($page, $pageSize)
+                ->select()
+                ->toArray();
+
+            foreach ($list as &$v) {
+                $v['user_info'] = (new UserModel)
+                    ->where('uid', $v['parent_uid'])
+                    ->find();
+
+                $v['auth_info'] = $InfoAudit->where('uid', $v['parent_uid'])->where('status', 1)->find();
+            }
+        } else {
+            $list = array_fill(0, 6, (new UserModel)->where('uid', $uids)->select());
+        }
+
+        return app('json')->success(compact('count', 'list'));
+    }
 
 
     /**