公会小时流水统计

This commit is contained in:
2025-10-20 11:57:50 +08:00
parent a2bc44371a
commit 934f91221a
4 changed files with 32 additions and 15 deletions

View File

@@ -1,6 +1,5 @@
package com.accompany.common.utils; package com.accompany.common.utils;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.accompany.common.status.BusiStatus; import com.accompany.common.status.BusiStatus;
import com.accompany.core.exception.ServiceException; import com.accompany.core.exception.ServiceException;
@@ -39,6 +38,7 @@ public class DateTimeUtil {
public static final String DEFAULT_DATE_PATTERN__ = "yyyyMMddHHmmss"; public static final String DEFAULT_DATE_PATTERN__ = "yyyyMMddHHmmss";
public static final String DEFAULT_TIME_PATTERN = "HH:mm:ss"; public static final String DEFAULT_TIME_PATTERN = "HH:mm:ss";
public static final String DEFAULT_DATE_MINUTE_PATTERN = "yyyy-MM-dd HH:mm"; public static final String DEFAULT_DATE_MINUTE_PATTERN = "yyyy-MM-dd HH:mm";
public static final String DEFAULT_DATE_HOUR_PATTERN = "yyyy-MM-dd HH";
public static final String SIMPLE_MONTH_DATE_PATTERN = "M月d日"; public static final String SIMPLE_MONTH_DATE_PATTERN = "M月d日";
public static final String DATE_HOUR_PATTERN = "yyyyMMddHH"; public static final String DATE_HOUR_PATTERN = "yyyyMMddHH";
public static final String DATE_FORMAT_YEAR_MONTH = "yyyyMM"; public static final String DATE_FORMAT_YEAR_MONTH = "yyyyMM";
@@ -61,9 +61,10 @@ public class DateTimeUtil {
public static final DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.DEFAULT_DATE_PATTERN); public static final DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.DEFAULT_DATE_PATTERN);
public static final DateTimeFormatter datetimeFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.DEFAULT_DATETIME_PATTERN); public static final DateTimeFormatter datetimeFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.DEFAULT_DATETIME_PATTERN);
public static final DateTimeFormatter dateHourFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.DEFAULT_DATE_MINUTE_PATTERN); public static final DateTimeFormatter dateHourMinutesFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.DEFAULT_DATE_MINUTE_PATTERN);
public static final DateTimeFormatter hoursFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.DATE_HOUR_PATTERN); public static final DateTimeFormatter hoursFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.DATE_HOUR_PATTERN);
public static final DateTimeFormatter monthWithoutZeroDateFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.MONTH_WITHOUT_ZERO_DATE_PATTERN); public static final DateTimeFormatter monthWithoutZeroDateFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.MONTH_WITHOUT_ZERO_DATE_PATTERN);
public static final DateTimeFormatter dateHourFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.DEFAULT_DATE_HOUR_PATTERN);
public static final DateTimeFormatter yyyyMMdd = DateTimeFormatter.ofPattern("yyyyMMdd"); public static final DateTimeFormatter yyyyMMdd = DateTimeFormatter.ofPattern("yyyyMMdd");
@@ -1147,4 +1148,9 @@ public class DateTimeUtil {
return Date.from(eastEightZonedDateTime.toInstant()); return Date.from(eastEightZonedDateTime.toInstant());
} }
public static String getDayHourDate(Date time, String zoneId) {
ZonedDateTime zdt = DateTimeUtil.convertWithZoneId(time, zoneId);
return zdt.format(dateHourFormatter);
}
} }

View File

