diff --git a/application/adminapi/controller/Room.php b/application/adminapi/controller/Room.php index 4070ab1..b511fd6 100644 --- a/application/adminapi/controller/Room.php +++ b/application/adminapi/controller/Room.php @@ -1685,4 +1685,183 @@ class Room extends adminApi return V(1,"成功", $result); } + // 房间红包列表 + public function room_redpacket_list(){ + $page = input('page', 1); + $page_limit = input('page_limit', 30); + $room_id = input('room_id', ''); + //红包状态 + $status = input('status', ''); + //发红包的时间 + $stime = input('stime', ''); + $etime = input('etime', ''); + $where = []; + if($room_id){ + $where['room_id'] = $room_id; + } + if($status){ + $where['status'] = $status; + } + if($stime){ + $where['createtime'] = ['>=',strtotime($stime)]; + } + if($etime){ + $where['createtime'] = ['<=',strtotime($etime)]; + } + $count = db::name("redpacket")->where($where)->count(); + $room_redpacket_lists = db::name("redpacket")->where($where)->page($page, $page_limit)->order('id desc')->select(); + //循环数据 获取发红的昵称和头像 时间格式化 状态:0=未开始,1=进行中,2=已结束,3=已退回' 币种(coin_type):1=金币,2=钻石',红包类型(type):1=普通红包,2=口令红包' + //多选条件(逗号分隔存值)(conditions) 0=无,1=收藏,2=在麦上 + if($room_redpacket_lists){ + foreach ($room_redpacket_lists as $key => $value){ + $room_redpacket_lists[$key]['nickname'] = db::name('user')->where(['id'=>$value['user_id']])->value('nickname'); + $room_redpacket_lists[$key]['avatar'] = db::name('user')->where(['id'=>$value['user_id']])->value('avatar'); + $room_redpacket_lists[$key]['user_code'] = db::name('user')->where(['id'=>$value['user_id']])->value('user_code'); + $room_redpacket_lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']); + $room_redpacket_lists[$key]['status_text'] = $value['status'] == 0 ? '未开始' : ($value['status'] == 1 ? '进行中' : ($value['status'] == 2 ? '已结束' : '已退回')); + $room_redpacket_lists[$key]['coin_type_text'] = $value['coin_type'] == 1 ? '金币' : ($value['coin_type'] == 2 ? '钻石' : '未知'); + $room_redpacket_lists[$key]['type_text'] = $value['type'] == 1 ? '普通红包' : ($value['type'] == 2 ? '口令红包' : '未知'); + + // 多选条件处理:0=无(不能和其他条件共存),1=收藏,2=在麦上 + // 可以同时存在,也可以单独存在,同时存在时用逗号分隔 + $conditions = explode(',',$value['conditions']); + // 过滤掉空值元素 + $conditions = array_filter($conditions, function($item) { + return $item !== '' && $item !== null; + }); + // 去除重复的条件 + $conditions = array_unique($conditions); + // 重新索引数组,确保索引连续 + $conditions = array_values($conditions); + + // 特殊处理:如果包含条件0(无条件),则只保留这一项 + if (in_array('0', $conditions)) { + $room_redpacket_lists[$key]['conditions'] = ['无条件']; + } else { + // 将数字条件转换为对应的中文描述 + $conditions_text = array_map(function($item){ + // 0=无条件,1=收藏,2=在麦上 + switch($item) { + case '0': + return '无条件'; + case '1': + return '收藏'; + case '2': + return '在麦上'; + default: + return '未知'; + } + }, $conditions); + $room_redpacket_lists[$key]['conditions'] = $conditions_text; + } + //房间名称 + $room_redpacket_lists[$key]['room_name'] = db::name('vs_room')->where(['id'=>$value['room_id']])->value('room_name'); + } + } + + $return_data = [ + 'page' =>$page, + 'page_limit' => $page_limit, + 'count' => $count, + 'lists' => $room_redpacket_lists + ]; + return V(1,"成功", $return_data); + } + + // 获取房间红包详情 + public function room_redpacket_detail(){ + // 红包ID + $redpacket_id = input('redpacket_id', ''); + if(empty($redpacket_id)){ + return V(0, "红包ID不能为空"); + } + + // 获取红包基本信息 + $redpacket_info = db::name("redpacket")->where(['id'=>$redpacket_id])->find(); + if(!$redpacket_info){ + return V(0, "红包不存在"); + } + + // 获取发红包用户信息 + $redpacket_info['nickname'] = db::name('user')->where(['id'=>$redpacket_info['user_id']])->value('nickname'); + $redpacket_info['avatar'] = db::name('user')->where(['id'=>$redpacket_info['user_id']])->value('avatar'); + $redpacket_info['user_code'] = db::name('user')->where(['id'=>$redpacket_info['user_id']])->value('user_code'); + $redpacket_info['createtime_text'] = date('Y-m-d H:i:s', $redpacket_info['createtime']); + $redpacket_info['start_time_text'] = date('Y-m-d H:i:s', $redpacket_info['start_time']); + $redpacket_info['end_time_text'] = date('Y-m-d H:i:s', $redpacket_info['end_time']); + //房间名称 + $redpacket_info['room_name'] = db::name('vs_room')->where(['id'=>$redpacket_info['room_id']])->value('room_name'); + + // 红包状态文字描述 + $status_map = [ + 0 => '未开始', + 1 => '进行中', + 2 => '已结束', + 3 => '已退回' + ]; + $redpacket_info['status_text'] = $status_map[$redpacket_info['status']] ?? '未知'; + + // 币种文字描述 + $coin_type_map = [ + 1 => '金币', + 2 => '钻石' + ]; + $redpacket_info['coin_type_text'] = $coin_type_map[$redpacket_info['coin_type']] ?? '未知'; + + // 红包类型文字描述 + $type_map = [ + 1 => '普通红包', + 2 => '口令红包' + ]; + $redpacket_info['type_text'] = $type_map[$redpacket_info['type']] ?? '未知'; + + // 领取条件处理 + $conditions = explode(',',$redpacket_info['conditions']); + $conditions = array_filter($conditions, function($item) { + return $item !== '' && $item !== null; + }); + $conditions = array_unique($conditions); + $conditions = array_values($conditions); + + // 特殊处理:如果包含条件0(无条件),则只保留这一项 + if (in_array('0', $conditions)) { + $redpacket_info['conditions_text'] = ['无条件']; + } else { + // 将数字条件转换为对应的中文描述 + $conditions_text = array_map(function($item){ + switch($item) { + case '0': + return '无条件'; + case '1': + return '收藏'; + case '2': + return '在麦上'; + default: + return '未知'; + } + }, $conditions); + $redpacket_info['conditions_text'] = $conditions_text; + } + + // 领取详情 redpacket_record 表里面的数据 + // 外键redpacket_id redpacket表的ID,user_id 外键user表的ID amount 抢到的金额 createtime抢红包的时间 + // 红包领取详情 谁在什么时候 抢红包 抢了多少钱 + $redpacket_record_lists = db::name("redpacket_record")->where(['redpacket_id'=>$redpacket_id])->order('createtime asc')->select(); + if($redpacket_record_lists){ + foreach ($redpacket_record_lists as $key => $value){ + $redpacket_record_lists[$key]['nickname'] = db::name('user')->where(['id'=>$value['user_id']])->value('nickname'); + $redpacket_record_lists[$key]['avatar'] = db::name('user')->where(['id'=>$value['user_id']])->value('avatar'); + $redpacket_record_lists[$key]['user_code'] = db::name('user')->where(['id'=>$value['user_id']])->value('user_code'); + $redpacket_record_lists[$key]['createtime_text'] = date('Y-m-d H:i:s', $value['createtime']); + } + } + + $return_data = [ + 'redpacket_info' => $redpacket_info, + 'record_lists' => $redpacket_record_lists + ]; + + return V(1, "成功", $return_data); + } + } \ No newline at end of file