From 1d20d608e17d816191308dc2b9eb3335ed525919 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E9=92=8A?= Date: Tue, 9 Sep 2025 11:14:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A1=E4=B9=90=E4=BC=9A=E6=8A=BD=E5=A5=96?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=8F=90=E4=BA=A4.-bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/model/BlindBoxTurntableGift.php | 22 ++++++++++- application/api/model/GiveGift.php | 38 ++++++++++--------- 2 files changed, 41 insertions(+), 19 deletions(-) diff --git a/application/api/model/BlindBoxTurntableGift.php b/application/api/model/BlindBoxTurntableGift.php index 0c89af8..0a50c14 100644 --- a/application/api/model/BlindBoxTurntableGift.php +++ b/application/api/model/BlindBoxTurntableGift.php @@ -83,7 +83,9 @@ class BlindBoxTurntableGift extends Model $room = db::name('vs_room')->field('id,xlh_periods,xlh_periods_num,is_open_blind_box_turntable,blind_box_turntable_periods')->where(['id'=>$room_id])->find(); //判断是否有足够的金币 $user_waller = db::name('user_wallet')->where(['user_id'=>$user_id])->find(); - if ($user_waller['coin'] < $bag_gift['gift_price'] * $num) { + //抽奖总消耗金币 + $bag_gift_price = $bag_gift['gift_price'] * $num; + if ($user_waller['coin'] < $bag_gift_price) { return ['code' => 0, 'msg' => '用户金币不足', 'data' => null]; } if ($room['is_open_blind_box_turntable'] != 1) { @@ -105,6 +107,10 @@ class BlindBoxTurntableGift extends Model return ['code' => 0, 'msg' => '添加盲盒转盘记录失败', 'data' => null]; } foreach ($toarray as $gift_user_id){ + if($user_id == $gift_user_id){ + db::rollback(); + return ['code' => 0, 'msg' => "收礼人不能包含自己", 'data' => null]; + } for($i = 0; $i < $num; $i++){ $reslut_draw_gift_data = $this->draw_gift_one($gift_bag_id, $user_id, $gift_user_id,$bag_gift['gift_price'],$room_id,$box_turntable_log); if($reslut_draw_gift_data['code'] != 1){ @@ -158,6 +164,20 @@ class BlindBoxTurntableGift extends Model return ['code' => 0, 'msg' => '添加盲盒转盘结果记录失败', 'data' => null]; } } + //扣除抽奖消耗的金币 + //扣除用户金币并记录日志 + $wallet_update = model('GiveGift')->change_user_cion_or_earnings_log($user_id,$bag_gift_price,$room_id,1,10,'盲盒转盘抽奖消耗'); + if(!$wallet_update){ + Db::rollback(); + return ['code' => 0, 'msg' => '扣除用户金币失败', 'data' => null]; + } + //用户财富等级更新 + $user_level = model('Level')->user_level_data_update($user_id,$bag_gift_price,1,$room_id); + if(!$user_level){ + Db::rollback(); + return ['code' => 0, 'msg' => '用户等级更新失败', 'data' => null]; + } + db::commit(); } catch(\Exception $e) { db::rollback(); diff --git a/application/api/model/GiveGift.php b/application/api/model/GiveGift.php index 3da2548..1aa6c3c 100644 --- a/application/api/model/GiveGift.php +++ b/application/api/model/GiveGift.php @@ -79,24 +79,26 @@ class GiveGift extends Model } //金币购买送礼 1金币购买 2送背包礼物 if ($type == 1) { - //送给所有人的总价格 - $all_gift_price = $gift_info['gift_price'] * $num * count($toarray); - //判断是否有足够的金币 - $user_waller = db::name('user_wallet')->where(['user_id'=>$uid])->find(); - if ($user_waller['coin'] < $all_gift_price) { - return ['code' => 0, 'msg' => '用户金币不足', 'data' => null]; - } - //扣除用户金币并记录日志 - $wallet_update = $this -> change_user_cion_or_earnings_log($uid,$all_gift_price,$from_id,1,10,'用户金币购买礼物'); - if(!$wallet_update){ - Db::rollback(); - return ['code' => 0, 'msg' => '扣除用户金币失败', 'data' => null]; - } - //用户财富等级更新 - $user_level = model('Level')->user_level_data_update($uid,$all_gift_price,1,$roomId); - if(!$user_level){ - Db::rollback(); - return ['code' => 0, 'msg' => '用户等级更新失败', 'data' => null]; + if(!isset($ext['is_draw_gift']) || $ext['is_draw_gift'] != 1){// 非盲盒转盘 + //送给所有人的总价格 + $all_gift_price = $gift_info['gift_price'] * $num * count($toarray); + //判断是否有足够的金币 + $user_waller = db::name('user_wallet')->where(['user_id'=>$uid])->find(); + if ($user_waller['coin'] < $all_gift_price) { + return ['code' => 0, 'msg' => '用户金币不足', 'data' => null]; + } + //扣除用户金币并记录日志 + $wallet_update = $this -> change_user_cion_or_earnings_log($uid,$all_gift_price,$from_id,1,10,'用户金币购买礼物'); + if(!$wallet_update){ + Db::rollback(); + return ['code' => 0, 'msg' => '扣除用户金币失败', 'data' => null]; + } + //用户财富等级更新 + $user_level = model('Level')->user_level_data_update($uid,$all_gift_price,1,$roomId); + if(!$user_level){ + Db::rollback(); + return ['code' => 0, 'msg' => '用户等级更新失败', 'data' => null]; + } } }else{ //背包礼物是否充足