2025-08-07 20:21:47 +08:00
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
|
|
namespace app\api\model;
|
|
|
|
|
|
|
|
|
|
|
|
use think\Db;
|
|
|
|
|
|
use think\Model;
|
|
|
|
|
|
|
|
|
|
|
|
class Ranking extends Model
|
|
|
|
|
|
{
|
|
|
|
|
|
protected $begin_time, $end_time, $type,$user_id, $lable, $page, $page_limit;
|
|
|
|
|
|
|
|
|
|
|
|
public function __construct($user_id,$type,$room_id,$page=1, $page_limit=30)
|
|
|
|
|
|
{
|
|
|
|
|
|
parent::__construct();
|
|
|
|
|
|
$this->type = $type;
|
|
|
|
|
|
$this->user_id = $user_id;
|
|
|
|
|
|
$this->room_id = $room_id;
|
|
|
|
|
|
$this->page = $page;
|
|
|
|
|
|
$this->page_limit = $page_limit;
|
|
|
|
|
|
|
|
|
|
|
|
switch ($type) {
|
|
|
|
|
|
case 1://日榜
|
|
|
|
|
|
$this->begin_time = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
|
|
|
|
|
|
$this->end_time = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')) - 1;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 2://本周榜
|
|
|
|
|
|
$this->begin_time = mktime(0, 0, 0, date('m'), date('d') - (date('w') ?: 7) + 1, date('Y'));
|
|
|
|
|
|
$this->end_time = mktime(23, 59, 59, date('m'), date('d') - (date('w') ?: 7) + 7, date('Y'));
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 3://本月榜
|
|
|
|
|
|
$this->begin_time = mktime(0, 0, 0, date('m'), 1, date('Y'));
|
|
|
|
|
|
$this->end_time = mktime(23, 59, 59, date('m'), date('t'), date('Y'));
|
|
|
|
|
|
break;
|
|
|
|
|
|
default://总榜
|
|
|
|
|
|
$this->begin_time = 0;
|
|
|
|
|
|
$this->end_time = time();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//财富、魅力榜
|
|
|
|
|
|
public function ranking($ranking_type)
|
|
|
|
|
|
{
|
2025-08-18 18:55:28 +08:00
|
|
|
|
$where['a.createtime'] = ['between', [$this->begin_time, $this->end_time]];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
$my_ranking = db::name('user')
|
|
|
|
|
|
->field('user_code,avatar,nickname,id as user_id,user_code,sex')
|
|
|
|
|
|
->where('id',$this->user_id)->find();
|
|
|
|
|
|
$my_ranking['icon'][0] = model('UserData')->user_wealth_icon($my_ranking['user_id']);//财富图标
|
|
|
|
|
|
$my_ranking['total'] = 0;
|
|
|
|
|
|
$my_ranking['rank'] = -1;
|
|
|
|
|
|
$my_ranking['diff'] = 0;
|
2025-08-18 18:55:28 +08:00
|
|
|
|
if($ranking_type == 1){//1财富榜,2魅力榜
|
|
|
|
|
|
$lists = db::name('vs_give_gift')->alias('a')
|
|
|
|
|
|
->join('user b', 'a.user_id = b.id')
|
|
|
|
|
|
->field('a.user_id,b.nickname,b.avatar,b.user_code,sum(a.total_price) * 10 as total')
|
|
|
|
|
|
->where($where)
|
|
|
|
|
|
->order('total desc')
|
|
|
|
|
|
->group('a.user_id')
|
2025-10-20 09:59:39 +08:00
|
|
|
|
// ->page($this->page, $this->page_limit)
|
2025-08-18 18:55:28 +08:00
|
|
|
|
->select();
|
|
|
|
|
|
|
|
|
|
|
|
if($lists){
|
|
|
|
|
|
foreach ($lists as $key => &$value) {
|
|
|
|
|
|
$lists[$key]['icon'][0] = model('UserData')->user_wealth_icon($value['user_id']);//财富图标
|
|
|
|
|
|
$lists[$key]['icon'][1] = model('UserData')->user_charm_icon($value['user_id']);//魅力图标
|
|
|
|
|
|
$lists[$key]['rank'] = $key + 1;
|
|
|
|
|
|
if ($this->user_id == $value['user_id']) {
|
|
|
|
|
|
$my_ranking = $lists[$key];
|
|
|
|
|
|
$my_ranking['diff'] = $key == 0 ? 0 : ($lists[$key - 1]['total'] - $value['total']);
|
|
|
|
|
|
}
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-08-18 18:55:28 +08:00
|
|
|
|
if (!$my_ranking && $lists && defined('UID')) {
|
|
|
|
|
|
$my_ranking_data = db::name('vs_give_gift')->alias('a')
|
|
|
|
|
|
->join('user b', 'a.user_id = b.id')
|
|
|
|
|
|
->field('a.user_id,b.nickname,b.avatar,b.user_code,sum(a.total_price) * 10 as total')
|
|
|
|
|
|
->where($where)
|
|
|
|
|
|
->where('a.user_id',$this->user_id)
|
|
|
|
|
|
->page($this->page, $this->page_limit)
|
|
|
|
|
|
->select();
|
|
|
|
|
|
$my_ranking_data['icon'][0] = model('UserData')->user_wealth_icon($my_ranking_data['user_id']);//财富图标
|
|
|
|
|
|
$my_ranking_data['icon'][1] = model('UserData')->user_charm_icon($my_ranking_data['user_id']);//魅力图标
|
|
|
|
|
|
$lists_last_number = $lists[count($lists) - 1]['total'] ?? 0;
|
|
|
|
|
|
|
|
|
|
|
|
if (!isset($my_ranking_data['user_id']) || !$my_ranking_data['user_id']) {
|
|
|
|
|
|
$my_ranking = db::name('user')
|
|
|
|
|
|
->field('user_code,avatar,nickname,id as user_id,user_code,sex')
|
|
|
|
|
|
->where('id',$this->user_id)->find();
|
|
|
|
|
|
$my_ranking['icon'][0] = model('UserData')->user_wealth_icon($my_ranking['user_id']);//财富图标
|
|
|
|
|
|
|
|
|
|
|
|
$my_ranking['total'] = 0;
|
|
|
|
|
|
$my_ranking['rank'] = -1;
|
|
|
|
|
|
$my_ranking['diff'] = numberFormat($lists_last_number);
|
|
|
|
|
|
} else {
|
|
|
|
|
|
$my_ranking = $my_ranking_data;
|
|
|
|
|
|
$my_ranking['rank'] = -1;
|
|
|
|
|
|
$my_ranking['total'] = numberFormat($my_ranking['total']);
|
|
|
|
|
|
$my_ranking['diff'] = numberFormat($lists_last_number - ($my_ranking_data['total'] ?: 0));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$lists = db::name('vs_give_gift')->alias('a')
|
|
|
|
|
|
->join('user b', 'a.gift_user = b.id')
|
|
|
|
|
|
->field('a.gift_user as user_id,b.nickname,b.avatar,b.user_code,sum(a.total_price) * 10 as total')
|
2025-08-07 20:21:47 +08:00
|
|
|
|
->where($where)
|
2025-08-18 18:55:28 +08:00
|
|
|
|
->order('total desc')
|
|
|
|
|
|
->group('a.gift_user')
|
2025-10-20 09:59:39 +08:00
|
|
|
|
// ->page($this->page, $this->page_limit)
|
2025-08-18 18:55:28 +08:00
|
|
|
|
->select();
|
|
|
|
|
|
|
|
|
|
|
|
if($lists){
|
|
|
|
|
|
foreach ($lists as $key => &$value) {
|
|
|
|
|
|
$lists[$key]['icon'][0] = model('UserData')->user_wealth_icon($value['user_id']);//财富图标
|
|
|
|
|
|
$lists[$key]['icon'][1] = model('UserData')->user_charm_icon($value['user_id']);//魅力图标
|
|
|
|
|
|
$lists[$key]['rank'] = $key + 1;
|
|
|
|
|
|
if ($this->user_id == $value['user_id']) {
|
|
|
|
|
|
$my_ranking = $lists[$key];
|
|
|
|
|
|
$my_ranking['diff'] = $key == 0 ? 0 : ($lists[$key - 1]['total'] - $value['total']);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (!$my_ranking && $lists && defined('UID')) {
|
|
|
|
|
|
$my_ranking_data = db::name('vs_give_gift')->alias('a')
|
|
|
|
|
|
->join('user b', 'a.gift_user = b.id')
|
|
|
|
|
|
->field('a.gift_user as user_id,b.nickname,b.avatar,b.user_code,sum(a.total_price) * 10 as total')
|
|
|
|
|
|
->where($where)
|
|
|
|
|
|
->where('a.gift_user',$this->user_id)
|
|
|
|
|
|
->select();
|
|
|
|
|
|
|
|
|
|
|
|
$my_ranking_data['icon'][0] = model('UserData')->user_wealth_icon($my_ranking_data['user_id']);//财富图标
|
|
|
|
|
|
$my_ranking_data['icon'][1] = model('UserData')->user_charm_icon($my_ranking_data['user_id']);//魅力图标
|
|
|
|
|
|
$lists_last_number = $lists[count($lists) - 1]['total'] ?? 0;
|
|
|
|
|
|
|
|
|
|
|
|
if (!isset($my_ranking_data['user_id']) || !$my_ranking_data['user_id']) {
|
|
|
|
|
|
$my_ranking = db::name('user')
|
|
|
|
|
|
->field('user_code,avatar,nickname,id as user_id,user_code,sex')
|
|
|
|
|
|
->where('id',$this->user_id)->find();
|
|
|
|
|
|
$my_ranking['icon'][0] = model('UserData')->user_wealth_icon($my_ranking['user_id']);//财富图标
|
|
|
|
|
|
|
|
|
|
|
|
$my_ranking['total'] = 0;
|
|
|
|
|
|
$my_ranking['rank'] = -1;
|
|
|
|
|
|
$my_ranking['diff'] = numberFormat($lists_last_number);
|
|
|
|
|
|
} else {
|
|
|
|
|
|
$my_ranking = $my_ranking_data;
|
|
|
|
|
|
$my_ranking['rank'] = -1;
|
|
|
|
|
|
$my_ranking['total'] = numberFormat($my_ranking['total']);
|
|
|
|
|
|
$my_ranking['diff'] = numberFormat($lists_last_number - ($my_ranking_data['total'] ?: 0));
|
|
|
|
|
|
}
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-10-20 09:59:39 +08:00
|
|
|
|
//截取20条
|
|
|
|
|
|
$lists = array_slice($lists,0,20);
|
2025-08-07 20:21:47 +08:00
|
|
|
|
$data = [
|
|
|
|
|
|
'my_ranking' => $my_ranking,
|
|
|
|
|
|
'lists' => $lists
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
return ['code'=>1,'msg'=>'获取成功','data'=>$data];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//房间榜
|
|
|
|
|
|
public function room_ranking()
|
|
|
|
|
|
{
|
2025-10-20 09:59:39 +08:00
|
|
|
|
//金币与魅力比例
|
|
|
|
|
|
$ratio = get_system_config_value('coin_charm_exp');
|
2025-08-07 20:21:47 +08:00
|
|
|
|
$where['a.createtime'] = ['between', [$this->begin_time, $this->end_time]];
|
|
|
|
|
|
$where['b.type_id'] = ['<>', 6];
|
|
|
|
|
|
$where['b.room_status'] = 1;
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$field = ['sum(a.total_price) *'.$ratio.' as total,b.room_name,a.from_id as room_id,b.room_cover,b.room_number'];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
$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')
|
2025-10-20 09:59:39 +08:00
|
|
|
|
// ->page($this->page, $this->page_limit)
|
2025-08-07 20:21:47 +08:00
|
|
|
|
->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']);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
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();
|
|
|
|
|
|
$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'];
|
|
|
|
|
|
}
|
2025-10-20 09:59:39 +08:00
|
|
|
|
//截取20条
|
|
|
|
|
|
$lists = array_slice($lists,0,20);
|
2025-08-07 20:21:47 +08:00
|
|
|
|
$data = [
|
|
|
|
|
|
'my_ranking' => $my_ranking,
|
|
|
|
|
|
'lists' => $lists
|
|
|
|
|
|
];
|
|
|
|
|
|
return ['code'=>1,'msg'=>'获取成功','data'=>$data];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//公会榜
|
|
|
|
|
|
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 ;
|
2025-10-20 09:59:39 +08:00
|
|
|
|
// $my_ranking = null;
|
|
|
|
|
|
$my_ranking['guild_name'] = '';
|
|
|
|
|
|
$my_ranking['cover'] = '';
|
|
|
|
|
|
$my_ranking['total'] = 0;
|
|
|
|
|
|
$my_ranking['rank'] = -1;
|
|
|
|
|
|
$my_ranking['diff'] = 0;
|
2025-08-07 20:21:47 +08:00
|
|
|
|
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;
|
|
|
|
|
|
$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 && defined('UID')) {
|
|
|
|
|
|
$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 = $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'];
|
|
|
|
|
|
$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');
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
$data = [
|
|
|
|
|
|
'my_ranking' => $my_ranking,
|
|
|
|
|
|
'lists' => $lists
|
|
|
|
|
|
];
|
|
|
|
|
|
return ['code'=>1,'msg'=>'获取成功','data'=>$data];
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|