Files
mier-php/application/api/model/UserGiftPack.php
2025-08-11 10:22:05 +08:00

114 lines
4.6 KiB
PHP

<?php
namespace app\api\model;
use think\Db;
use think\Model;
class UserGiftPack extends Model
{
public function get_gift_pack_list($uid)
{
$map = [];
$map[] = ['a.uid', '=', $uid];
$map[] = ['a.is_use_give','=',1];
$model = Db::name('user_gift_pack')->alias('a')->join('yy_gift b', 'a.gid = b.gid');
$model = $model->where($map);
$list = $model->field('a.num,b.gid,b.gift_name,b.base_image,b.gift_price,b.sort')->order('b.sort desc')->select();
foreach ($list as $k => &$v) {
$v['base_image'] = localpath_to_netpath($v['base_image']);
}
return ['code' => 200, 'msg' => '获取成功', 'data' => $list];
}
//num 可以为负数 减少对应背包礼物
public function change_user_gift_pack($uid, $gid, $num = 0, $type, $remarks = '')
{
$TypeLable = model('admin/UserGiftPackLog')->TypeLable();
if (!in_array($type, array_keys($TypeLable))) {
return ['code' => 201, 'msg' => 'type参数非法', 'data' => null];
}
Db::startTrans();
try {
if ($num != 0) {
$map = [];
$map[] = ['uid', '=', $uid];
$map[] = ['gid', '=', $gid];
$user_gift_pack_info = db::name('user_gift_pack')->where($map)->find();
$map = [];
$map[] = ['uid', '=', $uid];
$is_tester = db::name('user')->cache(10)->where($map)->value('is_tester');
if (empty($user_gift_pack_info)) {
$data = [];
$data['uid'] = $uid;
$data['gid'] = $gid;
$data['total_num'] = $num;
$data['num'] = $num;
$data['is_tester'] = $is_tester;
$data['add_time'] = time();
$data['update_time'] = time();
$reslut = db::name('user_gift_pack')->insert($data);
if (!$reslut) {
Db::rollback();
return ['code' => 201, 'msg' => '请重试', 'data' => null];
}
} else {
if ($num > 0) {
$map = [];
$map[] = ['pid', '=', $user_gift_pack_info['pid']];
$reslut = db::name('user_gift_pack')->where($map)->inc('total_num', $num)->inc('num', $num)->update(['update_time' => time()]);
if (!$reslut) {
Db::rollback();
return ['code' => 201, 'msg' => '请重试', 'data' => null];
}
} elseif ($num < 0) {
if (-$num > $user_gift_pack_info['num']) {
Db::rollback();
return ['code' => 201, 'msg' => '礼物数量不足', 'data' => null];
}
$map = [];
$map[] = ['pid', '=', $user_gift_pack_info['pid']];
$map[] = ['num', '>=', -$num];
$reslut = db::name('user_gift_pack')->where($map)->inc('num', $num)->update();
if (!$reslut) {
Db::rollback();
return ['code' => 201, 'msg' => '请重试', 'data' => null];
}
} else {
Db::rollback();
return ['code' => 201, 'msg' => '无效礼物数量', 'data' => null];
}
}
//写入背包日志
$data = [];
$data['uid'] = $uid;
$data['type'] = $type;
$data['gid'] = $gid;
$data['change_num'] = $num;
$data['after_num'] = $user_gift_pack_info['num'] + $num;
$data['is_tester'] = $is_tester;
$data['remarks'] = $remarks;
$data['add_time'] = time();
$data['update_time'] = time();
$reslut = db::name('user_gift_pack_log')->insert($data);
if (!$reslut) {
Db::rollback();
return ['code' => 201, 'msg' => '请重试', 'data' => null];
} else {
Db::commit();
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
}
}
} catch (\Exception $e) {
// 回滚事务
Db::rollback();
return ['code' => 201, 'msg' => '请重试', 'data' => null];
}
}
}