|
|
@@ -12,6 +12,7 @@
|
|
|
namespace App\Services\Api;
|
|
|
|
|
|
use App\Models\MemberCollectModel;
|
|
|
+use App\Models\MemberModel;
|
|
|
use App\Models\VideoCollectModel;
|
|
|
use App\Models\VideoModel;
|
|
|
use App\Services\BaseService;
|
|
|
@@ -235,6 +236,48 @@ class VideoCollectService extends BaseService
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 获取直播间当前用户的打赏金额和打赏排名
|
|
|
+ * @param $userId 用户ID
|
|
|
+ * @param $liveId 直播ID
|
|
|
+ */
|
|
|
+ public function getRankData($userId, $liveId)
|
|
|
+ {
|
|
|
+ $datas = 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]);
|
|
|
+ })
|
|
|
+ ->where(['a.status'=>1,'a.mark'=>1])
|
|
|
+ ->where('b.id','>', 0)
|
|
|
+ ->select(['a.id','b.create_time','b.reward_total','b.collect_id as live_id'])
|
|
|
+ ->groupBy('id')
|
|
|
+ ->orderBy('b.reward_total','desc')
|
|
|
+ ->orderBy('b.create_time','desc')
|
|
|
+ ->limit(210)
|
|
|
+ ->get();
|
|
|
+ $datas = $datas? $datas->toArray() : [];
|
|
|
+ $rankData = ['rank'=>0,'reward_total'=>0];
|
|
|
+ if($datas){
|
|
|
+ foreach($datas as $k => $item)
|
|
|
+ {
|
|
|
+ if($item['id'] == $userId){
|
|
|
+ $rankData['rank'] = ($k+1) >200? 0 : ($k+1);
|
|
|
+ $rankData['reward_total'] = $item['reward_total'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 用户排名在200名外的数据
|
|
|
+ if($rankData['rank'] <= 0 && $rankData['reward_total']<=0 && count($datas) > 200){
|
|
|
+ $rewardTotal = $this->model->where(['user_id'=> $userId,'type'=>1,'collect_id'=> $liveId,'source_type'=>2,'status'=>1,'mark'=>1])
|
|
|
+ ->value('reward_total');
|
|
|
+ $rankData['reward_total'] = $rewardTotal? floatval($rewardTotal) : 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ return $rankData;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 收藏点赞
|
|
|
* @param $userId
|
|
|
* @param $dynamicId
|