小时榜礼物配置

This commit is contained in:
2025-09-30 14:36:47 +08:00
parent ddb22e9556
commit 2a508ce4d4
4 changed files with 185 additions and 76 deletions

View File

@@ -6,6 +6,36 @@ use think\Db;
class RoomHourRanking
{
public static function withdraw_status (){
return [
[25 => '全时段'],
[0 => '00:00-01:00'],
[1 => '01:00-02:00'],
[2 => '02:00-03:00'],
[3 => '03:00-04:00'],
[4 => '04:00-05:00'],
[5 => '05:00-06:00'],
[6 => '06:00-07:00'],
[7 => '07:00-08:00'],
[8 => '08:00-09:00'],
[9 => '09:00-10:00'],
[10 => '10:00-11:00'],
[11 => '11:00-12:00'],
[12 => '12:00-13:00'],
[13 => '13:00-14:00'],
[14 => '14:00-15:00'],
[15 => '15:00-16:00'],
[16 => '16:00-17:00'],
[17 => '17:00-18:00'],
[18 => '18:00-19:00'],
[19 => '19:00-20:00'],
[20 => '20:00-21:00'],
[21 => '21:00-22:00'],
[22 => '22:00-23:00'],
[23 => '23:00-00:00'],
];
}
//房间小时榜列表
public function room_hour_ranking()
@@ -32,7 +62,7 @@ class RoomHourRanking
$v['room_name'] = db::name('vs_room')->where(['id'=>$v['room_id']])->value('room_name');
$v['user_id'] = db::name('vs_room')->where(['id'=>$v['room_id']])->value('user_id');
if($v['user_id']){
$v['nickname'] = db::name('vs_user')->where(['id'=>$v['user_id']])->value('nickname');
$v['nickname'] = db::name('user')->where(['id'=>$v['user_id']])->value('nickname');
}
}
@@ -77,34 +107,15 @@ class RoomHourRanking
//时间段对应关系
public function time_period_correspondence()
{
$list = [
[25 => '全时段'],
[0 => '00:00-01:00'],
[1 => '01:00-02:00'],
[2 => '02:00-03:00'],
[3 => '03:00-04:00'],
[4 => '04:00-05:00'],
[5 => '05:00-06:00'],
[6 => '06:00-07:00'],
[7 => '07:00-08:00'],
[8 => '08:00-09:00'],
[9 => '09:00-10:00'],
[10 => '10:00-11:00'],
[11 => '11:00-12:00'],
[12 => '12:00-13:00'],
[13 => '13:00-14:00'],
[14 => '14:00-15:00'],
[15 => '15:00-16:00'],
[16 => '16:00-17:00'],
[17 => '17:00-18:00'],
[18 => '18:00-19:00'],
[19 => '19:00-20:00'],
[20 => '20:00-21:00'],
[21 => '21:00-22:00'],
[22 => '22:00-23:00'],
[23 => '23:00-00:00'],
];
return V(1,"成功", $list);
$list = $this->withdraw_status();
$timePeriods = $this->withdraw_status();
$timeMap = [];
foreach($timePeriods as $period) {
foreach($period as $key => $value) {
$timeMap[$key] = $value;
}
}
return V(1,"成功", $timeMap);
}
@@ -122,24 +133,118 @@ class RoomHourRanking
//核心配置列表
public function core_config_list()
{
$list = db::name('vs_hour_ranking_gift_config')
->group('time_id')
->select();
var_dump($list);
$list = db::name('vs_hour_ranking_gift_config')->select();
$data = [];
if($list){
$lis = $this->time_period_correspondence()['data'];
foreach ($list as $k => $v){
$list[$k]['time_id'] = $lis[$v['time_id']] ;
$list[$k]['time_id']['index'] = $k + 1;
$list[$k]['time_id']['content'] = $k + 1;
// 获取时间段对应关系
$timePeriods = $this->withdraw_status();
$timeMap = [];
foreach($timePeriods as $period) {
foreach($period as $key => $value) {
$timeMap[$key] = $value;
}
}
// 按时间段和排名分组数据
$groupedData = [];
foreach ($list as $item) {
$timeId = $item['time_id'];
$ranking = $item['ranking'];
if (!isset($groupedData[$timeId])) {
$groupedData[$timeId] = [];
}
if (!isset($groupedData[$timeId][$ranking])) {
$groupedData[$timeId][$ranking] = [];
}
// 根据礼物类型确定值
if($item['gift_type'] == 1) {
$value = $item['coin'];
} else {
$value = $item['gift_id'];
}
$groupedData[$timeId][$ranking][] = [
'type' => $item['gift_type'],
'value' => $value
];
}
// 构建最终数据结构
foreach ($groupedData as $timeId => $rankings) {
$timeKey = $timeMap[$timeId] ?? "未知时间段";
$data[$timeKey] = [];
// 按排名排序
ksort($rankings);
foreach ($rankings as $ranking => $contents) {
$data[$timeKey][] = [
'index' => $ranking,
'content' => $contents
];
}
}
}
return V(1,"成功", $list);
return V(1, "成功", $data);
}
public function core_config_lists()
{
$list = db::name('vs_hour_ranking_gift_config')->select();
$data = [];
// 按 time_id 和 ranking 重组数据
$reorganizedData = [];
$timePeriods = $this->withdraw_status();
// 构建正确的时间映射关系
$timeMap = [];
foreach($timePeriods as $period) {
foreach($period as $key => $value) {
$timeMap[$key] = $value;
}
}
foreach ($list as $item) {
// $timeId = $item['time_id'];
$timeId = $timeMap[$item['time_id']] ?? '未知时间段';
$ranking = $item['ranking'];
if (!isset($reorganizedData[$timeId])) {
$reorganizedData[$timeId] = [];
}
if (!isset($reorganizedData[$timeId][$ranking])) {
$reorganizedData[$timeId][$ranking] = [];
}
if($item['gift_id']){
if($item['gift_type'] == 2){
$gift_name = db::name('vs_gift')->where(['gid'=>$item['gift_id']])->value('gift_name');
}
if($item['gift_type'] == 3 || $item['gift_type'] == 4){
$gift_name = db::name('vs_decorate')->where(['did'=>$item['gift_id']])->value('title');
}
}else{
$gift_name = '';
}
$reorganizedData[$timeId][$ranking][] = [
'gift_type' => $item['gift_type'],
'gift_id' => $item['gift_id'],
'gift_name' => $gift_name,
'coin' => $item['coin']
];
}
// 输出重组后的数据
print_r($reorganizedData);
return V(1, "成功", $data);
}
}