酒吧房:->相关接口提交
This commit is contained in:
@@ -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];
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user