Files
yusheng-php/application/api/model/SendGift.php

1689 lines
87 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
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;
class SendGift extends Model
{
/*
* 送礼物 送礼用户收礼用户组礼物ID数量礼物类型房间ID
* @param int $uid 用户id
* @param str $to_uid 接收礼物用户组 (逗号分隔 id字符串
* @param int $gid 礼物id
* @param int $num 礼物数量
* @param int $type 金币购买 1金币购买 2送背包礼物
* @param int $room_id
* @param int $gift_bag_id 背包礼物类型7-初级8-中级9-高级
* @param int $heart_id 助力ID
* @return array
*/
public function send_gift($uid, $to_uid, $gid, $num, $type, $room_id, $gift_bag_id = 0, $heart_id = 0)
{
$toarray = explode(',',$to_uid);
if(in_array($uid,$toarray)){
return ['code' => 0, 'msg' => '收礼人不能包含自己', 'data' => null];
}
if(count($toarray) <= 1){
$res = $this->single_send_gift($uid,$to_uid,$gid,$num,$type,$room_id,$gift_bag_id,$heart_id);
}else{
$res = $this->send_gift_to_users($uid,$toarray,$gid,$num,$type,$room_id,$gift_bag_id,$heart_id);
}
return $res;
}
//送一个人的礼物
public function single_send_gift($uid,$to_uid,$gid,$num,$type,$room_id,$gift_bag_id,$heart_id)
{
//送的礼物信息
$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];
}
$mobile = Db::name('user')->where(['id'=>$to_uid])->value('mobile');
$is_real = db::name('user_auth')->where('mobile' , $mobile)->value('is_real') ?? 0;
if($is_real != 1){
return ['code' => 0, 'msg' => '该用户未实名,暂不支持收礼', 'data' => null];
}
$room_type = model('Room')->get_room_type($room_id);
$room_label = db::name('vs_room')->where(['id' => $room_id])->value('label_id');
//获取送礼用户信息
$FromUserInfo = model('User')->get_user_base_info($uid);
//送给一人礼物的总价格
$gift_price = $gift_info['gift_price'] * $num;
//送礼人的金币
$user_coin = db::name('user_wallet_coin')->where(['user_id'=>$uid])->value('coin');
//送礼 开启事务
Db::startTrans();
//酒吧房下的小黑屋 房间流水和送礼记录、收益 都记录在酒吧房
if($room_label == 11){
$p_room_id = db::name('vs_room_bar_movie')->where('room_id',$room_id)->value('p_room_id');
//金币购买送礼 1金币购买 2送背包礼物
if($type == 1){
//判断是否有足够的金币
if ($user_coin < $gift_price) {
return ['code' => 0, 'msg' => '金币不足,请充值购买!', 'data' => null];
}
//扣除用户金币并记录日志(酒吧房下的小黑屋 记录记在所属酒吧房)
$wallet_update = model('api/UserWallet')->change_user_cion_log($uid,$gift_price,$p_room_id,10,'小黑屋-购买礼物');
if(!$wallet_update){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-1', 'data' => null];
}
}else{
Db::rollback();
return ['code' => 0, 'msg' => '类型错误', 'data' => null];
}
$receive_gift_total = $gift_price;//收礼人收到的礼物总值
$gift_box = [];//开出的盲盒
//计算收礼人得益 //1聊天送礼物 2房间语聊送礼 3直播送礼 4动态打赏 99房主收益 98主持人收益
$receiver_earnings = model('GiveGift') -> receiver_earnings($to_uid,$receive_gift_total,2);
if($receiver_earnings > 0){
//增加收益并记录日志
$receiver = model('api/UserWallet')->change_user_earnings_log($to_uid,$receiver_earnings,$p_room_id,11,'小黑屋-收礼增加收益');
if(!$receiver){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-4', 'data' => null];
}
}
//用户魅力等级更新(这个里面有推送魅力 所以房间使用原房间)
$user_level = model('Level')->user_level_data_update($to_uid,$receive_gift_total,2,$room_id);
if(!$user_level){
Db::rollback();
return ['code' => 0, 'msg' => '用户等级更新失败', 'data' => null];
}
$guild_earnings = 0;//公会会长收益
$guid_ratio = 0;//公会长收益率
$receive_ratio = get_system_config_value('room_gift_ratio');//房间收礼人收益
//房主收益 计算酒吧房去
$room_owner = Db::name('vs_room')->where(['id' => $p_room_id,'apply_status' => 2])->value('user_id');
//计算房主收益//room_author_ratio
$room_owner_earnings = model('GiveGift') -> receiver_earnings($room_owner,$receive_gift_total,99);//结果是钻石
if($room_owner_earnings > 0){
//在主持位的主持人 计算酒吧房去
$host_id = Db::name('vs_room_pit')->where(['room_id'=>$p_room_id,'pit_number'=>9])->value('user_id');
if($host_id){
//计算主持人收益
$ratio = db::name('vs_room_host')->where(['room_id'=>$p_room_id,'user_id'=>$host_id,'delete_time'=>null,'type'=>1])->value('ratio');
if(!$ratio){
$ratio = 0;
}
$host_earnings = round($room_owner_earnings * $ratio / 100,4);
if($host_earnings > 0){
//增加主持人收益并记录日志
$host_earnings_earning = model('api/UserWallet')->change_user_earnings_log($host_id,$host_earnings,$p_room_id,19,'小黑屋-主持人收益');
if(!$host_earnings_earning){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-7', 'data' => null];
}
//增加房主收益并记录日志
$room_owner_earningss = $room_owner_earnings - $host_earnings;
if($room_owner_earningss > 0){
$room_owner_earning = model('api/UserWallet')->change_user_earnings_log($room_owner,$room_owner_earningss,$p_room_id,18,'小黑屋-房主收益');
if(!$room_owner_earning){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-8', 'data' => null];
}
}
}else{
//增加房主收益并记录日志
$room_owner_earning = model('api/UserWallet')->change_user_earnings_log($room_owner,$room_owner_earnings,$p_room_id,18,'小黑屋-房主收益');
if(!$room_owner_earning){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-9', 'data' => null];
}
}
}else{
//增加房主收益并记录日志
$room_owner_earning = model('api/UserWallet')->change_user_earnings_log($room_owner,$room_owner_earnings,$p_room_id,18,'小黑屋-房主收益');
if(!$room_owner_earning){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-10', 'data' => null];
}
}
}
//收礼人是否加入公会
$is_join_guild = Db::name('vs_guild_user')->where(['user_id'=>$to_uid,'status'=>1,'quit_time' => 0])->field('guild_id,settlement_ratio')->find();
if($is_join_guild){
//公会长收益 房间收礼人收益+房间收礼人加入公会后增加收益
$max_settlement_ratio = get_system_config_value('room_gift_ratio') + get_system_config_value('room_gift_guild_ratio');
$receive_ratio = $is_join_guild['settlement_ratio'] ?? 0;//加入公会后 公会长设置的收益
$guid_ratio = $max_settlement_ratio - $receive_ratio;
if($guid_ratio > 0){
//公会长收益
$guild_earnings = coin_earning($receive_gift_total,$guid_ratio);
if($guild_earnings > 0){
$guild_user = db::name('vs_guild')->where(['id' => $is_join_guild['guild_id']])->value('user_id');
$guild_earnings_in = model('api/UserWallet')
->change_user_earnings_log($guild_user,$guild_earnings,$p_room_id,21,'小黑屋-工会长收益');
if(!$guild_earnings_in){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-11', 'data' => null];
}
}
}
}
//收礼记录行为日志
$give_gift = $this -> change_user_give_gift_logs($uid,$gid,$gift_price,$num,$to_uid,2,$type,$p_room_id,'小黑屋房间');
if(!$give_gift){
Db::rollback();
return ['code' => 0, 'msg' => '送礼失败,请重试!', 'data' => null];
}
//记录送礼利率和各方收益
//平台收益 = 总金额 - 收礼人收益 - 房主收益 - 工会长收益
$room_owner_ratio = get_system_config_value('room_author_ratio');
$app_ratio = 100 - $receive_ratio - $room_owner_ratio - $guid_ratio;
$app_earning = coin_earning($gift_price, $app_ratio);
$gift_rate = $this->change_give_gift_profit($give_gift, $receive_ratio, $receiver_earnings, $room_owner_ratio, $room_owner_earnings, $app_ratio, $app_earning,$guid_ratio,$guild_earnings);
if(!$gift_rate){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-12', 'data' => null];
}
//增加房间火热值hot_value
$gift_totalaa = $receive_gift_total * get_system_config_value('coin_charm_exp');
db::name('vs_room')->where(['id' => $p_room_id])->inc('hot_value', $gift_totalaa)->inc('today_hot_value', $gift_totalaa)->update();
db::name('vs_room')->where(['id' => $room_id])->inc('hot_value', $gift_totalaa)->inc('today_hot_value', $gift_totalaa)->update();
Db::commit();
//推送消息 私密房 倒计时增加
$add_time_str = get_system_config_value('room_bar_movie_add_time') ?? '10,1';//默认10金币增加1秒
//变成数组
$add_time_array = explode(',', $add_time_str);
$add_time = floor($receive_gift_total/$add_time_array[0])*$add_time_array[1];
if($add_time > 0){
db::name('vs_room_bar_movie')->where('room_id', $room_id)
->setInc('end_time', $add_time);//1金币加1秒
$text111 = [
'room_id' => $room_id,
'time_day' => db::name('vs_room_bar_movie')->where('room_id', $room_id)->value('end_time'),
'text' => '房间结束时间变化'
];
//聊天室推送系统消息
model('Chat')->sendMsg(1052,$room_id,$text111);
}
}else{
//金币购买送礼 1金币购买 2送背包礼物
if($type == 1){
//判断是否有足够的金币
if ($user_coin < $gift_price) {
return ['code' => 0, 'msg' => '金币不足,请充值购买!', 'data' => null];
}
//扣除用户金币并记录日志
$wallet_update = model('api/UserWallet')->change_user_cion_log($uid,$gift_price,$room_id,10,'购买礼物');
if(!$wallet_update){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-1', '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) {
return ['code' => 0, 'msg' => '用户背包礼物不足', 'data' => null];
}
//扣除背包礼物并记录日志
$gift_pack = $this -> change_user_gift_pack_log(3,$uid,$gid,$num,'房间送礼');
if(!$gift_pack){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-2', 'data' => null];
}
}
$receive_gift_total = 0;//收礼人收到的礼物总值
$gift_box = [];//开出的盲盒
$gift_box_str = '';
$gift_box_map = [];
//查询礼物是否是盲盒
if($gift_info['label'] == 2){//趣味礼物(盲盒)
for($i = 0; $i < $num; $i++){
//开盲盒
$gift_box1[$i] = $this -> open_box($gid,$uid,$to_uid,$room_id,$gift_bag_id);
if($gift_box1[$i]['code'] != 1){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-3'.$gift_box1[$i]['msg'], 'data' => null];
}
$gift_box[$i] = $gift_box1[$i]['data'];
//礼物整合
$gift_id = $gift_box[$i]['gift_id'];
$gift_name = $gift_box[$i]['gift_name'];
if(isset($gift_box_map[$gift_id])){
// 如果礼物ID已存在数量加1
$gift_box_map[$gift_id]['count']++;
}else{
// 如果礼物ID不存在添加新项
$gift_box_map[$gift_id] = [
'name' => $gift_name,
'count' => 1
];
}
//开出的礼物价值
$receive_gift_total += $gift_box[$i]['gift_price'];
//使用收礼用户 和礼物ID 查询礼物墙
$gift_wall = db::name('user_gift_wall')->where(['user_id'=>$to_uid,'gift_id'=>$gift_id])->find();
if($gift_wall){
db::name('user_gift_wall')->where(['id'=>$gift_wall['id']])->inc('count',1)->update();
$userIds = explode(',',$gift_wall['give_user_ids']);
if(!in_array($uid,$userIds)){
$userIds[] = $uid;
db::name('user_gift_wall')->where(['id'=>$gift_wall['id']])->update(['give_user_ids'=>implode(',',$userIds)]);
}
}else{
db::name('user_gift_wall')->insert([
'user_id' => $to_uid,
'gift_id' => $gift_id,
'count' => 1,
'give_user_ids' => $uid,
'updatetime' => time()
]);
}
}
if(!empty($gift_box_map)){
//拼接礼物字符串 (娃哈哈 * 2 / 娃哈哈1 * 1)这种格式
$gift_box_str_parts = [];
foreach($gift_box_map as $gift_id => $gift_info_data){
$gift_box_str_parts[] = $gift_info_data['name'] . ' * ' . $gift_info_data['count'];
}
$gift_box_str = implode(' / ', $gift_box_str_parts);
}
}else{
$receive_gift_total = $gift_price;
}
//计算收礼人得益 //1聊天送礼物 2房间语聊送礼 3直播送礼 4动态打赏 99房主收益 98主持人收益
$receiver_earnings = model('GiveGift') -> receiver_earnings($to_uid,$receive_gift_total,2);
if($receiver_earnings > 0){
//增加收益并记录日志
$receiver = model('api/UserWallet')->change_user_earnings_log($to_uid,$receiver_earnings,$room_id,11,'收礼增加收益');
if(!$receiver){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-4', 'data' => null];
}
}
//用户魅力等级更新
$user_level = model('Level')->user_level_data_update($to_uid,$receive_gift_total,2,$room_id);
if(!$user_level){
Db::rollback();
return ['code' => 0, 'msg' => '用户等级更新失败', 'data' => null];
}
$room_owner_earnings = 0;//房主收益
$guild_earnings = 0;//公会会长收益
$guid_ratio = 0;//公会长收益率
$receive_ratio = get_system_config_value('room_gift_ratio');//房间收礼人收益
if($room_type == 6){
//cp电影房
//房主有收益 room_cp_room_user_ratio
if(get_system_config_value('room_cp_room_user_ratio') > 0){
$room_owner = Db::name('vs_room')->where(['id'=>$room_id,'apply_status'=>2])->value('user_id');
//计算房主收益//room_author_ratio //1聊天送礼物 2房间语聊送礼 3直播送礼 4动态打赏 99房主收益 98主持人收益 699-cp房房主收益
$room_owner_earnings = model('GiveGift') -> receiver_earnings($room_owner,$receive_gift_total,699);
if($room_owner_earnings > 0){
//增加收益并记录日志
$room_owner_earning = model('api/UserWallet')
->change_user_earnings_log($room_owner,$room_owner_earnings,$room_id,18,'私密房主收益');
if(!$room_owner_earning){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-5', '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');
//计算会长收益 //1聊天送礼物 2房间语聊送礼 3直播送礼 4动态打赏 99房主收益 98主持人收益 699-cp房房主收益 698 - cp房里面收益 公会长收益
$guild_earnings = model('GiveGift') -> receiver_earnings($room_guild,$receive_gift_total,698);
if($guild_earnings > 0){
//增加收益并记录日志
$guild_earnings_in = model('api/UserWallet')
->change_user_earnings_log($room_guild,$guild_earnings,$room_id,21,'私密房工会长收益');
if(!$guild_earnings_in){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-6', 'data' => null];
}
}
}
}
}else{
$room_owner = Db::name('vs_room')->where(['id'=>$room_id,'apply_status'=>2])->value('user_id');
//计算房主收益//room_author_ratio
$room_owner_earnings = model('GiveGift') -> receiver_earnings($room_owner,$receive_gift_total,99);//结果是钻石
if($room_owner_earnings > 0){
//在主持位的主持人
$host_id = Db::name('vs_room_pit')->where(['room_id'=>$room_id,'pit_number'=>9])->value('user_id');
if($host_id){
//计算主持人收益
$ratio = db::name('vs_room_host')->where(['room_id'=>$room_id,'user_id'=>$host_id,'delete_time'=>null,'type'=>1])->value('ratio');
if(!$ratio){
$ratio = 0;
}
$host_earnings = round($room_owner_earnings * $ratio / 100,4);
if($host_earnings > 0){
//增加主持人收益并记录日志
$host_earnings_earning = model('api/UserWallet')->change_user_earnings_log($host_id,$host_earnings,$room_id,19,'主持人收益');
if(!$host_earnings_earning){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-7', 'data' => null];
}
//增加房主收益并记录日志
$room_owner_earningss = $room_owner_earnings - $host_earnings;
if($room_owner_earningss > 0){
$room_owner_earning = model('api/UserWallet')->change_user_earnings_log($room_owner,$room_owner_earningss,$room_id,18,'房主收益');
if(!$room_owner_earning){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-8', 'data' => null];
}
}
}else{
//增加房主收益并记录日志
$room_owner_earning = model('api/UserWallet')->change_user_earnings_log($room_owner,$room_owner_earnings,$room_id,18,'房主收益');
if(!$room_owner_earning){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-9', 'data' => null];
}
}
}else{
//增加房主收益并记录日志
$room_owner_earning = model('api/UserWallet')->change_user_earnings_log($room_owner,$room_owner_earnings,$room_id,18,'房主收益');
if(!$room_owner_earning){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-10', 'data' => null];
}
}
}
//收礼人是否加入公会
$is_join_guild = Db::name('vs_guild_user')->where(['user_id'=>$to_uid,'status'=>1,'quit_time' => 0])->field('guild_id,settlement_ratio')->find();
if($is_join_guild){
//公会长收益 房间收礼人收益+房间收礼人加入公会后增加收益
$max_settlement_ratio = get_system_config_value('room_gift_ratio') + get_system_config_value('room_gift_guild_ratio');
$receive_ratio = $is_join_guild['settlement_ratio'] ?? 0;//加入公会后 公会长设置的收益
$guid_ratio = $max_settlement_ratio - $receive_ratio;
if($guid_ratio > 0){
//公会长收益
$guild_earnings = coin_earning($receive_gift_total,$guid_ratio);
if($guild_earnings > 0){
$guild_user = db::name('vs_guild')->where(['id' => $is_join_guild['guild_id']])->value('user_id');
$guild_earnings_in = model('api/UserWallet')
->change_user_earnings_log($guild_user,$guild_earnings,$room_id,21,'工会长收益');
if(!$guild_earnings_in){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-11', 'data' => null];
}
}
}
}
}
if($gift_info['label'] == 2) {//趣味礼物(盲盒)
$give_gift = $this -> change_user_give_gift_logs($uid,$gid,$receive_gift_total,$num,$to_uid,2,$type,$room_id,$gift_box_str,0,2);
}else{
//收礼记录行为日志
$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];
}
}
//记录送礼利率和各方收益
//平台收益 = 总金额 - 收礼人收益 - 房主收益 - 工会长收益
$room_owner_ratio = get_system_config_value('room_author_ratio');
$app_ratio = 100 - $receive_ratio - $room_owner_ratio - $guid_ratio;
$app_earning = coin_earning($receive_gift_total, $app_ratio);
$gift_rate = $this->change_give_gift_profit($give_gift, $receive_ratio, $receiver_earnings, $room_owner_ratio, $room_owner_earnings, $app_ratio, $app_earning,$guid_ratio,$guild_earnings);
if(!$gift_rate){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-12', 'data' => null];
}
//增加房间火热值hot_value
$gift_totalaa = $receive_gift_total * get_system_config_value('coin_charm_exp');
db::name('vs_room')->where(['id' => $room_id])->inc('hot_value', $gift_totalaa)->inc('today_hot_value', $gift_totalaa)->update();
Db::commit();
}
//各种需要的及时推送========================================
//pk信息
$room_pk = Db::name('vs_room_pk')->where(['status' => 3, 'room_id_a' => $room_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', $receive_gift_total * 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' => $room_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', $receive_gift_total * 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($room_type == 6 && $room_label != 11){
//推送消息 交友房创建的私密房 倒计时增加
$add_time_str = get_system_config_value('room_cp_movie_add_time') ?? '1,1';//默认1金币增加1秒
//变成数组
$add_time_array = explode(',', $add_time_str);
$add_time = floor($receive_gift_total/$add_time_array[0])*$add_time_array[1];
$value = db::name('vs_room_cp_movie')->where('room_id', $room_id)->where('type',1)
->value('time_day');
if($value){
db::name('vs_room_cp_movie')->where('room_id', $room_id)->where('type',1)
->setInc('time_day', $add_time);//1金币加1秒
$text111 = [
'room_id' => $room_id,
'time_day' => db::name('vs_room_cp_movie')->where('room_id', $room_id)->where('type',1)->value('time_day'),
'text' => '房间结束时间变化'
];
//聊天室推送系统消息
model('Chat')->sendMsg(1052,$room_id,$text111);
}
}
$ToUserInfo = model('User')->get_user_base_info($to_uid);
$ToUserInfo['charm'] = db::name('vs_room_user_charm')->where(['user_id' => $to_uid,'room_id' => $room_id])->value('charm');//魅力
//盲盒礼物推送信息整合
if($gift_info['label'] == 2){
//循环开出来的盲盒,相同的礼物只推送一次,消息推送为$FromUserInfo['nickname'] . ' 送给 ' . $ToUserInfo['nickname'].' 趣味礼物 ' .$gift_inf['gift_name'].' x 多少';
if($gift_box){
// 统计相同礼物的数量
$giftCount = [];
foreach ($gift_box as $key=>$gv) {
$gift_infos = 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_infos,
'count' => 1
];
}
$gift_box[$key]['gift_name'] = $gift_infos['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,$room_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,$room_id,$effectData);
if($room_type == 6){
//推送消息
$hot_value = db::name('vs_room')->where('id', $room_id)->value('hot_value');
$text1 = [
'room_id' => $room_id,
'hot_value' => $hot_value,
'text' => '房间心动值变化'
];
//聊天室推送系统消息
model('Chat')->sendMsg(1028,$room_id,$text1);
}else{
if($gift_inf['is_public_server'] == 1){
//推送礼物横幅
$push = new Push(UID, $room_id);
$room_name = Db::name('vs_room')->where(['id' => $room_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' => $room_id,
'fromUserName' => $FromUserInfo['nickname'],
'toUserName' => $ToUserInfo['nickname'],
'giftName' => $gift_inf['gift_name'],
'roomId' => $room_id,
'number' => $count,
];
$push->giftBanner($text_list_new);
}
}
}
}
}else{
if($gift_info['label'] == 17){
$text = $FromUserInfo['nickname'] . ' 送给 ' . $ToUserInfo['nickname'].' 礼物 ' .$gift_info['gift_name'].' x ' .$num;
$texts = [
'FromUserInfo' => $FromUserInfo,
'ToUserInfos' => [$ToUserInfo],
'GiftInfo' => $gift_info,
'gift_num' => $num,
'text' => $text
];
//聊天室推送系统消息
model('Chat')->sendMsg(1200, $room_id, $texts);
}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,$room_id,$text);
}
if($room_type == 6){
//推送消息
$hot_value = db::name('vs_room')->where('id', $room_id)->value('hot_value');
$text1 = [
'room_id' => $room_id,
'hot_value' => $hot_value,
'text' => '房间心动值变化'
];
//聊天室推送系统消息
model('Chat')->sendMsg(1028,$room_id,$text1);
}else{
if($gift_info['is_public_server'] == 1){
//推送礼物横幅
$push = new Push($uid, $room_id);
$room_name = Db::name('vs_room')->where(['id' => $room_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' => $room_id,
'fromUserName' => $FromUserInfo['nickname'],
'toUserName' => $ToUserInfo['nickname'],
'giftName' => $gift_info['gift_name'],
'roomId' => $room_id,
'number' => $num,
];
$push->giftBanner($text_list_new);
}
}
}
$textt = '';
$textt1 = '';
//cp检测且处理升级事宜
$cp_type = model('api/UserCp')->checkGift($uid, $gid, $to_uid, $room_id, $num,$receive_gift_total);//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升级之旅吧';//发送方弹起的信息
}
$gift_user_data = [];//收礼人信息和收到的金币 交友和参与拍卖使用
if($cp_type != 0){
$gift_user_data[] = [
'user_id' => $to_uid,
'gift_price' => $receive_gift_total,
];
}else{
$gift_user_data[] = [
'user_id' => $to_uid,
'gift_price' => $receive_gift_total,
];
}
if($room_type == 7){
$reslut = [
'data' => ['gift_total' => $receive_gift_total,'gift_user_data' =>$gift_user_data,]
];
model('api/Friend')->room_give_gift($uid, $to_uid,$room_id,$reslut,$heart_id);
}
//gift_total:收礼人收礼金币总和交友和参与拍卖使用cp_typecp交友使用gift_user_datacp交友使用
return ['code' => 1, 'msg' => '送礼成功', 'data' => ['gift_total' => $receive_gift_total,'gift_user_data' =>$gift_user_data,'cp_type' => ['cp_type' => $cp_type,'text' => $textt,'text1' => $textt1,'gift_id' => $gid]]];
}
//送多人礼物
public function send_gift_to_users($uid,$to_array,$gid,$num,$type,$room_id,$gift_bag_id,$heart_id){
//送的礼物信息
$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];
}
//循环查询用户是否实名
foreach ($to_array 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];
}
}
$room_type = model('Room')->get_room_type($room_id);
$room_owner = Db::name('vs_room')->where(['id'=>$room_id,'apply_status'=>2])->value('user_id');
//获取送礼用户信息
$FromUserInfo = model('User')->get_user_base_info($uid);
//送给一人礼物的总价格
$gift_price = $gift_info['gift_price'] * $num;
//送礼人的金币
$user_coin = db::name('user_wallet_coin')->where(['user_id'=>$uid])->value('coin');
//金币购买送礼 1金币购买 2送背包礼物
if($type == 1){
//送给所有人的总价格
$all_gift_price = $gift_price * count($to_array);
//判断是否有足够的金币
if ($user_coin < $all_gift_price) {
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($to_array)) {
return ['code' => 0, 'msg' => '用户背包礼物不足', 'data' => null];
}
}
$room_hotvalue = 0;//房间热度(所有收礼人的礼物总值)
$gift_user_data = [];//收礼人收礼金币总和,交友和参与拍卖使用;
$label_text = '';//酒吧房撩TA的信息
$ToUserInfos = [];//酒吧房被撩用户集合
foreach ($to_array as $k => $to_uid){
$gift_box_str = '';
$gift_user_data[]['user_id'] = $to_uid;
$receive_gift_total = 0;//收礼人收到的礼物总值
$gift_box = [];//开出的盲盒
//送礼 开启事务
Db::startTrans();
if($type == 1) {
//扣除用户金币并记录日志
$wallet_update = model('api/UserWallet')->change_user_cion_log($uid, $gift_price, $room_id, 10, '购买礼物');
if (!$wallet_update) {
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-1', 'data' => null];
}
}else{
//扣除背包礼物并记录日志
$gift_pack = $this -> change_user_gift_pack_log(3,$uid,$gid,$num,'房间送礼');
if(!$gift_pack){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-2', 'data' => null];
}
}
//查询礼物是否是盲盒
if($gift_info['label'] == 2){//趣味礼物(盲盒)
$gift_box_map = [];
for($i = 0; $i < $num; $i++){
//开盲盒
$gift_box1[$i] = $this -> open_box($gid,$uid,$to_uid,$room_id,$gift_bag_id);
if($gift_box1[$i]['code'] != 1){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-3', 'data' => null];
}
$gift_box[$i] = $gift_box1[$i]['data'];
//开出的礼物价值
$receive_gift_total += $gift_box[$i]['gift_price'];
//礼物整合
$gift_id = $gift_box[$i]['gift_id'];
$gift_name = $gift_box[$i]['gift_name'];
if(isset($gift_box_map[$gift_id])){
// 如果礼物ID已存在数量加1
$gift_box_map[$gift_id]['count']++;
}else{
// 如果礼物ID不存在添加新项
$gift_box_map[$gift_id] = [
'name' => $gift_name,
'count' => 1
];
}
//使用收礼用户 和礼物ID 查询礼物墙
$gift_wall = db::name('user_gift_wall')->where(['user_id'=>$to_uid,'gift_id'=>$gift_id])->find();
if($gift_wall){
db::name('user_gift_wall')->where(['id'=>$gift_wall['id']])->inc('count',1)->update();
$userIds = explode(',',$gift_wall['give_user_ids']);
if(!in_array($uid,$userIds)){
$userIds[] = $uid;
db::name('user_gift_wall')->where(['id'=>$gift_wall['id']])->update(['give_user_ids'=>implode(',',$userIds)]);
}
}else{
db::name('user_gift_wall')->insert([
'user_id' => $to_uid,
'gift_id' => $gift_id,
'count' => 1,
'give_user_ids' => $uid,
'updatetime' => time()
]);
}
}
if(!empty($gift_box_map)){
//拼接礼物字符串 (娃哈哈 * 2 / 娃哈哈1 * 1)这种格式
$gift_box_str_parts = [];
foreach($gift_box_map as $gift_id => $gift_info_data){
$gift_box_str_parts[] = $gift_info_data['name'] . ' * ' . $gift_info_data['count'];
}
$gift_box_str = implode(' / ', $gift_box_str_parts);
}
}else{
$receive_gift_total = $gift_price;
}
$gift_user_data[$k]['gift_price'] = $receive_gift_total;
//计算收礼人得益 //1聊天送礼物 2房间语聊送礼 3直播送礼 4动态打赏 99房主收益 98主持人收益
$receiver_earnings = model('GiveGift') -> receiver_earnings($to_uid,$receive_gift_total,2);
if($receiver_earnings > 0){
//增加收益并记录日志
$receiver = model('api/UserWallet')->change_user_earnings_log($to_uid,$receiver_earnings,$room_id,11,'收礼增加收益');
if(!$receiver){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-4', 'data' => null];
}
}
//用户魅力等级更新
$user_level = model('Level')->user_level_data_update($to_uid,$receive_gift_total,2,$room_id);
if(!$user_level){
Db::rollback();
return ['code' => 0, 'msg' => '用户等级更新失败', 'data' => null];
}
$room_owner_earnings = 0;//房主收益
$guild_earnings = 0;//公会会长收益
$guid_ratio = 0;//公会长收益率
$receive_ratio = get_system_config_value('room_gift_ratio');//房间收礼人收益
//计算房主收益//room_author_ratio
$room_owner_earnings = model('GiveGift') -> receiver_earnings($room_owner,$receive_gift_total,99);//结果是钻石
if($room_owner_earnings > 0){
//在主持位的主持人
$host_id = Db::name('vs_room_pit')->where(['room_id'=>$room_id,'pit_number'=>9])->value('user_id');
if($host_id){
//计算主持人收益
$ratio = db::name('vs_room_host')->where(['room_id'=>$room_id,'user_id'=>$host_id,'delete_time'=>null,'type'=>1])->value('ratio');
if(!$ratio){
$ratio = 0;
}
$host_earnings = round($room_owner_earnings * $ratio / 100,4);
if($host_earnings > 0){
//增加主持人收益并记录日志
$host_earnings_earning = model('api/UserWallet')->change_user_earnings_log($host_id,$host_earnings,$room_id,19,'主持人收益');
if(!$host_earnings_earning){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-7', 'data' => null];
}
//增加房主收益并记录日志
$room_owner_earningss = $room_owner_earnings - $host_earnings;
if($room_owner_earningss > 0){
$room_owner_earning = model('api/UserWallet')->change_user_earnings_log($room_owner,$room_owner_earningss,$room_id,18,'房主收益');
if(!$room_owner_earning){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-8', 'data' => null];
}
}
}else{
//增加房主收益并记录日志
$room_owner_earning = model('api/UserWallet')->change_user_earnings_log($room_owner,$room_owner_earnings,$room_id,18,'房主收益');
if(!$room_owner_earning){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-9', 'data' => null];
}
}
}else{
//增加房主收益并记录日志
$room_owner_earning = model('api/UserWallet')->change_user_earnings_log($room_owner,$room_owner_earnings,$room_id,18,'房主收益');
if(!$room_owner_earning){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-10', 'data' => null];
}
}
}
//收礼人是否加入公会
$is_join_guild = Db::name('vs_guild_user')->where(['user_id'=>$to_uid,'status'=>1,'quit_time' => 0])->field('guild_id,settlement_ratio')->find();
if($is_join_guild){
//公会长收益 房间收礼人收益+房间收礼人加入公会后增加收益
$max_settlement_ratio = get_system_config_value('room_gift_ratio') + get_system_config_value('room_gift_guild_ratio');
$receive_ratio = $is_join_guild['settlement_ratio'] ?? 0;//加入公会后 公会长设置的收益
$guid_ratio = $max_settlement_ratio - $receive_ratio;
if($guid_ratio > 0){
//公会长收益
$guild_earnings = coin_earning($receive_gift_total,$guid_ratio);
if($guild_earnings > 0){
$guild_user = db::name('vs_guild')->where(['id' => $is_join_guild['guild_id']])->value('user_id');
$guild_earnings_in = model('api/UserWallet')
->change_user_earnings_log($guild_user,$guild_earnings,$room_id,21,'工会长收益');
if(!$guild_earnings_in){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-11', 'data' => null];
}
}
}
}
if($gift_info['label'] == 2) {//趣味礼物(盲盒)
// if($gift_box){
// foreach ($gift_box as $i => $v){
// //记录一下收礼记录
// $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];
// }
// }
// }
$give_gift = $this -> change_user_give_gift_logs($uid,$gid,$receive_gift_total,$num,$to_uid,2,$type,$room_id,$gift_box_str,0,2);
}else{
//收礼记录行为日志
$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];
}
}
//记录送礼利率和各方收益
//平台收益 = 总金额 - 收礼人收益 - 房主收益 - 工会长收益
$room_owner_ratio = get_system_config_value('room_author_ratio');
$app_ratio = 100 - $receive_ratio - $room_owner_ratio - $guid_ratio;
$app_earning = coin_earning($receive_gift_total, $app_ratio);
$gift_rate = $this->change_give_gift_profit($give_gift, $receive_ratio, $receiver_earnings, $room_owner_ratio, $room_owner_earnings, $app_ratio, $app_earning,$guid_ratio,$guild_earnings);
if(!$gift_rate){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-12', 'data' => null];
}
$room_hotvalue += $receive_gift_total;
Db::commit();
//各种需要的及时推送
$room_pk = Db::name('vs_room_pk')->where(['status' => 3, 'room_id_a' => $room_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', $receive_gift_total * 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' => $room_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', $receive_gift_total * 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);
}
}
$ToUserInfo = model('User')->get_user_base_info($to_uid);
$ToUserInfo['charm'] = db::name('vs_room_user_charm')->where(['user_id' => $to_uid,'room_id' => $room_id])->value('charm');//魅力
//推送其他时刻需要的信息 其他放到异步回调里
if($gift_info['label'] == 2){
//循环开出来的盲盒,相同的礼物只推送一次,消息推送为$FromUserInfo['nickname'] . ' 送给 ' . $ToUserInfo['nickname'].' 趣味礼物 ' .$gift_inf['gift_name'].' x 多少';
if($gift_box){
// 统计相同礼物的数量
$giftCount = [];
foreach ($gift_box as $key=>$gv) {
$gift_infos = 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_infos,
'count' => 1
];
}
$gift_box[$key]['gift_name'] = $gift_infos['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,$room_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,$room_id,$effectData);
if($gift_inf['is_public_server'] == 1){
//推送礼物横幅
$push = new Push(UID, $room_id);
$room_name = Db::name('vs_room')->where(['id' => $room_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' => $room_id,
'fromUserName' => $FromUserInfo['nickname'],
'toUserName' => $ToUserInfo['nickname'],
'giftName' => $gift_inf['gift_name'],
'roomId' => $room_id,
'number' => $count,
];
$push->giftBanner($text_list_new);
}
}
}
}else{
if($gift_info['label'] == 17) {
$label_text .= $FromUserInfo['nickname'] . ' 送给 ' . $ToUserInfo['nickname'] . ' 礼物 ' . $gift_info['gift_name'] . ' x ' . $num . "\n";
$ToUserInfos[] = $ToUserInfo;
}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, $room_id, $text);
}
if($gift_info['is_public_server'] == 1){
//推送礼物横幅
$push = new Push($uid, $room_id);
$room_name = Db::name('vs_room')->where(['id' => $room_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' => $room_id,
'fromUserName' => $FromUserInfo['nickname'],
'toUserName' => $ToUserInfo['nickname'],
'giftName' => $gift_info['gift_name'],
'roomId' => $room_id,
'number' => $num,
];
$push->giftBanner($text_list_new);
}
}
}
if($gift_info['label'] == 17) {
$label_text = rtrim($label_text, "\n");
$texts = [
'FromUserInfo' => $FromUserInfo,
'ToUserInfos' => $ToUserInfos,
'GiftInfo' => $gift_info,
'gift_num' => $num,
'text' => $label_text
];
//聊天室推送系统消息
model('Chat')->sendMsg(1200, $room_id, $texts);
}
//增加房间火热值hot_value
$gift_totalaa = $room_hotvalue * get_system_config_value('coin_charm_exp');
db::name('vs_room')->where(['id' => $room_id])->inc('hot_value', $gift_totalaa)->inc('today_hot_value', $gift_totalaa)->update();
if($room_type == 7){
$reslut = [
'data' => ['gift_total' => $gift_totalaa,'gift_user_data' =>$gift_user_data,]
];
model('api/Friend')->room_give_gift($uid, $to_array,$room_id,$reslut,$heart_id);
}
//gift_total:收礼人收礼金币总和交友和参与拍卖使用cp_typecp交友使用gift_user_datacp交友使用
return ['code' => 1, 'msg' => '送礼成功', 'data' => ['gift_total' => $room_hotvalue,'gift_user_data' =>null,'cp_type' => null]];
}
//送一个人的礼物-盘(天空之境)
public function single_send_gift_pan($uid,$to_uid,$gid,$num,$type,$room_id,$gift_bag_id,$heart_id)
{
//送的礼物信息
$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];
// }
$mobile = Db::name('user')->where(['id'=>$to_uid])->value('mobile');
$is_real = db::name('user_auth')->where('mobile' , $mobile)->value('is_real');
if($is_real != 1){
return ['code' => 0, 'msg' => '该用户未实名,暂不支持收礼', 'data' => null];
}
$room_type = model('Room')->get_room_type($room_id);
//送给一人礼物的总价格
$gift_price = $gift_info['gift_price'] * $num;
//送礼 开启事务
Db::startTrans();
$receive_gift_total = $gift_price;//收礼人收到的礼物总值
//计算收礼人得益 //1聊天送礼物 2房间语聊送礼 3直播送礼 4动态打赏 99房主收益 98主持人收益
$receiver_earnings = model('GiveGift') -> receiver_earnings($to_uid,$receive_gift_total,2);
if($receiver_earnings > 0){
//增加收益并记录日志
$receiver = model('api/UserWallet')->change_user_earnings_log($to_uid,$receiver_earnings,$room_id,11,'收礼增加收益');
if(!$receiver){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-4', 'data' => null];
}
}
//用户魅力等级更新
$user_level = model('Level')->user_level_data_update($to_uid,$receive_gift_total,2,$room_id);
if(!$user_level){
Db::rollback();
return ['code' => 0, 'msg' => '用户等级更新失败', 'data' => null];
}
$guild_earnings = 0;//公会会长收益
$guid_ratio = 0;//公会长收益率
$receive_ratio = get_system_config_value('room_gift_ratio');//房间收礼人收益
$room_owner = Db::name('vs_room')->where(['id'=>$room_id,'apply_status'=>2])->value('user_id');
//计算房主收益//room_author_ratio
$room_owner_earnings = model('GiveGift') -> receiver_earnings($room_owner,$receive_gift_total,99);//结果是钻石
if($room_owner_earnings > 0){
//在主持位的主持人
$host_id = Db::name('vs_room_pit')->where(['room_id'=>$room_id,'pit_number'=>9])->value('user_id');
if($host_id){
//计算主持人收益
$ratio = db::name('vs_room_host')->where(['room_id'=>$room_id,'user_id'=>$host_id,'delete_time'=>null,'type'=>1])->value('ratio');
if(!$ratio){
$ratio = 0;
}
$host_earnings = round($room_owner_earnings * $ratio / 100,4);
if($host_earnings > 0){
//增加主持人收益并记录日志
$host_earnings_earning = model('api/UserWallet')->change_user_earnings_log($host_id,$host_earnings,$room_id,19,'主持人收益');
if(!$host_earnings_earning){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-7', 'data' => null];
}
//增加房主收益并记录日志
$room_owner_earningss = $room_owner_earnings - $host_earnings;
if($room_owner_earningss > 0){
$room_owner_earning = model('api/UserWallet')->change_user_earnings_log($room_owner,$room_owner_earningss,$room_id,18,'房主收益');
if(!$room_owner_earning){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-8', 'data' => null];
}
}
}else{
//增加房主收益并记录日志
$room_owner_earning = model('api/UserWallet')->change_user_earnings_log($room_owner,$room_owner_earnings,$room_id,18,'房主收益');
if(!$room_owner_earning){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-9', 'data' => null];
}
}
}else{
//增加房主收益并记录日志
$room_owner_earning = model('api/UserWallet')->change_user_earnings_log($room_owner,$room_owner_earnings,$room_id,18,'房主收益');
if(!$room_owner_earning){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-10', 'data' => null];
}
}
}
//收礼人是否加入公会
$is_join_guild = Db::name('vs_guild_user')->where(['user_id'=>$to_uid,'status'=>1,'quit_time' => 0])->field('guild_id,settlement_ratio')->find();
if($is_join_guild){
//公会长收益 房间收礼人收益+房间收礼人加入公会后增加收益
$max_settlement_ratio = get_system_config_value('room_gift_ratio') + get_system_config_value('room_gift_guild_ratio');
$receive_ratio = $is_join_guild['settlement_ratio'] ?? 0;//加入公会后 公会长设置的收益
$guid_ratio = $max_settlement_ratio - $receive_ratio;
if($guid_ratio > 0){
//公会长收益
$guild_earnings = coin_earning($receive_gift_total,$guid_ratio);
if($guild_earnings > 0){
$guild_user = db::name('vs_guild')->where(['id' => $is_join_guild['guild_id']])->value('user_id');
$guild_earnings_in = model('api/UserWallet')
->change_user_earnings_log($guild_user,$guild_earnings,$room_id,21,'工会长收益');
if(!$guild_earnings_in){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-11', 'data' => null];
}
}
}
}
//收礼记录行为日志
$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];
}
//记录送礼利率和各方收益
//平台收益 = 总金额 - 收礼人收益 - 房主收益 - 工会长收益
$room_owner_ratio = get_system_config_value('room_author_ratio');
$app_ratio = 100 - $receive_ratio - $room_owner_ratio - $guid_ratio;
$app_earning = coin_earning($gift_price, $app_ratio);
$gift_rate = $this->change_give_gift_profit($give_gift, $receive_ratio, $receiver_earnings, $room_owner_ratio, $room_owner_earnings, $app_ratio, $app_earning,$guid_ratio,$guild_earnings);
if(!$gift_rate){
Db::rollback();
return ['code' => 0, 'msg' => '网络错误-12', 'data' => null];
}
//增加房间火热值hot_value
$gift_totalaa = $receive_gift_total * get_system_config_value('coin_charm_exp');
db::name('vs_room')->where(['id' => $room_id])->inc('hot_value', $gift_totalaa)->inc('today_hot_value', $gift_totalaa)->update();
Db::commit();
//各种需要的及时推送
$room_pk = Db::name('vs_room_pk')->where(['status' => 3, 'room_id_a' => $room_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', $receive_gift_total * 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' => $room_id])->field('pk_id')->find();
if (!empty($room_pk_b)) {
// 当前 room_id 是 room_id_b
Db::name('vs_room_pk')->where('pk_id', $room_pk_b['pk_id'])->setInc('receive_value_b', $receive_gift_total * 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);
}
}
$ToUserInfo = model('User')->get_user_base_info($to_uid);
$ToUserInfo['charm'] = db::name('vs_room_user_charm')->where(['user_id' => $to_uid,'room_id' => $room_id])->value('charm');//魅力
//推送其他时刻需要的信息 其他放到异步回调里
//cp检测且处理升级事宜
$cp_type = model('api/UserCp')->checkGift($uid, $gid, $to_uid, $room_id, $num,$receive_gift_total);//0-不处理1-表明心意2-组成Cp
$gift_user_data = [];//收礼人信息和收到的金币 交友和参与拍卖使用
if($cp_type != 0){
$gift_user_data[] = [
'user_id' => $to_uid,
'gift_price' => $receive_gift_total,
];
}
if($room_type == 7){
$reslut = [
'data' => ['gift_total' => $receive_gift_total,'gift_user_data' =>$gift_user_data,]
];
model('api/Friend')->room_give_gift($uid, $to_uid,$room_id,$reslut,$heart_id);
}
return ['code' => 1, 'msg' => '送礼成功', 'data' => null];
}
//记录用户赠送背包礼物日志
public function change_user_gift_pack_log($packType,$uid,$gid,$num,$remark)
{
$user_gift_pack = db::name('vs_user_gift_pack')->where(['user_id'=>$uid,'gid'=>$gid])->find();
$user_gift_packs['num'] = $user_gift_pack['num'] - $num;
$user_gift_packs['updatetime'] = time();
$gift_pack_update = db::name('vs_user_gift_pack')->where(['user_id'=>$uid,'gid'=>$gid])->update($user_gift_packs);
if(!$gift_pack_update){
return false;
}
$data = [
'user_id' => $uid,
'gid' => $gid,
'change_num' => $num,
'type' => $packType,
'remarks' => $remark,
'createtime' => time(),
];
$res = Db::name('vs_user_gift_pack_log')->insert($data);
if(!$res){
return false;
}
return true;
}
/*
* 开盲盒
*/
public function open_box($gift_id,$user_id,$gift_user_id,$room_id,$gift_bag_id){
//获取盲盒配置
if($gift_bag_id){
$gift_bag = db::name("vs_gift_bag")->where(['id'=>$gift_bag_id])->find();
if(!$gift_bag){
return ['code' => 0, 'msg' => '当前盲盒不存在', 'data' => []];
}
$periods = $gift_bag['periods'] ?? 0;
$bag_gift = db::name("vs_gift")->where(['gid'=>$gift_id])->find();// 获取盲盒信息
//随机获取一个礼物
$where = [
'gift_bag_id' => $gift_bag_id,
'quantity' => ['>',0],
'remaining_number' => ['>',0]
];
// 优化:基于剩余数量的加权随机选择
$gift_bag_details = db::name("vs_gift_bag_detail")->where($where)->select();
if (empty($gift_bag_details)) {
return ['code' => 0, 'msg' => '当前盲盒无可用礼物', 'data' => []];
}
// 实现加权随机算法:剩余数量越多,被抽中的概率越大
$total_remaining = 0;
foreach ($gift_bag_details as $gift) {
$total_remaining += $gift['remaining_number'];
}
$rand_value = mt_rand(1, $total_remaining);
$current_sum = 0;
$gift_bag_detail = null;
foreach ($gift_bag_details as $gift) {
if($gift['remaining_number'] <= 0){
continue;
}
$current_sum += $gift['remaining_number'];
if ($rand_value <= $current_sum) {
$gift_bag_detail = $gift;
break;
}
}
//关禁闭----限制某个房间抽奖只能抽盘里数量最多的礼物--------
$gift_bag_details = db::name("vs_gift_bag_detail")->where([ 'gift_bag_id' => $gift_bag_id,'remaining_number' => ['>',0]])->order('remaining_number', 'desc')->find();
if($gift_bag_details && in_array($room_id,[49])){
$gift_bag_detail = $gift_bag_details;
}
//关禁闭---------------------------------------------
if($gift_bag_detail){
//获取开出礼物的信息
$gift = db::name("vs_gift")->where(['gid'=>$gift_bag_detail['foreign_id']])->find();
//处理礼包发放记录表
$data = [];
$data['user_id'] = $user_id;
$data['gift_user_id'] = $gift_user_id;
$data['gift_bag_id'] = $gift_bag_id;
$data['gift_id'] = $gift_bag_detail['foreign_id'];
$data['periods'] = $periods;
$data['room_id'] = $room_id;
$data['gift_price'] = $gift['gift_price'];
$data['bag_price'] = $bag_gift['gift_price'];
$data['createtime'] = time();
$result = db::name("vs_gift_bag_receive_log")->insert($data);
if(!$result){
return ['code' => 0, 'msg' => '失败,', 'data' => []];
}
//减去盲盒包礼物数量
$ret = db::name("vs_gift_bag_detail")->where('id',$gift_bag_detail['id'])->setDec('remaining_number');
if(!$ret){
return ['code' => 0, 'msg' => '失败.', 'data' => []];
}
//判断剩余数量是否为0 为0重置进入下一期
$gift_bag_num = db::name("vs_gift_bag_detail")->where('gift_bag_id',$gift_bag_id)->sum('remaining_number');
if($gift_bag_num <= 0){
db::name("vs_gift_bag")->where('id',$gift_bag_id)->setInc('periods');
db::name("vs_gift_bag_detail")->where('gift_bag_id',$gift_bag_id)->update(['remaining_number'=>db::raw('quantity')]);
}
}else{
return ['code' => 0, 'msg' => '失败!', 'data' => []];
}
}else{
return ['code' => 0, 'msg' => '失败!!', 'data' => []];
}
$result_data = [
'gift_id'=>$gift_bag_detail['foreign_id'],
'gift_price'=>$gift['gift_price'],
'gift_name'=>$gift['gift_name'],
'is_public_screen'=>$gift['is_public_screen'],
];
return ['code' => 1, 'msg' => '成功', 'data' => $result_data];
}
//记录用户送礼日志(送单人)
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 = [
'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(),
];
// 插入数据库
$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'=>$to_id])->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'=>$to_id])->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);
return $data['id'];
}
/*
* 送礼利率收益等具体记录
* @param $give_gift_id 送礼记录表ID
* @param $gift_user_ratio 收礼人 收礼时的收益率(单位%
* @param $gift_user_earning 收礼人的收益
* @param $room_owner_ratio 房主收益率(单位 %
* @param $room_owner_earning 房主收益
* @param $app_ratio 平台收益率(单位 %
* @param $app_earning 平台收益
* @param $guid_ratio 公会收益率(单位 %
* @param $guild_earning 公会收益
* @return bool
*/
public function change_give_gift_profit($give_gift_id,$gift_user_ratio,$gift_user_earning = 0,$room_owner_ratio = 0,$room_owner_earning = 0,$app_ratio = 0,$app_earning = 0,$guid_ratio=0,$guild_earning=0)
{
$data = [
'give_gift_id' => $give_gift_id,
'gift_user_ratio' => $gift_user_ratio,
'gift_user_earning' => $gift_user_earning,
'room_owner_ratio' => $room_owner_ratio,
'room_owner_earning' => $room_owner_earning,
'app_ratio' => $app_ratio,
'app_earning' => $app_earning,
'guid_ratio' => $guid_ratio,
'guid_ratio_earning' => $guild_earning,
'createtime' => time(),
];
$res = Db::name('vs_give_gift_ratio_log')->insert($data);
if(!$res){
return false;
}
return true;
}
}