|
@@ -56,6 +56,7 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
|
|
|
private final StoreInfoMapper storeInfoMapper;
|
|
private final StoreInfoMapper storeInfoMapper;
|
|
|
private final StoreOrderChangeLogMapper orderChangeLogMapper;
|
|
private final StoreOrderChangeLogMapper orderChangeLogMapper;
|
|
|
private final shop.alien.dining.service.SseService sseService;
|
|
private final shop.alien.dining.service.SseService sseService;
|
|
|
|
|
+ private final shop.alien.dining.service.DiningService diningService;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public StoreOrder createOrder(CreateOrderDTO dto) {
|
|
public StoreOrder createOrder(CreateOrderDTO dto) {
|
|
@@ -68,6 +69,12 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
|
|
|
}
|
|
}
|
|
|
String userPhone = TokenUtil.getCurrentUserPhone();
|
|
String userPhone = TokenUtil.getCurrentUserPhone();
|
|
|
|
|
|
|
|
|
|
+ // 检查订单锁定状态
|
|
|
|
|
+ Integer lockUserId = diningService.checkOrderLock(dto.getTableId());
|
|
|
|
|
+ if (lockUserId != null && !lockUserId.equals(userId)) {
|
|
|
|
|
+ throw new RuntimeException("订单已被其他用户锁定,无法下单");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// 验证桌号
|
|
// 验证桌号
|
|
|
StoreTable table = storeTableMapper.selectById(dto.getTableId());
|
|
StoreTable table = storeTableMapper.selectById(dto.getTableId());
|
|
|
if (table == null) {
|
|
if (table == null) {
|
|
@@ -322,6 +329,18 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
|
|
|
public StoreOrder payOrder(Integer orderId, Integer payType) {
|
|
public StoreOrder payOrder(Integer orderId, Integer payType) {
|
|
|
log.info("支付订单, orderId={}, payType={}", orderId, payType);
|
|
log.info("支付订单, orderId={}, payType={}", orderId, payType);
|
|
|
|
|
|
|
|
|
|
+ // 获取当前用户信息
|
|
|
|
|
+ Integer userId = TokenUtil.getCurrentUserId();
|
|
|
|
|
+ if (userId == null) {
|
|
|
|
|
+ throw new RuntimeException("用户未登录");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 检查结算锁定状态
|
|
|
|
|
+ Integer lockUserId = diningService.checkSettlementLock(orderId);
|
|
|
|
|
+ if (lockUserId != null && !lockUserId.equals(userId)) {
|
|
|
|
|
+ throw new RuntimeException("订单结算已被其他用户锁定,无法支付");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
StoreOrder order = this.getById(orderId);
|
|
StoreOrder order = this.getById(orderId);
|
|
|
if (order == null) {
|
|
if (order == null) {
|
|
|
throw new RuntimeException("订单不存在");
|
|
throw new RuntimeException("订单不存在");
|
|
@@ -338,12 +357,7 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
|
|
|
order.setPayTime(new Date());
|
|
order.setPayTime(new Date());
|
|
|
order.setPayTradeNo("TRADE_" + System.currentTimeMillis()); // 模拟交易号
|
|
order.setPayTradeNo("TRADE_" + System.currentTimeMillis()); // 模拟交易号
|
|
|
order.setUpdatedTime(new Date());
|
|
order.setUpdatedTime(new Date());
|
|
|
-
|
|
|
|
|
- // 获取当前用户信息
|
|
|
|
|
- Integer userId = TokenUtil.getCurrentUserId();
|
|
|
|
|
- if (userId != null) {
|
|
|
|
|
- order.setUpdatedUserId(userId);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ order.setUpdatedUserId(userId);
|
|
|
|
|
|
|
|
this.updateById(order);
|
|
this.updateById(order);
|
|
|
|
|
|