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) { $where['a.createtime'] = ['between', [$this->begin_time, $this->end_time]]; $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; 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') ->page($this->page, $this->page_limit) ->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.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') ->where($where) ->order('total desc') ->group('a.gift_user') ->page($this->page, $this->page_limit) ->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)); } } } $data = [ 'my_ranking' => $my_ranking, 'lists' => $lists ]; return ['code'=>1,'msg'=>'获取成功','data'=>$data]; } //房间榜 public function room_ranking() { $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) 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']); } 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']; } $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 ; $my_ranking = null; 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]; } }