Files
yusheng-php/application/api/model/BarRoom.php

106 lines
3.7 KiB
PHP

<?php
namespace app\api\model;
use think\Cache;
use think\Model;
use think\Db;
/*
* 酒吧房
*/
class BarRoom extends Model
{
// 开启自动写入时间戳字段
protected $autoWriteTimestamp = true;
// 定义时间戳字段名
protected $createTime = 'createtime';
protected $updateTime = 'updatetime';
// 麦位时长配置
protected $pitDuration = [
'1' => 5,
'2' => 10,
'3' => 15,
'4' => 20,
'5' => 25,
'6' => 30,
];
//麦位时长列表
public function get_pit_duration_list(){
foreach ($this->pitDuration as $key => $value) {
$list[] = [
'time' => $value,
'time_str' => $value.'分钟',
];
}
return ['code' => 1, 'msg' => '获取成功', 'data' => $list];
}
//实在房间麦位时长
public function set_pit_duration($room_id,$time){
$room = db::name('vs_room')->where(['id' => $room_id, 'delete_time' => 0, 'room_status' => 1])->find();
if(!$room){
return ['code' => 0, 'msg' => '房间不存在', 'data' => null];
}
$room_data = db::name('vs_room_bar')->where('id',$room['id'])->find();
if($room_data){
if($room_data['pit_time'] != $time){
db::name('vs_room_bar')->where('id',$room_id)->update(['pit_time' => $time]);
}
}else{
db::name('vs_room_bar')->insert([
'id' => $room_id,
'pit_time' => $time,
]);
}
//推送麦位时长
return ['code' => 1, 'msg' => '成功', 'data' => null];
}
//上麦选择礼物
public function join_pit_choose_gift($user_id,$room_id,$gift_id){
$pit_gift = db::name('vs_room_bar_pit_gift')->where(['room_id' => $room_id,'user_id' => $user_id, 'delete_time' => 0])->find();
$pit_time = db::name('vs_room_bar')->where('id',$room_id)->value('pit_time');
$end_time = time()+$pit_time * 60;
if($pit_gift){
// 使用WHERE条件和影响行数验证确保并发安全
$result = db::name('vs_room_bar_pit_gift')
->where(['id' => $pit_gift['id'], 'delete_time' => 0])
->update([
'gift_id' => $gift_id,
'end_time' => $end_time,
'updatetime' => time(),
]);
} else{
// 执行插入操作
$result = db::name('vs_room_bar_pit_gift')->insert([
'room_id' => $room_id,
'user_id' => $user_id,
'gift_id' => $gift_id,
'end_time' => $end_time,
'createtime' => time(),
]);
}
if(!$result){
return ['code' => 0, 'msg' => '失败', 'data' => null];
}
return ['code' => 1, 'msg' => '成功', 'data' => null];
}
//约Ta礼物详情
public function get_gift_info_ta($user_id,$room_id){
$return_data = [];
$pit_gift = db::name('vs_room_bar_pit_gift')->where(['room_id' => $room_id,'user_id' => $user_id, 'delete_time' => 0])->find();
if($pit_gift){
$gift = db::name('vs_gift')->where(['id' => $pit_gift['gift_id'], 'delete_time' => 0])->find();
if(empty($gift)){
return ['code' => 0, 'msg' => '礼物不存在', 'data' => null];
}
$return_data = [
'gift_id' => $pit_gift['gift_id'],
'gift_name' => $gift['name'],
'base_image' => $gift['base_image'],
'gift_price' => $gift['gift_price'],
];
}
return ['code' => 1, 'msg' => '成功', 'data' => $return_data];
}
}