房间排行榜

This commit is contained in:
2026-01-12 09:21:48 +08:00
parent 90c4ec7346
commit 97e6c41725

View File

@@ -154,87 +154,45 @@ class Ranking extends Model
{
//金币与魅力比例
$ratio = get_system_config_value('coin_charm_exp');
$where['a.createtime'] = ['between', [$this->begin_time, $this->end_time]];
$where['b.type_id'] = ['<>', 6];
$where['b.room_status'] = 1;
$field = ['sum(a.total_price) *'.$ratio.' as total,b.room_name,a.from_id as room_id,b.room_cover,b.room_number'];
$lists = db::name('vs_give_gift')->alias('a')
->join('vs_room b','a.from_id = b.id','left')
->where($where)->field($field)->group('a.from_id')
->order('total desc')
// ->page($this->page, $this->page_limit)
->select();
$my_ranking = null;
if($lists){
//获取当前用户的房间id
$myRoom = db::name('vs_room')->where(['user_id' => UID ,'room_status' => 1])->find();
if($myRoom){
foreach ($lists as $key => $value) {
$lists[$key]['rank'] = $key + 1;
if ($myRoom['id'] == $value['room_id']) {
$my_ranking = $lists[$key];
$my_ranking['diff'] = $key == 0 ? 0 : ($lists[$key - 1]['total'] - $value['total']);
}
// $lists[$key]['total'] = numberFormat($value['total']);
}
//时间转为天
$begin_time = strtotime(date('Y-m-d',$this->begin_time));
$end_time = strtotime(date('Y-m-d',$this->end_time+86400));
if (!$my_ranking && $lists && defined('UID')) {
$where1['a.createtime'] = ['between', [$this->begin_time, $this->end_time]];
$where1['b.type_id'] = ['<>', 6];
$my_ranking_data = db::name('vs_give_gift')->alias('a')
->join('vs_room b','a.from_id = b.id','left')
->where(['a.from_id' => $myRoom['id']])
->where($where1)
->field('a.from_id as room_id,sum(a.total_price) as total,b.room_name,b.room_cover,b.room_number')->find();
$lists_last_number = $lists[count($lists) - 1]['total'] ?? 0;
$diff = numberFormat($lists_last_number - ($my_ranking_data['total'] ?: 0));
$diff = $diff<=0 ? 0 : $diff;
$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'];
if(!$my_ranking_data['room_name']){
$my_ranking['rank'] = -1;
$my_ranking['total'] = 0;
$my_ranking['diff'] = $diff;
$my_ranking['room_name'] = $myRoom['room_name'];
$my_ranking['room_cover'] = $myRoom['room_cover'];
}
}
}else{
foreach ($lists as $key => $value) {
$lists[$key]['rank'] = $key + 1;
}
$lists_last_number = $lists[count($lists) - 1]['total'] ?? 0;
//获取当前用户的房间id
$myRoom = db::name('vs_room')->where(['user_id' => UID ,'room_status' => 1])->find();
if($myRoom){
$my_ranking['room_name'] = $myRoom['room_name'];
$my_ranking['room_cover'] = $myRoom['room_cover'];
$my_ranking['total'] = 0;
$my_ranking['rank'] = -1;
$my_ranking['diff'] = numberFormat($lists_last_number);
}else{
$my_ranking['room_name'] = '';
$my_ranking['room_cover'] = '';
$my_ranking['total'] = 0;
$my_ranking['rank'] = -1;
$my_ranking['diff'] = numberFormat($lists_last_number);
}
}
}else{
//获取当前用户的房间id
$myRoom = db::name('vs_room')->where(['user_id' => UID ,'room_status' => 1])->find();
//获取当前用户的房间id
$myRoom = db::name('vs_room')->where(['user_id' => UID ,'room_status' => 1])->find();
if($myRoom){
$my_ranking['rank'] = -1;
$my_ranking['total'] = 0;
$my_ranking['diff'] = 0;
$my_ranking['room_name'] = $myRoom['room_name'];
$my_ranking['room_cover'] = $myRoom['room_cover'];
}else{
$myRoom['id'] = 0;
$my_ranking['rank'] = -1;
$my_ranking['total'] = 0;
$my_ranking['diff'] = 0;
$my_ranking['room_name'] = '';
$my_ranking['room_cover'] = '';
}
//截取20条
$lists = array_slice($lists,0,20);
$lists = db::name('room_daily_income')->alias('a')
->join('vs_room b','a.room_id = b.id','left')
->field('a.room_id,sum(a.income) as total,b.room_name,b.room_cover,b.room_number')
->where('date', ['between', [$begin_time, $end_time]])
->order('total desc')
->limit(20)
->select();
if($lists){
foreach ($lists as $key => $value) {
$lists[$key]['rank'] = $key + 1;
if ($myRoom['id'] == $value['room_id']) {
$my_ranking = $lists[$key];
$my_ranking['diff'] = $key == 0 ? 0 : ($lists[$key - 1]['total'] - $value['total']);
}
}
}
$data = [
'my_ranking' => $my_ranking,
'lists' => $lists