@@ -3,14 +3,12 @@ package com.accompany.business.event.listener;
import com.accompany.business.event.SuperLuckyGiftDiamondIncomeMessageEvent; import com.accompany.business.event.SuperLuckyGiftDiamondIncomeMessageEvent;
import com.accompany.business.message.SuperLuckyGiftDiamondIncomeMessage; import com.accompany.business.message.SuperLuckyGiftDiamondIncomeMessage;
import com.accompany.business.model.guild.GuildMember; import com.accompany.business.model.guild.GuildMember;
import com.accompany.business.service.guild.GuildDiamondStatisticsDayService; import com.accompany.business.service.guild.*;
import com.accompany.business.service.guild.GuildMemberDiamondStatisticsService;
import com.accompany.business.service.guild.GuildMemberService;
import com.accompany.business.service.guild.GuildRankService;
import com.accompany.business.service.guildpolicy2.GuildDiamondStatisticsPolicy2Service; import com.accompany.business.service.guildpolicy2.GuildDiamondStatisticsPolicy2Service;
import com.accompany.business.service.user.UsersService; import com.accompany.business.service.user.UsersService;
import com.accompany.business.util.FullMonthCycleTimeUtil; import com.accompany.business.util.FullMonthCycleTimeUtil;
import com.accompany.common.constant.Constant; import com.accompany.common.constant.Constant;
import com.accompany.common.utils.DateTimeUtil;
import com.accompany.core.model.PartitionInfo; import com.accompany.core.model.PartitionInfo;
import com.accompany.core.model.Users; import com.accompany.core.model.Users;
import com.accompany.core.service.partition.PartitionInfoService; import com.accompany.core.service.partition.PartitionInfoService;
@@ -38,6 +36,8 @@ public class SuperLuckyGiftDiamondIncomeListener implements ApplicationListener<
private GuildDiamondStatisticsDayService guildDiamondStatisticsDayService; private GuildDiamondStatisticsDayService guildDiamondStatisticsDayService;
@Autowired @Autowired
private GuildDiamondStatisticsPolicy2Service guildDiamondStatisticsPolicy2Service; private GuildDiamondStatisticsPolicy2Service guildDiamondStatisticsPolicy2Service;
@Autowired
private GuildDiamondStatisticsHourService guildDiamondStatisticsHourService;
@Async @Async
@Override @Override
@@ -59,16 +59,20 @@ public class SuperLuckyGiftDiamondIncomeListener implements ApplicationListener<
} }
Date time = message.getCreateTime(); Date time = message.getCreateTime();
Double totalDiamondNum = message.getTotalDiamondNum(); Double totalDiamondNum = message.getTotalDiamondNum();
String statDate = FullMonthCycleTimeUtil.getCycleDay(time, partitionInfo.getZoneId());
if (Constant.ClanMode.GUILD.equals(partitionInfo.getClanMode())) { if (Constant.ClanMode.GUILD.equals(partitionInfo.getClanMode())) {
String cycleDate = FullMonthCycleTimeUtil.getCycleDateByZoneId(time, partitionInfo.getZoneId()); String cycleDate = FullMonthCycleTimeUtil.getCycleDateByZoneId(time, partitionInfo.getZoneId());
String statDate = FullMonthCycleTimeUtil.getCycleDay(time, partitionInfo.getZoneId()); statDate = FullMonthCycleTimeUtil.getCycleDay(time, partitionInfo.getZoneId());
guildMemberDiamondStatisticsService.update(cycleDate, guildMember, totalDiamondNum); guildMemberDiamondStatisticsService.update(cycleDate, guildMember, totalDiamondNum);
guildDiamondStatisticsDayService.updateDayDiamondStatistics(cycleDate, statDate, guildMember, totalDiamondNum); guildDiamondStatisticsDayService.updateDayDiamondStatistics(cycleDate, statDate, guildMember, totalDiamondNum);
} else if (Constant.ClanMode.GUILD_POLICY2.equals(partitionInfo.getClanMode())) { } else if (Constant.ClanMode.GUILD_POLICY2.equals(partitionInfo.getClanMode())) {
String cycleDate = FullMonthCycleTimeUtil.getCycleDateByZoneId(time, partitionInfo.getZoneId()); String cycleDate = FullMonthCycleTimeUtil.getCycleDateByZoneId(time, partitionInfo.getZoneId());
String statDate = FullMonthCycleTimeUtil.getCycleDay(time, partitionInfo.getZoneId()); statDate = FullMonthCycleTimeUtil.getCycleDay(time, partitionInfo.getZoneId());
guildDiamondStatisticsPolicy2Service.updateDayDiamondStatistics(cycleDate, statDate, guildMember, totalDiamondNum); guildDiamondStatisticsPolicy2Service.updateDayDiamondStatistics(cycleDate, statDate, guildMember, totalDiamondNum);
} }
String dayHourDate = DateTimeUtil.getDayHourDate(time, partitionInfo.getZoneId());
guildDiamondStatisticsHourService.updateHourDiamondStatistics(statDate, dayHourDate, guildMember, totalDiamondNum);
//todo 时区 zoneId //todo 时区 zoneId
guildRankService.updateRank(guildMember.getGuildId(), guildMember.getUid(), totalDiamondNum, receiver.getPartitionId()); guildRankService.updateRank(guildMember.getGuildId(), guildMember.getUid(), totalDiamondNum, receiver.getPartitionId());
} }

View File

