package com.qs.mp.quartz.task; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.date.TemporalUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.qs.mp.common.enums.DeliverOrderStatusEnum; import com.qs.mp.common.utils.LogUtil; import com.qs.mp.user.domain.UserDeliverOrder; import com.qs.mp.user.service.IUserDeliverOrderService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 用户提货订单任务 * @author Cup * @date 2022/4/20 */ @Component("userDeliverOrderTask") public class UserDeliverOrderTask { protected final Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); @Autowired private IUserDeliverOrderService userDeliverOrderService; /** * x天前的待收货订单自动确认收货任务 */ public void confirm(Integer day) { LogUtil.info(logger, "...用户提货订单自动确认收货任务开始..."); LocalDateTime now = LocalDateTimeUtil.now(); LocalDateTime deliveryTime = LocalDateTimeUtil.offset(now, -day, ChronoUnit.DAYS); List userDeliverOrderList = userDeliverOrderService.list(new LambdaQueryWrapper() .eq(UserDeliverOrder::getStatus, DeliverOrderStatusEnum.NOT_CONFIRM.getValue()) .le(UserDeliverOrder::getDeliveryTime, deliveryTime)); List params = new ArrayList<>(); if (CollectionUtils.isNotEmpty(userDeliverOrderList)) { for (UserDeliverOrder userDeliverOrder : userDeliverOrderList) { UserDeliverOrder param = new UserDeliverOrder(); param.setOrderId(userDeliverOrder.getOrderId()); param.setConfirmTime(new Date()); param.setStatus(DeliverOrderStatusEnum.FINISHED); params.add(param); } } userDeliverOrderService.updateBatchById(params); LogUtil.info(logger, "...用户提货订单自动确认收货任务结束..."); } }