wesmiler %!s(int64=2) %!d(string=hai) anos
pai
achega
943f6ea929
Modificáronse 2 ficheiros con 29 adicións e 16 borrados
  1. 0 7
      app/Services/Api/MemberService.php
  2. 29 9
      app/Services/LiveService.php

+ 0 - 7
app/Services/Api/MemberService.php

@@ -117,13 +117,6 @@ class MemberService extends BaseService
                 $liveOpenLevel = $liveOpenLevel>0? $liveOpenLevel : 0;
                 $info['live_open'] = $info['member_level']>=$liveOpenLevel? 1 : 0;
             }
-            // 直播
-            else if($type == 'live'){
-                $liveId = request()->post('live_id', 0);
-                $rankData = VideoCollectService::make()->getRankData($info['id'], $liveId);
-                $info['live_reward_total'] = isset($rankData['reward_total'])? format_num($rankData['reward_total']) : 0;
-                $info['live_rank'] = isset($rankData['rank'])? $rankData['rank'] : 0;
-            }
             else if ($type == 'team' || $type == 'share') {
                 $inviteUrl = get_web_url('/#/pages/register/index?code=' . $info['code']);
                 $qrcode = $this->makeQrcode($inviteUrl);

+ 29 - 9
app/Services/LiveService.php

@@ -222,7 +222,9 @@ class LiveService extends BaseService
     public function getUserList($params, $pageSize, $userId=0)
     {
         $liveId = isset($params['live_id'])? $params['live_id'] : 0;
-        $list = MemberModel::from('member as a')
+        $rankNum = ConfigService::make()->getConfigByCode('live_show_rank', 200);
+        $rankNum = $rankNum>20 && $rankNum <= 300? $rankNum : 200;
+        $model = MemberModel::from('member as a')
             ->leftJoin('video_collect as b',function($join) use($liveId){
                 $join->on('a.id','=','b.user_id')
                     ->where(['b.type'=>1,'b.collect_id'=> $liveId,'b.source_type'=>2,'b.status'=>1,'b.mark'=>1]);
@@ -232,21 +234,39 @@ class LiveService extends BaseService
             ->select(['a.id','a.nickname','a.avatar','a.member_level','a.gender','a.intro','a.status','b.create_time','b.reward_total','b.collect_id as live_id'])
             ->groupBy('id')
             ->orderBy('b.reward_total','desc')
-            ->orderBy('b.create_time','desc')
-            ->paginate($pageSize > 0 ? $pageSize : 9999999);
-        $list = $list? $list->toArray() : [];
-        if ($list && $list['data']) {
-            foreach ($list['data'] as &$item) {
+            ->orderBy('b.create_time','desc');
+
+        $countModel = clone $model;
+        $total = $countModel->count('a.id');
+
+        $datas = $model->limit($rankNum)->get();
+        $datas = $datas? $datas->toArray() : [];
+        $rankData = ['rank'=>0,'reward_total'=>0];
+        if ($datas) {
+            foreach ($datas as $k=> &$item) {
                 $item['time_text'] = isset($item['create_time']) ? dateFormat($item['create_time'], 'Y-m-d H:i') : '';
                 $item['avatar'] = isset($item['avatar']) && $item['avatar']? get_image_url($item['avatar']) : get_image_url('/images/member/logo.png');
                 $item['reward_total'] = isset($item['reward_total']) && $item['reward_total']? format_num($item['reward_total']) : 0;
+
+                if($item['id'] == $userId){
+                    $rankData['rank'] = ($k+1)>$rankNum? 0 : ($k+1);
+                    $rankData['reward_total'] = $item['reward_total']? format_num($item['reward_total']) : 0;
+                }
             }
         }
 
+        // 用户排名在200名外的数据
+        if($rankData['rank'] <= 0 && $rankData['reward_total']<=0 && count($datas) > $rankNum){
+            $rewardTotal = VideoCollectModel::where(['user_id'=> $userId,'type'=>1,'collect_id'=> $liveId,'source_type'=>2,'status'=>1,'mark'=>1])
+                ->value('reward_total');
+            $rankData['reward_total'] = $rewardTotal? format_num($rewardTotal) : 0;
+        }
+
         return [
-            'pageSize' => $pageSize,
-            'total'    => isset($list['total']) ? $list['total'] : 0,
-            'list'     => isset($list['data']) ? $list['data'] : []
+            'current' => $rankData,
+            'rank_limit'=> $rankNum,
+            'total'    => $total,
+            'list'     => $datas
         ];
     }