|
@@ -23,6 +23,7 @@ import shop.alien.entity.store.vo.OrderChangeLogItemVO;
|
|
|
import shop.alien.entity.store.vo.OrderInfoVO;
|
|
import shop.alien.entity.store.vo.OrderInfoVO;
|
|
|
import shop.alien.entity.store.vo.StoreOrderPageVO;
|
|
import shop.alien.entity.store.vo.StoreOrderPageVO;
|
|
|
import shop.alien.entity.store.vo.OrderCuisineItemVO;
|
|
import shop.alien.entity.store.vo.OrderCuisineItemVO;
|
|
|
|
|
+import shop.alien.entity.store.vo.OrderDetailWithChangeLogVO;
|
|
|
import shop.alien.mapper.*;
|
|
import shop.alien.mapper.*;
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
@@ -54,6 +55,7 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
|
|
|
private final BaseRedisService baseRedisService;
|
|
private final BaseRedisService baseRedisService;
|
|
|
private final StoreInfoMapper storeInfoMapper;
|
|
private final StoreInfoMapper storeInfoMapper;
|
|
|
private final StoreOrderChangeLogMapper orderChangeLogMapper;
|
|
private final StoreOrderChangeLogMapper orderChangeLogMapper;
|
|
|
|
|
+ private final shop.alien.dining.service.SseService sseService;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public StoreOrder createOrder(CreateOrderDTO dto) {
|
|
public StoreOrder createOrder(CreateOrderDTO dto) {
|
|
@@ -965,6 +967,70 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
|
+ public IPage<StoreOrderPageVO> getMyOrdersWithCuisines(Page<StoreOrder> page, String type) {
|
|
|
|
|
+ log.info("查询我的订单(包含菜品信息), type={}", type);
|
|
|
|
|
+
|
|
|
|
|
+ // 1. 查询订单列表
|
|
|
|
|
+ IPage<StoreOrder> orderPage = getMyOrders(page, type);
|
|
|
|
|
+
|
|
|
|
|
+ // 2. 获取所有订单ID
|
|
|
|
|
+ List<StoreOrder> orders = orderPage.getRecords();
|
|
|
|
|
+ if (orders == null || orders.isEmpty()) {
|
|
|
|
|
+ // 如果没有订单,返回空的分页结果
|
|
|
|
|
+ Page<StoreOrderPageVO> resultPage = new Page<>(page.getCurrent(), page.getSize());
|
|
|
|
|
+ resultPage.setTotal(orderPage.getTotal());
|
|
|
|
|
+ resultPage.setPages(orderPage.getPages());
|
|
|
|
|
+ return resultPage;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ List<Integer> orderIds = orders.stream()
|
|
|
|
|
+ .map(StoreOrder::getId)
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
+
|
|
|
|
|
+ // 3. 批量查询所有订单的菜品详情
|
|
|
|
|
+ LambdaQueryWrapper<StoreOrderDetail> detailWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ detailWrapper.in(StoreOrderDetail::getOrderId, orderIds);
|
|
|
|
|
+ detailWrapper.eq(StoreOrderDetail::getDeleteFlag, 0);
|
|
|
|
|
+ detailWrapper.orderByAsc(StoreOrderDetail::getOrderId);
|
|
|
|
|
+ detailWrapper.orderByAsc(StoreOrderDetail::getCreatedTime);
|
|
|
|
|
+ List<StoreOrderDetail> allDetails = orderDetailMapper.selectList(detailWrapper);
|
|
|
|
|
+
|
|
|
|
|
+ // 4. 按订单ID分组菜品详情
|
|
|
|
|
+ Map<Integer, List<StoreOrderDetail>> detailsMap = allDetails.stream()
|
|
|
|
|
+ .collect(Collectors.groupingBy(StoreOrderDetail::getOrderId));
|
|
|
|
|
+
|
|
|
|
|
+ // 5. 构建返回结果
|
|
|
|
|
+ List<StoreOrderPageVO> voList = orders.stream().map(order -> {
|
|
|
|
|
+ StoreOrderPageVO vo = new StoreOrderPageVO();
|
|
|
|
|
+ vo.setOrder(order);
|
|
|
|
|
+
|
|
|
|
|
+ // 获取该订单的菜品列表
|
|
|
|
|
+ List<StoreOrderDetail> orderDetails = detailsMap.getOrDefault(order.getId(), new ArrayList<>());
|
|
|
|
|
+ List<OrderCuisineItemVO> cuisineItems = orderDetails.stream()
|
|
|
|
|
+ .map(detail -> {
|
|
|
|
|
+ OrderCuisineItemVO item = new OrderCuisineItemVO();
|
|
|
|
|
+ item.setCuisineId(detail.getCuisineId());
|
|
|
|
|
+ item.setCuisineName(detail.getCuisineName());
|
|
|
|
|
+ item.setCuisineImage(detail.getCuisineImage());
|
|
|
|
|
+ item.setQuantity(detail.getQuantity());
|
|
|
|
|
+ return item;
|
|
|
|
|
+ })
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
+ vo.setCuisineItems(cuisineItems);
|
|
|
|
|
+
|
|
|
|
|
+ return vo;
|
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
|
+
|
|
|
|
|
+ // 6. 构建分页结果
|
|
|
|
|
+ Page<StoreOrderPageVO> resultPage = new Page<>(page.getCurrent(), page.getSize());
|
|
|
|
|
+ resultPage.setRecords(voList);
|
|
|
|
|
+ resultPage.setTotal(orderPage.getTotal());
|
|
|
|
|
+ resultPage.setPages(orderPage.getPages());
|
|
|
|
|
+
|
|
|
|
|
+ return resultPage;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
public OrderInfoVO getOrderInfo(Integer orderId) {
|
|
public OrderInfoVO getOrderInfo(Integer orderId) {
|
|
|
log.info("查询订单信息, orderId={}", orderId);
|
|
log.info("查询订单信息, orderId={}", orderId);
|
|
|
|
|
|
|
@@ -999,8 +1065,21 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
|
|
|
|
|
|
|
|
// 3. 查询门店信息
|
|
// 3. 查询门店信息
|
|
|
StoreInfo storeInfo = storeInfoMapper.selectById(order.getStoreId());
|
|
StoreInfo storeInfo = storeInfoMapper.selectById(order.getStoreId());
|
|
|
- String storeName = storeInfo != null ? storeInfo.getStoreName() : "";
|
|
|
|
|
-
|
|
|
|
|
|
|
+ String storeName = "";
|
|
|
|
|
+ String storeTel = "";
|
|
|
|
|
+ String storeAddress = "";
|
|
|
|
|
+ String storeBlurb = "";
|
|
|
|
|
+ String storeType = "";
|
|
|
|
|
+ Integer businessStatus = null;
|
|
|
|
|
+ if (storeInfo != null) {
|
|
|
|
|
+ storeName = storeInfo.getStoreName();
|
|
|
|
|
+ storeTel = storeInfo.getStoreTel();
|
|
|
|
|
+ storeAddress = storeInfo.getStoreAddress();
|
|
|
|
|
+ storeBlurb = storeInfo.getStoreBlurb();
|
|
|
|
|
+ storeType = storeInfo.getStoreType();
|
|
|
|
|
+ businessStatus = storeInfo.getBusinessStatus();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// 4. 查询优惠券信息(如果有)
|
|
// 4. 查询优惠券信息(如果有)
|
|
|
String couponName = null;
|
|
String couponName = null;
|
|
|
if (order.getCouponId() != null) {
|
|
if (order.getCouponId() != null) {
|
|
@@ -1009,12 +1088,18 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
|
|
|
couponName = coupon.getName();
|
|
couponName = coupon.getName();
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 5. 组装OrderInfoVO
|
|
// 5. 组装OrderInfoVO
|
|
|
OrderInfoVO vo = new OrderInfoVO();
|
|
OrderInfoVO vo = new OrderInfoVO();
|
|
|
vo.setOrderId(order.getId());
|
|
vo.setOrderId(order.getId());
|
|
|
vo.setOrderNo(order.getOrderNo());
|
|
vo.setOrderNo(order.getOrderNo());
|
|
|
|
|
+ vo.setStoreId(order.getStoreId());
|
|
|
vo.setStoreName(storeName);
|
|
vo.setStoreName(storeName);
|
|
|
|
|
+ vo.setStoreTel(storeTel);
|
|
|
|
|
+ vo.setStoreAddress(storeAddress);
|
|
|
|
|
+ vo.setStoreBlurb(storeBlurb);
|
|
|
|
|
+ vo.setStoreType(storeType);
|
|
|
|
|
+ vo.setBusinessStatus(businessStatus);
|
|
|
vo.setTableNumber(order.getTableNumber());
|
|
vo.setTableNumber(order.getTableNumber());
|
|
|
vo.setDinerCount(order.getDinerCount());
|
|
vo.setDinerCount(order.getDinerCount());
|
|
|
vo.setContactPhone(order.getContactPhone());
|
|
vo.setContactPhone(order.getContactPhone());
|
|
@@ -1113,6 +1198,58 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
|
|
|
log.info("查询订单变更记录完成, orderId={}, batchCount={}", orderId, batchList.size());
|
|
log.info("查询订单变更记录完成, orderId={}, batchCount={}", orderId, batchList.size());
|
|
|
return batchList;
|
|
return batchList;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public OrderDetailWithChangeLogVO getOrderDetailWithChangeLog(Integer orderId) {
|
|
|
|
|
+ log.info("查询订单详情(包含变更记录), orderId={}", orderId);
|
|
|
|
|
+
|
|
|
|
|
+ // 1. 查询订单基本信息
|
|
|
|
|
+ StoreOrder order = this.getById(orderId);
|
|
|
|
|
+ if (order == null || order.getDeleteFlag() == 1) {
|
|
|
|
|
+ throw new RuntimeException("订单不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 2. 查询门店信息
|
|
|
|
|
+ StoreInfo storeInfo = storeInfoMapper.selectById(order.getStoreId());
|
|
|
|
|
+ String storeName = storeInfo != null ? storeInfo.getStoreName() : "";
|
|
|
|
|
+
|
|
|
|
|
+ // 3. 查询优惠券信息(如果有)
|
|
|
|
|
+ String couponName = null;
|
|
|
|
|
+ if (order.getCouponId() != null) {
|
|
|
|
|
+ LifeDiscountCoupon coupon = lifeDiscountCouponMapper.selectById(order.getCouponId());
|
|
|
|
|
+ if (coupon != null) {
|
|
|
|
|
+ couponName = coupon.getName();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 4. 查询订单变更记录(按批次分组)
|
|
|
|
|
+ List<OrderChangeLogBatchVO> changeLogBatches = getOrderChangeLogs(orderId);
|
|
|
|
|
+
|
|
|
|
|
+ // 5. 组装OrderDetailWithChangeLogVO
|
|
|
|
|
+ OrderDetailWithChangeLogVO vo = new OrderDetailWithChangeLogVO();
|
|
|
|
|
+ vo.setOrderId(order.getId());
|
|
|
|
|
+ vo.setOrderNo(order.getOrderNo());
|
|
|
|
|
+ vo.setStoreName(storeName);
|
|
|
|
|
+ vo.setTableNumber(order.getTableNumber());
|
|
|
|
|
+ vo.setDinerCount(order.getDinerCount());
|
|
|
|
|
+ vo.setContactPhone(order.getContactPhone());
|
|
|
|
|
+ vo.setRemark(order.getRemark());
|
|
|
|
|
+ vo.setTotalAmount(order.getTotalAmount());
|
|
|
|
|
+ vo.setTablewareFee(order.getTablewareFee());
|
|
|
|
|
+ vo.setCouponId(order.getCouponId());
|
|
|
|
|
+ vo.setCouponName(couponName);
|
|
|
|
|
+ vo.setDiscountAmount(order.getDiscountAmount());
|
|
|
|
|
+ vo.setPayAmount(order.getPayAmount());
|
|
|
|
|
+ vo.setOrderStatus(order.getOrderStatus());
|
|
|
|
|
+ vo.setPayStatus(order.getPayStatus());
|
|
|
|
|
+ vo.setPayType(order.getPayType());
|
|
|
|
|
+ vo.setCreatedTime(order.getCreatedTime());
|
|
|
|
|
+ vo.setPayTime(order.getPayTime());
|
|
|
|
|
+ vo.setChangeLogBatches(changeLogBatches);
|
|
|
|
|
+
|
|
|
|
|
+ log.info("查询订单详情(包含变更记录)完成, orderId={}, batchCount={}", orderId, changeLogBatches.size());
|
|
|
|
|
+ return vo;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 获取操作类型文本
|
|
* 获取操作类型文本
|
|
@@ -1249,4 +1386,147 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
|
|
|
String random = String.valueOf((int) (Math.random() * 10000));
|
|
String random = String.valueOf((int) (Math.random() * 10000));
|
|
|
return "ORD" + timestamp + String.format("%04d", Integer.parseInt(random));
|
|
return "ORD" + timestamp + String.format("%04d", Integer.parseInt(random));
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void migrateTableData(Integer fromTableId, Integer toTableId, Integer userId) {
|
|
|
|
|
+ log.info("换桌迁移数据, fromTableId={}, toTableId={}, userId={}", fromTableId, toTableId, userId);
|
|
|
|
|
+
|
|
|
|
|
+ // 1. 查询原桌号信息
|
|
|
|
|
+ StoreTable fromTable = storeTableMapper.selectById(fromTableId);
|
|
|
|
|
+ if (fromTable == null) {
|
|
|
|
|
+ throw new RuntimeException("原桌号不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 2. 查询目标桌号信息
|
|
|
|
|
+ StoreTable toTable = storeTableMapper.selectById(toTableId);
|
|
|
|
|
+ if (toTable == null) {
|
|
|
|
|
+ throw new RuntimeException("目标桌号不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 3. 迁移未完成的订单(orderStatus=0 且 payStatus=0)
|
|
|
|
|
+ if (fromTable.getCurrentOrderId() != null) {
|
|
|
|
|
+ StoreOrder pendingOrder = this.getById(fromTable.getCurrentOrderId());
|
|
|
|
|
+ if (pendingOrder != null && pendingOrder.getOrderStatus() == 0 && pendingOrder.getPayStatus() == 0) {
|
|
|
|
|
+ // 更新订单的桌号信息
|
|
|
|
|
+ pendingOrder.setTableId(toTableId);
|
|
|
|
|
+ pendingOrder.setTableNumber(toTable.getTableNumber());
|
|
|
|
|
+ pendingOrder.setUpdatedUserId(userId);
|
|
|
|
|
+ pendingOrder.setUpdatedTime(new Date());
|
|
|
|
|
+ this.updateById(pendingOrder);
|
|
|
|
|
+ log.info("迁移未完成订单, orderId={}, fromTableId={}, toTableId={}", pendingOrder.getId(), fromTableId, toTableId);
|
|
|
|
|
+
|
|
|
|
|
+ // 更新订单明细的订单号(如果需要,但通常订单号不变,所以这里只更新 table_id 关联)
|
|
|
|
|
+ // 订单明细通过 order_id 关联,不需要单独更新
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 4. 迁移所有未完成的订单(包括可能存在的其他未完成订单)
|
|
|
|
|
+ LambdaQueryWrapper<StoreOrder> orderWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ orderWrapper.eq(StoreOrder::getTableId, fromTableId);
|
|
|
|
|
+ orderWrapper.eq(StoreOrder::getOrderStatus, 0); // 待支付
|
|
|
|
|
+ orderWrapper.eq(StoreOrder::getPayStatus, 0); // 未支付
|
|
|
|
|
+ orderWrapper.eq(StoreOrder::getDeleteFlag, 0);
|
|
|
|
|
+ List<StoreOrder> pendingOrders = this.list(orderWrapper);
|
|
|
|
|
+
|
|
|
|
|
+ if (pendingOrders != null && !pendingOrders.isEmpty()) {
|
|
|
|
|
+ for (StoreOrder order : pendingOrders) {
|
|
|
|
|
+ order.setTableId(toTableId);
|
|
|
|
|
+ order.setTableNumber(toTable.getTableNumber());
|
|
|
|
|
+ order.setUpdatedUserId(userId);
|
|
|
|
|
+ order.setUpdatedTime(new Date());
|
|
|
|
|
+ }
|
|
|
|
|
+ this.updateBatchById(pendingOrders);
|
|
|
|
|
+ log.info("迁移未完成订单, count={}, fromTableId={}, toTableId={}", pendingOrders.size(), fromTableId, toTableId);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 5. 迁移优惠券使用记录
|
|
|
|
|
+ LambdaQueryWrapper<StoreCouponUsage> couponUsageWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ couponUsageWrapper.eq(StoreCouponUsage::getTableId, fromTableId);
|
|
|
|
|
+ couponUsageWrapper.eq(StoreCouponUsage::getDeleteFlag, 0);
|
|
|
|
|
+ couponUsageWrapper.in(StoreCouponUsage::getUsageStatus, 0, 1, 2); // 已标记使用、已下单、已支付
|
|
|
|
|
+ List<StoreCouponUsage> couponUsages = storeCouponUsageMapper.selectList(couponUsageWrapper);
|
|
|
|
|
+
|
|
|
|
|
+ if (couponUsages != null && !couponUsages.isEmpty()) {
|
|
|
|
|
+ Date now = new Date();
|
|
|
|
|
+ for (StoreCouponUsage usage : couponUsages) {
|
|
|
|
|
+ usage.setFromTableId(fromTableId);
|
|
|
|
|
+ usage.setTableId(toTableId);
|
|
|
|
|
+ usage.setMigrateTime(now);
|
|
|
|
|
+ usage.setUpdatedUserId(userId);
|
|
|
|
|
+ usage.setUpdatedTime(now);
|
|
|
|
|
+ }
|
|
|
|
|
+ // 批量更新
|
|
|
|
|
+ for (StoreCouponUsage usage : couponUsages) {
|
|
|
|
|
+ storeCouponUsageMapper.updateById(usage);
|
|
|
|
|
+ }
|
|
|
|
|
+ log.info("迁移优惠券使用记录, count={}, fromTableId={}, toTableId={}", couponUsages.size(), fromTableId, toTableId);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 6. 更新桌号表的关联信息
|
|
|
|
|
+ // 原桌号:清空 currentOrderId 和 currentCouponId
|
|
|
|
|
+ LambdaUpdateWrapper<StoreTable> fromTableWrapper = new LambdaUpdateWrapper<>();
|
|
|
|
|
+ fromTableWrapper.eq(StoreTable::getId, fromTableId)
|
|
|
|
|
+ .set(StoreTable::getCurrentOrderId, null)
|
|
|
|
|
+ .set(StoreTable::getCurrentCouponId, null)
|
|
|
|
|
+ .set(StoreTable::getUpdatedTime, new Date());
|
|
|
|
|
+ if (userId != null) {
|
|
|
|
|
+ fromTableWrapper.set(StoreTable::getUpdatedUserId, userId);
|
|
|
|
|
+ }
|
|
|
|
|
+ storeTableMapper.update(null, fromTableWrapper);
|
|
|
|
|
+ log.info("清空原桌号关联信息, fromTableId={}", fromTableId);
|
|
|
|
|
+
|
|
|
|
|
+ // 目标桌号:设置 currentOrderId 和 currentCouponId(如果有)
|
|
|
|
|
+ if (fromTable.getCurrentOrderId() != null || fromTable.getCurrentCouponId() != null) {
|
|
|
|
|
+ LambdaUpdateWrapper<StoreTable> toTableWrapper = new LambdaUpdateWrapper<>();
|
|
|
|
|
+ toTableWrapper.eq(StoreTable::getId, toTableId);
|
|
|
|
|
+
|
|
|
|
|
+ if (fromTable.getCurrentOrderId() != null) {
|
|
|
|
|
+ toTableWrapper.set(StoreTable::getCurrentOrderId, fromTable.getCurrentOrderId());
|
|
|
|
|
+ }
|
|
|
|
|
+ if (fromTable.getCurrentCouponId() != null) {
|
|
|
|
|
+ toTableWrapper.set(StoreTable::getCurrentCouponId, fromTable.getCurrentCouponId());
|
|
|
|
|
+ }
|
|
|
|
|
+ toTableWrapper.set(StoreTable::getUpdatedTime, new Date());
|
|
|
|
|
+ if (userId != null) {
|
|
|
|
|
+ toTableWrapper.set(StoreTable::getUpdatedUserId, userId);
|
|
|
|
|
+ }
|
|
|
|
|
+ storeTableMapper.update(null, toTableWrapper);
|
|
|
|
|
+ log.info("设置目标桌号关联信息, toTableId={}, currentOrderId={}, currentCouponId={}",
|
|
|
|
|
+ toTableId, fromTable.getCurrentOrderId(), fromTable.getCurrentCouponId());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ log.info("换桌数据迁移完成, fromTableId={}, toTableId={}", fromTableId, toTableId);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public shop.alien.entity.store.dto.CartDTO changeTable(Integer fromTableId, Integer toTableId, String changeReason, Integer userId) {
|
|
|
|
|
+ log.info("换桌, fromTableId={}, toTableId={}, changeReason={}, userId={}", fromTableId, toTableId, changeReason, userId);
|
|
|
|
|
+
|
|
|
|
|
+ // 1. 迁移购物车
|
|
|
|
|
+ shop.alien.entity.store.dto.CartDTO cart = cartService.migrateCart(fromTableId, toTableId);
|
|
|
|
|
+
|
|
|
|
|
+ // 2. 迁移所有关联数据(订单、订单变更记录、优惠券使用记录等)
|
|
|
|
|
+ migrateTableData(fromTableId, toTableId, userId);
|
|
|
|
|
+
|
|
|
|
|
+ // 3. 查询桌号信息
|
|
|
|
|
+ StoreTable fromTable = storeTableMapper.selectById(fromTableId);
|
|
|
|
|
+ StoreTable toTable = storeTableMapper.selectById(toTableId);
|
|
|
|
|
+
|
|
|
|
|
+ // 4. 记录换桌日志
|
|
|
|
|
+ StoreTableLog tableLog = new StoreTableLog();
|
|
|
|
|
+ tableLog.setStoreId(cart.getStoreId());
|
|
|
|
|
+ tableLog.setFromTableId(fromTableId);
|
|
|
|
|
+ tableLog.setFromTableNumber(fromTable != null ? fromTable.getTableNumber() : null);
|
|
|
|
|
+ tableLog.setToTableId(toTableId);
|
|
|
|
|
+ tableLog.setToTableNumber(toTable != null ? toTable.getTableNumber() : null);
|
|
|
|
|
+ tableLog.setChangeReason(changeReason);
|
|
|
|
|
+ tableLog.setCreatedUserId(userId);
|
|
|
|
|
+ storeTableLogMapper.insert(tableLog);
|
|
|
|
|
+
|
|
|
|
|
+ // 5. 推送购物车更新消息到新桌号
|
|
|
|
|
+ sseService.pushCartUpdate(toTableId, cart);
|
|
|
|
|
+
|
|
|
|
|
+ log.info("换桌完成, fromTableId={}, toTableId={}", fromTableId, toTableId);
|
|
|
|
|
+ return cart;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|