|
|
@@ -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
|
|
|
];
|
|
|
}
|
|
|
|