559 lines
28 KiB
PHP
559 lines
28 KiB
PHP
<?php
|
||
|
||
namespace app\api\model;
|
||
|
||
use think\Db;
|
||
use think\Model;
|
||
|
||
class RoomPk extends Model
|
||
{
|
||
protected $table = 'fa_vs_room_pk';
|
||
|
||
// 发起PK邀请 10秒不接受 自动关闭这个申请
|
||
public function send_pk($room_id_a, $create_user_id, $room_id_b)
|
||
{
|
||
if(!$room_id_a || !$create_user_id ){
|
||
return ['code' => 0, 'msg' => '参数错误', 'data' => ''];
|
||
}
|
||
//逃跑次数
|
||
$escape_number = db::name('vs_user_pk_close')->where(['user_id' => $create_user_id, 'create_time' => ['between',[strtotime(date('Y-m-d')),time()]]])->find();
|
||
if($escape_number){
|
||
if($escape_number['close_num'] >= 3){
|
||
return ['code' => 0, 'msg' => '今天pk您已中断3次,今天已不能再发起PK', 'data' => ''];
|
||
}elseif($escape_number['close_num'] == 2){
|
||
$second = get_system_config_value('second_close_time') * 60;//分钟转为秒
|
||
if($escape_number['update_time'] + $second > time()){
|
||
return ['code' => 0, 'msg' => '今天pk您已中断2次,'.$second/60 .'分钟内不能发起PK', 'data' => ''];
|
||
}
|
||
}elseif($escape_number['close_num'] == 1){
|
||
$first_close = get_system_config_value('first_close_time') * 60;//分钟转为秒
|
||
if($escape_number['update_time'] + $first_close > time()){
|
||
return ['code' => 0, 'msg' => '今天pk您已中断1次,'.$first_close/60 .'分钟内不能发起PK', 'data' => ''];
|
||
}
|
||
}
|
||
}
|
||
|
||
//判断发起者是否是房间的主持
|
||
$is_host = db::name('vs_room_host')->where('room_id', $room_id_a)->where('user_id', $create_user_id)->where(['type' => 1,'delete_time' =>null ])->find();
|
||
$owner = db::name('vs_room')->where('id', $room_id_a)->value('user_id');
|
||
if (!$is_host && $owner != $create_user_id) {
|
||
return ['code' => 0, 'msg' => '您不是此房间的主持人,请联系房主', 'data' => ''];
|
||
}
|
||
//没有接收者
|
||
if(!$room_id_b){
|
||
$where = [
|
||
'a.id' => ['<>',$room_id_a],
|
||
'a.room_status' => 1,
|
||
'a.apply_status' => 2,
|
||
'a.is_pk' => 1,
|
||
'a.is_show_room' => 1,
|
||
'b.pit_number' => 9,
|
||
'b.user_id' => ['<>',0],
|
||
'a.type_id' => 1,
|
||
'a.label_id' => 1,
|
||
];
|
||
$room_id_b = db::name('vs_room')->alias('a')->join('vs_room_pit b','a.id = b.room_id')
|
||
->field('a.id as room_id,a.room_name,a.room_cover,a.room_number,b.user_id')
|
||
->where($where)
|
||
->orderRaw('rand()')
|
||
->value('a.id');
|
||
}
|
||
if(!$room_id_b){
|
||
return ['code' => 0, 'msg' => '暂无推荐房间可PK', 'data' => ''];
|
||
}
|
||
|
||
//查看推荐是否正在pk中
|
||
$is_pks = db::name('vs_room_pk')->where(['room_id_a' => $room_id_b,'status' => 1])->find();
|
||
if (!$is_pks) {
|
||
$is_pks = db::name('vs_room_pk')->where(['room_id_b' => $room_id_b,'status' => 1])->find();
|
||
if ($is_pks) {
|
||
return ['code' => 0, 'msg' => '此房间正在PK中,请勿重复操作!', 'data' => ''];
|
||
}
|
||
}else{
|
||
return ['code' => 0, 'msg' => '此房间正在PK中,请勿重复操作!', 'data' => ''];
|
||
}
|
||
|
||
//查看他是否有PK没有被拒绝和接受的
|
||
$is_pk = db::name('vs_room_pk')->where(['room_id_a' => $room_id_a,'status' => 1])->find();
|
||
if ($is_pk) {
|
||
return ['code' => 0, 'msg' => '您已发起过PK,请勿重复操作!', 'data' => ''];
|
||
}
|
||
|
||
//接受PK的房只有在聊天模式下接受
|
||
$room_mode = db::name('vs_room')->where('id', $room_id_b)->field('type_id,label_id')->find();
|
||
if ($room_mode['type_id'] != 1 || $room_mode['label_id'] != 1) {
|
||
return ['code' => 0, 'msg' => '此房间模式不支持PK', 'data' => ''];
|
||
}
|
||
|
||
$data = [
|
||
'room_id_a' => $room_id_a,
|
||
'create_user_id' => $create_user_id,
|
||
'room_id_b' => $room_id_b,
|
||
'status' => 1,
|
||
'createtime' => time(),
|
||
];
|
||
$res = $this->insertGetId($data);
|
||
if ($res) {
|
||
//发送消息给对方在主持麦的用户
|
||
$SendUserName = db::name('user')->where('id', $create_user_id)->value('nickname');//发送者昵称
|
||
$text = [
|
||
'SendRoomId' => $room_id_a,//发起者所在房间id
|
||
'AcceptRoomId' => $room_id_b,//接受者所在房间id
|
||
'PkId' => $res,
|
||
'text' => $SendUserName.'邀请您进行直播Pk,快来一起嗨!',
|
||
];
|
||
|
||
model('Chat')->sendMsg(1029,$room_id_b,$text);
|
||
//1-禁麦位,2-清空消息,3-清空魅力值,4-加入黑名单,5-踢出房间,6-关闭麦克风,7-申请上麦,8-同意上麦,9-拒绝上麦,10-点歌,11-开启PK',
|
||
model('Room')->room_operation_record($create_user_id,$room_id_a,10,0,0,$res);
|
||
return ['code' => 1, 'msg' => '成功', 'data' => ''];
|
||
} else {
|
||
return ['code' => 0, 'msg' => '失败', 'data' => ''];
|
||
}
|
||
}
|
||
|
||
|
||
// 接受/拒绝 PK邀请
|
||
public function accept_pk($pk_id ,$type,$user_id = 0)
|
||
{
|
||
$pk_info = db::name('vs_room_pk')->where('pk_id', $pk_id)->find();
|
||
if($user_id == 0 && $type == 2){
|
||
$user_id = -1;//申请倒计时结束系统拒绝
|
||
}
|
||
|
||
if($type == 1){
|
||
//逃跑次数
|
||
$escape_number = db::name('vs_user_pk_close')->where(['user_id' => $user_id, 'create_time' => ['between',[strtotime(date('Y-m-d')),time()]]])->find();
|
||
if($escape_number){
|
||
if($escape_number['close_num'] >= 3){
|
||
$text = [
|
||
'type' => $type,
|
||
'text' => '对方无法接受PK邀请,请重新选择PK房间!',
|
||
];
|
||
model('Chat')->sendMsg(1030,$pk_info['room_id_a'],$text);
|
||
return ['code' => 0, 'msg' => '今天pk您已中断3次,今天已不能再接受PK', 'data' => ''];
|
||
}elseif($escape_number['close_num'] == 2){
|
||
$second = get_system_config_value('second_close_time') * 60;//分钟转为秒
|
||
if($escape_number['update_time'] + $second > time()){
|
||
$text = [
|
||
'type' => $type,
|
||
'text' => '对方无法接受PK邀请,请重新选择PK房间!',
|
||
'user_id' => $pk_info['create_user_id'],
|
||
];
|
||
model('Chat')->sendMsg(1030,$pk_info['room_id_a'],$text);
|
||
return ['code' => 0, 'msg' => '今天pk您已中断2次,'.$second/60 .'分钟内不能接受PK', 'data' => ''];
|
||
}
|
||
}elseif($escape_number['close_num'] == 1){
|
||
$first_close = get_system_config_value('first_close_time') * 60;//分钟转为秒
|
||
if($escape_number['update_time'] + $first_close > time()){
|
||
$text = [
|
||
'type' => $type,
|
||
'text' => '对方无法接受PK邀请,请重新选择PK房间!',
|
||
'user_id' => $pk_info['create_user_id'],
|
||
];
|
||
model('Chat')->sendMsg(1030,$pk_info['room_id_a'],$text);
|
||
return ['code' => 0, 'msg' => '今天pk您已中断1次,'.$first_close/60 .'分钟内不能接受PK', 'data' => ''];
|
||
}
|
||
}
|
||
}
|
||
|
||
//判断发起方还在主持麦位吗
|
||
$is_host = db::name('vs_room_pit')->where(['room_id' => $pk_info['room_id_a'],'pit_number' =>9])->value('user_id');
|
||
if($is_host != $pk_info['create_user_id']){
|
||
$this->accept_pk($pk_id,2);
|
||
return ['code' => 0, 'msg' => '对方主持已离开,暂不能响应PK邀请', 'data' => ''];
|
||
}
|
||
//判断发起者是否和别人开启了pk
|
||
$is_pk = db::name('vs_room_pk')->where(['pk_id' => ['<>',$pk_id],'room_id_a' => $pk_info['room_id_a'],'status' => ['in',[1,2,3,4]]])->find();
|
||
$is_pk1 = db::name('vs_room_pk')->where(['pk_id' => ['<>',$pk_id],'room_id_b' => $pk_info['room_id_a'],'status' => ['in',[1,2,3,4]]])->find();
|
||
if($is_pk || $is_pk1){
|
||
return ['code' => 0, 'msg' => '发起方已经重新开启了PK,请重新选择PK房间!', 'data' => ''];
|
||
}
|
||
|
||
$data = [
|
||
'receive_user_id' => $user_id,
|
||
'status' => 2,//1-申请,2-链接中,3-PK进行中,4-已结束,5-拒绝 -6断开链接
|
||
'updatetime' => time(),
|
||
];
|
||
}else{
|
||
$data = [
|
||
'receive_user_id' => $user_id,
|
||
'status' => 5,//1-申请,2-链接中,3-PK进行中,4-已结束,5-拒绝 -6断开链接
|
||
'updatetime' => time(),
|
||
];
|
||
}
|
||
//开启事务
|
||
db::startTrans();
|
||
$res = db::name('vs_room_pk')->where('pk_id', $pk_id)->update($data);
|
||
if ($res) {
|
||
//修改上次的pk_room_id
|
||
$wq = db::name('vs_room')->where('id', $pk_info['room_id_a'])->update(['last_pk_room_id' => $pk_info['room_id_b'],'updatetime' => time()]);
|
||
if(!$wq){
|
||
db::rollback();
|
||
return ['code' => 0, 'msg' => '修改房间失败', 'data' => ''];
|
||
}
|
||
$we = db::name('vs_room')->where('id', $pk_info['room_id_b'])->update(['last_pk_room_id' => $pk_info['room_id_a'],'updatetime' => time()]);
|
||
if(!$we){
|
||
db::rollback();
|
||
return ['code' => 0, 'msg' => '修改房间失败', 'data' => ''];
|
||
}
|
||
db::commit();
|
||
//发送消息给对方
|
||
if($type == 1){//1接受,2拒绝
|
||
//把房间记录为不接受PK状态
|
||
db::name('vs_room')->where('id', $pk_info['room_id_a'])->update(['is_pk' => 2,'updatetime' => time()]);
|
||
db::name('vs_room')->where('id', $pk_info['room_id_b'])->update(['is_pk' => 2,'updatetime' => time()]);
|
||
$texta = [
|
||
'type' => $type,
|
||
'room_id' => $pk_info['room_id_b'],
|
||
'user_id' => $pk_info['create_user_id'],
|
||
'text' => '对方接受了您的PK!',
|
||
'pk_id' => $pk_id,
|
||
];
|
||
$textb = [
|
||
'type' => $type,
|
||
'room_id' => $pk_info['room_id_a'],
|
||
'user_id' => $user_id,
|
||
'text' => '接受了对方的PK!',
|
||
'pk_id' => $pk_id,
|
||
];
|
||
model('Chat')->sendMsg(1030,$pk_info['room_id_a'],$texta);
|
||
model('Chat')->sendMsg(1030,$pk_info['room_id_b'],$textb);
|
||
}else{
|
||
$text = [
|
||
'type' => $type,
|
||
'text' => '对方拒绝了您的PK邀请,请重新选择PK房间!',
|
||
'user_id' => $pk_info['create_user_id'],
|
||
];
|
||
model('Chat')->sendMsg(1030,$pk_info['room_id_a'],$text);
|
||
}
|
||
|
||
return ['code' => 1, 'msg' => '成功!', 'data' => ''];
|
||
} else {
|
||
db::rollback();
|
||
return ['code' => 0, 'msg' => '失败', 'data' => ''];
|
||
}
|
||
}
|
||
|
||
|
||
// 开始PK
|
||
public function start_pk($user_id,$pk_id,$pk_times = 5)
|
||
{
|
||
// 判断用户是否两者的主持
|
||
$pk_info = db::name('vs_room_pk')->where('pk_id', $pk_id)->find();
|
||
if(!$pk_info){
|
||
return ['code' => 0, 'msg' => '此房间不存在!', 'data' => ''];
|
||
}
|
||
if($pk_info['status'] == 3){
|
||
return ['code' => 0, 'msg' => '此房间已开始PK,请勿重复操作!', 'data' => ''];
|
||
}
|
||
if($pk_info['status'] == 4 || $pk_info['status'] == 5 || $pk_info['status'] == 6){
|
||
return ['code' => 0, 'msg' => '此房间已结束PK,请勿重复操作!', 'data' => ''];
|
||
}
|
||
|
||
if($user_id != $pk_info['create_user_id'] && $user_id != $pk_info['receive_user_id']){
|
||
return ['code' => 0, 'msg' => '您不是此房间的主持人,请联系房主', 'data' => ''];
|
||
}
|
||
$data = [
|
||
'status' => 3,//1-申请,2-链接中,3-PK进行中,4-已结束,5-拒绝 -6断开链接
|
||
'start_time' => time(),
|
||
'updatetime' => time(),
|
||
'pk_times' => $pk_times
|
||
];
|
||
$res = db::name('vs_room_pk')->where('pk_id', $pk_id)->update($data);
|
||
if ($res) {
|
||
$text = [
|
||
'pk_end_times' => time() + $pk_times * 60,
|
||
'text' => 'pk 开始!',
|
||
'pk_id' => $pk_id,
|
||
];
|
||
model('Chat')->sendMsg(1031,$pk_info['room_id_a'],$text);
|
||
model('Chat')->sendMsg(1031,$pk_info['room_id_b'],$text);
|
||
return ['code' => 1, 'msg' => '成功', 'data' => ''];
|
||
} else {
|
||
return ['code' => 0, 'msg' => '失败', 'data' => ''];
|
||
}
|
||
}
|
||
|
||
//搜索 或 推荐房间列表
|
||
public function search_pk_room($user_id,$room_id,$page,$limit)
|
||
{
|
||
//自己当前房间
|
||
$room_id_a = db::name('vs_room')->where('user_id', $user_id)->value('id');
|
||
$room_id_b = db::name('vs_room_pit')->where(['pit_number' => 9, 'user_id' => $user_id])->value('room_id') ?? 0;
|
||
$room_id_c = [$room_id_a,$room_id_b];
|
||
$where = [
|
||
'a.id' => ['not in',$room_id_c],
|
||
'a.room_status' => 1,
|
||
'a.apply_status' => 2,
|
||
'a.is_pk' => 1,
|
||
'a.is_show_room' => 1,
|
||
'b.pit_number' => 9,
|
||
'b.user_id' => ['<>',0],
|
||
'a.type_id' => ['in',[1,3,4,8]],
|
||
'a.label_id' => 1,
|
||
];
|
||
|
||
if($room_id){
|
||
//是纯数字
|
||
if(is_numeric($room_id)){
|
||
$where['a.room_number'] = $room_id;
|
||
}else{
|
||
$where['a.room_name'] = ['like','%'.$room_id.'%'];
|
||
}
|
||
}
|
||
|
||
$list = db::name('vs_room')->alias('a')->join('vs_room_pit b','a.id = b.room_id')
|
||
->field('a.id as room_id,a.room_name,a.room_cover,a.room_number,b.user_id')
|
||
->where($where)
|
||
// ->orderRaw('rand()')
|
||
->page($page,$limit)
|
||
->select();
|
||
return ['code' => 1, 'msg' => '成功', 'data' => $list];
|
||
}
|
||
|
||
// pk结束
|
||
public function end_pk($pk_id,$type = 1,$user_id = 0)
|
||
{
|
||
$pk_info = db::name('vs_room_pk')->where('pk_id', $pk_id)->find();
|
||
if($type == 1){//pk结束
|
||
$data = [
|
||
'status' => 4,//1-申请,2-链接中,3-PK进行中,4-已结束(惩罚阶段),5-拒绝 -6断开链接
|
||
'end_time' => time(),
|
||
'updatetime' => time(),
|
||
];
|
||
}elseif($type == 2){//断开链接
|
||
$data = [
|
||
'status' => 6,//1-申请,2-链接中,3-PK进行中,4-已结束(惩罚阶段),5-拒绝 -6断开链接
|
||
'close_time' => time(),
|
||
'updatetime' => time(),
|
||
];
|
||
}elseif($type == 3){//中途关闭
|
||
if($user_id == 0){
|
||
return ['code' => 0, 'msg' => '参数错误', 'data' => ''];
|
||
}else{
|
||
//查询pk信息现在在哪个阶段
|
||
if($pk_info['status'] == 4){
|
||
if($pk_info['shibaifang_id'] == $user_id && $pk_info['shibaifang_id'] != 0){
|
||
$data = [
|
||
'status' => 7,//1-申请,2-链接中,3-PK进行中,4-已结束(惩罚阶段),5-拒绝 -6断开链接 7-败方申请断开链接',
|
||
'close_time' => time(),
|
||
'close_user_id' => $user_id,
|
||
'updatetime' => time(),
|
||
];
|
||
}else{
|
||
$data = [
|
||
'status' => 6,//1-申请,2-链接中,3-PK进行中,4-已结束(惩罚阶段),5-拒绝 -6断开链接
|
||
'close_time' => time(),
|
||
'close_user_id' => $user_id,
|
||
'updatetime' => time(),
|
||
];
|
||
}
|
||
}elseif($pk_info['status'] == 7){
|
||
if($pk_info['shibaifang_id'] != $user_id){
|
||
$data = [
|
||
'status' => 6,//1-申请,2-链接中,3-PK进行中,4-已结束(惩罚阶段),5-拒绝 -6断开链接
|
||
'close_time' => time(),
|
||
];
|
||
}
|
||
$data['updatetime'] = time();
|
||
}elseif ($pk_info['status'] == 2){
|
||
$data = [
|
||
'status' => 6,//1-申请,2-链接中,3-PK进行中,4-已结束(惩罚阶段),5-拒绝 -6断开链接
|
||
'close_time' => time(),
|
||
'updatetime' => time(),
|
||
];
|
||
}
|
||
else{
|
||
$data['end_time'] = time();
|
||
//今天逃跑次数
|
||
$where = [
|
||
'create_time' => ['between',[strtotime(date('Y-m-d')),time()]],
|
||
'user_id' => $user_id,
|
||
];
|
||
$close = db::name('vs_user_pk_close')->where($where)->find();
|
||
if($close){
|
||
db::name('vs_user_pk_close')->where($where)->update(
|
||
['update_time' => time(),
|
||
'pk_id' => $close['pk_id'].','.$pk_id,
|
||
'close_num' => $close['close_num'] + 1
|
||
]);
|
||
}else{
|
||
db::name('vs_user_pk_close')->insert(
|
||
['user_id' => $user_id,
|
||
'create_time' => time(),
|
||
'update_time' => time(),
|
||
'pk_id' => $pk_id,
|
||
'close_num' => 1
|
||
]);
|
||
}
|
||
$data = [
|
||
'status' => 6,//1-申请,2-链接中,3-PK进行中,4-已结束(惩罚阶段),5-拒绝 -6断开链接
|
||
'close_time' => time(),
|
||
'close_user_id' => $user_id,
|
||
'updatetime' => time(),
|
||
];
|
||
}
|
||
}
|
||
|
||
}else{
|
||
$data = [
|
||
'status' => 6,//1-申请,2-链接中,3-PK进行中,4-已结束(惩罚阶段),5-拒绝 -6断开链接
|
||
'close_time' => time(),
|
||
'close_user_id' => $user_id,
|
||
'updatetime' => time(),
|
||
];
|
||
}
|
||
|
||
$res = db::name('vs_room_pk')->where('pk_id', $pk_id)->update($data);
|
||
$pk_info = db::name('vs_room_pk')->where('pk_id', $pk_id)->find(); //这个不要删除是为了更新下面的$pk_info['end_time']
|
||
if ($res) {
|
||
if($type == 1){//1-pk结束,2-断开链接,3-中途关闭
|
||
if($pk_info['create_value_a'] > $pk_info['receive_value_b']){
|
||
db::name('vs_room_pk')->where('pk_id', $pk_id)->update(['shibaifang_id' => $pk_info['receive_user_id']]);
|
||
$texta = [
|
||
'type' => 1,//胜利
|
||
'victory_name' => db::name('vs_room')->where('id', $pk_info['room_id_a'])->value('room_name'),
|
||
'victory_cover' => db::name('vs_room')->where('id', $pk_info['room_id_a'])->value('room_cover'),
|
||
'defeated_name' => db::name('vs_room')->where('id', $pk_info['room_id_b'])->value('room_name'),
|
||
'defeated_cover' => db::name('vs_room')->where('id', $pk_info['room_id_b'])->value('room_cover'),
|
||
'text' => 'pk 结束!',
|
||
'end_time' => $pk_info['end_time'] + 300,
|
||
];
|
||
$textb = [
|
||
'type' => 0,//失败
|
||
'victory_name' => db::name('vs_room')->where('id', $pk_info['room_id_a'])->value('room_name'),
|
||
'victory_cover' => db::name('vs_room')->where('id', $pk_info['room_id_a'])->value('room_cover'),
|
||
'defeated_name' => db::name('vs_room')->where('id', $pk_info['room_id_b'])->value('room_name'),
|
||
'defeated_cover' => db::name('vs_room')->where('id', $pk_info['room_id_b'])->value('room_cover'),
|
||
'text' => 'pk 结束!',
|
||
'end_time' => $pk_info['end_time'] + 300,
|
||
];
|
||
model('Chat')->sendMsg(1032,$pk_info['room_id_a'],$texta);
|
||
model('Chat')->sendMsg(1032,$pk_info['room_id_b'],$textb);
|
||
}elseif($pk_info['create_value_a'] < $pk_info['receive_value_b']){
|
||
db::name('vs_room_pk')->where('pk_id', $pk_id)->update(['shibaifang_id' => $pk_info['create_user_id']]);
|
||
$texta = [
|
||
'type' => 0,//失败
|
||
'victory_name' => db::name('vs_room')->where('id', $pk_info['room_id_b'])->value('room_name'),
|
||
'victory_cover' => db::name('vs_room')->where('id', $pk_info['room_id_b'])->value('room_cover'),
|
||
'defeated_name' => db::name('vs_room')->where('id', $pk_info['room_id_a'])->value('room_name'),
|
||
'defeated_cover' => db::name('vs_room')->where('id', $pk_info['room_id_a'])->value('room_cover'),
|
||
'text' => 'pk 结束!',
|
||
'end_time' => $pk_info['end_time'] + 300,
|
||
];
|
||
$textb = [
|
||
'type' => 1,//胜利
|
||
'victory_name' => db::name('vs_room')->where('id', $pk_info['room_id_b'])->value('room_name'),
|
||
'victory_cover' => db::name('vs_room')->where('id', $pk_info['room_id_b'])->value('room_cover'),
|
||
'defeated_name' => db::name('vs_room')->where('id', $pk_info['room_id_a'])->value('room_name'),
|
||
'defeated_cover' => db::name('vs_room')->where('id', $pk_info['room_id_a'])->value('room_cover'),
|
||
'text' => 'pk 结束!',
|
||
'end_time' => $pk_info['end_time'] + 300,
|
||
];
|
||
model('Chat')->sendMsg(1032,$pk_info['room_id_a'],$texta);
|
||
model('Chat')->sendMsg(1032,$pk_info['room_id_b'],$textb);
|
||
}else{
|
||
db::name('vs_room_pk')->where('pk_id', $pk_id)->update(['shibaifang_id' => -1]);
|
||
$texta = [
|
||
'type' => 2,//失败
|
||
'victory_name' => db::name('vs_room')->where('id', $pk_info['room_id_a'])->value('room_name'),
|
||
'victory_cover' => db::name('vs_room')->where('id', $pk_info['room_id_a'])->value('room_cover'),
|
||
'defeated_name' => db::name('vs_room')->where('id', $pk_info['room_id_b'])->value('room_name'),
|
||
'defeated_cover' => db::name('vs_room')->where('id', $pk_info['room_id_b'])->value('room_cover'),
|
||
'text' => 'pk 结束!',
|
||
'end_time' => $pk_info['end_time'] + 300,
|
||
];
|
||
$textb = [
|
||
'type' => 2,//胜利
|
||
'victory_name' => db::name('vs_room')->where('id', $pk_info['room_id_b'])->value('room_name'),
|
||
'victory_cover' => db::name('vs_room')->where('id', $pk_info['room_id_b'])->value('room_cover'),
|
||
'defeated_name' => db::name('vs_room')->where('id', $pk_info['room_id_a'])->value('room_name'),
|
||
'defeated_cover' => db::name('vs_room')->where('id', $pk_info['room_id_a'])->value('room_cover'),
|
||
'text' => 'pk 结束!',
|
||
'end_time' => $pk_info['end_time'] + 300,
|
||
];
|
||
|
||
model('Chat')->sendMsg(1032,$pk_info['room_id_a'],$texta);
|
||
model('Chat')->sendMsg(1032,$pk_info['room_id_b'],$textb);
|
||
}
|
||
|
||
}elseif($type == 2){
|
||
$text = [
|
||
'type' => 1,//正常断开
|
||
'text' => 'pk结束,已断开链接!',
|
||
];
|
||
model('Chat')->sendMsg(1033,$pk_info['room_id_a'],$text);
|
||
model('Chat')->sendMsg(1033,$pk_info['room_id_b'],$text);
|
||
}elseif($type == 3){
|
||
if($pk_info['status'] == 7){
|
||
if($pk_info['shibaifang_id'] == $user_id){
|
||
if($user_id == $pk_info['create_user_id']){
|
||
$pk_room_id = $pk_info['room_id_b'];
|
||
}elseif($user_id == $pk_info['receive_user_id']){
|
||
$pk_room_id = $pk_info['room_id_a'];
|
||
}else{
|
||
return json(['code' => 0,'msg' => '您不是本场PK的对手!']);
|
||
}
|
||
$FromUserInfo = db::name('user')->where('id',$user_id)->field('id as user_id,nickname,avatar,sex')->find();
|
||
$text = [
|
||
'FromUserInfo' => $FromUserInfo,
|
||
'text' => '对方申请提前结束PK!',
|
||
];
|
||
model('Chat')->sendMsg(1037,$pk_room_id,$text);
|
||
}
|
||
}else if($pk_info['status'] == 6){
|
||
$text = [
|
||
'type' => 1,//正常断开
|
||
'text' => 'pk结束,已断开链接!',
|
||
];
|
||
model('Chat')->sendMsg(1033,$pk_info['room_id_a'],$text);
|
||
model('Chat')->sendMsg(1033,$pk_info['room_id_b'],$text);
|
||
}
|
||
else{
|
||
$text = [
|
||
'type' => 2,//中途中断
|
||
'text' => '本场PK由于中途断开,不计输赢!',
|
||
];
|
||
model('Chat')->sendMsg(1033,$pk_info['room_id_a'],$text);
|
||
model('Chat')->sendMsg(1033,$pk_info['room_id_b'],$text);
|
||
}
|
||
}else{
|
||
$text = [
|
||
'type' => 3,//没开始结束关闭
|
||
'text' => 'pk结束,已关闭!',
|
||
];
|
||
model('Chat')->sendMsg(1033,$pk_info['room_id_a'],$text);
|
||
model('Chat')->sendMsg(1033,$pk_info['room_id_b'],$text);
|
||
}
|
||
if($pk_info['status'] == 6){
|
||
//把房间记录为不接受PK状态
|
||
db::name('vs_room')->where('id', $pk_info['room_id_a'])->update(['is_pk' => 1,'updatetime' => time()]);
|
||
db::name('vs_room')->where('id', $pk_info['room_id_b'])->update(['is_pk' => 1,'updatetime' => time()]);
|
||
}
|
||
return ['code' => 1, 'msg' => '成功', 'data' => ''];
|
||
} else {
|
||
return ['code' => 0, 'msg' => '失败', 'data' => ''];
|
||
}
|
||
}
|
||
|
||
//不接受 PK
|
||
public function refuse_pk($is_pk, $room_id)
|
||
{
|
||
$is_pks = db::name('vs_room')->where('id', $room_id)->value('is_pk');
|
||
if ($is_pk == $is_pks) {
|
||
return ['code' => 1, 'msg' => '成功', 'data' => ''];
|
||
}else{
|
||
$data = [
|
||
'is_pk' => $is_pk,
|
||
];
|
||
$res = db::name('vs_room')->where('id', $room_id)->update($data);
|
||
if ($res) {
|
||
return ['code' => 1, 'msg' => '成功', 'data' => ''];
|
||
} else {
|
||
return ['code' => 0, 'msg' => '失败', 'data' => ''];
|
||
}
|
||
}
|
||
}
|
||
|
||
} |