diff --git a/application/api/model/GiveGiftBases.php b/application/api/model/GiveGiftBases.php index 3740fb5d..7c64d6cc 100644 --- a/application/api/model/GiveGiftBases.php +++ b/application/api/model/GiveGiftBases.php @@ -146,10 +146,10 @@ class GiveGiftBases extends Model */ public function getUserStatistics($params) { - $userId = $this->request->param('user_id/d', 0); + $userId = $params['user_id']; - $startTime = $this->request->param('start_time/d', strtotime('-30 days')); - $endTime = $this->request->param('end_time/d', time()); + $startTime = $params['start_time']; + $endTime = $params['end_time']; if (!$userId) { $this->error('用户ID不能为空'); diff --git a/application/api/model/Ranking.php b/application/api/model/Ranking.php index d08bc7a2..9f838b5f 100644 --- a/application/api/model/Ranking.php +++ b/application/api/model/Ranking.php @@ -42,59 +42,78 @@ class Ranking extends Model { $where['a.createtime'] = ['between', [$this->begin_time, $this->end_time]]; - $my_ranking = db::name('user') - ->field('user_code,avatar,nickname,id as user_id,sex') - ->where('id',$this->user_id)->find(); - - $my_ranking['total'] = 0; - $my_ranking['rank'] = -1; - $my_ranking['diff'] = 0; - - if($ranking_type == 1){//1财富榜,2魅力榜 + if($ranking_type == 1){//1财富榜 $params['start_time']=$this->begin_time; $params['end_time']=$this->end_time; $lists = model('GiveGiftBases')->getGiftRanking($params); - var_dump($lists);exit; + //把$lists 根据total倒序并只取前20名 + usort($lists, function($a, $b) { + return $b['total'] <=> $a['total']; // 按total降序排序 + }); + $lists = array_slice($lists, 0, 20); // 取前20名 + +// var_dump($lists);exit; if($lists){ foreach ($lists as $key => &$value) { - + $value['nickanme'] = db::name('user')->where('id',$value['user_id'])->value('nickname'); + $value['user_code'] = db::name('user')->where('id',$value['user_id'])->value('user_code'); + $value['avatar'] = db::name('user')->where('id',$value['user_id'])->value('avatar'); $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(); + //自己不在前20名 + if (!$my_ranking) { + //获取自己的送礼记录 + $params['user_id'] = $this->user_id; + $my_ranking_data = model('GiveGiftBases')->getUserStatistics($params); +var_dump($my_ranking_data); - $lists_last_number = $lists[count($lists) - 1]['total'] ?? 0; + $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(); - 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']);//财富图标 + $lists_last_number = $lists[count($lists) - 1]['total'] ?? 0; - $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)); + 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{ + $my_ranking = db::name('user') + ->field('user_code,avatar,nickname,id as user_id,sex') + ->where('id',$this->user_id)->find(); + + $my_ranking['total'] = 0; + $my_ranking['rank'] = -1; + $my_ranking['diff'] = 0; } - }else{ + + + + + + }else{//2魅力榜 $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')