|
@@ -1,13 +1,10 @@
|
|
|
package com.fdage.task;
|
|
|
|
|
|
-import com.fdage.base.entity.TmDesk;
|
|
|
import com.fdage.base.entity.TmOrder;
|
|
|
import com.fdage.base.enums.OrderStatusEnum;
|
|
|
-import com.fdage.base.service.impl.TmDeskServiceImpl;
|
|
|
import com.fdage.base.service.impl.TmOrderServiceImpl;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
-import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
|
@@ -21,7 +18,7 @@ import java.util.List;
|
|
|
* 2 * @Author: Abner
|
|
|
* 3 * @Date: 2021/3/4 20:08
|
|
|
* 4 每日凌晨重置已经预定成功,但是未来消费的订单的状态
|
|
|
- * //TODO:这里需要声明专用的线程池,不使用默认的线程池
|
|
|
+ * //TODO:这里需要声明专用的线程池,不使用默认的线程池
|
|
|
*/
|
|
|
@Component
|
|
|
@EnableScheduling
|
|
@@ -32,46 +29,30 @@ public class ReInitDeskStatusTask {
|
|
|
@Autowired
|
|
|
private TmOrderServiceImpl orderService;
|
|
|
|
|
|
- @Autowired
|
|
|
- private TmDeskServiceImpl deskService;
|
|
|
-
|
|
|
/**
|
|
|
* 默认是fixedDelay 上一次执行完毕时间后执行下一轮
|
|
|
- * 凌晨0点到1点之间,每隔15分钟执行一次
|
|
|
+ * 凌晨0点到23点之间,每隔15分钟执行一次,只捞取预定日期是昨天的
|
|
|
+ * 订单,然后将其状态翻转为失效状态
|
|
|
* 支持幂等
|
|
|
*/
|
|
|
- @Scheduled(cron = "0 */5 0-1 * * ?")
|
|
|
+ @Scheduled(cron = "0 */15 0-23 * * ?")
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void run() throws InterruptedException {
|
|
|
log.info("========每日凌晨初始化未使用的预定订单定时任务=====开始执行=======");
|
|
|
List<TmOrder> unUsedOrderList = orderService.getUnUserOrder();
|
|
|
int orderCount = 0;
|
|
|
- if(!CollectionUtils.isEmpty(unUsedOrderList)){
|
|
|
- for ( TmOrder order : unUsedOrderList) {
|
|
|
+ if (!CollectionUtils.isEmpty(unUsedOrderList)) {
|
|
|
+ for (TmOrder order : unUsedOrderList) {
|
|
|
TmOrder dbOrder = orderService.getSelectByUpdate(order.getId());
|
|
|
- if(null == dbOrder){
|
|
|
- log.info("订单[{}]抢锁失败,无法将其更新为已失效的状态" , order.getOrderNo());
|
|
|
- }else{
|
|
|
+ if (null == dbOrder) {
|
|
|
+ log.info("订单[{}]抢锁失败,无法将其更新为已失效的状态", order.getOrderNo());
|
|
|
+ } else {
|
|
|
dbOrder.setStatus(OrderStatusEnum.ORDER_USE_TIMEOUT.getStatus());
|
|
|
orderService.updateWithId(dbOrder);
|
|
|
orderCount += 1;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- List<TmDesk> orderedDeskList = deskService.getOrderedDeskList();
|
|
|
- int countDesk = 0;
|
|
|
- if(!CollectionUtils.isEmpty(orderedDeskList)){
|
|
|
- for (TmDesk desk : orderedDeskList) {
|
|
|
- TmDesk dbDesk = deskService.getBySelectForUpdate(desk.getId());
|
|
|
- if(null == dbDesk){
|
|
|
- log.info("餐桌[{}]抢锁失败,无法将其更新为已可预订的状态" , desk.getId());
|
|
|
- }else{
|
|
|
- dbDesk.setStatus(0);
|
|
|
- deskService.updateWithId(dbDesk);
|
|
|
- countDesk += 1;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- log.info("========每日凌晨初始化未使用的预定订单定时任务=====执行完成{}个订单,{}个餐桌=======" , orderCount , countDesk);
|
|
|
+ log.info("========每日凌晨初始化未使用的预定订单定时任务=====执行完成{}个订单=======", orderCount);
|
|
|
}
|
|
|
}
|