房间排行榜

This commit is contained in:
2026-01-12 11:33:40 +08:00
parent a198a31755
commit 903496c893

View File

@@ -204,214 +204,6 @@ class Ranking extends Model
}
//公会榜
public function guild_ranking()
{
$where['createtime'] = ['between', [$this->begin_time, $this->end_time]];
//所有工会
$guilds = db::name('vs_guild')->where(['status' => 1])->select();
if($guilds){
foreach ($guilds as $k=>$value){
$total = 0;
$roomids[$k] = db::name('vs_guild_user')->where(['guild_id' => $value['id']])->field('room_id')->select();
if($roomids[$k]){
foreach ($roomids[$k] as $key => $value1){
$toomType = db::name('vs_room')->where(['id' => $value1['room_id']])->where($where)->value('type_id');
if($toomType == 6){
continue;
}
$total += db::name('vs_give_gift')->where(['from_id' => $value1['room_id']])->sum('total_price');
}
}
$guilds[$k]['total'] = $total;
}
//剔除$guilds[$k]['total'] = 0的
$guilds = array_filter($guilds, function ($value) {
return $value['total'] > 0;
});
//根据$guilds[$k]['total']排序
array_multisort(array_column($guilds, 'total'), SORT_DESC, $guilds);
}
$lists = $guilds ;
// $my_ranking = null;
$my_ranking['guild_name'] = '';
$my_ranking['cover'] = '';
$my_ranking['total'] = 0;
$my_ranking['rank'] = -1;
$my_ranking['diff'] = 0;
if($lists){
//获取当前用户的工会
$myGuild = db::name('vs_guild_user')->where(['user_id' => UID])->find();
if($myGuild){
foreach ($lists as $key => $value) {
$lists[$key]['rank'] = $key + 1;
// $lists[$key]['total'] = numberFormat($value['total']);
if ($myGuild['guild_id'] == $value['id']) {
$my_ranking = $lists[$key];
$my_ranking['diff'] = $key == 0 ? 0 : ($lists[$key - 1]['total'] - $value['total']);
}
}
if (!$my_ranking && $lists && defined('UID')) {
$my_rankings = null;
//当前工会的所有房间
$myguildroom = db::name('vs_guild_user')->where(['guild_id' => $myGuild['guild_id']])->field('room_id')->select();
foreach ($myguildroom as $key => $gvalue1){
$my_rankings['total'] += db::name('vs_give_gift')->where(['from_id' => $gvalue1['room_id']])->where($where)->sum('total_price');
}
$lists_last_number = $lists[count($lists) - 1]['total'] ?? 0;
$diff = numberFormat($lists_last_number - ($my_rankings['total'] ?: 0));
$diff = $diff<=0 ? 0 : $diff;
$my_ranking['rank'] = -1;
$my_ranking['total'] = numberFormat($my_rankings['total']);
$my_ranking['diff'] = $diff;
$my_ranking['guild_name'] = $myGuild['room_name'];
$my_ranking['cover'] = $myGuild['cover'];
if(!$my_rankings){
$my_ranking['rank'] = -1;
$my_ranking['total'] = 0;
$my_ranking['diff'] = $diff;
$my_ranking['guild_name'] = '';
$my_ranking['cover'] = '';
}
}
}else{
foreach ($lists as $key => $value) {
$lists[$key]['rank'] = $key + 1;
}
$lists_last_number = $lists[count($lists) - 1]['total'] ?? 0;
//获取当前用户所在工会
$myGuild = db::name('vs_guild_user')->where(['user_id' => UID])->find();
if($myGuild){
$my_ranking['guild_name'] = db::name('vs_guild')->where(['id' => $myGuild['guild_id']])->value('guild_name');
$my_ranking['cover'] = db::name('vs_guild')->where(['id' => $myGuild['guild_id']])->value('cover');
$my_ranking['total'] = 0;
$my_ranking['rank'] = -1;
$my_ranking['diff'] = numberFormat($lists_last_number);
}else{
$my_ranking['guild_name'] = '';
$my_ranking['cover'] = '';
$my_ranking['total'] = 0;
$my_ranking['rank'] = -1;
$my_ranking['diff'] = numberFormat($lists_last_number);
}
}
}
$data = [
'my_ranking' => $my_ranking,
'lists' => $lists
];
return ['code'=>1,'msg'=>'获取成功','data'=>$data];
}
//真爱榜
public function love_ranking()
{
$where['c.createtime'] = ['between', [$this->begin_time, $this->end_time]];
$where['a.status'] = 1;
$where['a.type'] = 0;
$field = ['a.user_id,a.user_id1,sum(c.total_price) as total,a.room_id,b.room_cover,b.room_intro as room_name'];
$lists = db::name('vs_room_cp_movie')->alias('a')
->join('vs_room b','a.room_id = b.id','left')
->join('vs_give_gift c','a.room_id = c.from_id','left')
->where($where)->field($field)->group('a.room_id')
->order('total desc')
->page($this->page, $this->page_limit)
->select();
$my_ranking = null;
if($lists){
//获取当前用户的房间id $this->user_id
$myRoom = db::name('vs_room_cp_movie')->where(['user_id' => UID ,'status' => 1])->find();
if(!$myRoom){
$myRoom = db::name('vs_room_cp_movie')->where(['user_id1' => UID ,'status' => 1])->find();
}
if($myRoom){
foreach ($lists as $key => $value) {
$lists[$key]['rank'] = $key + 1;
$lists[$key]['user_avatar'] = db::name('user')->where(['id' => $value['user_id']])->value('avatar');
$lists[$key]['user_avatar1'] = db::name('user')->where(['id' => $value['user_id1']])->value('avatar');
$lists[$key]['nickname'] = db::name('user')->where(['id' => $value['user_id']])->value('nickname');
$lists[$key]['nickname1'] = db::name('user')->where(['id' => $value['user_id1']])->value('nickname');
if ($myRoom['room_id'] == $value['room_id']) {
$my_ranking = $lists[$key];
$my_ranking['diff'] = $key == 0 ? 0 : ($lists[$key - 1]['total'] - $value['total']);
}
}
if (!$my_ranking && $lists) {
$where1['c.createtime'] = ['between', [$this->begin_time, $this->end_time]];
$where1['a.status'] = 1;
$my_ranking_data = db::name('vs_room_cp_movie')->alias('a')
->join('vs_room b','a.room_id = b.id','left')
->join('vs_give_gift c','a.room_id = c.from_id','left')
->where(['c.from_id' => $myRoom['room_id']])
->where($where1)
->field('a.user_id,a.user_id1,a.room_id,sum(c.total_price) as total,b.room_intro as room_name,b.room_cover')->find();
$lists_last_number = $lists[count($lists) - 1]['total'] ?? 0;
$diff = numberFormat($lists_last_number - ($my_ranking_data['total'] ?: 0));
$diff = max($diff, 0);
$my_ranking['rank'] = -1;
$my_ranking['total'] = numberFormat($my_ranking_data['total']);
$my_ranking['diff'] = $diff;
$my_ranking['room_name'] = $my_ranking_data['room_name'];
$my_ranking['room_cover'] = $my_ranking_data['room_cover'];
$my_ranking['user_avatar'] = db::name('user')->where(['id' => $my_ranking_data['user_id']])->value('avatar');
$my_ranking['user_avatar1'] = db::name('user')->where(['id' => $my_ranking_data['user_id1']])->value('avatar');
if(!$my_ranking_data['room_name']){
$my_ranking['rank'] = -1;
$my_ranking['total'] = 0;
$my_ranking['diff'] = $diff;
$my_ranking['room_name'] = '';
$my_ranking['room_cover'] = '';
}
}
}else{
foreach ($lists as $key => $value) {
$lists[$key]['rank'] = $key + 1;
$lists[$key]['user_avatar'] = db::name('user')->where(['id' => $value['user_id']])->value('avatar');
$lists[$key]['user_avatar1'] = db::name('user')->where(['id' => $value['user_id1']])->value('avatar');
$lists[$key]['nickname'] = db::name('user')->where(['id' => $value['user_id']])->value('nickname');
$lists[$key]['nickname1'] = db::name('user')->where(['id' => $value['user_id1']])->value('nickname');
}
}
}else{
//获取当前用户的房间id $this->user_id
$myRoom = db::name('vs_room_cp_movie')->where(['user_id' => UID ,'status' => 1])->find();
if(!$myRoom){
$myRoom = db::name('vs_room_cp_movie')->where(['user_id1' => UID ,'status' => 1])->find();
}
if($myRoom){
$where1['a.status'] = 1;
$where1['a.type'] = 0;
$my_ranking_data = db::name('vs_room_cp_movie')->alias('a')
->join('vs_room b','a.room_id = b.id','left')
->where(['a.cp_id' => $myRoom['cp_id']])
->where($where1)
->field('a.user_id,a.user_id1,a.room_id,b.room_intro as room_name,b.room_cover')->find();
$diff =0;
$my_ranking['rank'] = -1;
$my_ranking['total'] = 0;
$my_ranking['diff'] = $diff;
$my_ranking['room_name'] = $my_ranking_data['room_name'];
$my_ranking['room_cover'] = $my_ranking_data['room_cover'];
$my_ranking['user_avatar'] = db::name('user')->where(['id' => $my_ranking_data['user_id']])->value('avatar');
$my_ranking['user_avatar1'] = db::name('user')->where(['id' => $my_ranking_data['user_id1']])->value('avatar');
$my_ranking['nickname'] = db::name('user')->where(['id' => $my_ranking_data['user_id']])->value('nickname');
$my_ranking['nickname1'] = db::name('user')->where(['id' => $my_ranking_data['user_id1']])->value('nickname');
}
}
$data = [
'my_ranking' => $my_ranking,
'lists' => $lists
];
return ['code'=>1,'msg'=>'获取成功','data'=>$data];
}
//真爱榜
public function love_rankings()
{