diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/bd/query/BdTeamMemberDetailQryExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/bd/query/BdTeamMemberDetailQryExe.java index 2dfb8107..610194a6 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/bd/query/BdTeamMemberDetailQryExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/bd/query/BdTeamMemberDetailQryExe.java @@ -105,7 +105,7 @@ public class BdTeamMemberDetailQryExe { } // 获取所有区域的政策配置 - Map regionPolicyMap = teamPolicyManagerService.mapRegionRelease( + Map regionPolicyMap = teamPolicyManagerService.mapRegionReleaseWithCountry( teamBillCycles.stream().map(TeamBillCycle::getRegion).collect(Collectors.toSet())); List incomeDetails = new ArrayList<>(); @@ -120,7 +120,7 @@ public class BdTeamMemberDetailQryExe { teamBillCycle.getTeamId(), teamBillCycle.getBillBelong()); BdIncomeDetailCO incomeDetail = buildIncomeDetail( - teamBillCycle, teamMemberTargets, regionPolicyMap.get(teamBillCycle.getRegion())); + teamBillCycle, teamMemberTargets, regionPolicyMap); incomeDetails.add(incomeDetail); } @@ -184,7 +184,7 @@ public class BdTeamMemberDetailQryExe { .flatMap(List::stream) .map(TeamBillCycle::getRegion) .collect(Collectors.toSet()); - Map regionPolicyMap = teamPolicyManagerService.mapRegionRelease(allRegions); + Map regionPolicyMap = teamPolicyManagerService.mapRegionReleaseWithCountry(allRegions); // 按周期构建收入明细 List incomeDetails = new ArrayList<>(); @@ -222,7 +222,7 @@ public class BdTeamMemberDetailQryExe { private BdIncomeDetailCO buildIncomeDetail( TeamBillCycle teamBillCycle, List teamMemberTargets, - TeamPolicyManager policy) { + Map policyManagerMap) { BdIncomeDetailCO incomeDetail = new BdIncomeDetailCO(); @@ -243,6 +243,10 @@ public class BdTeamMemberDetailQryExe { // 计算每个成员的政策目标数据 List memberTargetList = new ArrayList<>(); for (TeamMemberTarget target : teamMemberTargets) { + TeamPolicyManager policy = TeamBillCycleUtils.getPolicyFromMap( + policyManagerMap, + target.getRegion(), + target.getCountryCode()); TeamBillMemberTarget teamBillMemberTarget = TeamBillCycleUtils.calculatorPolicyTarget(target, policy); memberTargetList.add(teamBillMemberTarget); } @@ -328,9 +332,12 @@ public class BdTeamMemberDetailQryExe { } // 计算team收入 - TeamPolicyManager policy = regionPolicyMap.get(bill.getRegion()); List memberTargetList = new ArrayList<>(); for (TeamMemberTarget target : teamMemberTargets) { + TeamPolicyManager policy = TeamBillCycleUtils.getPolicyFromMap( + regionPolicyMap, + target.getRegion(), + target.getCountryCode()); TeamBillMemberTarget teamBillMemberTarget = TeamBillCycleUtils.calculatorPolicyTarget(target, policy); memberTargetList.add(teamBillMemberTarget); } diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamBillQryExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamBillQryExe.java index 1807acb6..a92d2bc7 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamBillQryExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamBillQryExe.java @@ -98,7 +98,7 @@ public class TeamBillQryExe { } // 获取所有区域的政策配置 - Map regionPolicyMap = teamPolicyManagerService.mapRegionRelease( + Map regionPolicyMap = teamPolicyManagerService.mapRegionReleaseWithCountry( teamBillCycles.stream().map(TeamBillCycle::getRegion).collect(Collectors.toSet()) ); @@ -120,13 +120,14 @@ public class TeamBillQryExe { continue; } - // 获取该区域的政策配置 - TeamPolicyManager policy = regionPolicyMap.get(teamBillCycle.getRegion()); - // 累计所有成员的数据 List memberTargetList = Lists.newArrayList(); for (TeamMemberTarget target : teamMemberTargets) { + TeamPolicyManager policy = TeamBillCycleUtils.getPolicyFromMap( + regionPolicyMap, + target.getRegion(), + target.getCountryCode()); // 计算每个成员的政策目标数据 TeamBillMemberTarget teamBillMemberTarget = TeamBillCycleUtils.calculatorPolicyTarget(target, policy); memberTargetList.add(teamBillMemberTarget); diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamMemberWorkQryExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamMemberWorkQryExe.java index 3a2c190a..da92a3d7 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamMemberWorkQryExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamMemberWorkQryExe.java @@ -198,7 +198,7 @@ public class TeamMemberWorkQryExe { TeamPolicyManager policy) { if (Objects.isNull(policy.getPolicyType()) || Objects.equals("MONEY", policy.getPolicyType())) { - return TeamBillCycleUtils.calculatorPolicyTarget(target, policy); +// return TeamBillCycleUtils.calculatorPolicyTarget(target, policy); } BillDiamondBalance billDiamondBalance = billDiamondBalanceService.getEntityByBillBelongAndUserId(target.getSysOrigin(), target.getBillBelong(), target.getUserId()); diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/team/TeamExchangeSurplusTargetListener.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/team/TeamExchangeSurplusTargetListener.java index 8ea85f7f..fbd49ca9 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/team/TeamExchangeSurplusTargetListener.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/team/TeamExchangeSurplusTargetListener.java @@ -1,5 +1,6 @@ package com.red.circle.other.app.listener.team; +import cn.hutool.core.map.MapUtil; import com.alibaba.nacos.shaded.com.google.common.base.Throwables; import com.red.circle.common.business.core.enums.ReceiptType; import com.red.circle.component.mq.MessageEventProcess; @@ -52,10 +53,7 @@ import com.red.circle.wallet.inner.model.enums.GoldOrigin; import com.red.circle.wallet.inner.model.enums.UserBankWaterEvent; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -154,8 +152,9 @@ public class TeamExchangeSurplusTargetListener implements MessageListener { return; } - TeamPolicyManager policyManager = getReleaseByRegionAndType(teamProfile); - if (Objects.isNull(policyManager)) { + // 获取所有区域的政策配置 + Map regionPolicyMap = teamPolicyManagerService.mapRegionReleaseWithCountry(Set.of(teamProfile.getRegion())); + if (MapUtil.isEmpty(regionPolicyMap)) { // [满足政策的团队工资实时发送]该团队没有区域政策 return; } @@ -183,9 +182,13 @@ public class TeamExchangeSurplusTargetListener implements MessageListener { return; } + TeamPolicyManager policyManager = TeamBillCycleUtils.getPolicyFromMap( + regionPolicyMap, + memberTarget.getRegion(), + memberTarget.getCountryCode()); + // 计算工资与等级 - TeamBillMemberTarget billTarget = TeamBillCycleUtils - .calculatorPolicyTarget(memberTarget, policyManager); + TeamBillMemberTarget billTarget = TeamBillCycleUtils.calculatorPolicyTarget(memberTarget, policyManager); if (Objects.isNull(billTarget)) { return; } @@ -558,25 +561,6 @@ public class TeamExchangeSurplusTargetListener implements MessageListener { .listByBillBelong(billCycle.getTeamId(), billCycle.getBillBelong()); } - /** - * 获得区域政策. - */ - private TeamPolicyManager getReleaseByRegionAndType(TeamProfile teamProfile) { - - TeamPolicyManager manager = teamPolicyManagerService.getReleaseByRegionAndType( - teamProfile.getSysOrigin(), teamProfile.getRegion()); - - if (Objects.isNull(manager)) { - return null; - } - - if (CollectionUtils.isEmpty(manager.getPolicy())) { - return null; - } - - return manager; - - } /** * 获得达标的最大一级政策. diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/team/TeamSalaryPaymentListener.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/team/TeamSalaryPaymentListener.java index e75f3912..24304c90 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/team/TeamSalaryPaymentListener.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/team/TeamSalaryPaymentListener.java @@ -1,5 +1,6 @@ package com.red.circle.other.app.listener.team; +import cn.hutool.core.map.MapUtil; import com.google.common.base.Throwables; import com.google.common.collect.Lists; import com.red.circle.common.business.core.enums.ReceiptType; @@ -62,10 +63,7 @@ import com.red.circle.wallet.inner.model.dto.UserSalaryDiamondRunningWaterDTO; import com.red.circle.wallet.inner.model.enums.UserBankWaterEvent; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -152,12 +150,11 @@ public class TeamSalaryPaymentListener implements MessageListener { return; } - TeamPolicyManager policyManager = getReleaseByRegionAndType(teamProfile); - if (Objects.isNull(policyManager)) { + Map regionPolicyMap = teamPolicyManagerService.mapRegionReleaseWithCountry(Set.of(teamProfile.getRegion())); + if (MapUtil.isEmpty(regionPolicyMap)) { // [满足政策的团队工资实时发送]该团队没有区域政策 return; } - log.warn("policyManager:"+ policyManager); List teamMemberTargets = getTeamMemberTargets(billCycle); if (CollectionUtils.isEmpty(teamMemberTargets)) { @@ -178,6 +175,11 @@ public class TeamSalaryPaymentListener implements MessageListener { return; } + TeamPolicyManager policyManager = TeamBillCycleUtils.getPolicyFromMap( + regionPolicyMap, + memberTarget.getRegion(), + memberTarget.getCountryCode()); + // 计算工资与等级 TeamBillMemberTarget billTarget = TeamBillCycleUtils .calculatorPolicyTarget(memberTarget, policyManager); diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/team/TeamSalaryRevokeListener.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/team/TeamSalaryRevokeListener.java index a34907e7..0e76da76 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/team/TeamSalaryRevokeListener.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/team/TeamSalaryRevokeListener.java @@ -139,13 +139,17 @@ public class TeamSalaryRevokeListener implements MessageListener { isUpdateState.set(Boolean.TRUE); - TeamPolicyManager policyManager = mapPolicy.get(details.getTeamRegionId()); - if (Objects.isNull(policyManager)) { + TeamMemberTarget target = getTeamMemberTarget(details.getMemberTargetId()); + if (Objects.isNull(target) || CollectionUtils.isEmpty(target.getDailyTargets())) { return; } - TeamMemberTarget target = getTeamMemberTarget(details.getMemberTargetId()); - if (Objects.isNull(target) || CollectionUtils.isEmpty(target.getDailyTargets())) { + TeamPolicyManager policyManager = TeamBillCycleUtils.getPolicyFromMap( + mapPolicy, + target.getRegion(), + target.getCountryCode()); + + if (Objects.isNull(policyManager)) { return; } @@ -153,8 +157,7 @@ public class TeamSalaryRevokeListener implements MessageListener { deductOriginalTarget(new AtomicReference<>(notSubtract ? 0 : deductTarget), target); // 根据团队政策 + 团队成员账单 - TeamBillMemberTarget billMemberTarget = TeamBillCycleUtils - .calculatorPolicyTarget(target, policyManager); + TeamBillMemberTarget billMemberTarget = TeamBillCycleUtils.calculatorPolicyTarget(target, policyManager); // 如果扣除退款目标后计算出来的等级依旧大于或等于发工资的等级,则不做处理 if (Objects.nonNull(billMemberTarget) && Objects.nonNull(billMemberTarget.getLevel()) diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/common/team/decay/ListMemberWorkDecay.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/common/team/decay/ListMemberWorkDecay.java index 5ed13acd..7687c799 100644 --- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/common/team/decay/ListMemberWorkDecay.java +++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/common/team/decay/ListMemberWorkDecay.java @@ -125,8 +125,10 @@ public class ListMemberWorkDecay { } TeamProfile teamProfile = teamProfileMap.get(target.getTeamId()); - TeamPolicyManager regionPolicyManager = - Objects.nonNull(teamProfile) ? policyManagerMap.get(teamProfile.getRegion()) : null; + TeamPolicyManager regionPolicyManager = TeamBillCycleUtils.getPolicyFromMap( + policyManagerMap, + target.getRegion(), + target.getCountryCode()); TeamMemberWorkTargetDTO workTarget = new TeamMemberWorkTargetDTO() .setAcceptGiftValue(target.sumAcceptGiftValue()) @@ -244,7 +246,7 @@ public class ListMemberWorkDecay { } private Map getPolicyManagerMap(TeamMemberWorkQryCmd query) { - return teamPolicyManagerService.mapRegionRelease(listSysRegionConfig(query.getSysOrigin())); + return teamPolicyManagerService.mapRegionReleaseWithCountry(listSysRegionConfig(query.getSysOrigin())); } private Set listSysRegionConfig(String sysOrigin) { diff --git a/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/team/impl/TeamBillCycleClientServiceImpl.java b/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/team/impl/TeamBillCycleClientServiceImpl.java index 702d9633..46cd7b25 100644 --- a/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/team/impl/TeamBillCycleClientServiceImpl.java +++ b/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/team/impl/TeamBillCycleClientServiceImpl.java @@ -194,7 +194,7 @@ public class TeamBillCycleClientServiceImpl implements TeamBillCycleClientServic String regionName = sysRegionConfigService.getRegionName(cmd.getRegion()); // 获取团队区域政策 - Map mapRegionPolicy = mapRegionPolicyManager(cmd); + Map mapRegionPolicy = teamPolicyManagerService.mapRegionReleaseWithCountry(Set.of(cmd.getRegion())); // 团队信息 Map teamProfileMap = @@ -302,7 +302,10 @@ public class TeamBillCycleClientServiceImpl implements TeamBillCycleClientServic } TeamPolicyManager teamPolicyManager = Objects.isNull(billCycle.getSettleResult()) - ? mapRegionPolicy.get(billCycle.getRegion()) + ? TeamBillCycleUtils.getPolicyFromMap( + mapRegionPolicy, + target.getRegion(), + target.getCountryCode()) : teamInfraConvertor.toTeamPolicyManager(billCycle.getSettleResult().getPolicy()); if (Objects.isNull(teamPolicyManager)) {