站长工具友链查询,医疗网站建设策划,网站界面排版,wordpress 渐变主题Spring Task 同学们可以看我这篇文章
Spring Task初学-CSDN博客 订单状态定时处理 新建OrderTask
/*** 定时任务类#xff0c;定时处理订单状态*/
Component
Slf4j
public class OrderTask {Autowiredprivate OrderMapper orderMapper;/*** 处理超时订单的方法*/Scheduled(c… Spring Task 同学们可以看我这篇文章
Spring Task初学-CSDN博客 订单状态定时处理 新建OrderTask
/*** 定时任务类定时处理订单状态*/
Component
Slf4j
public class OrderTask {Autowiredprivate OrderMapper orderMapper;/*** 处理超时订单的方法*/Scheduled(cron 0 * * * * ? ) //每分钟触发一次public void processTimeoutOrder(){log.info(定时处理超市订单:{}, LocalDateTime.now());//select * from orders where status ? and order_time (当前时间-15分钟)LocalDateTime time LocalDateTime.now().plusMinutes(-15);ListOrders ordersList orderMapper.getByStatusAndOrderTimeLT(Orders.PENDING_PAYMENT, time);if(ordersList ! null ordersList.size() 0){for (Orders orders : ordersList) {orders.setStatus(Orders.CANCELLED);orders.setCancelReason(订单超时自动取消);orders.setCancelTime(LocalDateTime.now());orderMapper.update(orders);}}}/*** 处理一直处于派送中状态的订单*/Scheduled(cron 0 0 1 * * ?) //每天凌晨1点触发一次public void processDeliveryOrder(){log.info(定时处理处于派送中的订单{},LocalDateTime.now());ListOrders ordersList orderMapper.getByStatusAndOrderTimeLT(Orders.DELIVERY_IN_PROGRESS, LocalDateTime.now().plusHours(-1));if(ordersList ! null ordersList.size() 0){for (Orders orders : ordersList) {orders.setStatus(Orders.COMPLETED);orderMapper.update(orders);}}}
}WebSocket 这篇文章详细讲解了WebScoket
WebSocket初学-CSDN博客
来单提醒 只需要在paySuccess(OrderServiceIpl中)这个方法中稍微改动一下就行了
主要是创建了一个HashMap对象map用于存储要发送给客户端的消息内容。type字段设置为1表示这是一个来单提醒。 orderId字段设置为订单的ID。 content字段包含订单号的文本信息。 使用JSON库如阿里巴巴的fastjson将map对象转换为JSON字符串json。 调用webSocketServer的sendToAllClient方法将JSON字符串json发送给所有连接的客户端。这通常用于实时通知客户端订单状态的变更。 /*** 支付成功修改订单状态** param outTradeNo*/public void paySuccess(String outTradeNo) {// 根据订单号查询订单Orders ordersDB orderMapper.getByNumber(outTradeNo);// 根据订单id更新订单的状态、支付方式、支付状态、结账时间Orders orders Orders.builder().id(ordersDB.getId()).status(Orders.TO_BE_CONFIRMED).payStatus(Orders.PAID).checkoutTime(LocalDateTime.now()).build();orderMapper.update(orders);//通过websocket向客户端浏览器推送消息 type orderId contentMap map new HashMap();map.put(type,1);//1表示来单提醒2表示用户催单map.put(orderId,ordersDB.getId());map.put(content,订单号outTradeNo);String json JSON.toJSONString(map);webSocketServer.sendToAllClient(json);}功能测试 客户催单 逻辑跟来单提醒差不多 接口设计 user/OrdreController /*** 催单* param id* return*/GetMapping(/reminder/{id})ApiOperation(催单)public Result reminder(PathVariable Long id){orderService.reminder(id);return Result.success();}
OrderService /*** 催单* param id*/void reminder(Long id); OrderServiceImpl /*** 催单* param id*/public void reminder(Long id) {//根据id查询订单Orders ordersDB orderMapper.getbyId(id);// 校验订单是否存在并且状态为4if(ordersDB null){throw new OrderBusinessException(MessageConstant.ORDER_STATUS_ERROR);}Map map new HashMap();map.put(type,2);map.put(orderId,ordersDB.getId());map.put(content,订单号ordersDB.getNumber());//通过webSocketServer向客户端浏览器推送消息webSocketServer.sendToAllClient(JSON.toJSONString(map));}
功能测试