排行榜

This commit is contained in:
2026-01-09 19:08:19 +08:00
parent 4152f46504
commit e753695146
2 changed files with 57 additions and 38 deletions

View File

@@ -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不能为空');

View File

@@ -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')