房间红包管理
This commit is contained in:
@@ -1685,4 +1685,176 @@ class Room extends adminApi
|
|||||||
return V(1,"成功", $result);
|
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]['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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$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['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']);
|
||||||
|
|
||||||
|
// 红包状态文字描述
|
||||||
|
$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]['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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user