diff --git a/application/api/controller/SendGift.php b/application/api/controller/SendGift.php index fe9deb52..7d6a2b19 100644 --- a/application/api/controller/SendGift.php +++ b/application/api/controller/SendGift.php @@ -28,11 +28,17 @@ class SendGift extends BaseCom $pool_gift_id = db::name('bb_lottery_config')->where(['key' => 'pool_gift_id'])->value('value'); if($gift_id == $pool_gift_id){//送的是幸运币 $reslut = model('Lottery')->gift($this->uid, $to_uid, $gift_id, $room_id,$gift_num); + redis_unlocks($key_name); + return V($reslut['code'], $reslut['msg'], $reslut['data']); }else{ - //获取房间类型 + //获取房间类型 1:交友/pk(二卡八),2:练歌房(声网点歌),3:亲密拍,4:真爱拍,6:私密房,7:互娱房,9:点唱/歌手房,10:签约房,11:酒吧房 $room_type = model('Room')->get_room_type($room_id); + + //送礼 + $reslut = model('SendGift')->give_gift($this->uid, $to_uid, $gift_id, $gift_num,2,$type, $room_id,$pit_number,0,); if($room_type == 1){ - $reslut = model('GiveGift')->give_gift($this->uid, $to_uid, $gift_id, $gift_num,2,$type, $room_id,$pit_number,0,$give_gift_ext); + redis_unlocks($key_name); + return V($reslut['code'], $reslut['msg'], $reslut['data']); }elseif ($room_type == 2){ $reslut = model('GiveGift')->give_gift($this->uid, $to_uid, $gift_id, $gift_num,2,$type, $room_id,$pit_number,0,$give_gift_ext); if($reslut['code'] == 1){ @@ -46,11 +52,13 @@ class SendGift extends BaseCom model('Chat')->sendMsg(1019,$room_id,$text);//K歌房送礼后魅力变化 排序变化 } } + redis_unlocks($key_name); + return V($reslut['code'], $reslut['msg'], $reslut['data']); + }else{ + redis_unlocks($key_name); + return V(1, '送礼成功'); } - $reslut = model('Room')->room_gift($this->uid, $to_uid, $gift_id, $gift_num, $type, $room_id, $pit_number,$heart_id); - } - redis_unlocks($key_name); - return V($reslut['code'], $reslut['msg'], $reslut['data']); + } } } \ No newline at end of file diff --git a/application/api/model/Room.php b/application/api/model/Room.php index 0aa50c07..0e3c6c55 100644 --- a/application/api/model/Room.php +++ b/application/api/model/Room.php @@ -1024,7 +1024,7 @@ class Room extends Model //房间类型整合 /* - * return 1:交友/pk(二卡八),2:练歌房(声网点歌),3:亲密拍,4:真爱拍,6:私密房,7:互娱房,9:点唱/歌手房,10:签约房 + * return 1:交友/pk(二卡八),2:练歌房(声网点歌),3:亲密拍,4:真爱拍,6:私密房,7:互娱房,9:点唱/歌手房,10:签约房,11:酒吧房 */ public function get_room_type($room_id){ $room_info = db::name('vs_room')->where('id', $room_id)->field('type_id,label_id')->find(); diff --git a/application/api/model/SendGift.php b/application/api/model/SendGift.php new file mode 100644 index 00000000..3b3a6782 --- /dev/null +++ b/application/api/model/SendGift.php @@ -0,0 +1,567 @@ +give_gift_to_pan($uid, $to_uid, $gid, $num, $from_type, $type, $from_id, $pit_number, $change_type, $ext); + } + //送的礼物信息 + $gift_info = Db::name('vs_gift')->where(['gid'=>$gid]) + ->field('gid as gift_id,gift_name,gift_price,file_type,base_image,play_image,gift_type,label,is_public_server')->find(); + if(empty($gift_info)){ + return ['code' => 0, 'msg' => '礼物不存在', 'data' => null]; + } + if(!$to_uid){ + return ['code' => 0, 'msg' => '请选择收礼人', 'data' => null]; + } + $toarray = explode(',',$to_uid); + if(in_array($uid,$toarray)){ + return ['code' => 0, 'msg' => '收礼人不能包含自己', 'data' => null]; + } + if (ceil($num) != $num) { + return ['code' => 0, 'msg' => '打赏礼物数量必须为整数', 'data' => null]; + } + if ($num < 1) { + return ['code' => 0, 'msg' => '打赏礼物数量必须大于零', 'data' => null]; + } + $user_info = Db::name('user')->where(['id'=>$uid,'status'=>1])->find(); + if(empty($user_info)){ + return ['code' => 301, 'msg' => '当前用户登录失效', 'data' => null]; + } + + //循环查询用户是否实名 + foreach ($toarray as $key => $value){ + $mobile = Db::name('user')->where(['id'=>$value])->value('mobile'); + $is_real = db::name('user_auth')->where('mobile' , $mobile)->field('id,is_real')->find(); + if($is_real){ + if($is_real['is_real'] != 1){ + return ['code' => 0, 'msg' => '该用户未实名,暂不支持收礼', 'data' => null]; + } + }else{ + return ['code' => 0, 'msg' => '该用户未实名,暂不支持收礼', 'data' => null]; + } + } + + //获取送礼用户昵称 + $FromUserInfo = db::name('user')->where('id',$uid)->field('id as user_id,nickname,avatar,sex')->find(); + $FromUserInfo['icon'][0] = model('UserData')->user_wealth_icon($uid);//财富图标 + $FromUserInfo['icon'][1] = model('UserData')->user_charm_icon($uid);//魅力图标 + $FromUserInfo['chat_bubble'] = model('Decorate')->user_decorate_detail($uid,9);//聊天气泡 + + //送给一人礼物的总价格(扣除用户的数额) + $gift_price = $gift_info['gift_price'] * $num; + //送礼 开启事务 + Db::startTrans(); + $roomId = 0; + if($from_type == 2 || $from_type == 3 || $from_type == 6){ + $roomId = $from_id; + } + //金币购买送礼 1金币购买 2送背包礼物 + if ($type == 1) { + 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{ + //背包礼物是否充足 + $user_gift_pack = db::name('vs_user_gift_pack')->where(['user_id'=>$uid,'gid'=>$gid])->find(); + if (empty($user_gift_pack)) { + return ['code' => 0, 'msg' => '用户背包礼物不足', 'data' => null]; + } + if ($user_gift_pack['num'] < $num * count($toarray)) { + return ['code' => 0, 'msg' => '用户背包礼物不足', 'data' => null]; + } + //扣除背包礼物并记录日志 + if($from_type == 1 || $from_type == 2 || $from_type == 3 || $from_type == 6){//1聊天送礼物 2房间语聊送礼 3直播送礼 4动态打赏 5系统任务 + $packType = 3;//1系统赠送2礼包获得3礼物赠送4系统扣除,5动态打赏 + $remark = '聊天或房间礼物赠送'; + }elseif ($from_type == 4){ + $packType = 5; + $remark = '动态打赏'; + }else{ + $packType = -1; + } + $gift_pack = $this -> change_user_gift_pack_log($packType,$uid,$gid,$num * count($toarray),$remark); + if(!$gift_pack){ + Db::rollback(); + return ['code' => 0, 'msg' => '扣除用户背包礼物失败', 'data' => null]; + } + } + + //循环送礼 + $gift_total = 0; + $give_gift = 0; + $gift_user_data = []; + $cp_type = 0; + $textt = ''; + $textt1 = ''; + foreach ($toarray as $k => $to_id){ + $gift_user_data[]['user_id'] = $to_id; + $gift_box1 = []; + $gift_box = []; + //查询礼物是否是盲盒 + $gift_info_label = Db::name('vs_gift')->where(['gid'=>$gid]) + ->field('label')->find(); + if($gift_info_label['label'] == 2){//趣味礼物(盲盒) + $gift_price_box = 0; + if(isset($ext['is_draw_gift']) && $ext['is_draw_gift'] == 1){ + //收礼记录行为日志 + $give_gift = $this -> change_user_give_gift_log($uid,$ext['gift_id'],$ext['all_gift_price'],$ext['count'],$to_id,$from_type,$type,$from_id,$pit_number,2); + if(!$give_gift){ + Db::rollback(); + return ['code' => 0, 'msg' => '送礼失败', 'data' => null]; + } + $gift_price_box = $ext['all_gift_price']; + $gift_box[0]['gift_id'] = $ext['gift_id']; + $gift_box[0]['gift_price'] = $ext['all_gift_price']; + $gift_box[0]['give_gift_id'] = $give_gift; + }else{ + for($i = 0; $i < $num; $i++){ + $gift_box1[$i] = $this -> open_box($gid,$uid,$to_id,$from_id); + if($gift_box1[$i]['code'] != 1){ + Db::rollback(); + return ['code' => 0, 'msg' => '盲盒配置有误请联系管理员'.$gift_box1[$i]['msg'], 'data' => null]; + } + $gift_box[$i] = $gift_box1[$i]['data']; + //记录一下收礼记录 + $give_gift = $this -> change_user_give_gift_log($uid,$gift_box[$i]['gift_id'],$gift_box[$i]['gift_price'],1,$to_id,$from_type,$type,$from_id,$pit_number,2); + if(!$give_gift){ + Db::rollback(); + return ['code' => 0, 'msg' => '送礼失败', 'data' => null]; + } + $gift_box[$i]['give_gift_id'] = $give_gift; + $gift_price_box += $gift_box[$i]['gift_price']; + Log::record("盲盒礼物".json_encode($gift_box1),"info"); + } + } + $gift_total += $gift_price_box; + $gift_price = $gift_price_box; + }else{ + $gift_total += $gift_price; + //收礼记录行为日志 + $give_gift = $this -> change_user_give_gift_log($uid,$gid,$gift_price,$num,$to_id,$from_type,$type,$from_id,$pit_number); + if(!$give_gift){ + Db::rollback(); + return ['code' => 0, 'msg' => '送礼失败', 'data' => null]; + } + } + $gift_user_data[$k]['gift_price'] = $gift_price; + + //计算收礼人得益 + $receiver_earnings = $this -> receiver_earnings($to_id,$gift_price,$from_type); + if($receiver_earnings < 0){ + Db::rollback(); + return ['code' => 0, 'msg' => '收礼人收益配置有误', 'data' => null]; + } + //收礼人认证歌手等级升级 + model('api/SingerSong')->singerLevelUp($to_id,$gift_price); + + //收礼人身价计算 这里的增长身价是收礼物的价值按比率产生的身价值 身价=收礼产生的身价+签约时的溢价 + $coin_market_values = explode(',', get_system_config_value('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); + + //1聊天送礼物 2房间语聊送礼 3直播送礼 4动态打赏 5系统任务 6-cp房间送礼 + if($from_type == 1 || $from_type == 2 || $from_type == 3 ||$from_type == 4 || $from_type == 6){ + //增加收益并记录日志 + $receiver = $this -> change_user_cion_or_earnings_log($to_id,$receiver_earnings,$from_id,2,11,'收礼增加收益'); + }elseif($from_type == 5){ + //增加收益并记录日志 + $receiver = $this -> change_user_cion_or_earnings_log($to_id,$receiver_earnings,$from_id,1,$change_type,'活动增加金币'); + }else{ + $receiver = false; + } + if(!$receiver){ + Db::rollback(); + return ['code' => 0, 'msg' => '收礼人收益失败', 'data' => null]; + } + //用户魅力等级更新 + $user_level = model('Level')->user_level_data_update($to_id,$gift_price,2,$roomId); + if(!$user_level){ + Db::rollback(); + return ['code' => 0, 'msg' => '用户等级更新失败', 'data' => null]; + } + + $room_owner_earnings = 0;//房主收益 + $room_owner_earningsg = 0;//公会会长收益 + //是否在房间 + if(isset($from_id) && ($from_type == 2 || $from_type == 6)){ + if($from_type == 6){ //cp电影房 + //房主有收益 + if(get_system_config_value('room_cp_room_user_ratio') > 0){ + $room_owner = Db::name('vs_room')->where(['id'=>$from_id,'apply_status'=>2])->value('user_id'); + //计算房主收益//room_author_ratio + $room_owner_earnings = $this -> receiver_earnings($room_owner,$gift_price,699); + if($room_owner_earnings > 0){ + //增加收益并记录日志 + $room_owner_earning = $this -> change_user_cion_or_earnings_log($room_owner,$room_owner_earnings,$from_id,2,18,'房主收益'); + if(!$room_owner_earning){ + Db::rollback(); + return ['code' => 0, 'msg' => '房主收益失败', 'data' => null]; + } + } + } + //公会长收益 + if(get_system_config_value('room_cp_guild_user_ratio') > 0){ + $guild_id = Db::name('vs_guild_user')->where(['user_id'=>$to_uid,'status'=>1])->value('guild_id'); + if($guild_id){ + $room_guild = Db::name('vs_guild')->where(['id'=>$guild_id])->value('user_id'); + //计算会长收益 + $room_owner_earningsg = $this -> receiver_earnings($room_guild,$gift_price,698); + //增加收益并记录日志 + $room_owner_earningg = $this -> change_user_cion_or_earnings_log($room_guild,$room_owner_earningsg,$from_id,2,21,'工会长收益'); + if(!$room_owner_earningg){ + Db::rollback(); + return ['code' => 0, 'msg' => '工会长收益失败', 'data' => null]; + } + } + } + + }else{ + $room_owner = Db::name('vs_room')->where(['id'=>$from_id,'apply_status'=>2])->value('user_id'); + //计算房主收益//room_author_ratio + $room_owner_earnings = $this -> receiver_earnings($room_owner,$gift_price,99);//结果是钻石 + if($room_owner_earnings > 0){ + //主持人收益 + //在主持位的主持人 + $host_id = Db::name('vs_room_pit')->where(['room_id'=>$from_id,'pit_number'=>9])->value('user_id'); + if($host_id){ + //计算主持人收益 + $host_earnings = $this -> receiver_earnings($host_id,$room_owner_earnings*get_system_config_value('rmb_coin_ratio'),98,$from_id); + if($host_earnings > 0){ + //增加主持人收益并记录日志 + $host_earnings_earning = $this -> change_user_cion_or_earnings_log($host_id,$host_earnings,$from_id,2,19,'主持人收益'); + if(!$host_earnings_earning){ + Db::rollback(); + return ['code' => 0, 'msg' => '主持人收益失败', 'data' => null]; + } + //增加房主收益并记录日志 + $room_owner_earningss = $room_owner_earnings - $host_earnings; + if($room_owner_earningss > 0){ + $room_owner_earning = $this -> change_user_cion_or_earnings_log($room_owner,$room_owner_earningss,$from_id,2,18,'房主收益'); + if(!$room_owner_earning){ + Db::rollback(); + return ['code' => 0, 'msg' => '房主收益失败', 'data' => null]; + } + } + + }else{ + //增加房主收益并记录日志 + $room_owner_earning = $this -> change_user_cion_or_earnings_log($room_owner,$room_owner_earnings,$from_id,2,18,'房主收益'); + if(!$room_owner_earning){ + Db::rollback(); + return ['code' => 0, 'msg' => '房主收益失败', 'data' => null]; + } + } + }else{ + //增加房主收益并记录日志 + $room_owner_earning = $this -> change_user_cion_or_earnings_log($room_owner,$room_owner_earnings,$from_id,2,18,'房主收益'); + if(!$room_owner_earning){ + Db::rollback(); + return ['code' => 0, 'msg' => '房主收益失败', 'data' => null]; + } + } + } + } + if($gift_info_label['label'] == 2){ + foreach ($gift_box as $gv) { + //记录送礼利率和各方收益 + //收礼人是否加入公会 + $receiver_earningss = $this -> receiver_earnings($to_id,$gv['gift_price'],$from_type); + $room_owner_earningss = $this -> receiver_earnings($room_owner,$gv['gift_price'],99);//结果是钻石 + $ext_give_data = [ + 'FromUserInfo' => $FromUserInfo, + 'GiftInfo' => $gift_info, + 'GiftType' => 2, + ]; + $gift_rate = $this->record_gift_profit($to_uid,$room_owner_earningsg,$gv['gift_price'],$gv['give_gift_id'],$receiver_earningss,$room_owner_earningss,$from_id,$ext_give_data); + if ($gift_rate['code']==0) { + Db::rollback(); + return ['code' => 0, 'msg' => $gift_rate['msg'], 'data' => null]; + } + } + }else{ + //记录送礼利率和各方收益 + //收礼人是否加入公会 + $ext_give_data = [ + 'FromUserInfo' => $FromUserInfo, + 'GiftInfo' => $gift_info, + 'GiftType' => 1, + ]; + $gift_rate = $this->record_gift_profit($to_uid,$room_owner_earningsg,$gift_price,$give_gift,$receiver_earnings,$room_owner_earnings,$from_id,$ext_give_data); + if ($gift_rate['code']==0) { + Db::rollback(); + return ['code' => 0, 'msg' => $gift_rate['msg'], 'data' => null]; + } + } + } + + $ToUserInfo = Db::name('user')->where(['id' => $to_id])->field('id as user_id,nickname,avatar,sex')->find(); + $ToUserInfo['icon'][0] = model('UserData')->user_wealth_icon($to_id);//财富图标 + $ToUserInfo['icon'][1] = model('UserData')->user_charm_icon($to_id);//魅力图标 + $ToUserInfo['charm'] = db::name('vs_room_user_charm')->where(['user_id' => $to_id,'room_id' => $from_id])->value('charm');//魅力 + + if(isset($from_id) && ($from_type == 2 || $from_type == 6)){ + //查询房间是否在PK中 是fa_vs_room_pk 表中的 room_id_a,还是room_id_b + $room_pk = Db::name('vs_room_pk')->where(['status' => 3, 'room_id_a' => $from_id])->field('pk_id')->find(); + if (!empty($room_pk)) { + // 当前 room_id 是 room_id_a 修改create_value_a + $rooma = Db::name('vs_room_pk')->where('pk_id', $room_pk['pk_id'])->setInc('create_value_a', $gift_price * 10); + $roomPKinfo = Db::name('vs_room_pk')->where('pk_id', $room_pk['pk_id'])->find(); + //推送变化 + $text = [ + 'room_id_a' => $roomPKinfo['room_id_a'],//发起者房间id + 'create_value_a' => $roomPKinfo['create_value_a'],//发起者房间值 + 'room_id_b' => $roomPKinfo['room_id_b'],//接受者房间id + 'receive_value_b' => $roomPKinfo['receive_value_b'],//接受者房间值 + 'text' => '' + ]; + model('Chat')->sendMsg(1015,$roomPKinfo['room_id_a'],$text); + model('Chat')->sendMsg(1015,$roomPKinfo['room_id_b'],$text); + } else { + // 当前 room_id 不是 room_id_a,可能是 room_id_b 或者不存在 + $room_pk_b = Db::name('vs_room_pk')->where(['status' => 3, 'room_id_b' => $from_id])->field('pk_id')->find(); + if (!empty($room_pk_b)) { + // 当前 room_id 是 room_id_b + $roomb = Db::name('vs_room_pk')->where('pk_id', $room_pk_b['pk_id'])->setInc('receive_value_b', $gift_price * 10); + $roomPKinfo = Db::name('vs_room_pk')->where('pk_id', $room_pk_b['pk_id'])->find(); + //推送变化 + $text = [ + 'room_id_a' => $roomPKinfo['room_id_a'],//发起者房间id + 'create_value_a' => $roomPKinfo['create_value_a'],//发起者房间值 + 'room_id_b' => $roomPKinfo['room_id_b'],//接受者房间id + 'receive_value_b' => $roomPKinfo['receive_value_b'],//接受者房间值 + 'text' => '' + ]; + model('Chat')->sendMsg(1015,$roomPKinfo['room_id_a'],$text); + model('Chat')->sendMsg(1015,$roomPKinfo['room_id_b'],$text); + } + } + //推送礼物特效 + if(!isset($ext['is_draw_gift']) || $ext['is_draw_gift'] != 1){// 非盲盒转盘 推送 + if($gift_info_label['label'] == 2){ + //循环开出来的盲盒,相同的礼物只推送一次,消息推送为$FromUserInfo['nickname'] . ' 送给 ' . $ToUserInfo['nickname'].' 趣味礼物 ' .$gift_inf['gift_name'].' x 多少'; + if($gift_box){ + // 统计相同礼物的数量 + $giftCount = []; + foreach ($gift_box as $key=>$gv) { + $gift_info = Db::name('vs_gift')->where(['gid'=>$gv['gift_id']]) + ->field('gid as gift_id,gift_name,gift_price,file_type,base_image,play_image,gift_type,label,is_public_server')->find(); + if (isset($giftCount[$gv['gift_id']])) { + $giftCount[$gv['gift_id']]['count']++; + } else { + $giftCount[$gv['gift_id']] = [ + 'gift_info' => $gift_info, + 'count' => 1 + ]; + } + $gift_box[$key]['gift_name'] = $gift_info['gift_name']; + } + + // 构建文字消息内容 + $giftTextList = []; + foreach ($giftCount as $giftData) { + $gift_inf = $giftData['gift_info']; + $count = $giftData['count']; + $giftTextList[] = $gift_inf['gift_name'].' X'.$count; + } + + // 推送文字消息 (格式: 张三 送给 李四 趣味礼物 礼物名1 X2,礼物2 X4) + $textMessage = $FromUserInfo['nickname'] . ' 送给 ' . $ToUserInfo['nickname'].' 趣味礼物 ' . implode(',', $giftTextList); + $textData = [ + 'FromUserInfo' => $FromUserInfo, + 'ToUserInfo' => $ToUserInfo, + 'GiftInfos' => array_values($gift_box), + 'GiftNum' => $num, + 'text' => $textMessage + ]; + // 聊天室推送文字消息 + model('Chat')->sendMsg(1038,$from_id,$textData); + + // 循环推送每个礼物的特效消息 + foreach ($giftCount as $giftId => $giftData) { + $gift_inf = $giftData['gift_info']; + $count = $giftData['count']; + + // 推送礼物特效消息 + $effectData = [ + 'FromUserInfo' => $FromUserInfo, + 'ToUserInfo' => $ToUserInfo, + 'GiftInfo' => $gift_inf, + 'gift_num' => $count, + 'text' => null + ]; + + // 聊天室推送礼物特效消息 + model('Chat')->sendMsg(1005,$from_id,$effectData); + + $roomtype = Db::name('vs_room')->where(['id' => $from_id])->value('type_id'); + if($roomtype == 6){ + //推送消息 + $hot_value = db::name('vs_give_gift')->where('from_id', $from_id)->where('from',6) + ->sum('total_price'); + $text1 = [ + 'room_id' => $from_id, + 'hot_value' => $hot_value * 10, + 'text' => '房间心动值变化' + ]; + //聊天室推送系统消息 + model('Chat')->sendMsg(1028,$from_id,$text1); + + //电影房推送结束时间点 + $text2 = [ + 'room_id' => $from_id, + 'end_time' => time() + 60 * 60 * 24 * 7, + 'text' => '房间结束时间点' + ]; + model('Chat')->sendMsg(1042,$from_id,$text2); + }else{ + if($gift_inf['is_public_server'] == 1){ + //推送礼物横幅 + $push = new Push(UID, $from_id); + $room_name = Db::name('vs_room')->where(['id' => $from_id, 'apply_status' => 2])->value('room_name'); + $bannerText = $FromUserInfo['nickname'] . '在' . $room_name . '房间送给了' . $ToUserInfo['nickname'] . $gift_inf['gift_name'] . 'X' . $count; + $text_list_new[] = [ + 'text' => $bannerText, + 'gift_picture' => $gift_inf['base_image'], + 'room_id' => $from_id, + 'fromUserName' => $FromUserInfo['nickname'], + 'toUserName' => $ToUserInfo['nickname'], + 'giftName' => $gift_inf['gift_name'], + 'roomId' => $from_id, + 'number' => $count, + ]; + $push->giftBanner($text_list_new); + } + } + } + } + }else{ + $text = $FromUserInfo['nickname'] . ' 送给 ' . $ToUserInfo['nickname'].' 礼物 ' .$gift_info['gift_name'].' x ' .$num; + $text = [ + 'FromUserInfo' => $FromUserInfo, + 'ToUserInfo' => $ToUserInfo, + 'GiftInfo' => $gift_info, + 'gift_num' => $num, + 'text' => $text + ]; + //聊天室推送系统消息 + model('Chat')->sendMsg(1005,$from_id,$text); + $roomtype = Db::name('vs_room')->where(['id' => $from_id])->value('type_id'); + if($roomtype == 6){ + //推送消息 + $hot_value = db::name('vs_give_gift')->where('from_id', $from_id)->where('from',6) + ->sum('total_price'); + $text1 = [ + 'room_id' => $from_id, + 'hot_value' => $hot_value * 10, + 'text' => '房间心动值变化' + ]; + //聊天室推送系统消息 + model('Chat')->sendMsg(1028,$from_id,$text1); + }else{ + if($gift_info['is_public_server'] == 1){ + //推送礼物横幅 + $push = new Push($uid, $from_id); + $room_name = Db::name('vs_room')->where(['id' => $from_id, 'apply_status' => 2])->value('room_name'); + $text = $FromUserInfo['nickname'] . '在' . $room_name . '房间送给了' . $ToUserInfo['nickname'] . $gift_info['gift_name'] . 'X' . $num; + $text_list_new[] = [ + 'text' => $text, + 'gift_picture' => $gift_info['base_image'], + 'room_id' => $from_id, + 'fromUserName' => $FromUserInfo['nickname'], + 'toUserName' => $ToUserInfo['nickname'], + 'giftName' => $gift_info['gift_name'], + 'roomId' => $from_id, + 'number' => $num, + ]; + $push->giftBanner($text_list_new); + } + + } + } + } + //直播间送礼物 每日任务 + model('DailyTasks')->tasks_complete($uid,3); + } + //cp检测且处理升级事宜 + $cp_type = model('api/UserCp')->checkGift($uid, $gid, $to_id, $from_id, $num,$gift_price);//0-不处理,1-表明心意,2-组成Cp + if($cp_type == 1){ + $textt1 = "亲爱的用户,您好!\n".$FromUserInfo['nickname'] . ' 的 【' .$gift_info['gift_name'].' 】 已送达,这是他的心动信号。回赠一个,即可锁定这份缘分!'; + $textt = ''; + }elseif ($cp_type == 2){ + //接受方弹起的 信息 + $textt1 = "恭喜你!". $FromUserInfo['nickname'] ."也向您回赠了【" .$gift_info['gift_name']."】,并接受了你的心动信号。\n从现在起,你们正式成为彼此的专属CP,共同开启一段甜蜜的旅程。\n【心动空间】已为你们敞开大门!这里将记录你们在一起的点滴,见证所有心动与陪伴。快去心动空间,开启你们的CP升级之旅吧!"; + $textt = '【心动空间】已为你们敞开大门!这里将记录你们在一起的点滴,见证所有心动与陪伴。快去心动空间,开启你们的CP升级之旅吧!';//发送方弹起的信息 + } + } + + //增加房间火热值hot_value + $gift_totalaa = $gift_total * get_system_config_value('coin_charm_exp'); + db::name('vs_room')->where(['id' => $from_id])->inc('hot_value', $gift_totalaa)->inc('today_hot_value', $gift_totalaa)->update(); + + $roomtype = Db::name('vs_room')->where(['id' => $from_id])->value('type_id'); + if($roomtype == 6){ + //推送消息 交友房创建的私密房 倒计时增加 + $value = db::name('vs_room_cp_movie')->where('room_id', $from_id)->where('type',1) + ->value('time_day'); + if($value){ + db::name('vs_room_cp_movie')->where('room_id', $from_id)->where('type',1) + ->setInc('time_day', $gift_total); + $text111 = [ + 'room_id' => $from_id, + 'time_day' => db::name('vs_room_cp_movie')->where('room_id', $from_id)->where('type',1)->value('time_day'), + 'text' => '房间结束时间变化' + ]; + //聊天室推送系统消息 + model('Chat')->sendMsg(1052,$from_id,$text111); + } + } + + Db::commit(); + return ['code' => 1, 'msg' => '送礼成功', 'data' => ['gift_total' => $gift_total,'gift_user_data' =>$gift_user_data,'cp_type' => ['cp_type' => $cp_type,'text' => $textt,'text1' => $textt1,'gift_id' => $gid]]]; + } +} \ No newline at end of file