签约结束

This commit is contained in:
2025-12-01 16:48:05 +08:00
parent c0da472500
commit efaef64481
2 changed files with 117 additions and 109 deletions

View File

@@ -580,46 +580,50 @@ class Room extends Model
} }
//用户是否在其他房间 //用户是否在其他房间
$room_user = db::name('vs_room_visitor')->where(['user_id' => $user_id])->order('id desc')->value('room_id'); // $room_user = db::name('vs_room_visitor')->where(['user_id' => $user_id])->order('id desc')->value('room_id');
if (isset($room_user) && $room_user != $room_id && $room_user != 0) { // if (isset($room_user) && $room_user != $room_id && $room_user != 0) {
//根据所在房间状态判断是否要退出房间并且下麦 // //根据所在房间状态判断是否要退出房间并且下麦
$roomInfo = db::name('vs_room')->where(['id' => $room_user,'apply_status' => 2])->find(); // $roomInfo = db::name('vs_room')->where(['id' => $room_user,'apply_status' => 2])->find();
if(($roomInfo['type_id'] == 1 || $roomInfo['type_id'] == 3 || $roomInfo['type_id'] == 4 || $roomInfo['type_id'] == 8)&& $roomInfo['label_id'] == 1){ // if(($roomInfo['type_id'] == 1 || $roomInfo['type_id'] == 3 || $roomInfo['type_id'] == 4 || $roomInfo['type_id'] == 8)&& $roomInfo['label_id'] == 1){
//退出其他房间 // //退出其他房间
$this->quit_room($user_id, $room_user,$user_id); // $this->quit_room($user_id, $room_user,$user_id);
}elseif(($roomInfo['type_id'] == 1 || $roomInfo['type_id'] == 3 || $roomInfo['type_id'] == 4 || $roomInfo['type_id'] == 8)&& $roomInfo['label_id'] == 2){//k歌 // }elseif(($roomInfo['type_id'] == 1 || $roomInfo['type_id'] == 3 || $roomInfo['type_id'] == 4 || $roomInfo['type_id'] == 8)&& $roomInfo['label_id'] == 2){//k歌
//他的点歌列表 // //他的点歌列表
$song_list = db::name('vs_room_song')->where(['room_id' => $room_user, 'user_id' => $user_id])->select(); // $song_list = db::name('vs_room_song')->where(['room_id' => $room_user, 'user_id' => $user_id])->select();
if(count($song_list) > 0){ // if(count($song_list) > 0){
foreach ($song_list as $value){ // foreach ($song_list as $value){
if($value['status'] == 2 && $value['times_status'] == 1){ // if($value['status'] == 2 && $value['times_status'] == 1){
//切歌 // //切歌
model('api/RoomSong')->change_song($room_id,$value['did']); // model('api/RoomSong')->change_song($room_id,$value['did']);
} // }
if($value['status'] == 1){ // if($value['status'] == 1){
db::name('vs_room_song')->where(['did' => $value['did']])->update(['status' => 3]); // db::name('vs_room_song')->where(['did' => $value['did']])->update(['status' => 3]);
} // }
} // }
} // }
//记录用户退出房 // //记录用户退出房
$this->quit_room($user_id, $room_user,$user_id); // $this->quit_room($user_id, $room_user,$user_id);
}elseif($roomInfo['type_id'] == 2){ // }elseif($roomInfo['type_id'] == 2){
//是否在拍卖位 // //是否在拍卖位
$pitNumber = Cache::get('auction_user_'.$room_user); // $pitNumber = Cache::get('auction_user_'.$room_user);
if(isset($pitNumber) && $pitNumber == $user_id){ // if(isset($pitNumber) && $pitNumber == $user_id){
//用户在竞拍位 退出且不下麦 // //用户在竞拍位 退出且不下麦
//记录用户退出房 // //记录用户退出房
db::name('vs_room_visitor')->where(['room_id' => $room_user, 'user_id' => $user_id])->delete(); // db::name('vs_room_visitor')->where(['room_id' => $room_user, 'user_id' => $user_id])->delete();
$nickname = db::name('user')->where('id', $user_id)->value('nickname'); // $nickname = db::name('user')->where('id', $user_id)->value('nickname');
$text['text'] = '用户 ' . $nickname .' 退出了房间'; // $text['text'] = '用户 ' . $nickname .' 退出了房间';
model('api/Chat')->sendMsg(1002,$room_user,$text,$user_id); // model('api/Chat')->sendMsg(1002,$room_user,$text,$user_id);
}else{ // }else{
//退出其他房间 // //退出其他房间
$this->quit_room($user_id, $room_user,$user_id); // $this->quit_room($user_id, $room_user,$user_id);
} // }
} // }
//
// }
} //用户是否在其他房间(重构)
//1其他房间游戏中不让退出 给前端返回房间ID
//2允许退出强行退出……
//K歌模式下获取歌曲信息 //K歌模式下获取歌曲信息
$song_pit_list = null; $song_pit_list = null;

