代码初始化

This commit is contained in:
2025-08-07 20:21:47 +08:00
commit 50f3a2dbb0
2191 changed files with 374790 additions and 0 deletions

View File

@@ -0,0 +1,405 @@
<?php
namespace app\adminapi\controller;
use app\admin\model\AdminLog;
use app\common\controller\adminApi;
use think\Config;
use think\Db;
use think\Hook;
use think\Session;
use think\Validate;
/**
* 盲盒
* @internal
*/
class BlindBox extends adminApi
{
protected $noNeedLogin = [];
protected $noNeedRight = ['blind_box_type','blind_box_gifts'];
protected $table = 'vs_gift_bag_detail';
public function _initialize()
{
parent::_initialize();
}
/*
* 盲盒列表
*/
public function blind_box_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', 7);
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();
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'];
$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]['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' => [
'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);
}
/*
* 添加
*/
public function blind_box_add(){
$gift_id = input('gift_id', '');
$gift_bag_id = input('gift_bag_id', '');
$quantity = input('quantity', 0);
if(empty($gift_id)){
return V(0,"请选择礼物");
}
if(empty($gift_bag_id)){
return V(0,"请选择盲盒类型");
}
$bag_gift = db::name($this->table)->where(['foreign_id'=>$gift_id,'gift_bag_id'=>$gift_bag_id])->find();
if(!empty($bag_gift)){
return V(0,"该礼物已添加");
}
$data = [];
$gift = db::name('vs_gift')->where(['gid'=>$gift_id])->find();
if(empty($gift)){
return V(0,"礼物不存在");
}
$data['gift_bag_id'] = $gift_bag_id;
$data['foreign_id'] = $gift_id;
$data['name'] = $gift['gift_name'];
$data['type'] = 2;
$data['quantity'] = $quantity;
$data['remaining_number'] = $quantity;
$data['createtime'] = time();
$res = db::name($this->table)->insert($data);
if($res){
return V(1,"成功");
}else{
return V(0,"失败");
}
}
/*
* 礼物列表
*/
public function blind_box_gifts(){
$type = input('type', 2);
$list = db::name("vs_gift")->where(['type'=>$type,'delete_time'=>0])->order('sort','asc')->select();
$list_data = [];
foreach ($list as $k=>$v){
$list_data[$k]['gid'] = $v['gid'];
$list_data[$k]['gift_name'] = $v['gift_name'];
}
return V(1,"成功",$list_data);
}
/*
* 编辑
*/
public function blind_box_edit(){
$id = input('id', '');
$quantity = input('quantity', 0);
if(empty($id)){
return V(0,"参数错误");
}
$gift_bag = db::name($this->table)->where('id',$id)->find();
// if($gift_bag['remaining_number']>0){
// return V(0,"该礼包已开售");
// }
$data = [];
$data['quantity'] = $quantity;
$data['remaining_number'] = $quantity;
$res = db::name($this->table)->where(['id'=>$id])->update($data);
if($res){
return V(1,"成功");
}else{
return V(0,"失败");
}
}
/*
* 删除
*/
public function blind_box_del(){
$id = input('id', '');
if(empty($id)){
return V(0,"参数错误");
}
$res = db::name($this->table)->where(['id'=>$id])->delete();
if(!$res){
return V(0,"失败");
}
return V(1,"成功");
}
/*
* 重置设置
*/
public function reset_set(){
$gift_bag_id = input('gift_bag_id', 0);
if(empty($gift_bag_id)){
return V(0,"请选择盲盒类型");
}
$gift_bag_detail = db::name($this->table)->where(['gift_bag_id'=>$gift_bag_id])->select();
foreach ($gift_bag_detail as $k=>$v){
$bag_data = db::name($this->table)->where(['id'=>$v['id']])->update(['remaining_number'=>$v['quantity']]);
}
if($bag_data){
return V(1,"成功");
}else{
return V(0,"失败");
}
}
/*
* 设置规则
*/
public function set_rule(){
$gift_bag_id = input('gift_bag_id', 7);
if(empty($gift_bag_id)){
return V(0,"请选择盲盒类型");
}
$gift_id = input('gift_id', '');
$description = input('description', '');
$introd =$_POST['introd']??"";
if(empty($gift_id)){
return V(0,"请配置礼物");
}
$gift = db('vs_gift')->where('gid',$gift_id)->find();
if(empty($gift)){
return V(0,"请配置礼物");
}
$ext =[
'gift_id' => $gift_id,
'description' => $description,
'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 rule_detail(){
$gift_bag_id = input('gift_bag_id');
$gift_bag = db::name('vs_gift_bag')->where(['id'=>$gift_bag_id])->find();
$ext_data = json_decode($gift_bag['ext'],true);
$ext =[
'gift_bag_id' => $gift_bag_id,
'gift_bag_name' => $gift_bag['name'],
'gift_id' => $ext_data['gift_id'],
'description' => $ext_data['description'],
'introd' => stripcslashes($ext_data['introd']),
];
if($gift_bag){
return V(1,"成功",$ext);
}else{
return V(0,"失败");
}
}
/*
* 开奖记录
*/
public function open_record(){
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$gift_id = input('gift_id', '');
$user_id = input('user_id', '');
$room_id = input('room_id', '');
$gift_bag_id = input('gift_bag_id', '');
$periods = input('periods', '');
$stime = input('stime', '');
$etime = input('etime', '');
$where = [];
if($gift_id){
$where['gift_id'] = $gift_id;
}
if($user_id){
$user_id = db::name('user')->where('user_code', $user_id)->value('id');
$where['user_id'] = $user_id;
}
if($room_id){
$room_id = db::name('vs_room')->where('room_number', $room_id)->value('id');
$where['room_id'] = $room_id;
}
if($gift_bag_id){
$where['gift_bag_id'] = $gift_bag_id;
}
if($periods){
$where['periods'] = $periods;
}
if($stime!==""){
$where['createtime'] = ['>=', strtotime($stime)];
}
if($etime!==""){
$where['createtime'] = ['<=', strtotime($etime.'23:59:59')];
}
if($stime!=="" && $etime!==""){
$where['createtime'] = ['between', [strtotime($stime), strtotime($etime.'23:59:59')]];
}
$count = db::name('vs_gift_bag_receive_log')->where($where)->count();
$lists_data = db::name('vs_gift_bag_receive_log')->where($where)->page($page, $page_limit)->order("id desc")->select();
$lists = [];
foreach ($lists_data as $key => $value) {
$lists[$key]['id'] = $value['id'];
$lists[$key]['user_id'] = $value['user_id'];
$user = db::name('user')->where('id',$value['user_id'])->find();
$lists[$key]['user_name'] = "";
if($user){
$lists[$key]['user_name'] = $user['user_code'].'-'.$user['nickname'];
}
$lists[$key]['gift_user_id'] = $value['gift_user_id'];
$gift_user = db::name('user')->where('id',$value['gift_user_id'])->find();
$lists[$key]['gift_user_name'] = "";
if($gift_user){
$lists[$key]['gift_user_name'] = $gift_user['user_code'].'-'.$gift_user['nickname'];
}
$lists[$key]['gift_bag_type'] = db::name('vs_gift_bag')->where('id',$value['gift_bag_id'])->value('name');
$lists[$key]['periods'] = $value['periods'];
$room = db::name('vs_room')->where('id',$value['room_id'])->find();
$lists[$key]['room_name'] = "";
if($room){
$lists[$key]['room_name'] = $room['room_number']."-".$room['room_name'];
}
$lists[$key]['bag_price'] = $value['bag_price'];
$lists[$key]['gift_id'] = $value['gift_id'];
$lists[$key]['gift_name'] = db::name('vs_gift')->where('gid',$value['gift_id'])->value('gift_name');
$lists[$key]['gift_price'] = $value['gift_price'];
$lists[$key]['gift_num'] = $value['num'];
$lists[$key]['createtime'] = date('Y-m-d H:i:s',$value['createtime']);
}
//总抽奖次数
$total = $count;
//总抽奖金额(支出)
$total_money = db::name('vs_gift_bag_receive_log')->where($where)->sum('bag_price');
//总礼物价值(收入)
$total_gift_money = db::name('vs_gift_bag_receive_log')->where($where)->sum('gift_price');
//统计
if($total_gift_money==0 || $total_money==0){
$ratio = 0;
}else{
$ratio =round(($total_gift_money / $total_money),3);
}
//盈亏
$profit_loss = $total_gift_money - $total_money;
if($profit_loss==0 || $total_money==0){
$profit_loss_ratio = 0;
}else{
// 盈亏比
$profit_loss_ratio = round(($profit_loss / $total_money),3);
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $lists,
'total_data' => [
'total' => $total,
'total_money' => $total_money,
'total_gift_money' => $total_gift_money,
'ratio' => $ratio,
'profit_loss' => $profit_loss,
'profit_loss_ratio' => $profit_loss_ratio,
]
];
return V(1,"成功", $return_data);
}
/*
* 礼包列表
*/
public function blind_box_type(){
$activities_id = input('activities_id', 4);
if($activities_id == ""){
$activities_id = 4;
}
$bag_list = db::name("vs_gift_bag")->field('id,name')->where(['activities_id'=>$activities_id,'status'=>1])->select();
return V(1,"成功", $bag_list);
}
}