diff --git a/application/api/controller/Sign.php b/application/api/controller/Sign.php index 3e7a716..6ced483 100644 --- a/application/api/controller/Sign.php +++ b/application/api/controller/Sign.php @@ -28,10 +28,11 @@ class Sign extends BaseCom public function start_sign() { $room_id = input('room_id', 0); - if ($room_id <= 0) { + $user_id = input('user_id', 0); + if ($room_id <= 0 || $user_id <= 0) { return ['code' => 0, 'msg' => '参数错误']; } - $reslut = model('Sign')->start_sign($this->uid, $room_id); + $reslut = model('Sign')->start_sign($this->uid, $room_id, $user_id); return V($reslut['code'], $reslut['msg'], $reslut['data']); } diff --git a/application/api/model/Room.php b/application/api/model/Room.php index b60854a..c3ff53a 100644 --- a/application/api/model/Room.php +++ b/application/api/model/Room.php @@ -921,6 +921,29 @@ class Room extends Model }else{ $hour_open = 0;//关闭 } + + //签约房间信息 + if($room_info['type_id'] != 10){ + $sign_info = null; + }else{ + $room_sign = db::name('vs_room_sign')->where('room_id', $room_id)->order('id desc')->find(); + if($room_sign){ + $sign_info = [ + 'sign_status' => $room_sign['sign_type'], + 'sign_day' => $room_sign['sign_day'], + 'current_body_value' => db::name('user')->where('id', $room_sign['sign_user_id'])->value('market_value'), + 'end_time' => $room_sign['end_time'] + ]; + }else{ + $sign_info = [ + 'sign_status' => 0, + 'sign_day' => 0, + 'current_body_value' => 0, + 'end_time' => 0 + ]; + } + } + return ['code' => 1, 'msg' => '成功', 'data' => ['room_info' => $room_info, @@ -936,6 +959,7 @@ class Room extends Model 'gift_cycle' => $xlh_info, 'hour_ranking_open' => $hour_open, 'singer_info' => $singer_info, + 'sign_info' => $sign_info ] ]; } @@ -2221,6 +2245,28 @@ class Room extends Model $hour_open = 0;//关闭 } + //签约房间信息 + if($room_info['type_id'] != 10){ + $sign_info = null; + }else{ + $room_sign = db::name('vs_room_sign')->where('room_id', $room_id)->order('id desc')->find(); + if($room_sign){ + $sign_info = [ + 'sign_status' => $room_sign['sign_type'], + 'sign_day' => $room_sign['sign_day'], + 'current_body_value' => db::name('user')->where('id', $room_sign['sign_user_id'])->value('market_value'), + 'end_time' => $room_sign['end_time'] + ]; + }else{ + $sign_info = [ + 'sign_status' => 0, + 'sign_day' => 0, + 'current_body_value' => 0, + 'end_time' => 0 + ]; + } + } + return ['code' => 1, 'msg' => '成功', 'data' => ['room_info' => $room_info, @@ -2236,6 +2282,7 @@ class Room extends Model 'gift_cycle' => $xlh_info, 'hour_ranking_open' => $hour_open, 'singer_info' => $singer_info, + 'sign_info' => $sign_info ] ]; } diff --git a/application/api/model/Sign.php b/application/api/model/Sign.php index 17f379f..7af830b 100644 --- a/application/api/model/Sign.php +++ b/application/api/model/Sign.php @@ -13,7 +13,7 @@ class Sign extends Model * @param int $room_id 房间id * @param int $sign_user_id 签约麦的用户id */ - public function start_sign($user_id,$room_id){ + public function start_sign($user_id,$room_id,$sign_user_id){ //权限判断主持及以上才可操作 $owner = db::name('vs_room')->where(['id' => $room_id, 'user_id' => $user_id])->field('id')->find(); $host = db::name('vs_room_host')->where(['room_id' => $room_id, 'user_id' => $user_id,'delete_time' => null])->find(); @@ -32,6 +32,7 @@ class Sign extends Model 'sign_type' => 1, 'sign_time' => $sign_time, 'end_time' => time() + 60 * 5,//签约时长5分钟 + 'sign_user_id' => $sign_user_id, 'createtime' => time() ]); if($result){ @@ -151,16 +152,19 @@ class Sign extends Model * @param int $sign_time 签约场次 * @param int $sign_user_id 签约麦的用户id */ - public function end_sign($user_id,$room_id,$sign_time,$sign_user_id){ - //权限判断主持及以上才可操作 - $owner = db::name('vs_room')->where(['id' => $room_id, 'user_id' => $user_id])->field('id')->find(); - $host = db::name('vs_room_host')->where(['room_id' => $room_id, 'user_id' => $user_id,'delete_time' => null])->find(); - if(!$owner && !$host){ - return ['code' => 0, 'msg' => '没有权限操作', 'data' => null]; + public function end_sign($user_id,$room_id,$sign_time,$sign_user_id,$type = 1){ + if($type == 1){ + //权限判断主持及以上才可操作 + $owner = db::name('vs_room')->where(['id' => $room_id, 'user_id' => $user_id])->field('id')->find(); + $host = db::name('vs_room_host')->where(['room_id' => $room_id, 'user_id' => $user_id,'delete_time' => null])->find(); + if(!$owner && !$host){ + return ['code' => 0, 'msg' => '没有权限操作', 'data' => null]; + } } + //根据场次判断是否结束 $sign = db::name('vs_room_sign')->where( ['id' => $sign_time])->find(); - if($sign['sign_type'] != 1 || $sign['end_time'] < time()){ + if($sign['sign_type'] != 1){ return ['code' => 0, 'msg' => '该场次签约已结束', 'data' => null]; } //查询签约用户的身份 是否是第一次被签 是否当前有签 @@ -171,6 +175,7 @@ class Sign extends Model //第一次被签平台抽成 $sign_app_ratio = get_system_config_value('first_sign_app_ratio'); $sign_user_type = 0; + $sign_times = get_system_config_value('first_sign_times'); }else{ //不是第一次被签平台抽成 $sign_app_ratio = get_system_config_value('sign_app_ratio'); @@ -181,6 +186,7 @@ class Sign extends Model $sign_user_type = 2; $before_sign_user = $is_sign['user_id']; } + $sign_times = get_system_config_value('sign_times'); } //获取签约出价最高的 $max_sign_user = db::name('vs_user_sign_auction')->where(['room_id' => $room_id,'sign_time' => $sign_time])->order('sign_value desc')->find(); @@ -193,8 +199,8 @@ class Sign extends Model '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' => get_system_config_value('sign_times')*24*60*60, - 'end_time' => time() + get_system_config_value('sign_times')*24*60*60, + 'sign_times' => $sign_times*24*60*60, + 'end_time' => time() + $sign_times*24*60*60, 'createtime' => time(), ]; $result1 = db::name('vs_user_sign')->insert($data); @@ -296,7 +302,7 @@ class Sign extends Model //修改签约信息 $res2 = db::name('vs_room_sign')->where(['id' => $sign_time]) ->update([ - 'type' => 0, + 'sign_type' => 0, 'end_time' => time() ]); if(!$res1 || !$res2){ diff --git a/application/cron/controller/PerformPerSecond.php b/application/cron/controller/PerformPerSecond.php index 5c7b860..e06f245 100644 --- a/application/cron/controller/PerformPerSecond.php +++ b/application/cron/controller/PerformPerSecond.php @@ -36,12 +36,13 @@ class PerformPerSecond echo "房间红包清退:\n"; $this->processExpiredRedpackets(); echo "\n"; -// echo "房间火热值更新:\n"; -// $this->room_hot_update(); -// echo "\n"; + echo "提现云账号订单状态查询:\n"; $this->withdraw_order_status(); echo "\n"; + echo "签约房时间结束处理:\n"; + $this->sign_room_time_end(); + echo "\n"; } @@ -327,4 +328,15 @@ class PerformPerSecond echo "处理过期红包-共". $processedCount . "条数据\n"; } + //签约房时间结束处理 + public function sign_room_time_end(){ + $res = Db::name('vs_room_sign')->where('sign_type',1)->select(); + if($res){ + foreach ($res as $value){ + if($value['end_time'] <= time()){ + model('api/Sign')->end_sign(0,$value['room_id'],$value['id'],$value['sign_user_id'],0); + } + } + } + } } \ No newline at end of file