'全时段'], [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() { $page = input('page', 1); $page_limit = input('page_limit', 20); $search_ranking = input('search_ranking', ''); $search_stime = input('search_stime', ''); $search_etime = input('search_etime', ''); $where = []; if ($search_ranking) { $where[] = ['room_name', 'like', '%' . $search_ranking . '%']; } if ($search_stime) { $where[] = ['stime', '>=', $search_stime]; } if ($search_etime) { $where[] = ['etime', '<=', $search_etime]; } $count = db::name('vs_hour_ranking')->where($where)->count(); $list = db::name('vs_hour_ranking')->where($where)->page($page, $page_limit)->order('id desc')->select(); if($list){ foreach ($list as &$v){ $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('user')->where(['id'=>$v['user_id']])->value('nickname'); } } } $return_data = [ 'page' =>$page, 'page_limit' => $page_limit, 'count' => $count, 'lists' => $list ]; return V(1,"成功", $return_data); } //房间小时榜配置 public function room_hour_ranking_config() { $list = db::name('vs_hour_ranking_config')->order('id', 'desc')->find(); return V(1,"成功", $list); } //房间小时榜配置修改 public function room_hour_ranking_config_edit() { $id = input('id'); $data['is_open_red_pack'] = 0;//暂时不开启 $data['is_public_server'] = input('is_public_server'); $data['broadcast_times'] = input('broadcast_times'); $data['is_open_xlh'] = input('is_open_xlh'); $data['min_price'] = input('min_price'); // $data['introd'] = input('introd'); $data['createtime'] = time(); $data['updatetime'] = time(); $res = db::name('vs_hour_ranking_config')->where('id', $id)->update($data); if ($res) { return V(1, "成功"); } else { return V(0, "失败"); } } //时间段对应关系 public function time_period_correspondence() { $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); } //添加核心配置 public function add_core_config() { $data['is_public_server'] = input('is_public_server'); $data['createtime'] = time(); $data['updatetime'] = time(); $res = db::name('vs_hour_ranking_config')->insert($data); } //核心配置列表 public function core_config_list() { $list = db::name('vs_hour_ranking_gift_config')->select(); $data = []; if($list){ // 获取时间段对应关系 $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, "成功", $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); } }