package com.xiaopeng.operation.utils.task; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.xiaopeng.api.model.operation.XpActicityStrategy; import com.xiaopeng.api.model.operation.XpActivity; import com.xiaopeng.operation.service.IXpActicityService; import com.xiaopeng.operation.service.IXpActicityStrategyService; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; @Slf4j @Component public class ActivityTask { @Resource private IXpActicityStrategyService xpActicityStrategyService; @Resource private IXpActicityService xpActicityService; @Scheduled(cron = "0 0/1 * * * *") public void taskOrder() { xpActicityService.updateStatus(); //循环发放的活动 pusCoupon(); } /** * 每日发放券的活动 */ public void pusCoupon() { List activities = xpActicityService.list(new QueryWrapper().eq("status", 2) .eq("is_deleted", 0).last(" and now() between start_time and end_time")); if (activities.isEmpty()) { return; } for (XpActivity activity : activities) { List list = xpActicityStrategyService.list(new QueryWrapper() .eq("distribution_rules", 1) .eq("is_deleted", 0) .eq("actitcity_id", activity.getId())); for (XpActicityStrategy xpActicityStrategy : list) { String distributionTime = xpActicityStrategy.getDistributionTime(); String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern("HH:mm")); if (distributionTime.equals(format)) { xpActicityService.pushCoupon(activity, xpActicityStrategy); } } } } }