酒吧房:->相关接口提交

This commit is contained in:
2026-01-05 14:25:31 +08:00
parent a6bc94af50
commit c0a175092f

View File

@@ -57,63 +57,31 @@ class BarRoom extends Model
return ['code' => 1, 'msg' => '成功', 'data' => null];
}
//上麦选择礼物
public function join_pit_choose_gift($user_id,$room_id,$pit_id,$gift_id){
$pit_gift = db::name('vs_room_bar_pit_gift')->where(['room_id' => $room_id,'pit_id' => $pit_id, 'delete_time' => 0])->find();
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){
// 使用事务确保操作的原子性
db::startTrans();
try {
// 使用WHERE条件和影响行数验证确保并发安全
$result = db::name('vs_room_bar_pit_gift')
->where(['id' => $pit_gift['id'], 'delete_time' => 0])
->update([
'user_id' => $user_id,
'gift_id' => $gift_id,
'updatetime' => time(),
]);
if ($result > 0) {
db::commit();
} else {
db::rollback();
return ['code' => 0, 'msg' => '麦位上已有人', 'data' => null];
}
} catch (\Exception $e) {
db::rollback();
return ['code' => 0, 'msg' => '麦位上已有人:' . $e->getMessage(), 'data' => null];
}
// 使用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{
// 对于插入操作也使用事务
db::startTrans();
try {
// 检查在此期间是否已经有其他请求创建了记录
$existing = db::name('vs_room_bar_pit_gift')
->where(['room_id' => $room_id, 'pit_id' => $pit_id, 'delete_time' => 0])
->find();
if ($existing) {
db::rollback();
return ['code' => 0, 'msg' => '麦位上已有人', 'data' => null];
} else {
// 执行插入操作
$insertResult = db::name('vs_room_bar_pit_gift')->insert([
'room_id' => $room_id,
'pit_id' => $pit_id,
'user_id' => $user_id,
'gift_id' => $gift_id,
'createtime' => time(),
]);
if ($insertResult) {
db::commit();
} else {
db::rollback();
return ['code' => 0, 'msg' => '插入失败', 'data' => null];
}
}
} catch (\Exception $e) {
db::rollback();
return ['code' => 0, 'msg' => '操作失败:' . $e->getMessage(), 'data' => null];
}
// 执行插入操作
$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];
}
@@ -135,5 +103,4 @@ class BarRoom extends Model
}
return ['code' => 1, 'msg' => '成功', 'data' => $return_data];
}
}