itheima苍穹外卖项目学习笔记--Day10: 订单状态定时处理/来单提醒和客户催单
发布人:shili8
发布时间:2025-01-23 06:02
阅读次数:0
**itheima 苍穹外卖项目学习笔记 - Day10**
**订单状态定时处理 / 来单提醒和客户催单**
在前面的日子里,我们已经完成了订单的创建、支付、配送等功能。然而,一个完整的外卖系统还需要考虑到订单状态的变化以及对用户的提醒和催单。今天我们就来实现这个功能。
###1. 订单状态定时处理首先,我们需要定义订单状态的枚举类:
javapublic enum OrderStatus { // 新建 NEW, // 已支付 PAID, // 配送中 DELIVERING, // 完成 FINISHED, // 取消 CANCELED}
然后,我们需要在订单服务类中添加一个定时任务来处理订单状态的变化:
java@Servicepublic class OrderService { @Autowired private OrderRepository orderRepository; @Scheduled(fixedDelay =1000 *60) // 每分钟执行一次 public void handleOrderStatus() { Listorders = orderRepository.findByStatus(OrderStatus.NEW); for (Order order : orders) { // 处理订单状态的变化 handleOrder(order); } } private void handleOrder(Order order) { // 根据具体业务逻辑处理订单状态的变化 if (order.getPaymentTime() != null && System.currentTimeMillis() - order.getPaymentTime().getTime() >1000 *60 *10) { // 超过10分钟未支付 order.setStatus(OrderStatus.CANCELED); orderRepository.save(order); } else if (order.getDeliveryTime() != null && System.currentTimeMillis() - order.getDeliveryTime().getTime() >1000 *60 *30) { // 超过30分钟未配送 order.setStatus(OrderStatus.DELIVERING); orderRepository.save(order); } } }
###2. 来单提醒来单提醒是指当有新订单创建时,系统需要向相关人员发送提醒信息。我们可以使用 Spring Boot 的 `@EventListener` 注解来监听 OrderCreatedEvent事件:
java@Componentpublic class OrderCreatedListener { @Autowired private MailService mailService; @EventListener public void onOrderCreated(OrderCreatedEvent event) { // 发送提醒邮件 mailService.sendMail("新订单创建", "订单编号:" + event.getOrder().getId()); } }
###3. 客户催单客户催单是指当有未支付的订单时,系统需要向客户发送催单信息。我们可以使用 Spring Boot 的 `@EventListener` 注解来监听 OrderPaidEvent事件:
java@Componentpublic class OrderPaidListener { @Autowired private MailService mailService; @EventListener public void onOrderPaid(OrderPaidEvent event) { // 发送催单邮件 mailService.sendMail("订单未支付", "订单编号:" + event.getOrder().getId()); } }
以上就是我们今天实现的功能。通过这些代码,我们可以完成订单状态定时处理、来单提醒和客户催单等功能。