@@ -141,7 +141,7 @@ public class LuckyNumberActService {
vo.setLuckyNumber(round.getLuckyNumber()); vo.setLuckyNumber(round.getLuckyNumber());
ZonedDateTime zdt = ZonedDateTime.parse(round.getEndTime(), DateTimeFormatter.ISO_ZONED_DATE_TIME); ZonedDateTime zdt = ZonedDateTime.parse(round.getEndTime(), DateTimeFormatter.ISO_ZONED_DATE_TIME);
vo.setEndTime(zdt.format(DateTimeUtil.dateHourFormatter)); vo.setEndTime(zdt.format(DateTimeUtil.dateHourMinutesFormatter));
return vo; return vo;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
@@ -205,7 +205,7 @@ public class LuckyNumberActService {
vo.setDate(record.getDate()); vo.setDate(record.getDate());
ZonedDateTime zdt = ZonedDateTime.parse(round.getEndTime(), DateTimeFormatter.ISO_ZONED_DATE_TIME); ZonedDateTime zdt = ZonedDateTime.parse(round.getEndTime(), DateTimeFormatter.ISO_ZONED_DATE_TIME);
vo.setEndTime(zdt.format(DateTimeUtil.dateHourFormatter)); vo.setEndTime(zdt.format(DateTimeUtil.dateHourMinutesFormatter));
vo.setLuckyNumber(round.getLuckyNumber()); vo.setLuckyNumber(round.getLuckyNumber());
vo.setNumberList(record.getNumberList()); vo.setNumberList(record.getNumberList());

View File

@@ -46,6 +46,9 @@ public class GuildGiftRecordService extends ServiceImpl<GuildGiftRecordMapper, G
private ApplicationContext applicationContext; private ApplicationContext applicationContext;
@Autowired @Autowired
private GuildDiamondStatisticsPolicy2Service guildDiamondStatisticsPolicy2Service; private GuildDiamondStatisticsPolicy2Service guildDiamondStatisticsPolicy2Service;
@Autowired
private GuildDiamondStatisticsHourService guildDiamondStatisticsHourService;
@Async @Async
public void insertGuildGiftRecord(GiftSendRecord giftSendRecord) { public void insertGuildGiftRecord(GiftSendRecord giftSendRecord) {
@@ -76,16 +79,20 @@ public class GuildGiftRecordService extends ServiceImpl<GuildGiftRecordMapper, G
} }
Date createTime = giftSendRecord.getCreateTime(); Date createTime = giftSendRecord.getCreateTime();
String statDate = FullMonthCycleTimeUtil.getCycleDay(createTime, partitionInfo.getZoneId());
Double totalDiamondNum = giftSendRecord.getTotalDiamondNum();
if (Constant.ClanMode.GUILD.equals(partitionInfo.getClanMode())) { if (Constant.ClanMode.GUILD.equals(partitionInfo.getClanMode())) {
String cycleDate = FullMonthCycleTimeUtil.getCycleDateByZoneId(createTime, partitionInfo.getZoneId()); String cycleDate = FullMonthCycleTimeUtil.getCycleDateByZoneId(createTime, partitionInfo.getZoneId());
guildMemberDiamondStatisticsService.update(cycleDate, guildMember, giftSendRecord.getTotalDiamondNum()); guildMemberDiamondStatisticsService.update(cycleDate, guildMember, totalDiamondNum);
String statDate = FullMonthCycleTimeUtil.getCycleDay(createTime, partitionInfo.getZoneId()); statDate = FullMonthCycleTimeUtil.getCycleDay(createTime, partitionInfo.getZoneId());
guildDiamondStatisticsDayService.updateDayDiamondStatistics(cycleDate, statDate, guildMember, giftSendRecord.getTotalDiamondNum()); guildDiamondStatisticsDayService.updateDayDiamondStatistics(cycleDate, statDate, guildMember, totalDiamondNum);
} else if (Constant.ClanMode.GUILD_POLICY2.equals(partitionInfo.getClanMode())) { } else if (Constant.ClanMode.GUILD_POLICY2.equals(partitionInfo.getClanMode())) {
String cycleDate = FullMonthCycleTimeUtil.getCycleDateByZoneId(createTime, partitionInfo.getZoneId()); String cycleDate = FullMonthCycleTimeUtil.getCycleDateByZoneId(createTime, partitionInfo.getZoneId());
String statDate = FullMonthCycleTimeUtil.getCycleDay(createTime, partitionInfo.getZoneId()); statDate = FullMonthCycleTimeUtil.getCycleDay(createTime, partitionInfo.getZoneId());
guildDiamondStatisticsPolicy2Service.updateDayDiamondStatistics(cycleDate, statDate, guildMember, giftSendRecord.getTotalDiamondNum()); guildDiamondStatisticsPolicy2Service.updateDayDiamondStatistics(cycleDate, statDate, guildMember, totalDiamondNum);
} }
String dayHourDate = DateTimeUtil.getDayHourDate(createTime, partitionInfo.getZoneId());
guildDiamondStatisticsHourService.updateHourDiamondStatistics(statDate, dayHourDate, guildMember, totalDiamondNum);
guildRankService.updateRank(guildGiftRecord); guildRankService.updateRank(guildGiftRecord);