幸运24-我的排名

This commit is contained in:
khalil
2025-01-21 15:10:02 +08:00
parent e575a4f8cf
commit 5e956d2ac7
5 changed files with 75 additions and 4 deletions

View File

@@ -1,6 +1,5 @@
package com.accompany.scheduler.task.luckyBag;
import com.accompany.business.message.GiftMessage;
import com.accompany.business.message.Lucky24Message;
import com.accompany.business.service.gift.Lucky24MessageService;
import com.accompany.business.service.lucky.Lucky24RecordService;

View File

@@ -0,0 +1,47 @@
package com.accompany.scheduler.task.luckyBag;
import com.accompany.business.service.lucky.rank.Lucky24SendWeekRankService;
import com.accompany.common.utils.DateTimeUtil;
import com.accompany.core.model.PartitionInfo;
import com.accompany.core.service.partition.PartitionInfoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.DayOfWeek;
import java.time.ZonedDateTime;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ThreadPoolExecutor;
@Component
@Slf4j
public class Lucky24WeekRankTask {
@Autowired
private PartitionInfoService partitionInfoService;
@Resource(name = "bizExecutor")
private ThreadPoolExecutor bizExecutor;
@Autowired
private Lucky24SendWeekRankService service;
@Scheduled(cron = "0 1 * * * ? ")
public void lucky24WeekRankSettlement() {
Date now = new Date();
List<PartitionInfo> partitionInfoList = partitionInfoService.listAll();
for (PartitionInfo partitionInfo : partitionInfoList) {
ZonedDateTime zdt = DateTimeUtil.convertWithZoneId(now, partitionInfo.getZoneId());
ZonedDateTime hourAgo = zdt.minusHours(1L);
log.info("[lucky24WeekRankSettlement] zdt {} hourAgo {}, zdtDay {} hourAgoDay {}",
zdt, hourAgo, zdt.getDayOfWeek(), hourAgo.getDayOfWeek());
if (!zdt.getDayOfWeek().equals(DayOfWeek.MONDAY) || !hourAgo.getDayOfWeek().equals(DayOfWeek.SUNDAY)){
continue;
}
bizExecutor.execute(() -> {
service.settlement(partitionInfo.getId(), hourAgo);
});
}
}
}