From 8da2b3a91ea4f342888d69177b00bd42c270343e Mon Sep 17 00:00:00 2001 From: hokli <2629910752@qq.com> Date: Wed, 20 Aug 2025 15:10:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=AC=E4=BC=9A=E5=91=A8=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=B4=9F=E8=B4=A3=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/service/api/MyApiService.java | 68 +++++++++++++++++++ .../business/dto/WeekActiveGuildStat.java | 4 ++ .../service/WeekGuildStatService.java | 20 +++++- .../service/guild/GuildOperatorService.java | 14 ++++ 4 files changed, 105 insertions(+), 1 deletion(-) diff --git a/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/api/MyApiService.java b/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/api/MyApiService.java index bc87802ec..fe5c7ed72 100644 --- a/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/api/MyApiService.java +++ b/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/api/MyApiService.java @@ -8,12 +8,17 @@ import com.accompany.admin.service.UserLevelExperienceExportService; import com.accompany.business.constant.guild.GuildConstant; import com.accompany.business.dto.WeekActiveGuildStat; import com.accompany.business.model.*; +import com.accompany.business.model.guild.Guild; import com.accompany.business.model.guild.GuildMember; import com.accompany.business.model.relation.RelationUser; import com.accompany.business.mybatismapper.*; import com.accompany.business.service.*; import com.accompany.business.service.activity.WeekStarService; import com.accompany.business.service.apple.IOSRefundV2Service; +import com.accompany.business.service.guild.GuildDressUpService; +import com.accompany.business.service.guild.GuildMemberService; +import com.accompany.business.service.guild.GuildOperatorService; +import com.accompany.business.service.guild.GuildService; import com.accompany.business.service.guild.*; import com.accompany.business.service.guildpolicy2.GuildCrystalSettlementService; import com.accompany.business.service.level.LevelService; @@ -149,6 +154,10 @@ public class MyApiService { private WeekGuildPartitionStatService weekGuildPartitionStatService; @Autowired private WeekRechargeAgentPartitionStatService weekRechargeAgentPartitionStatService; + @Autowired + private GuildOperatorService guildOperatorService; + @Autowired + private GuildService guildService; public void refreshRoomMoneyRankList() { List roomUidList = myApiAdminMapper.getExceptionRoomUid(); @@ -686,7 +695,19 @@ public class MyApiService { stat.setEnActiveCountDetail(JSON.toJSONString(enActiveGuildStatList)); List arActiveGuildStatList = JSON.parseArray(stat.getArActiveCountDetail(), WeekActiveGuildStat.class); + Map operatorNameMap = guildOperatorService.operatorNameMap(PartitionEnum.ARAB.getId()); + Map guildMap = new HashMap<>(); + if (org.apache.commons.collections.CollectionUtils.isNotEmpty(arActiveGuildStatList)) { + List guildIds = arActiveGuildStatList.stream().map(WeekActiveGuildStat::getGuildId).collect(Collectors.toList()); + List guildList = guildService.listByIds(guildIds); + guildMap = guildList.stream().collect(Collectors.toMap(Guild::getId, guild->guild)); + } for (WeekActiveGuildStat activeGuildStat : arActiveGuildStatList){ + Guild guild = guildMap.get(activeGuildStat.getGuildId()); + if (guild != null && guild.getOperatorId() != null) { + activeGuildStat.setOperatorId(guild.getOperatorId()); + activeGuildStat.setOperatorName(operatorNameMap.get(guild.getOperatorId())); + } String lastWeek = DateTimeUtil.convertDate(DateTimeUtil.addDays(DateTimeUtil.convertStrToDate(activeGuildStat.getDate(), DateTimeUtil.DEFAULT_DATE_PATTERN), -7)); String lastWeekGroupByKey = String.join("_", lastWeek, activeGuildStat.getPartitionId().toString(), activeGuildStat.getGuildId().toString()); WeekActiveGuildStat lastWeekStat = lastWeekActiveGuildStatMap.get(lastWeekGroupByKey); @@ -732,7 +753,19 @@ public class MyApiService { stat.setZhActiveCountDetail(JSON.toJSONString(zhActiveGuildStatList)); List trActiveGuildStatList = JSON.parseArray(stat.getTrActiveCountDetail(), WeekActiveGuildStat.class); + operatorNameMap = guildOperatorService.operatorNameMap(PartitionEnum.TURKEY.getId()); + guildMap = new HashMap<>(); + if (org.apache.commons.collections.CollectionUtils.isNotEmpty(trActiveGuildStatList)) { + List guildIds = trActiveGuildStatList.stream().map(WeekActiveGuildStat::getGuildId).collect(Collectors.toList()); + List guildList = guildService.listByIds(guildIds); + guildMap = guildList.stream().collect(Collectors.toMap(Guild::getId, guild->guild)); + } for (WeekActiveGuildStat activeGuildStat : trActiveGuildStatList){ + Guild guild = guildMap.get(activeGuildStat.getGuildId()); + if (guild != null && guild.getOperatorId() != null) { + activeGuildStat.setOperatorId(guild.getOperatorId()); + activeGuildStat.setOperatorName(operatorNameMap.get(guild.getOperatorId())); + } String lastWeek = DateTimeUtil.convertDate(DateTimeUtil.addDays(DateTimeUtil.convertStrToDate(activeGuildStat.getDate(), DateTimeUtil.DEFAULT_DATE_PATTERN), -7)); String lastWeekGroupByKey = String.join("_", lastWeek, activeGuildStat.getPartitionId().toString(), activeGuildStat.getGuildId().toString()); WeekActiveGuildStat lastWeekStat = lastWeekActiveGuildStatMap.get(lastWeekGroupByKey); @@ -753,6 +786,41 @@ public class MyApiService { log.info("[refreshWeekGuildStat] today {} last {}", JSON.toJSONString(stat), JSON.toJSONString(lastWeekStat)); } stat.setTrActiveCountDetail(JSON.toJSONString(trActiveGuildStatList)); + + List en2ActiveGuildStatList = JSON.parseArray(stat.getEn2ActiveCountDetail(), WeekActiveGuildStat.class); + operatorNameMap = guildOperatorService.operatorNameMap(PartitionEnum.ENGLISH2.getId()); + guildMap = new HashMap<>(); + if (org.apache.commons.collections.CollectionUtils.isNotEmpty(en2ActiveGuildStatList)) { + List guildIds = en2ActiveGuildStatList.stream().map(WeekActiveGuildStat::getGuildId).collect(Collectors.toList()); + List guildList = guildService.listByIds(guildIds); + guildMap = guildList.stream().collect(Collectors.toMap(Guild::getId, guild->guild)); + } + for (WeekActiveGuildStat activeGuildStat : en2ActiveGuildStatList){ + Guild guild = guildMap.get(activeGuildStat.getGuildId()); + if (guild != null && guild.getOperatorId() != null) { + activeGuildStat.setOperatorId(guild.getOperatorId()); + activeGuildStat.setOperatorName(operatorNameMap.get(guild.getOperatorId())); + } + String lastWeek = DateTimeUtil.convertDate(DateTimeUtil.addDays(DateTimeUtil.convertStrToDate(activeGuildStat.getDate(), DateTimeUtil.DEFAULT_DATE_PATTERN), -7)); + String lastWeekGroupByKey = String.join("_", lastWeek, activeGuildStat.getPartitionId().toString(), activeGuildStat.getGuildId().toString()); + WeekActiveGuildStat lastWeekStat = lastWeekActiveGuildStatMap.get(lastWeekGroupByKey); + if (null == lastWeekStat){ + continue; + } + activeGuildStat.setLastGuildDiamondFlow(lastWeekStat.getGuildDiamondFlow()); + activeGuildStat.setLastGuildGoldFlow(lastWeekStat.getGuildGoldFlow()); + + BigDecimal guildDiamondFlowWow = lastWeekStat.getGuildDiamondFlow().compareTo(BigDecimal.ZERO) > 0 ? + (activeGuildStat.getGuildDiamondFlow().subtract(lastWeekStat.getGuildDiamondFlow())).divide(lastWeekStat.getGuildDiamondFlow(), 2, RoundingMode.HALF_UP): BigDecimal.ONE; + activeGuildStat.setGuildDiamondFlowWow(guildDiamondFlowWow); + + BigDecimal guildGoldFlowWow = lastWeekStat.getGuildGoldFlow().compareTo(BigDecimal.ZERO) > 0 ? + (activeGuildStat.getGuildGoldFlow().subtract(lastWeekStat.getGuildGoldFlow())).divide(lastWeekStat.getGuildGoldFlow(), 2, RoundingMode.HALF_UP): BigDecimal.ONE; + activeGuildStat.setGuildGoldFlowWow(guildGoldFlowWow); + + log.info("[refreshWeekGuildStat] today {} last {}", JSON.toJSONString(stat), JSON.toJSONString(lastWeekStat)); + } + stat.setEn2ActiveCountDetail(JSON.toJSONString(en2ActiveGuildStatList)); } weekGuildStatMapper.delete(null); weekGuildStatMapper.insert(lastWeekGuildStatList); diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/dto/WeekActiveGuildStat.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/dto/WeekActiveGuildStat.java index de0acc04f..a02e1eabd 100644 --- a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/dto/WeekActiveGuildStat.java +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/dto/WeekActiveGuildStat.java @@ -21,6 +21,10 @@ public class WeekActiveGuildStat { private Integer ownerRegionId; @TableField(exist = false) private String ownerRegionName; + @TableField(exist = false) + private Integer operatorId; + @TableField(exist = false) + private String operatorName; @TableField(exist = false) private String groupByKey; diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/WeekGuildStatService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/WeekGuildStatService.java index b37477ff4..28536eb7e 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/WeekGuildStatService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/WeekGuildStatService.java @@ -5,9 +5,10 @@ import com.accompany.business.model.Hall; import com.accompany.business.model.WeekGuildStat; import com.accompany.business.model.family.Family; import com.accompany.business.model.guild.Guild; -import com.accompany.business.mybatismapper.WeekGuildStatMapper; import com.accompany.business.mybatismapper.WeekActiveGuildStatMapper; +import com.accompany.business.mybatismapper.WeekGuildStatMapper; import com.accompany.business.service.family.FamilyService; +import com.accompany.business.service.guild.GuildOperatorService; import com.accompany.business.service.guild.GuildService; import com.accompany.business.service.hall.HallService; import com.accompany.business.service.user.UsersService; @@ -53,6 +54,8 @@ public class WeekGuildStatService { private RegionInfoService regionInfoService; @Autowired private UsersService usersService; + @Autowired + private GuildOperatorService guildOperatorService; public void stat(String monday) { stat(monday, true); @@ -245,6 +248,7 @@ public class WeekGuildStatService { private List buildNewCountDetail(Map> newGuildCountMap, Map activeGuildStatMap, Integer partitionId, String monday, String sunday){ Map ownerUidMap = new HashMap<>(); + Map operatorIdMap = new HashMap<>(); List guildIdList = newGuildCountMap.containsKey(partitionId)? newGuildCountMap.get(partitionId).stream().map(key->Long.parseLong(key.split("_")[1])).distinct().toList():Collections.emptyList(); if (!CollectionUtils.isEmpty(guildIdList)){ @@ -263,10 +267,14 @@ public class WeekGuildStatService { List guildList = guildService.listByIds(guildIdList); guildList.forEach(guild->{ ownerUidMap.put(guild.getId(), guild.getOwnerUid()); + operatorIdMap.put(guild.getId(), guild.getOperatorId()); }); + } } + Map guildOperatorMap = guildOperatorService.operatorNameMap(partitionId); + Map ownerUserMap = usersService.getUsersMapByUids(ownerUidMap.values().stream().toList()); Map regionNameMap = regionInfoService.getRegionName(); @@ -284,11 +292,21 @@ public class WeekGuildStatService { item.setActiveMemberCount(0); item.setGuildDiamondFlow(BigDecimal.ZERO); item.setGuildGoldFlow(BigDecimal.ZERO); + Integer operatorId = operatorIdMap.getOrDefault(item.getGuildId(), null); + if (operatorId != null) { + item.setOperatorId(operatorId); + item.setOperatorName(guildOperatorMap.getOrDefault(item.getOperatorId(), "")); + } return item; } return item; }).peek(item->{ + Integer operatorId = operatorIdMap.getOrDefault(item.getGuildId(), null); + if (operatorId != null) { + item.setOperatorId(operatorId); + item.setOperatorName(guildOperatorMap.getOrDefault(item.getOperatorId(), "")); + } Long ownerUid = ownerUidMap.get(item.getGuildId()); if (null != ownerUid){ Users ownerUser = ownerUserMap.get(ownerUid); diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildOperatorService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildOperatorService.java index bd2978058..61f35c48b 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildOperatorService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildOperatorService.java @@ -3,9 +3,13 @@ package com.accompany.business.service.guild; import com.accompany.business.model.guild.GuildOperator; import com.accompany.business.mybatismapper.guild.GuildOperatorMapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; @Service public class GuildOperatorService extends ServiceImpl { @@ -21,4 +25,14 @@ public class GuildOperatorService extends ServiceImpl operatorNameMap(Integer partitionId){ + List guildOperators = listByPartitionId(partitionId); + if (CollectionUtils.isEmpty(guildOperators)) { + return Collections.emptyMap(); + } + return guildOperators + .stream() + .collect(Collectors.toMap(GuildOperator::getId, GuildOperator::getName)); + } + } \ No newline at end of file