日常任务-优化刷新定时任务

This commit is contained in:
2025-09-05 11:37:06 +08:00
parent e16a6ad65a
commit 937429eed0

View File

@@ -112,23 +112,21 @@ public class GuildTaskService {
reachAnchorNumMap = guildMicStatisticsPolicy2Service.mapByPartitionGuildDate(statDate, partitionId, maxReachMinutes, new ArrayList<>(guildIds));
}
for (Guild guild : guilds) {
Integer guildId = guild.getId();
List<GuildTaskReachRecord> existRecords = guildTaskReachRecordService.list(partitionId, guildId, taskKey);
String cycleDate = DateTimeUtil.convertWithZoneId(guild.getCreateTime(), partitionEnum.getZoneId())
.format(DateTimeUtil.dateFormatter);
this.calCreateProgress(partitionEnum, guild, taskLevelInfos, existRecords, resultList, cycleDate, statDate,
guildMemberNumMap, diamondMap, reachAnchorNumMap, now);
this.calCreateProgress(partitionEnum, guild, taskLevelInfos, resultList, statDate,
guildMemberNumMap, diamondMap, reachAnchorNumMap, now, taskKey);
}
if (CollectionUtils.isNotEmpty(resultList)) {
guildTaskReachRecordService.saveOrUpdateBatch(resultList);
}
}
private void calCreateProgress(PartitionEnum partitionEnum, Guild guild, List<GuildTaskLevelInfo> taskLevelInfos,
List<GuildTaskReachRecord> existRecords, List<GuildTaskReachRecord> resultList,
String cycleDate, String statDate, Map<Integer, Long> guildMemberNumMap,
Map<Integer, BigDecimal> diamondMap, Map<Integer, Integer> reachAnchorNumMap, Date now) {
@Async
public void calCreateProgress(PartitionEnum partitionEnum, Guild guild, List<GuildTaskLevelInfo> taskLevelInfos, List<GuildTaskReachRecord> resultList,
String statDate, Map<Integer, Long> guildMemberNumMap, Map<Integer, BigDecimal> diamondMap,
Map<Integer, Integer> reachAnchorNumMap, Date now, String taskKey) {
List<GuildTaskReachRecord> existRecords = guildTaskReachRecordService.list(partitionEnum.getId(), guild.getId(), taskKey);
String cycleDate = DateTimeUtil.convertWithZoneId(guild.getCreateTime(), partitionEnum.getZoneId())
.format(DateTimeUtil.dateFormatter);
Integer guildId = guild.getId();
int partitionId = partitionEnum.getId();
BigDecimal diamond = diamondMap.getOrDefault(guildId, BigDecimal.ZERO);
@@ -176,32 +174,6 @@ public class GuildTaskService {
}
}
public boolean addNewGuildReachRecord(String cycleDate, List<GuildTaskReachRecord> resultList, GuildTaskLevelInfo levelInfo, Integer guildId,
Integer partitionId, String statDate, BigDecimal diamond, Integer anchorReachNum, Integer memberNum) {
GuildTaskReachRecord reachRecord = new GuildTaskReachRecord();
reachRecord.setId(null);
reachRecord.setCycleDate(cycleDate);
reachRecord.setGuildTaskId(levelInfo.getGuildTaskId());
reachRecord.setPartitionId(partitionId);
reachRecord.setStatDate(statDate);
reachRecord.setGuildId(guildId);
reachRecord.setTaskKey(levelInfo.getTaskKey());
reachRecord.setLevel(levelInfo.getLevel());
reachRecord.setDiamondNum(diamond);
reachRecord.setAnchorNum(memberNum);
reachRecord.setAnchorMicReachNum(anchorReachNum);
boolean reachStatus = diamond.doubleValue() >= levelInfo.getDiamondNum().doubleValue()
&& memberNum >= levelInfo.getAnchorNum()
&& anchorReachNum >= levelInfo.getAnchorMicReachNum();
reachRecord.setReachStatus(reachStatus ? 1 : 0);
reachRecord.setCreateTime(new Date());
resultList.add(reachRecord);
if (!reachStatus) { //当前登记未达到,不再计算下一登记
return false;
}
return true;
}
public void updateWeekTaskProgress(Date now, PartitionEnum partitionEnum) {
int partitionId = partitionEnum.getId();
@@ -245,21 +217,20 @@ public class GuildTaskService {
}
levelInfos.sort(Comparator.comparing(GuildTaskLevelInfo::getLevel));
for (Guild guild : guilds) {
Integer guildId = guild.getId();
List<GuildTaskReachRecord> existRecords = guildTaskReachRecordService.listByCycle(cycleDate, partitionId, guildId, taskKey);
this.calWeekProgress(partitionEnum, guild, levelInfos, existRecords, resultList, cycleDate, statDate,
guildMemberNumMap, diamondMap, reachAnchorNumMap, now);
this.calWeekProgress(partitionEnum, guild, levelInfos, resultList, cycleDate, statDate,
guildMemberNumMap, diamondMap, reachAnchorNumMap, now, taskKey);
}
}
if (CollectionUtils.isNotEmpty(resultList)) {
guildTaskReachRecordService.saveOrUpdateBatch(resultList);
}
}
private void calWeekProgress(PartitionEnum partitionEnum, Guild guild, List<GuildTaskLevelInfo> taskLevelInfos,
List<GuildTaskReachRecord> existRecords, List<GuildTaskReachRecord> resultList,
String cycleDate, String statDate, Map<Integer, Long> guildMemberNumMap,
Map<Integer, BigDecimal> diamondMap, Map<Integer, Integer> reachAnchorNumMap, Date now) {
@Async
public void calWeekProgress(PartitionEnum partitionEnum, Guild guild, List<GuildTaskLevelInfo> taskLevelInfos,
List<GuildTaskReachRecord> resultList, String cycleDate, String statDate,
Map<Integer, Long> guildMemberNumMap, Map<Integer, BigDecimal> diamondMap,
Map<Integer, Integer> reachAnchorNumMap, Date now, String taskKey) {
List<GuildTaskReachRecord> existRecords = guildTaskReachRecordService.listByCycle(cycleDate, partitionEnum.getId(), guild.getId(), taskKey);
Integer guildId = guild.getId();
int partitionId = partitionEnum.getId();
BigDecimal diamond = diamondMap.getOrDefault(guildId, BigDecimal.ZERO);
@@ -294,6 +265,33 @@ public class GuildTaskService {
}
public boolean addNewGuildReachRecord(String cycleDate, List<GuildTaskReachRecord> resultList, GuildTaskLevelInfo levelInfo, Integer guildId,
Integer partitionId, String statDate, BigDecimal diamond, Integer anchorReachNum, Integer memberNum) {
GuildTaskReachRecord reachRecord = new GuildTaskReachRecord();
reachRecord.setId(null);
reachRecord.setCycleDate(cycleDate);
reachRecord.setGuildTaskId(levelInfo.getGuildTaskId());
reachRecord.setPartitionId(partitionId);
reachRecord.setStatDate(statDate);
reachRecord.setGuildId(guildId);
reachRecord.setTaskKey(levelInfo.getTaskKey());
reachRecord.setLevel(levelInfo.getLevel());
reachRecord.setDiamondNum(diamond);
reachRecord.setAnchorNum(memberNum);
reachRecord.setAnchorMicReachNum(anchorReachNum);
boolean reachStatus = diamond.doubleValue() >= levelInfo.getDiamondNum().doubleValue()
&& memberNum >= levelInfo.getAnchorNum()
&& anchorReachNum >= levelInfo.getAnchorMicReachNum();
reachRecord.setReachStatus(reachStatus ? 1 : 0);
reachRecord.setCreateTime(new Date());
resultList.add(reachRecord);
if (!reachStatus) { //当前登记未达到,不再计算下一登记
return false;
}
return true;
}
public List<GuildTaskLevelInfoVo> getGuildCreateTaskList(String taskKey, String statDate, Integer partitionId, Integer guildId) {
List<GuildTaskLevelInfoVo> resultList = new ArrayList<>();
List<GuildTaskLevelInfo> guildTaskLevelInfos = guildTaskLevelInfoService.listGuildTask(partitionId, taskKey);