From 1623277e26c67a01a58e0ea6211deb111c5ed875 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Tue, 13 Jan 2026 17:13:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=95=E4=BA=BA=E9=80=81=E7=A4=BC=20?= =?UTF-8?q?=E7=9B=B4=E6=8F=92=E6=95=B0=E6=8D=AE=E5=BA=93=EF=BC=8C=E5=A4=9A?= =?UTF-8?q?=E4=BA=BA=E9=80=81=E7=A4=BC=E9=98=9F=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/model/SendGift.php | 124 ++++++++++++++++++++++++++++- 1 file changed, 120 insertions(+), 4 deletions(-) diff --git a/application/api/model/SendGift.php b/application/api/model/SendGift.php index 755a5efb..a65ce78f 100644 --- a/application/api/model/SendGift.php +++ b/application/api/model/SendGift.php @@ -5,6 +5,7 @@ namespace app\api\model; use app\common\controller\Push; use app\common\library\GiftQueue; use app\common\library\Snowflake; +use app\common\model\GiveGiftBase; use think\Log; use think\Model; use think\Db; @@ -899,7 +900,7 @@ class SendGift extends Model if($gift_box){ foreach ($gift_box as $i => $v){ //记录一下收礼记录 - $give_gift = $this -> change_user_give_gift_log($uid,$v['gift_id'],$v['gift_price'],1,$to_uid,2,$type,$room_id,'',0,2); + $give_gift = $this -> change_user_give_gift_logs($uid,$v['gift_id'],$v['gift_price'],1,$to_uid,2,$type,$room_id,'',0,2); if(!$give_gift){ Db::rollback(); return ['code' => 0, 'msg' => '送礼失败,请重试!!', 'data' => null]; @@ -908,7 +909,7 @@ class SendGift extends Model } }else{ //收礼记录行为日志 - $give_gift = $this -> change_user_give_gift_log($uid,$gid,$gift_price,$num,$to_uid,2,$type,$room_id,''); + $give_gift = $this -> change_user_give_gift_logs($uid,$gid,$gift_price,$num,$to_uid,2,$type,$room_id,''); if(!$give_gift){ Db::rollback(); return ['code' => 0, 'msg' => '送礼失败,请重试!', 'data' => null]; @@ -1414,8 +1415,7 @@ class SendGift extends Model } - - //记录用户送礼日志 + //记录用户送礼日志(送单人) public function change_user_give_gift_log($uid,$gid,$gift_price,$num,$to_id,$from_type,$type,$from_id,$remarks,$pit_number = 0,$gitf_type =1) { $data = [ @@ -1434,6 +1434,122 @@ class SendGift extends Model 'createtime' => time(), ]; + // 插入数据库 + $model = new GiveGiftBase(); + $result = $model->addGiftRecord($data); + if($result !== false){ + //记录小时榜 + model('api/RoomHourRanking')->addGiftHourlySum($from_id,$gift_price); + + //记录房间流水 ($roomId, $amount) + model('api/RoomDailyIncome')->addDailyIncome($from_id,$gift_price); + + //收礼人认证歌手等级升级 + model('api/SingerSong')->singerLevelUp($to_id,$gift_price); + + //收礼人身价计算 这里的增长身价是收礼物的价值按比率产生的身价值 身价=收礼产生的身价+签约时的溢价 + $coin_market_value = get_system_config_value('coin_market_value'); + if(!$coin_market_value){ + $coin_market_value = '100,1'; + } + $coin_market_values = explode(',', $coin_market_value); + $change_value = ceil($gift_price / ($coin_market_values[0] ?? 100) * ($coin_market_values[1] ?? 1)); + model('api/MarketValue')->change($to_id,$change_value,0); + + //收礼人是否被签约 给上级返佣 + model('api/Sign')->check_sign_gift($to_id,$gid,$num,$gift_price,$from_id); + + //记录公会流水 + if($from_id > 0){ + model('api/Guild')->guild_flow($from_id,$gift_price,$data['id']); + } + + //查询是否第一次送礼 + $is_first_gift = db::name('user_data')->where(['user_id'=>$uid])->value('first_give_gift'); + if($is_first_gift == 0){ + //任务:7-第一次送礼 + model('api/Tasks')->tasks_complete($uid,7); + db::name('user_data')->where(['user_id'=>$uid])->update(['first_give_gift'=>1]); + } + //查询是否第一次收礼 + $is_first_receive_gift = db::name('user_data')->where(['user_id'=>$uid])->value('first_receive_gift'); + if($is_first_receive_gift == 0){ + //任务:8-第一次收礼 + model('api/Tasks')->tasks_complete($to_id,8); + db::name('user_data')->where(['user_id'=>$uid])->update(['first_receive_gift'=>1]); + } + + //查询收礼人和送礼人的师徒关系 + //获取系统配置的特殊礼物 + $special_gift = explode(',',get_system_config_value('master_special_gift')); + //收礼人是否是送礼人的师父 + $is_master = db::name('vs_user_sign')->where(['parent_user_id'=>$to_id,'sign_user_id'=>$uid,'end_time' => ['>=',time()]])->find(); + if($is_master){ + if(in_array($gid,$special_gift)){ + //任务:14-每日给师傅送一个特定的礼物 + model('api/Tasks')->tasks_complete($uid,14); + //查询今天是否送过礼物了 + $is_today_gift = db::name('vs_give_gift') + ->where(['user_id'=>$uid,'gift_user'=>$to_id,'createtime' => ['>=',strtotime(date('Y-m-d'))],'gift_id' => ['in',$special_gift]])->count(); + if($is_today_gift <= 1){ + //任务:13-每日收到至少3个徒弟的特殊徐礼物 + model('api/Tasks')->tasks_complete($to_id,13); + } + } + } + //收礼人是否是送礼人的徒弟 + $is_student = db::name('vs_user_sign')->where(['parent_user_id'=>$uid,'sign_user_id'=>$to_id,'end_time' => ['>=',time()]])->find(); + if($is_student){ + if(in_array($gid,$special_gift)){ + //查询徒弟是否是首签的徒弟 sign_user_type:被签用户的类型:0-首次被签,1-签约过期,2-违约签 + $is_students = db::name('vs_user_sign') + ->where(['parent_user_id' => $uid,'sign_user_id' => $to_id,'sign_user_type' => 0,'end_time' => ['>',time()]])->value('id'); + if($is_students){ + //获取房间的类型 + $room_type = db::name('vs_room')->where(['id' => $from_id])->value('type_id'); + if($room_type == 2){ + //任务:21-邀请徒弟在拍卖房停留(0/5)分钟,并送给徒弟(0/1 ,特殊礼物) + model('api/Tasks')->tasks_complete($uid,21,2,$to_id); + } + if($room_type == 9){ + //任务:22-邀请徒弟在点唱房点歌(0/1)首,并送给徒弟(0/1 ,特殊礼物) + model('api/Tasks')->tasks_complete($uid,22,2,$to_id); + } + if($room_type == 7) { + //任务:23-邀请徒弟在交友房停留(0/5)分钟,并送给徒弟(0/1 ,特殊礼物) + model('api/Tasks')->tasks_complete($uid, 23, 2,$to_id); + } + } + } + } + + return $data['id']; + }else{ + return false; + } + + } + + + //记录用户送礼日志 (送多人) + public function change_user_give_gift_logs($uid,$gid,$gift_price,$num,$to_id,$from_type,$type,$from_id,$remarks,$pit_number = 0,$gitf_type =1) + { + $data = [ + 'id' => Snowflake::generate(),// 生成雪花ID + 'user_id' => $uid, + 'gift_id' => $gid, + 'gift_type' => $gitf_type, + 'number' => $num, + 'gift_user' => $to_id, + 'pit_number' => $pit_number, + 'from_id' => $from_id,//来源ID,(房间ID或动态ID) + 'total_price' => $gift_price, + 'from' => $from_type,//1聊天送礼物 2房间语聊送礼 3直播送礼 4动态打赏 6Cp电影房 + 'type' => $type,//1金币购买 2送背包礼物 + 'remarks' => $remarks??'', + 'createtime' => time(), + ]; + GiftQueue::push($data);//推入队列 //记录小时榜 model('api/RoomHourRanking')->addGiftHourlySum($from_id,$gift_price);