package com.dsh.competition.util; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.competition.entity.Competition; import com.dsh.competition.entity.PaymentCompetition; import com.dsh.competition.feignclient.account.StudentHonorClient; import com.dsh.competition.feignclient.account.model.StudentHonor; import com.dsh.competition.model.TCompetition; import com.dsh.competition.service.CompetitionService; import com.dsh.competition.service.IPaymentCompetitionService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Set; import java.util.stream.Collectors; /** * @author shaqian * 定时任务修改赛事状态 */ @Component public class TaskUtilCompetition { @Resource private CompetitionService competitionService; @Resource private StudentHonorClient studentHonorClient; @Autowired private IPaymentCompetitionService paymentCompetitionService; /** * 每秒去处理的定时任务 */ @Scheduled(fixedRate = 30000) public void taskMinute() { try { List list = competitionService.list(new QueryWrapper() .ne("status", 4).ne("state", 3)); for (Competition competition : list) { // 当前时间小于开始时间 if (competition.getStatus() != 1 && competition.getStartTime().after(new Date())) { competition.setStatus(1); } if (competition.getStatus() == 1 && competition.getStartTime().before(new Date())) { if (competition.getEndTime().after(new Date())) { competition.setStatus(2); } else { competition.setStatus(3); } if(competition.getStatus() == 2){ //添加勋章数据 List list1 = paymentCompetitionService.list(new QueryWrapper() .eq("competitionId", competition.getId()).eq("payStatus", 2).eq("state", 1)); Set collect = list1.stream().map(PaymentCompetition::getAppUserId).collect(Collectors.toSet()); for (Integer integer : collect) { int count = paymentCompetitionService.count(new QueryWrapper() .eq("appUserId", integer).eq("payStatus", 2).eq("state", 1)); StudentHonor studentHonor = new StudentHonor(); studentHonor.setAppUserId(integer); studentHonor.setHonorType(2); studentHonor.setNumber(count); studentHonorClient.saveStudentHonor(studentHonor); } } } competitionService.updateById(competition); } } catch (Exception e) { e.printStackTrace(); } } }