From 1c84efb0a13ffcf1fb65dfbe52232c4fe65a2689 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Thu, 27 Nov 2025 15:51:58 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AD=BE=E7=BA=A6=E5=BB=B6=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/controller/Sign.php | 19 ++++++-- application/api/model/Chat.php | 2 + application/api/model/Sign.php | 73 ++++++++++++++++++++++++----- 3 files changed, 80 insertions(+), 14 deletions(-) diff --git a/application/api/controller/Sign.php b/application/api/controller/Sign.php index 397d198..3e7a716 100644 --- a/application/api/controller/Sign.php +++ b/application/api/controller/Sign.php @@ -7,7 +7,7 @@ use think\Db; class Sign extends BaseCom { - //签约出价列表 + //签约出价价格列表 public function sign_coin_list() { $user_id = input('user_id', 0);//签约麦 用户id @@ -42,7 +42,7 @@ class Sign extends BaseCom $user_id = input('user_id', 0); $sign_value = input('sign_value', 0); $room_id = input('room_id', 0); - $sign_time = input('sign_time', 0); + $sign_time = input('sign_id', 0); if ($sign_value <= 0 || $user_id <= 0 || $room_id <= 0) { return ['code' => 0, 'msg' => '参数错误']; } @@ -55,7 +55,7 @@ class Sign extends BaseCom //签约结束 public function end_sign() { - $sign_time = input('sign_time', 0); + $sign_time = input('sign_id', 0); $room_id = input('room_id', 0); $user_id = input('user_id', 0); if ($sign_time <= 0 || $room_id <= 0) { @@ -66,6 +66,19 @@ class Sign extends BaseCom } + //签约延时 + public function sign_delay() + { + $sign_id = input('sign_id', 0); + $room_id = input('room_id', 0); + if ($sign_id <= 0 || $room_id <= 0) { + return ['code' => 0, 'msg' => '参数错误']; + } + $reslut = model('Sign')->sign_delay($this->uid, $room_id, $sign_id); + return V($reslut['code'], $reslut['msg'], $reslut['data']); + } + + //免费续约 public function free_re_sign() { diff --git a/application/api/model/Chat.php b/application/api/model/Chat.php index c646ff0..0062246 100644 --- a/application/api/model/Chat.php +++ b/application/api/model/Chat.php @@ -143,6 +143,8 @@ class Chat extends Model // SignRoomSignUser = 1091, //签约房间结束 // SignRoomEnd = 1092, + //签约延时 + // SignRoomDelay = 1093, diff --git a/application/api/model/Sign.php b/application/api/model/Sign.php index acd587b..17f379f 100644 --- a/application/api/model/Sign.php +++ b/application/api/model/Sign.php @@ -21,16 +21,23 @@ class Sign extends Model return ['code' => 0, 'msg' => '没有权限操作', 'data' => null]; } //修改房间状态 - $sign_time = db::name('vs_room')->where('id',$room_id)->value('sign_time') + 1; + $sign_time = db::name('vs_room_sign')->where('room_id',$room_id)->order('id desc')->value('sign_time') + 1; $result = db::name('vs_room')->where('id',$room_id)->update([ 'sign_type' => 1, - 'sign_time' => $sign_time, +// 'sign_time' => $sign_time, 'updatetime' => time() ]); + $res = db::name('vs_room_sign')->insertGetId([ + 'room_id' => $room_id, + 'sign_type' => 1, + 'sign_time' => $sign_time, + 'end_time' => time() + 60 * 5,//签约时长5分钟 + 'createtime' => time() + ]); if($result){ //给前端推送数据 $text['text'] = '开始签约'; - $text['sign_time'] = $sign_time; + $text['sign_id'] = $res; model('api/Chat')->sendMsg(1090,$room_id,$text); return ['code' => 1, 'msg' => '成功','data' => $sign_time]; @@ -131,7 +138,7 @@ class Sign extends Model $text['text'] = '签约出价最高用户'; $text['FromUserInfo'] = $FromUserInfo; $text['sign_value'] = $sign_user['sign_value']; - $text['sign_time'] = $sign_time; + $text['sign_id'] = $sign_time; model('api/Chat')->sendMsg(1091,$room_id,$text); return ['code' => 1, 'msg' => '成功','data' => null]; } @@ -152,13 +159,9 @@ class Sign extends Model return ['code' => 0, 'msg' => '没有权限操作', 'data' => null]; } //根据场次判断是否结束 - $sign = db::name('vs_user_sign_auction')->where(['room_id' => $room_id,'sign_time' => $sign_time])->select(); - if($sign){ - foreach ($sign as $k => $v){ - if($v['type'] == 1){ - 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()){ + return ['code' => 0, 'msg' => '该场次签约已结束', 'data' => null]; } //查询签约用户的身份 是否是第一次被签 是否当前有签 $is_first_sign = db::name('vs_user_sign')->where('sign_user_id',$sign_user_id)->count(); @@ -285,6 +288,21 @@ class Sign extends Model } } } + //修改房间信息 + $res1 = db::name('vs_room')->where('id',$room_id)->update([ + 'sign_type' => 0, + 'updatetime' => time() + ]); + //修改签约信息 + $res2 = db::name('vs_room_sign')->where(['id' => $sign_time]) + ->update([ + 'type' => 0, + 'end_time' => time() + ]); + if(!$res1 || !$res2){ + db::rollback(); + return ['code' => 0, 'msg' => '网络错误,请重试.!', 'data' => null]; + } db::commit(); //给前端推送 $FromUserInfo = db::name('user')->where('id',$max_sign_user['user_id'])->field('id as user_id,nickname,avatar,sex')->find(); @@ -314,6 +332,39 @@ class Sign extends Model } + /* + * 签约延时 + * @param $user_id 用户id + * @param $room_id 房间id + * @param $sign_id 签约场次id + */ + public function sign_delay($user_id,$room_id,$sign_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]; + } + + $sign_info = db::name('vs_room_sign')->where(['id' => $sign_id])->find(); + if(!$sign_info || (!empty($sign_info) && $sign_info['type'] != 1)){ + return ['code' => 0, 'msg' => '本场签约结束', 'data' => null]; + } + $res = db::name('vs_room_sign')->where(['id' => $sign_id]) + ->update([ + 'end_time' => $sign_info['end_time'] + 300,//延时5分钟 + ]); + if(!$res){ + return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null]; + } + //给前端推送 + $text['text'] = '签约延时'; + $text['end_time'] = $sign_info['end_time'] + 300; + model('api/Chat')->sendMsg(1093,$room_id,$text); + return ['code' => 1, 'msg' => '操作成功', 'data' => null]; + } + + /* * 收礼检查是否有被签约和在合约期内 给上级返佣 * @param $user_id 用户id