新需求: 盲盒转盘开发-转盘抽奖接口开发-盲盒转盘接口列表调整
This commit is contained in:
@@ -40,7 +40,8 @@ class BlindBox extends adminApi
|
||||
if(empty($gift_bag_id)){
|
||||
return V(0,"请选择盲盒类型");
|
||||
}
|
||||
$bag_list = db::name("vs_gift_bag")->field('id,name')->where(['activities_id'=>4,'status'=>1])->select();
|
||||
$bag_data = db::name("vs_gift_bag")->find($gift_bag_id);
|
||||
$bag_list = db::name("vs_gift_bag")->field('id,name')->where(['activities_id'=>$bag_data['activities_id'],'status'=>1])->select();
|
||||
foreach ($bag_list as &$v) {
|
||||
$v['default'] = $gift_bag_id == $v['id'] ? 1 : 0;
|
||||
}
|
||||
@@ -66,6 +67,7 @@ class BlindBox extends adminApi
|
||||
$lists[$key]['remaining_number'] = $value['remaining_number'];
|
||||
$lists[$key]['is_public_screen'] = $gift_data['is_public_screen'];
|
||||
$lists[$key]['is_public_server'] = $gift_data['is_public_server'];
|
||||
$lists[$key]['is_world_show'] = $value['is_world_show'];
|
||||
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
|
||||
|
||||
}
|
||||
@@ -412,5 +414,182 @@ class BlindBox extends adminApi
|
||||
$bag_list = db::name("vs_gift_bag")->field('id,name')->where(['activities_id'=>$activities_id,'status'=>1])->select();
|
||||
return V(1,"成功", $bag_list);
|
||||
}
|
||||
//--------------------------盲盒转盘与巡乐会-------------------------------------------------------
|
||||
|
||||
/*
|
||||
* 巡乐会规则详情
|
||||
*/
|
||||
public function xunlehui_rule_detail(){
|
||||
$gift_bag_id = 13;
|
||||
$gift_bag = db::name('vs_gift_bag')->where(['id'=>$gift_bag_id])->find();
|
||||
$ext_data = json_decode($gift_bag['ext'],true);
|
||||
$ext_data['introd'] = stripcslashes($ext_data['introd']);
|
||||
$bag_list = db::name("vs_gift_bag")->field('id,name')->where(['activities_id'=>5,'status'=>1])->select();
|
||||
foreach ($bag_list as &$value) {
|
||||
$value['is_default'] = 0;
|
||||
if($value['id'] == $ext_data['inlet_bag_id']){
|
||||
$value['is_default'] = 1;
|
||||
}
|
||||
}
|
||||
$ext_data['bag_list'] = $bag_list;
|
||||
if($gift_bag){
|
||||
return V(1,"成功",$ext_data);
|
||||
}else{
|
||||
return V(0,"失败");
|
||||
}
|
||||
}
|
||||
/*
|
||||
* 巡乐会规则设置
|
||||
*/
|
||||
public function xunlehui_set_rule(){
|
||||
$gift_bag_id = 13;
|
||||
$inlet_bag_id = input('inlet_bag_id', '');
|
||||
$waiting_start_num = input('waiting_start_num', '');
|
||||
$start_num = input('start_num', '');
|
||||
$selected_gift_id = input('selected_gift_id', '');
|
||||
$locking_gift_id = input('locking_gift_id', '');
|
||||
$give_homeowner_gift_id = input('give_homeowner_gift_id', '');
|
||||
$end_time = input('end_time', '');
|
||||
$tow_no_locking_time = input('tow_no_locking_time', '');
|
||||
$next_time = input('next_time', '');
|
||||
$introd =$_POST['introd']??"";
|
||||
if(empty($inlet_bag_id)){
|
||||
return V(0,"请选择巡乐会绑定入口");
|
||||
}
|
||||
$ext =[
|
||||
'inlet_bag_id' => $inlet_bag_id,
|
||||
'gift_id' => $selected_gift_id,
|
||||
'open_condition' => [
|
||||
'waiting_start_num' => $waiting_start_num,
|
||||
'start_num' => $start_num,
|
||||
],
|
||||
'locking_condition' => [
|
||||
'selected_gift_id' => $selected_gift_id,
|
||||
'locking_gift_id' => $locking_gift_id,
|
||||
'give_homeowner_gift_id' => $give_homeowner_gift_id,
|
||||
],
|
||||
'locking_time' => [
|
||||
'end_time' => $end_time,
|
||||
'tow_no_locking_time' => $tow_no_locking_time,
|
||||
'next_time' => $next_time,
|
||||
],
|
||||
'introd' => $introd,
|
||||
];
|
||||
$ext = json_encode($ext);
|
||||
$res = db::name('vs_gift_bag')->where(['id'=>$gift_bag_id])->update(['ext'=>$ext]);
|
||||
if($res){
|
||||
return V(1,"成功");
|
||||
}else{
|
||||
return V(0,"失败");
|
||||
}
|
||||
}
|
||||
/*
|
||||
* 盲盒转盘统计
|
||||
*
|
||||
*/
|
||||
public function blind_box_turntable_lists(){
|
||||
$page = input('page', 1);
|
||||
$page_limit = input('page_limit', 30);
|
||||
$gift_id = input('gift_id', '');
|
||||
$gift_name = input('gift_name', '');
|
||||
$gift_bag_id = input('gift_bag_id', 10);
|
||||
$room_id = input('room_id', '');
|
||||
if(empty($gift_bag_id)){
|
||||
return V(0,"请选择盲盒类型");
|
||||
}
|
||||
$room = db::name('vs_room')->where(['id'=>$room_id])->find();
|
||||
if(empty($room)){
|
||||
return V(0,"房间不存在");
|
||||
}
|
||||
if($room['is_open_blind_box_turntable'] !=1){
|
||||
return V(0,"该房间未开启盲盒转盘");
|
||||
}
|
||||
$bag_data = db::name("vs_gift_bag")->find($gift_bag_id);
|
||||
$bag_list = db::name("vs_gift_bag")->field('id,name')->where(['activities_id'=>$bag_data['activities_id'],'status'=>1])->select();
|
||||
foreach ($bag_list as &$v) {
|
||||
$v['default'] = $gift_bag_id == $v['id'] ? 1 : 0;
|
||||
}
|
||||
$where=[];
|
||||
$where['gift_bag_id'] = $gift_bag_id;
|
||||
if($gift_id!==''){
|
||||
$where['foreign_id'] =$gift_id;
|
||||
}
|
||||
if($gift_name!==''){
|
||||
$where['name'] = ['like', '%'.$gift_name.'%'];
|
||||
}
|
||||
$count = db::name($this->table)->where($where)->count();
|
||||
$lists_data = db::name($this->table)->where($where)->page($page, $page_limit)->order("id desc")->select();
|
||||
$lists = [];
|
||||
foreach ($lists_data as $key => $value) {
|
||||
$lists[$key]['id'] = $value['id'];
|
||||
$lists[$key]['gift_id'] = $value['foreign_id'];
|
||||
$lists[$key]['gift_name'] = $value['name'];
|
||||
$gift_data = db::name('vs_gift')->where(['gid'=>$value['foreign_id']])->find();
|
||||
$lists[$key]['base_image'] = $gift_data['base_image'];
|
||||
$lists[$key]['gift_price'] = $gift_data['gift_price'];
|
||||
$lists[$key]['quantity'] = $value['quantity'];
|
||||
$room_pan = db::name('vs_room_pan')->where(['room_id'=>$room_id,'gift_bag_detail_id'=>$value['id']])->find();
|
||||
$lists[$key]['remaining_number'] = $room_pan['remaining_number'] ?? 0;
|
||||
$lists[$key]['is_public_screen'] = $gift_data['is_public_screen'];
|
||||
$lists[$key]['is_public_server'] = $gift_data['is_public_server'];
|
||||
$lists[$key]['is_world_show'] = $value['is_world_show'];
|
||||
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
|
||||
}
|
||||
//统计
|
||||
$total_data = [];
|
||||
//每期总次数
|
||||
$total_count = db::name($this->table)->where(['gift_bag_id'=>$gift_bag_id])->sum('quantity');
|
||||
//每期总礼物价值
|
||||
$total_price_data = db::name($this->table)->alias('a')
|
||||
->field('a.quantity,b.gift_price,b.gift_price * a.quantity as total_price')
|
||||
->join('vs_gift b','a.foreign_id = b.gid')
|
||||
->where(['a.gift_bag_id'=>$gift_bag_id])
|
||||
->select();
|
||||
$total_price = array_sum(array_column($total_price_data,'total_price'));
|
||||
//每期总抽奖花费(支出)
|
||||
$bag_data = db::name("vs_gift_bag")->field('id,name,ext')->where(['id'=>$gift_bag_id])->find();
|
||||
$ext = json_decode($bag_data['ext'],true);
|
||||
$c_gift_id = $ext['gift_id'];
|
||||
$c_gift_data = db::name('vs_gift')->where(['gid'=>$c_gift_id])->find();
|
||||
$gift_price = $c_gift_data['gift_price']??0;
|
||||
$total_cost = $total_count * $gift_price;
|
||||
//每期统计(收入/支出)
|
||||
if($total_cost==0 || $total_price==0){
|
||||
$profit_loss_ratio = 0;
|
||||
}else{
|
||||
$profit_loss_ratio =round(($total_price / $total_cost ),2);
|
||||
}
|
||||
//今天抽奖人数
|
||||
$today_count_user = db::name('vs_gift_bag_receive_log')
|
||||
->where(['gift_bag_id'=>$gift_bag_id,'createtime'=>['between',[strtotime(date('Y-m-d')),time()]]])
|
||||
->group('user_id')
|
||||
->count();
|
||||
//今日抽奖总次数
|
||||
$today_total_count = db::name('vs_gift_bag_receive_log')
|
||||
->where(['gift_bag_id'=>$gift_bag_id,'createtime'=>['between',[strtotime(date('Y-m-d')),time()]]])
|
||||
->count();
|
||||
//今日抽奖收入
|
||||
$today_total_price = db::name('vs_gift_bag_receive_log')
|
||||
->where(['gift_bag_id'=>$gift_bag_id,'createtime'=>['between',[strtotime(date('Y-m-d')),time()]]])
|
||||
->sum('bag_price');
|
||||
$return_data = [
|
||||
'page' =>$page,
|
||||
'page_limit' => $page_limit,
|
||||
'count' => $count,
|
||||
'lists' => $lists,
|
||||
'bag_list' => $bag_list,
|
||||
'total_data' => [
|
||||
'blind_box_turntable_periods' => $room['blind_box_turntable_periods']??'0', //当前期数
|
||||
'remaining_number' => db::name('vs_room_pan')->where(['room_id'=>$room_id,'gift_bag_id'=>$gift_bag_id])->sum('remaining_number')??'0',
|
||||
'total_count' => $total_count,
|
||||
'total_price' => $total_price,
|
||||
'total_cost' => $total_cost,
|
||||
'profit_loss_ratio' => $profit_loss_ratio,
|
||||
'today_count_user' => $today_count_user,
|
||||
'today_total_count' => $today_total_count,
|
||||
'today_total_price' => $today_total_price,
|
||||
]
|
||||
];
|
||||
return V(1,"成功", $return_data);
|
||||
}
|
||||
}
|
||||
@@ -469,6 +469,7 @@ class Room extends adminApi
|
||||
$lists[$key]['room_status_str'] = model('Room')->room_status[$value['room_status']];
|
||||
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
|
||||
$lists[$key]['is_robot_num'] = $value['robot_num']==0 ? 1 : 2;
|
||||
$lists[$key]['is_open_blind_box_turntable_str'] = $value['is_open_blind_box_turntable'] == 1 ? '是' : '否';
|
||||
}
|
||||
$return_data = [
|
||||
'page' =>$page,
|
||||
@@ -843,7 +844,16 @@ class Room extends adminApi
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$is_open_blind_box_turntable = input('is_open_blind_box_turntable', '');//是否开启盲盒转盘:0 否 1是
|
||||
if($is_open_blind_box_turntable !== ""){
|
||||
$data['is_open_blind_box_turntable'] = $is_open_blind_box_turntable;
|
||||
if($is_open_blind_box_turntable == 1){
|
||||
$room_data = db::name('vs_room')->find($room_id);
|
||||
if($room_data['is_open_blind_box_turntable'] == 0){
|
||||
model('Room')->bindPan($room_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
$res = db::name('vs_room')->where('id',$room_id)->update($data);
|
||||
if($res){
|
||||
return V(1,"成功");
|
||||
|
||||
@@ -88,6 +88,24 @@ class Room extends Model
|
||||
return $total_price;
|
||||
}
|
||||
|
||||
/*
|
||||
* 房间绑定盘
|
||||
*/
|
||||
public function bindPan($room_id){
|
||||
db::name('vs_room_pan')->where(['room_id'=>$room_id])->delete();
|
||||
$gift_bag = db::name('vs_gift_bag_detail')->where(['gift_bag_id'=>['in',[10,11,12,13]]])->select();
|
||||
foreach ($gift_bag as $k=>$v){
|
||||
$data = [
|
||||
'room_id'=>$room_id,
|
||||
'gift_bag_id'=>$v['gift_bag_id'],
|
||||
'gift_bag_detail_id'=>$v['id'],
|
||||
'remaining_number'=>$v['quantity'],
|
||||
'createtime'=>time()
|
||||
];
|
||||
db::name('vs_room_pan')->insert($data);
|
||||
}
|
||||
return ['code' => 1, 'msg' => '成功', 'data' => null];
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user