View File

@@ -35,12 +35,14 @@ class Sign extends Model
'sign_type' => 1,//签约房状态0-等待开始1-进行中 'sign_type' => 1,//签约房状态0-等待开始1-进行中
'updatetime' => time() 'updatetime' => time()
]); ]);
$market_value = db::name('user')->where('id', $sign_user_id)->value('market_value');
$res = db::name('vs_room_sign')->insertGetId([ $res = db::name('vs_room_sign')->insertGetId([
'room_id' => $room_id, 'room_id' => $room_id,
'sign_type' => 1, 'sign_type' => 1,
'end_time' => time() + 60 * 5,//签约时长5分钟 'end_time' => time() + 60 * 5,//签约时长5分钟
'sign_user_id' => $sign_user_id, 'sign_user_id' => $sign_user_id,
'sign_day' => $sign_times, 'sign_day' => $sign_times,
'market_value' => $market_value,
'createtime' => time() 'createtime' => time()
]); ]);
if($res){ if($res){
@@ -48,7 +50,7 @@ class Sign extends Model
$text['text'] = '开始签约'; $text['text'] = '开始签约';
$text['sign_id'] = $res; $text['sign_id'] = $res;
$text['sign_day'] = $sign_times; $text['sign_day'] = $sign_times;
$text['current_body_value'] = db::name('user')->where('id', $sign_user_id)->value('market_value'); $text['current_body_value'] = $market_value;
$text['end_time'] = time() + 60 * 5;//签约时长5分钟 $text['end_time'] = time() + 60 * 5;//签约时长5分钟
model('api/Chat')->sendMsg(1090,$room_id,$text); model('api/Chat')->sendMsg(1090,$room_id,$text);
@@ -219,11 +221,48 @@ class Sign extends Model
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null]; return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
} }
//签约 //签约
if($sign_user_type == 2 && $before_sign_user == $max_sign_user['user_id']){ //根据被签约的用户类型计算给响应用户的金额
$resultt = db::name('vs_user_sign') //减去平台抽成 剩余的给相应的人
->where(['id' => $is_sign['id']]) $sign_user_cion = $max_sign_user['sign_value'] * (100 - $sign_app_ratio) / 100;//金币数
->update(['end_time' => time() + $sign_times*24*60*60,'sign_user_type' => $sign_user_type,'type'=>3]); //计算收益
if(!$resultt){ $shouyizs = coin_earning($sign_user_cion,100);
//签过没过期
if($sign_user_type == 2){
//本次签的还是上次的师傅
if($before_sign_user == $max_sign_user['user_id']){
$resultt = db::name('vs_user_sign')
->where(['id' => $is_sign['id']])
->update(['end_time' => time() + $sign_times*24*60*60,'sign_user_type' => $sign_user_type]);
if(!$resultt){
db::rollback();
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
}
}else{
$result5 = db::name('vs_user_sign')->where(['id' => $is_sign['id']])
->update(['end_time' => time(),'type' => 3]);
if(!$result5){
db::rollback();
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
}
$data = [
'parent_user_id' => $max_sign_user['user_id'],
'sign_user_id' => $max_sign_user['sign_user_id'],
'sign_user_type' => $sign_user_type,
'sign_times' => $sign_times*24*60*60,
'end_time' => time() + $sign_times*24*60*60,
'createtime' => time(),
];
$result11 = db::name('vs_user_sign')->insert($data);
if(!$result11){
db::rollback();
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
}
}
//签过没过期 给上任签约者
$result4 = model('api/GiveGift') -> change_user_cion_or_earnings_log($before_sign_user,$shouyizs,$room_id,2,54,'解约补偿');
if(!$result4){
db::rollback(); db::rollback();
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null]; return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
} }
@@ -241,6 +280,33 @@ class Sign extends Model
db::rollback(); db::rollback();
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null]; return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
} }
if($sign_user_type == 0){
//首次签约 给被签约的人
$result4 = model('api/GiveGift') -> change_user_cion_or_earnings_log($max_sign_user['sign_user_id'],$shouyizs,$room_id,2,52,'被首次签约成功收入');
if(!$result4){
db::rollback();
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
}
}elseif ($sign_user_type == 1){
//签过 给被签约的人分七天给他
// 数据插入 循环插入7条数据 day 取值是今天开始连续七天 的每一天的值 到天
for ($i = 0; $i < 7; $i++){
$data1 = [
'user_id' => $max_sign_user['sign_user_id'],
'value' => round($shouyizs/7, 4),
'day' => date('Y-m-d', strtotime("+$i days")), // 从今天开始连续七天的日期
'times' => $i+1,
'createtime' => time()
];
// 插入数据库
$result[$i] = db::name('vs_user_sign_task')->insert($data1);
if(!$result[$i]){
db::rollback();
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
}
}
}
} }
//查看当前出价用户是否创建家族 //查看当前出价用户是否创建家族
@@ -287,68 +353,6 @@ class Sign extends Model
} }
} }
//根据被签约的用户类型计算给响应用户的金额
//减去平台抽成 剩余的给相应的人
$sign_user_cion = $max_sign_user['sign_value'] * (100 - $sign_app_ratio) / 100;//金币数
//计算收益
$shouyizs = coin_earning($sign_user_cion,100);
if($sign_user_type == 0){
//首次签约 给被签约的人
$result4 = model('api/GiveGift') -> change_user_cion_or_earnings_log($max_sign_user['sign_user_id'],$shouyizs,$room_id,2,52,'被首次签约成功收入');
if(!$result4){
db::rollback();
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
}
}elseif ($sign_user_type == 1){
//签过 给被签约的人分七天给他
// 数据插入 循环插入7条数据 day 取值是今天开始连续七天 的每一天的值 到天
for ($i = 0; $i < 7; $i++){
$data1 = [
'user_id' => $max_sign_user['sign_user_id'],
'value' => round($shouyizs/7, 4),
'day' => date('Y-m-d', strtotime("+$i days")), // 从今天开始连续七天的日期
'times' => $i+1,
'createtime' => time()
];
// 插入数据库
$result[$i] = db::name('vs_user_sign_task')->insert($data1);
if(!$result[$i]){
db::rollback();
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
}
}
}elseif ($sign_user_type == 2){
////签过没过期 本次签的还是上次的师傅
if($before_sign_user == $max_sign_user['user_id']){
//这里需要确定给徒弟给多少
$sign_user_c = $max_sign_user['sign_value'] * (100 - get_system_config_value('first_sign_app_ratio')) / 100;//金币数
$money = coin_earning($sign_user_c,100);
$result4 = model('api/GiveGift') -> change_user_cion_or_earnings_log($max_sign_user['sign_user_id'],$money,$room_id,2,54,'解约补偿');
if(!$result4){
db::rollback();
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
}
}else{
//签过没过期 给上任签约者
$result4 = model('api/GiveGift') -> change_user_cion_or_earnings_log($before_sign_user,$shouyizs,$room_id,2,54,'解约补偿');
if(!$result4){
db::rollback();
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
}
//上任签约信息修改
if($is_sign){
$result5 = db::name('vs_user_sign')->where(['id' => $is_sign['id']])
->update(['end_time' => time(),'type' => 3]);
if(!$result5){
db::rollback();
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
}
}
}
}
//修改房间信息 //修改房间信息
$res1 = db::name('vs_room')->where('id',$room_id)->update([ $res1 = db::name('vs_room')->where('id',$room_id)->update([
'sign_type' => 0, 'sign_type' => 0,
@@ -371,8 +375,8 @@ class Sign extends Model
return ['code' => 0, 'msg' => '用户等级更新失败', 'data' => null]; return ['code' => 0, 'msg' => '用户等级更新失败', 'data' => null];
} }
//获取用户的身价 //获取用户签约开始的身价
$market_value = db::name('user')->where('id',$sign_user_id)->value('market_value'); $market_value = $sign['market_value'];
$sign_values = $max_sign_user['sign_value'] - $market_value; $sign_values = $max_sign_user['sign_value'] - $market_value;
//更新用户的身价并且添加记录 此时增长的身价是出价 这个出价就是身价溢价 //更新用户的身价并且添加记录 此时增长的身价是出价 这个出价就是身价溢价
$dd = model('api/MarketValue')->change($sign_user_id,$sign_values,3); $dd = model('api/MarketValue')->change($sign_user_id,$sign_values,3);