|
|
@@ -407,6 +407,7 @@ public class HotelOrderServiceImpl implements HotelOrderService {
|
|
|
order.setAcceptTime(new Date());
|
|
|
orderMapper.updateById(order);
|
|
|
log.info("订单接单: {}", order.getOrderNo());
|
|
|
+ notifyCustomerStatus(order, HotelOrderConstants.STATUS_ACCEPTED, "餐厅已接单");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -429,6 +430,7 @@ public class HotelOrderServiceImpl implements HotelOrderService {
|
|
|
.set("update_time", now);
|
|
|
orderMapper.update(null, updateWrapper);
|
|
|
log.info("订单拒单: {}", order.getOrderNo());
|
|
|
+ notifyCustomerStatus(order, HotelOrderConstants.STATUS_REJECTED, "餐厅已拒单");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -445,6 +447,7 @@ public class HotelOrderServiceImpl implements HotelOrderService {
|
|
|
order.setPrepareTime(new Date());
|
|
|
orderMapper.updateById(order);
|
|
|
log.info("订单备餐: {}", order.getOrderNo());
|
|
|
+ notifyCustomerStatus(order, HotelOrderConstants.STATUS_PREPARING, "厨房备餐中");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -459,6 +462,9 @@ public class HotelOrderServiceImpl implements HotelOrderService {
|
|
|
orderMapper.updateById(order);
|
|
|
log.info("订单出餐: {}", order.getOrderNo());
|
|
|
|
|
|
+ // 通知顾客端:已出餐
|
|
|
+ notifyCustomerStatus(order, HotelOrderConstants.STATUS_READY, "已出餐");
|
|
|
+
|
|
|
// 发布出餐完成SSE通知,前台收到后刷新配送列表
|
|
|
try {
|
|
|
sseEmitterManager.notifyOrderReady(
|
|
|
@@ -483,6 +489,7 @@ public class HotelOrderServiceImpl implements HotelOrderService {
|
|
|
order.setDeliverTime(new Date());
|
|
|
orderMapper.updateById(order);
|
|
|
log.info("订单配送: {}", order.getOrderNo());
|
|
|
+ notifyCustomerStatus(order, HotelOrderConstants.STATUS_DELIVERING, "配送中");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -498,6 +505,7 @@ public class HotelOrderServiceImpl implements HotelOrderService {
|
|
|
// 订单完成后累加菜品销量
|
|
|
incrementDishSales(id);
|
|
|
log.info("订单完成: {}", order.getOrderNo());
|
|
|
+ notifyCustomerStatus(order, HotelOrderConstants.STATUS_COMPLETED, "已送达");
|
|
|
}
|
|
|
|
|
|
// ==================== 退单相关 ====================
|
|
|
@@ -593,6 +601,7 @@ public class HotelOrderServiceImpl implements HotelOrderService {
|
|
|
.set("update_time", now);
|
|
|
orderMapper.update(null, cancelWrapper);
|
|
|
log.info("前台取消待支付订单: {}", order.getOrderNo());
|
|
|
+ notifyCustomerStatus(order, HotelOrderConstants.STATUS_CANCELLED, "订单已取消");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
@@ -608,6 +617,7 @@ public class HotelOrderServiceImpl implements HotelOrderService {
|
|
|
.set("update_time", now);
|
|
|
orderMapper.update(null, updateWrapper);
|
|
|
log.info("前台退单: {}", order.getOrderNo());
|
|
|
+ notifyCustomerStatus(order, HotelOrderConstants.STATUS_REFUNDED, "已退单");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -628,6 +638,7 @@ public class HotelOrderServiceImpl implements HotelOrderService {
|
|
|
.set("update_time", now);
|
|
|
orderMapper.update(null, updateWrapper);
|
|
|
log.info("退单审核通过: {}", order.getOrderNo());
|
|
|
+ notifyCustomerStatus(order, HotelOrderConstants.STATUS_REFUNDED, "退单审核通过");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -647,6 +658,7 @@ public class HotelOrderServiceImpl implements HotelOrderService {
|
|
|
.set("update_time", new Date());
|
|
|
orderMapper.update(null, updateWrapper);
|
|
|
log.info("退单审核驳回: {}", order.getOrderNo());
|
|
|
+ notifyCustomerStatus(order, HotelOrderConstants.STATUS_ACCEPTED, "退单审核驳回");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -944,4 +956,24 @@ public class HotelOrderServiceImpl implements HotelOrderService {
|
|
|
}
|
|
|
return today.subtract(yesterday).divide(yesterday, 4, RoundingMode.HALF_UP).doubleValue();
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 通知顾客端订单状态变更(SSE 实时推送)。
|
|
|
+ * 顾客 H5 收到后立即更新界面,替代 10 秒轮询。
|
|
|
+ *
|
|
|
+ * @param order 订单
|
|
|
+ * @param newStatus 新状态码
|
|
|
+ * @param statusText 状态文案
|
|
|
+ */
|
|
|
+ private void notifyCustomerStatus(HotelOrder order, int newStatus, String statusText) {
|
|
|
+ try {
|
|
|
+ sseEmitterManager.notifyCustomerOrderStatus(
|
|
|
+ order.getId(),
|
|
|
+ order.getOrderNo(),
|
|
|
+ newStatus,
|
|
|
+ statusText);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("发布顾客订单状态通知失败: orderId={}, status={}", order.getId(), newStatus, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|