223 lines
8.3 KiB
PHP
223 lines
8.3 KiB
PHP
<?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;
|
|
//巡乐会抽奖所得
|
|
const XLH_DRAW_GIFT_GET = 8;
|
|
|
|
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 => '天降好礼获得',
|
|
self::XLH_DRAW_GIFT_GET => '巡乐会抽奖所得'
|
|
];
|
|
}
|
|
|
|
// 获取背包列表
|
|
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,
|
|
self::XLH_DRAW_GIFT_GET
|
|
];
|
|
//获取背包日志列表
|
|
$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];
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|