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 ;
2025-10-25 17:28:11 +08:00
$where [ 'a.type' ] = 0 ;
2025-08-07 20:21:47 +08:00
$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' );
}
}
2025-10-25 17:28:11 +08:00
} 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' );
}
2025-08-07 20:21:47 +08:00
}
$data = [
'my_ranking' => $my_ranking ,
'lists' => $lists
];
return [ 'code' => 1 , 'msg' => '获取成功' , 'data' => $data ];
}
2025-12-06 12:12:28 +08:00
//真爱榜
public function love_rankings ()
{
$lists = db :: name ( 'user_cp_zone' ) -> alias ( 'a' )
-> join ( 'user b' , 'a.user_id1 = b.id' , 'left' )
-> join ( 'user c' , 'a.user_id2 = c.id' , 'left' )
2025-12-06 14:34:11 +08:00
-> where ([ 'a.status' => 1 ])
2025-12-06 14:41:32 +08:00
-> field ( 'a.exp,a.id,a.level as total,a.user_id1,a.user_id2 as user_id,b.nickname as nickname1,c.nickname as nickname,b.avatar as user_avatar1,c.avatar as user_avatar' )
2025-12-06 12:12:28 +08:00
-> order ( 'a.level desc' )
-> page ( $this -> page , $this -> page_limit )
-> select ();
$my_ranking = null ;
if ( $lists ){
//获取当前用户的房间id $this->user_id
$myRoom = db :: name ( 'user_cp_zone' ) -> where ([ 'user_id1' => UID , 'status' => 1 ]) -> find ();
if ( ! $myRoom ){
$myRoom = db :: name ( 'user_cp_zone' ) -> where ([ 'user_id2' => UID , 'status' => 1 ]) -> find ();
}
if ( $myRoom ){
foreach ( $lists as $key => $value ) {
$lists [ $key ][ 'rank' ] = $key + 1 ;
if ( $myRoom [ 'id' ] == $value [ 'id' ]) {
$my_ranking = $lists [ $key ];
$my_ranking [ 'diff' ] = $key == 0 ? 0 : ( $lists [ $key - 1 ][ 'exp' ] - $value [ 'exp' ]);
}
}
}
} else {
$my_ranking = [
2025-12-06 14:41:32 +08:00
'user_id' => UID ,
'user_id1' => 0 ,
'nickname' => db :: name ( 'user' ) -> where ([ 'id' => UID ]) -> value ( 'nickname' ),
'nickname1' => '' ,
'user_avatar' => db :: name ( 'user' ) -> where ([ 'id' => UID ]) -> value ( 'avatar' ),
'user_avatar1' => '' ,
2025-12-06 12:12:28 +08:00
'exp' => 0 ,
'diff' => 0 ,
'rank' => - 1 ,
2025-12-06 14:41:32 +08:00
'total' => 0
2025-12-06 12:12:28 +08:00
];
}
$data = [
'my_ranking' => $my_ranking ,
'lists' => $lists
];
return [ 'code' => 1 , 'msg' => '获取成功' , 'data' => $data ];
}
2025-08-07 20:21:47 +08:00
}