57 lines
2.3 KiB
Java
57 lines
2.3 KiB
Java
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<CouponHistory> classEntities = couponHistoryDao.selectList(new LambdaQueryWrapper<CouponHistory>()
|
|
.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;
|
|
}
|
|
}
|
|
);
|
|
}
|
|
}
|
|
}
|
|
}
|