仓库初始化

This commit is contained in:
2025-08-13 10:43:56 +08:00
commit e8f9b46680
5180 changed files with 859303 additions and 0 deletions

View File

@@ -0,0 +1,218 @@
<?php
namespace app\api\model;
use think\Model;
use think\Session;
use think\Db;
class UserGiftPack extends Model
{
// 开启自动写入时间戳字段
protected $autoWriteTimestamp = 'int';
// 定义时间戳字段名
protected $createTime = 'createtime';
protected $updateTime = 'updatetime';
// 初始化
//fa_vs_user_gift_pack_log type
//log_type
//系统赠送
const SYSTEM_ADJUSTMENT = 1;
//礼包获得
const GIFT_PACK_GET = 2;
//礼物赠送
const GIFT_SEND = 3;
//系统扣除
const SYSTEM_DEDUCTION = 4;
//礼物使用
const GIFT_USE = 5;
//首充获得
const FIRST_CHARGE = 6;
//天降好礼
const DRAW_GIFT = 7;
public static function init()
{
self::beforeWrite(function ($row) {
});
}
public static function TypeLable()
{
//1系统赠送2宝箱获得3个人赠送
return [
self::SYSTEM_ADJUSTMENT => '系统赠送',
self::GIFT_PACK_GET => '礼包获得',
self::GIFT_SEND => '礼物赠送',
self::SYSTEM_DEDUCTION => '系统扣除',
self::GIFT_USE => '礼物使用',
self::FIRST_CHARGE => '首充获得',
self::DRAW_GIFT => '天降好礼获得'
];
}
// 获取背包列表
public function get_gift_pack_list($uid)
{
$model = Db::name('vs_user_gift_pack')->alias('a')->join('fa_vs_gift b', 'a.gid = b.gid');
$model = $model->where(['a.user_id'=>$uid,'a.is_use_give'=>1,'a.num'=>['>',0]]);
$list = $model->field('a.num,b.gid,b.gift_name,b.base_image,b.gift_price,b.sort')->order('b.sort desc')->select();
$return_data = [];
foreach ($list as $k => $v) {
$return_data[$k]['gift_id'] = $v['gid'];
$return_data[$k]['gift_name'] = $v['gift_name'];
$return_data[$k]['base_image'] = $v['base_image'];
$return_data[$k]['gift_price'] = $v['gift_price'];
$return_data[$k]['num'] = $v['num'];
}
return ['code' => 1, 'msg' => '获取成功', 'data' => $return_data];
}
//背包收入
public function income_user_gift_pack($uid,$page=1,$page_limit=10)
{
$type = [
self::SYSTEM_ADJUSTMENT,
self::GIFT_PACK_GET,
// self::GIFT_SEND,
self::FIRST_CHARGE,
self::DRAW_GIFT
];
//获取背包日志列表
$log_model = Db::name('vs_user_gift_pack_log')->where(['user_id'=>$uid])->whereIn('type', $type)
->order('createtime desc')
->page($page, $page_limit)
->select();
if (empty($log_model)) {
return ['code' => 0, 'msg' => '没有数据', 'data' => null];
}
$list = [];
foreach ($log_model as $k => $v){
$gift_info = db::name('vs_gift')->where(['gid'=>$v['gid']])->find();
$list[$k]['remarks'] = $v['remarks'];
$list[$k]['gift_num'] = $v['change_num'];
$list[$k]['gift_name'] = "X".$v['change_num'].$gift_info['gift_name'];
$list[$k]['gift_image'] = $gift_info['play_image'];
$list[$k]['time'] = date('Y-m-d H:i:s', $v['createtime']);
}
return ['code' => 1, 'msg' => '获取成功', 'data' => $list];
}
//背包礼物支出列表
public function get_gift_pack_outcome($uid, $page = 1, $page_limit = 10)
{
$type = [
self::SYSTEM_DEDUCTION,
self::GIFT_USE,
self::GIFT_SEND
];
$log_model = Db::name('vs_user_gift_pack_log')->where(['user_id'=>$uid])->whereIn('type', $type)
->order('createtime desc')
->page($page, $page_limit)
->select();
if (empty($log_model)) {
return ['code' => 0, 'msg' => '没有数据', 'data' => null];
}
$list = [];
foreach ($log_model as $k => $v){
$gift_info = db::name('vs_gift')->where(['gid'=>$v['gid']])->find();
$list[$k]['remarks'] = $v['remarks'];
$list[$k]['gift_num'] = $v['change_num'];
$list[$k]['gift_name'] = "-".$v['change_num'].$gift_info['gift_name'];
$list[$k]['gift_image'] = $gift_info['play_image'];
$list[$k]['time'] = date('Y-m-d H:i:s', $v['createtime']);
}
return ['code' => 1, 'msg' => '获取成功', 'data' => $list];
}
//背包变更
public function change_user_gift_pack($uid, $gid, $num,$type, $remarks = '')
{
$TypeLable = $this->TypeLable();
if (!in_array($type, array_keys($TypeLable))) {
return ['code' => 0, 'msg' => 'type参数非法', 'data' => null];
}
if(empty($remarks)){
$remarks = $TypeLable[$type];
}
Db::startTrans();
try {
$user_gift_pack_info = db::name('vs_user_gift_pack')->where(['user_id' => $uid, 'gid' => $gid])->find();
if (empty($user_gift_pack_info) && $num > 0) {
$data = [];
$data['user_id'] = $uid;
$data['gid'] = $gid;
$data['total_num'] = $num;
$data['num'] = $num;
$data['createtime'] = time();
$data['updatetime'] = time();
$reslut = db::name('vs_user_gift_pack')->insert($data);
if (!$reslut) {
Db::rollback();
return ['code' => 0, 'msg' => '请重试', 'data' => null];
}
} else {
if ($num > 0) {
$reslut = db::name('vs_user_gift_pack')->where('pid', '=', $user_gift_pack_info['pid'])->setInc('total_num', $num);
if (!$reslut) {
Db::rollback();
return ['code' => 0, 'msg' => '请重试', 'data' => null];
}
$reslut = db::name('vs_user_gift_pack')->where('pid', '=', $user_gift_pack_info['pid'])->setInc('num', $num);
if (!$reslut) {
Db::rollback();
return ['code' => 0, 'msg' => '请重试', 'data' => null];
}
} elseif ($num < 0) {
if(empty($user_gift_pack_info) || $user_gift_pack_info['num'] < abs($num)){
return ['code' => 0, 'msg' => '礼物数量不足', 'data' => null];
}
$map = [];
$map = [
'pid'=>$user_gift_pack_info['pid'],
'num'=>['>=', abs($num)]
];
$reslut = db::name('vs_user_gift_pack')->where($map)->setInc('num', $num);
if (!$reslut) {
Db::rollback();
return ['code' => 0, 'msg' => '请重试', 'data' => null];
}
} else {
Db::rollback();
return ['code' => 0, 'msg' => '无效礼物数量', 'data' => null];
}
}
//写入背包日志
$log_data = [];
$log_data['user_id'] = $uid;
$log_data['gid'] = $gid;
$log_data['type'] = $type;
$log_data['change_num'] = $num;
if (empty($user_gift_pack_info)){
$log_data['after_num'] = $num;
}else {
$log_data['after_num'] = $user_gift_pack_info['num'] + $num;
}
$log_data['remarks'] = $remarks;
$log_data['createtime'] = time();
$log_data['updatetime'] = time();
$log_reslut = db::name('vs_user_gift_pack_log')->insert($log_data);
if (!$log_reslut) {
Db::rollback();
return ['code' => 0, 'msg' => '请重试', 'data' => null];
} else {
Db::commit();
return ['code' => 1, 'msg' => '修改成功', 'data' => null];
}
} catch (\Exception $e) {
// 回滚事务
Db::rollback();
return ['code' => 0, 'msg' => $e->getMessage(), 'data' => null];
}
}
}