diff --git a/application/api/model/BarRoom.php b/application/api/model/BarRoom.php index c865a3f6..c90eeb34 100644 --- a/application/api/model/BarRoom.php +++ b/application/api/model/BarRoom.php @@ -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]; } - } \ No newline at end of file