From 279ed6825bc6e288dbf5529b36b28d19561ce5c1 Mon Sep 17 00:00:00 2001 From: limqsh <540344226@qq.com> Date: Sun, 7 Jun 2026 08:06:24 +0800 Subject: [PATCH] =?UTF-8?q?fix=20-=20=E4=BA=8B=E5=8A=A1&=E9=94=81=E6=9C=BA?= =?UTF-8?q?=E5=88=B6=E4=BC=98=E5=8C=96=EF=BC=8C=E9=98=B2=E6=AD=A2=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E6=89=A3=E8=B4=B9=E6=83=85=E5=86=B5=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/sv/service/api/OrderService.java | 42 ++++++++++++++----- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/service/src/main/java/com/sv/service/api/OrderService.java b/service/src/main/java/com/sv/service/api/OrderService.java index edbefad..ec915a3 100644 --- a/service/src/main/java/com/sv/service/api/OrderService.java +++ b/service/src/main/java/com/sv/service/api/OrderService.java @@ -24,7 +24,11 @@ import org.apache.commons.lang3.time.DateFormatUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.TransactionDefinition; +import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.DefaultTransactionDefinition; import org.springframework.web.bind.annotation.RequestBody; import javax.annotation.Resource; @@ -69,6 +73,9 @@ public class OrderService extends BaseServiceImpl { @Resource private MemberKeyLock memberKeyLock; + @Resource + private PlatformTransactionManager transactionManager; + /** * 创建订单 * @@ -314,17 +321,30 @@ public class OrderService extends BaseServiceImpl { return result; } - Order order = new Order(); - order.setOrderSn(createSn()); - order.setPayType(payTypeEnum.value); - order.setPrice(price); - order.setPayStatus(PayStatusEnum.NOT_PAY.value); - order.setType(OrderTypeEnum.BASKETBALL_ORDER.value); - order.setPlatformId(venue.getPlatformId()); - order.setMemberId(memberId); - order.setParentOrderId(venueId); - order.setCreatedId(enterFlag); - orderMapper.insert(order); + DefaultTransactionDefinition def = new DefaultTransactionDefinition(); + def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); + TransactionStatus txStatus = transactionManager.getTransaction(def); + Order order; + try { + order = orderMapper.findPendingBasketballOrder(memberId, venueId); + if (order == null) { + order = new Order(); + order.setOrderSn(createSn()); + order.setPayType(payTypeEnum.value); + order.setPrice(price); + order.setPayStatus(PayStatusEnum.NOT_PAY.value); + order.setType(OrderTypeEnum.BASKETBALL_ORDER.value); + order.setPlatformId(venue.getPlatformId()); + order.setMemberId(memberId); + order.setParentOrderId(venueId); + order.setCreatedId(enterFlag); + orderMapper.insert(order); + } + transactionManager.commit(txStatus); + } catch (RuntimeException e) { + transactionManager.rollback(txStatus); + throw e; + } if (EnterEnum.OUT.value == enterFlag) { BarcodeOrderTime lastOrder = barcodeOrderTimeMapper.findLastOrder(memberId, venueId);