package com.peanut.modules.job.task; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.peanut.common.utils.DateUtils; import com.peanut.config.DelayQueueConfig; import com.peanut.modules.common.dao.CouponDao; import com.peanut.modules.common.dao.CouponHistoryDao; import com.peanut.modules.common.entity.CouponEntity; import com.peanut.modules.common.entity.CouponHistory; import org.springframework.amqp.AmqpException; import org.springframework.amqp.core.Message; import org.springframework.amqp.core.MessagePostProcessor; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; @Component("couponEffectTask") public class CouponEffectTask implements ITask{ @Autowired private CouponHistoryDao couponHistoryDao; @Autowired private RabbitTemplate rabbitTemplate; @Override public void run(String params) { List classEntities = couponHistoryDao.selectList(new LambdaQueryWrapper() .eq(CouponHistory::getStatus,0) .ne(CouponHistory::getEffectType,0)); for (CouponHistory couponHistory : classEntities) { Date endTime = couponHistory.getEndTime(); if (endTime.getTime()<=new Date().getTime()){ //优惠券到期 couponHistory.setStatus(2); couponHistoryDao.updateById(couponHistory); }else if (DateUtils.format(endTime).equals(DateUtils.format(new Date()))) { //优惠券到期时间是当天 rabbitTemplate.convertAndSend( DelayQueueConfig.COMMON_EXCHANGE, DelayQueueConfig.COMMON_ROUTING_KEY, "couponExpire"+","+couponHistory.getId(), new MessagePostProcessor() { @Override public Message postProcessMessage(Message message) throws AmqpException { message.getMessageProperties().setDelay((int)(endTime.getTime()-new Date().getTime())); return message; } } ); } } } }