diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildtask/GuildTaskService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildtask/GuildTaskService.java index b52253075..bf338028f 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildtask/GuildTaskService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildtask/GuildTaskService.java @@ -29,6 +29,7 @@ import com.accompany.core.enumeration.I18nAlertEnum; import com.accompany.core.enumeration.PartitionEnum; import com.accompany.core.exception.ServiceException; import com.accompany.core.util.I18NMessageSourceUtil; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.redisson.api.RMap; import org.redisson.api.RedissonClient; @@ -47,6 +48,7 @@ import java.util.stream.Collectors; import static com.accompany.business.constant.dailytask.DailyTaskConstant.RedisKey.guild_task_receive; +@Slf4j @Service public class GuildTaskService { @Autowired @@ -74,14 +76,7 @@ public class GuildTaskService { @Autowired private RedissonClient redissonClient; - public void updateTaskCreateProgress(Date now, PartitionEnum partitionEnum) { - int partitionId = partitionEnum.getId(); - - String taskKey = DailyTaskTypeEnum.GUILD_CREATE.name(); - List taskLevelInfos = guildTaskLevelInfoService.listGuildTask(partitionId, taskKey); - if (CollectionUtils.isEmpty(taskLevelInfos)) { - return; - } + public void updateProgress(Date now, PartitionEnum partitionEnum) { ZonedDateTime nowzonedDateTime = DateTimeUtil.convertWithZoneId(now, partitionEnum.getZoneId()); if (nowzonedDateTime.getHour() == 0 && nowzonedDateTime.getMinute() == 0) {//0点0分统计前一天的数据 @@ -89,6 +84,30 @@ public class GuildTaskService { } String statDate = nowzonedDateTime.format(DateTimeUtil.dateFormatter); + RMap guildStatDateDiamondMap = guildDiamondStatisticsDayService.guildStatDateDiamondMap(partitionEnum.getId(), statDate); + guildStatDateDiamondMap.expire(Duration.ofDays(1)); + Map diamondMap = guildStatDateDiamondMap.readAllMap(); + + try { + updateTaskCreateProgress(now, partitionEnum, nowzonedDateTime, statDate, diamondMap); + } catch (Exception e) { + log.error("updateTaskCreateProgress error:{}" , e.getMessage(), e); + } + + try { + updateWeekTaskProgress(now, partitionEnum, nowzonedDateTime, statDate, diamondMap); + } catch (Exception e) { + log.error("updateWeekTaskProgress error:{}" , e.getMessage(), e); + } + } + + public void updateTaskCreateProgress(Date now, PartitionEnum partitionEnum, ZonedDateTime nowzonedDateTime, String statDate, Map diamondMap) { + int partitionId = partitionEnum.getId(); + String taskKey = DailyTaskTypeEnum.GUILD_CREATE.name(); + List taskLevelInfos = guildTaskLevelInfoService.listGuildTask(partitionId, taskKey); + if (CollectionUtils.isEmpty(taskLevelInfos)) { + return; + } ZonedDateTime before14DayBegin = nowzonedDateTime.minusDays(14).withHour(0).withMinute(0).withSecond(0); Date before14DayBeginEastEightDate = DateTimeUtil.convertToEastEightZone(before14DayBegin .format(DateTimeUtil.datetimeFormatter), partitionEnum.getZoneId()); @@ -99,10 +118,6 @@ public class GuildTaskService { } Set guildIds = guilds.stream().map(Guild::getId).collect(Collectors.toSet()); Map guildMemberNumMap = guildMemberService.mapGuildMemberNum(guildIds); - RMap guildStatDateDiamondMap = guildDiamondStatisticsDayService.guildStatDateDiamondMap(partitionId, statDate); - guildStatDateDiamondMap.expire(Duration.ofDays(1)); - Map diamondMap = guildStatDateDiamondMap - .getAll(guildIds); List resultList = new ArrayList<>(); Integer maxReachMinutes = taskLevelInfos.stream().max(Comparator.comparing(GuildTaskLevelInfo::getAnchorMicReachMinutes)) @@ -120,6 +135,7 @@ public class GuildTaskService { guildTaskReachRecordService.saveOrUpdateBatch(resultList); } } + @Async public void calCreateProgress(PartitionEnum partitionEnum, Guild guild, List taskLevelInfos, List resultList, String statDate, Map guildMemberNumMap, Map diamondMap, @@ -174,7 +190,7 @@ public class GuildTaskService { } } - public void updateWeekTaskProgress(Date now, PartitionEnum partitionEnum) { + public void updateWeekTaskProgress(Date now, PartitionEnum partitionEnum, ZonedDateTime nowzonedDateTime, String statDate, Map diamondMap) { int partitionId = partitionEnum.getId(); @@ -184,12 +200,6 @@ public class GuildTaskService { return; } - ZonedDateTime nowzonedDateTime = DateTimeUtil.convertWithZoneId(now, partitionEnum.getZoneId()); - if (nowzonedDateTime.getHour() == 0 && nowzonedDateTime.getMinute() == 0) {//0点0分统计前一天的数据 - nowzonedDateTime = nowzonedDateTime.minusDays(1); - } - String statDate = nowzonedDateTime.format(DateTimeUtil.dateFormatter); - ZonedDateTime weekBegin = nowzonedDateTime.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)); String cycleDate = weekBegin.format(DateTimeUtil.dateFormatter); @@ -199,9 +209,6 @@ public class GuildTaskService { } Set guildIds = guilds.stream().map(Guild::getId).collect(Collectors.toSet()); Map guildMemberNumMap = guildMemberService.mapGuildMemberNum(guildIds); - RMap guildStatDateDiamondMap = guildDiamondStatisticsDayService.guildStatDateDiamondMap(partitionId, statDate); - guildStatDateDiamondMap.expire(Duration.ofDays(1)); - Map diamondMap = guildStatDateDiamondMap.getAll(guildIds); List resultList = new ArrayList<>(); diff --git a/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/activity/dailytask/DailyTaskController.java b/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/activity/dailytask/DailyTaskController.java index 03a1b311a..e09d2cad1 100644 --- a/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/activity/dailytask/DailyTaskController.java +++ b/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/activity/dailytask/DailyTaskController.java @@ -96,12 +96,6 @@ public class DailyTaskController { @ApiOperation(value = "任务执行", ignoreJsonView = true) @GetMapping("/executeTaskCreate") public void executeTaskCreate(String date, Integer partitionId) { - guildTaskService.updateTaskCreateProgress(DateUtil.parseDateTime(date), PartitionEnum.getByPartitionId(partitionId)); - } - - @ApiOperation(value = "每周任务执行", ignoreJsonView = true) - @GetMapping("/executeTaskWeek") - public void executeTaskWeek(String date, Integer partitionId) { - guildTaskService.updateWeekTaskProgress(DateUtil.parseDateTime(date), PartitionEnum.getByPartitionId(partitionId)); + guildTaskService.updateProgress(DateUtil.parseDateTime(date), PartitionEnum.getByPartitionId(partitionId)); } } diff --git a/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/dailytask/GuildCreateTask.java b/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/dailytask/GuildCreateTask.java index db764f7e5..d98c30cdf 100644 --- a/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/dailytask/GuildCreateTask.java +++ b/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/dailytask/GuildCreateTask.java @@ -19,27 +19,8 @@ public class GuildCreateTask { @Scheduled(cron = "0 0/5 * * * ?") public void guildCreateTaskByMinutes() { Date now = new Date(); - log.info("GuildCreateTaskByMinutes start"); - PartitionEnum[] values = PartitionEnum.values(); - for (PartitionEnum partitionEnum : values) { - try { - guildTaskService.updateTaskCreateProgress(now, partitionEnum); - } catch (Exception e) { - log.error("GuildCreateTaskByMinutes error:{}" , e.getMessage(), e); - } - } - log.info("GuildCreateTaskByMinutes end"); - - log.info("GuildWeekTaskByMinutes start"); - - for (PartitionEnum partitionEnum : values) { - try { - guildTaskService.updateWeekTaskProgress(now, partitionEnum); - } catch (Exception e) { - log.error("GuildWeekTaskByMinutes error:{}" , e.getMessage(), e); - } - } - - log.info("GuildWeekTaskByMinutes end"); + log.info("GuildTaskByMinutes start"); + guildTaskService.updateProgress(now, PartitionEnum.ENGLISH2); + log.info("GuildTaskByMinutes end"); } }