diff --git a/sky-server/src/main/java/com/sky/task/MyTask.java b/sky-server/src/main/java/com/sky/task/MyTask.java new file mode 100644 index 0000000..8bc37a6 --- /dev/null +++ b/sky-server/src/main/java/com/sky/task/MyTask.java @@ -0,0 +1,23 @@ +package com.sky.task; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/* +* 自定义定时任务类 +* */ +@Component +@Slf4j +public class MyTask { + + /* + * 定时任务 每隔5秒触发一次 + * */ +// @Scheduled(cron = "0/5 * * * * ?") + public void executeTask(){ + log.info("定时任务开始执行:{}",new Date()); + } + +} diff --git a/sky-server/src/main/java/com/sky/task/OrderTask.java b/sky-server/src/main/java/com/sky/task/OrderTask.java new file mode 100644 index 0000000..8214df2 --- /dev/null +++ b/sky-server/src/main/java/com/sky/task/OrderTask.java @@ -0,0 +1,56 @@ +package com.sky.task; + +import com.sky.entity.Orders; +import com.sky.mapper.OrderMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; +import java.util.List; + +@Component +@Slf4j +public class OrderTask { + + @Autowired + private OrderMapper orderMapper; + /* + * 处理超时订单的方法 + * */ + @Scheduled(cron = "0 * * * * ? ") //每分钟触发一次 +// @Scheduled(cron = "1/5 * * * * ?") + public void processTimeoutOrder(){ + log.info("定时处理超时订单:{}", LocalDateTime.now()); + LocalDateTime time = LocalDateTime.now().plusMinutes(-15); + List orderList = orderMapper.getByStatusAndOrderTimeLT(Orders.PENDING_PAYMENT, time); + + if(orderList != null || orderList.size() >0){ + for (Orders orders : orderList) { + orders.setStatus(Orders.CANCELLED); + orders.setCancelReason("订单超时,自动取消"); + orders.setCancelTime(LocalDateTime.now()); + orderMapper.update(orders); + } + } + } + + /* + * 一直处于派送中状态的订单 + * */ + @Scheduled(cron = "0 0 1 * * ? ")//每日凌晨一点触发 +// @Scheduled(cron = "0/5 * * * * ?") + public void processDeliveryOrder(){ + log.info("定时处理处于派送中的订单:{}",LocalDateTime.now()); + LocalDateTime time = LocalDateTime.now().plusMinutes(-60); + List orderList = orderMapper.getByStatusAndOrderTimeLT(Orders.DELIVERY_IN_PROGRESS, time); + if(orderList != null || orderList.size() >0){ + for (Orders orders : orderList) { + orders.setStatus(Orders.COMPLETED); + orderMapper.update(orders); + } + } + + } +} diff --git a/sky-server/src/main/java/com/sky/task/WebSocketTask.java b/sky-server/src/main/java/com/sky/task/WebSocketTask.java new file mode 100644 index 0000000..6d9e92f --- /dev/null +++ b/sky-server/src/main/java/com/sky/task/WebSocketTask.java @@ -0,0 +1,19 @@ +package com.sky.task; + +import com.sky.websocket.WebSocketServer; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class WebSocketTask { + @Autowired + private WebSocketServer webSocketServer; + + /** + * 通过WebSocket每隔5秒向客户端发送消息 + */ +// @Scheduled(cron = "0/5 * * * * ?") +// public void sendMessageToClient() { +// webSocketServer.sendToAllClient("这是来自服务端的消息:" + DateTimeFormatter.ofPattern("HH:mm:ss").format(LocalDateTime.now())); +// } +}