diff --git a/application/api/model/Room.php b/application/api/model/Room.php index 3aa546a..13417f7 100644 --- a/application/api/model/Room.php +++ b/application/api/model/Room.php @@ -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'); - if (isset($room_user) && $room_user != $room_id && $room_user != 0) { - //根据所在房间状态判断是否要退出房间并且下麦 - $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){ - //退出其他房间 - $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歌 - //他的点歌列表 - $song_list = db::name('vs_room_song')->where(['room_id' => $room_user, 'user_id' => $user_id])->select(); - if(count($song_list) > 0){ - foreach ($song_list as $value){ - if($value['status'] == 2 && $value['times_status'] == 1){ - //切歌 - model('api/RoomSong')->change_song($room_id,$value['did']); - } - if($value['status'] == 1){ - db::name('vs_room_song')->where(['did' => $value['did']])->update(['status' => 3]); - } - } - } - //记录用户退出房 - $this->quit_room($user_id, $room_user,$user_id); - }elseif($roomInfo['type_id'] == 2){ - //是否在拍卖位 - $pitNumber = Cache::get('auction_user_'.$room_user); - if(isset($pitNumber) && $pitNumber == $user_id){ - //用户在竞拍位 退出且不下麦 - //记录用户退出房 - 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'); - $text['text'] = '用户 ' . $nickname .' 退出了房间'; - model('api/Chat')->sendMsg(1002,$room_user,$text,$user_id); - }else{ - //退出其他房间 - $this->quit_room($user_id, $room_user,$user_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) { +// //根据所在房间状态判断是否要退出房间并且下麦 +// $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){ +// //退出其他房间 +// $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歌 +// //他的点歌列表 +// $song_list = db::name('vs_room_song')->where(['room_id' => $room_user, 'user_id' => $user_id])->select(); +// if(count($song_list) > 0){ +// foreach ($song_list as $value){ +// if($value['status'] == 2 && $value['times_status'] == 1){ +// //切歌 +// model('api/RoomSong')->change_song($room_id,$value['did']); +// } +// if($value['status'] == 1){ +// db::name('vs_room_song')->where(['did' => $value['did']])->update(['status' => 3]); +// } +// } +// } +// //记录用户退出房 +// $this->quit_room($user_id, $room_user,$user_id); +// }elseif($roomInfo['type_id'] == 2){ +// //是否在拍卖位 +// $pitNumber = Cache::get('auction_user_'.$room_user); +// if(isset($pitNumber) && $pitNumber == $user_id){ +// //用户在竞拍位 退出且不下麦 +// //记录用户退出房 +// 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'); +// $text['text'] = '用户 ' . $nickname .' 退出了房间'; +// model('api/Chat')->sendMsg(1002,$room_user,$text,$user_id); +// }else{ +// //退出其他房间 +// $this->quit_room($user_id, $room_user,$user_id); +// } +// } +// +// } - } + //用户是否在其他房间(重构) + //1:其他房间游戏中不让退出 给前端返回房间ID, + //2:允许退出,强行退出…… //K歌模式下获取歌曲信息 $song_pit_list = null; diff --git a/application/api/model/Sign.php b/application/api/model/Sign.php index 81f7d93..2dc4829 100644 --- a/application/api/model/Sign.php +++ b/application/api/model/Sign.php @@ -35,12 +35,14 @@ class Sign extends Model 'sign_type' => 1,//签约房状态:0-等待开始,1-进行中 'updatetime' => time() ]); + $market_value = db::name('user')->where('id', $sign_user_id)->value('market_value'); $res = db::name('vs_room_sign')->insertGetId([ 'room_id' => $room_id, 'sign_type' => 1, 'end_time' => time() + 60 * 5,//签约时长5分钟 'sign_user_id' => $sign_user_id, 'sign_day' => $sign_times, + 'market_value' => $market_value, 'createtime' => time() ]); if($res){ @@ -48,7 +50,7 @@ class Sign extends Model $text['text'] = '开始签约'; $text['sign_id'] = $res; $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分钟 model('api/Chat')->sendMsg(1090,$room_id,$text); @@ -219,11 +221,48 @@ class Sign extends Model 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']]) - ->update(['end_time' => time() + $sign_times*24*60*60,'sign_user_type' => $sign_user_type,'type'=>3]); - if(!$resultt){ + //根据被签约的用户类型计算给响应用户的金额 + //减去平台抽成 剩余的给相应的人 + $sign_user_cion = $max_sign_user['sign_value'] * (100 - $sign_app_ratio) / 100;//金币数 + //计算收益 + $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(); return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null]; } @@ -241,6 +280,33 @@ class Sign extends Model db::rollback(); 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([ 'sign_type' => 0, @@ -371,8 +375,8 @@ class Sign extends Model 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; //更新用户的身价并且添加记录 此时增长的身价是出价 这个出价就是身价溢价 $dd = model('api/MarketValue')->change($sign_user_id,$sign_values,3);