From b5eb179a1088eeea6daf2e50ac4b46ec9ce4ee16 Mon Sep 17 00:00:00 2001 From: tianfeng <769204422@qq.com> Date: Tue, 3 Feb 2026 18:59:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E4=BB=A3=E7=90=86=E6=94=BF=E7=AD=96-?= =?UTF-8?q?=E4=BB=A3=E7=90=86=E6=94=BF=E7=AD=96=E6=96=B0=E5=A2=9E=E5=8C=BA?= =?UTF-8?q?=E5=9F=9F=E5=9B=BD=E5=AE=B6=E5=8C=BA=E5=88=86=E6=94=B9=E9=80=A0?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../agency/TeamBillSettleResultDTO.java | 5 +- .../app/command/bd/query/BdTeamQryExe.java | 8 +-- .../command/bd/query/BdTeamSummaryQryExe.java | 8 +-- .../bd/query/TeamBdMemberBillListQryExe.java | 6 +- .../team/TeamPolicyPropsRewardExe.java | 12 +++- .../team/query/BdTeamAgentListQryExe.java | 1 - .../team/query/TeamReleasePolicyQryExe.java | 20 +++++-- .../strategy/GiftAnchorCountStrategy.java | 59 ------------------- .../listener/team/TeamBillSettleListener.java | 14 ++--- .../TeamExchangeSurplusTargetListener.java | 5 +- .../team/TeamSalaryCountListener.java | 22 ++----- .../team/TeamSalaryPaymentListener.java | 1 - .../mongo/dto/team/TeamBillSettleResult.java | 5 +- .../impl/TeamBillCycleClientServiceImpl.java | 37 +++++------- .../impl/TeamProfileClientServiceImpl.java | 4 +- .../src/test/java/TeamMonthBillTest.java | 9 +-- .../src/test/java/TeamSalaryExportTest.java | 12 ++-- 17 files changed, 83 insertions(+), 145 deletions(-) diff --git a/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/model/dto/agency/agency/TeamBillSettleResultDTO.java b/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/model/dto/agency/agency/TeamBillSettleResultDTO.java index 75efec17..b95e97b1 100644 --- a/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/model/dto/agency/agency/TeamBillSettleResultDTO.java +++ b/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/model/dto/agency/agency/TeamBillSettleResultDTO.java @@ -3,6 +3,9 @@ package com.red.circle.other.inner.model.dto.agency.agency; import java.io.Serial; import java.io.Serializable; import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + import lombok.Data; import lombok.experimental.Accessors; @@ -21,7 +24,7 @@ public class TeamBillSettleResultDTO implements Serializable { /** * 账单对应政策. */ - private TeamPolicyManagerDTO policy; + private Map policy; /** * 工作人数. diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/bd/query/BdTeamQryExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/bd/query/BdTeamQryExe.java index 96b6161f..1cfd8d79 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/bd/query/BdTeamQryExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/bd/query/BdTeamQryExe.java @@ -239,7 +239,7 @@ public class BdTeamQryExe { teamMemberTargetService.mapMemberBillTarget(teamIdSet, currentBillBelong); // 5. 查询区域政策 - Map policyManagerMap = teamPolicyManagerService.mapRegionRelease( + Map policyManagerMap = teamPolicyManagerService.mapRegionReleaseWithCountry( billCycleMap.values().stream() .map(TeamBillCycle::getRegion) .collect(Collectors.toSet())); @@ -357,7 +357,7 @@ public class BdTeamQryExe { teamMemberTargetService.mapMemberBillTarget(teamIdSet, currentBillBelong); // 4. 查询区域政策 - Map policyManagerMap = teamPolicyManagerService.mapRegionRelease( + Map policyManagerMap = teamPolicyManagerService.mapRegionReleaseWithCountry( billCycleMap.values().stream() .map(TeamBillCycle::getRegion) .collect(Collectors.toSet())); @@ -388,8 +388,8 @@ public class BdTeamQryExe { } List targetList = teamMemberTargetMap.get(teamId); - List memberTargets = TeamBillCycleUtils.calculatorPolicyTarget( - targetList, policyManagerMap.get(billCycle.getRegion())); + List memberTargets = TeamBillCycleUtils.calculatorPolicyTargetWithMap( + targetList, policyManagerMap); return ownTotalSalary(memberTargets); } diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/bd/query/BdTeamSummaryQryExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/bd/query/BdTeamSummaryQryExe.java index 8a5b7da4..4875caa8 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/bd/query/BdTeamSummaryQryExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/bd/query/BdTeamSummaryQryExe.java @@ -228,7 +228,7 @@ public class BdTeamSummaryQryExe { teamMemberTargetService.mapMemberBillTarget(teamIdSet, currentBillBelong); // 查询区域政策 - Map policyManagerMap = teamPolicyManagerService.mapRegionRelease( + Map policyManagerMap = teamPolicyManagerService.mapRegionReleaseWithCountry( billCycleMap.values().stream() .map(TeamBillCycle::getRegion) .collect(Collectors.toSet())); @@ -262,7 +262,7 @@ public class BdTeamSummaryQryExe { teamMemberTargetService.mapMemberBillTarget(teamIdSet, currentBillBelong); // 4. 查询区域政策 - Map policyManagerMap = teamPolicyManagerService.mapRegionRelease( + Map policyManagerMap = teamPolicyManagerService.mapRegionReleaseWithCountry( billCycleMap.values().stream() .map(TeamBillCycle::getRegion) .collect(Collectors.toSet())); @@ -293,8 +293,8 @@ public class BdTeamSummaryQryExe { } List targetList = teamMemberTargetMap.get(teamId); - List memberTargets = TeamBillCycleUtils.calculatorPolicyTarget( - targetList, policyManagerMap.get(billCycle.getRegion())); + List memberTargets = TeamBillCycleUtils.calculatorPolicyTargetWithMap( + targetList, policyManagerMap); return ownTotalSalary(memberTargets); } diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/bd/query/TeamBdMemberBillListQryExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/bd/query/TeamBdMemberBillListQryExe.java index 57d11ae5..5f6844bb 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/bd/query/TeamBdMemberBillListQryExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/bd/query/TeamBdMemberBillListQryExe.java @@ -123,7 +123,7 @@ public class TeamBdMemberBillListQryExe { // 获取所有区域的政策配置 Map billCycleMap = teamBillCycleService.mapByTeamIds2( teamIdSet, currentBillBelong, TeamBillCycleStatus.UNPAID); - Map regionPolicyMap = teamPolicyManagerService.mapRegionRelease( + Map regionPolicyMap = teamPolicyManagerService.mapRegionReleaseWithCountry( billCycleMap.values().stream().map(TeamBillCycle::getRegion).collect(Collectors.toSet())); // 4. 查询当前周期的账单 @@ -284,7 +284,7 @@ public class TeamBdMemberBillListQryExe { Map billCycleMap = teamBillCycleService.mapByTeamIds2( teamIdSet, currentBillBelong, TeamBillCycleStatus.UNPAID); - Map regionPolicyMap = teamPolicyManagerService.mapRegionRelease( + Map regionPolicyMap = teamPolicyManagerService.mapRegionReleaseWithCountry( billCycleMap.values().stream().map(TeamBillCycle::getRegion).collect(Collectors.toSet())); // 4. 查询当前周期的账单 @@ -423,7 +423,7 @@ public class TeamBdMemberBillListQryExe { } List targetList = teamMemberTargetMap.get(teamId); - List memberTargets = TeamBillCycleUtils.calculatorPolicyTarget(targetList, policyManagerMap.get(billCycle.getRegion())); + List memberTargets = TeamBillCycleUtils.calculatorPolicyTargetWithMap(targetList, policyManagerMap); return ownTotalSalary(memberTargets); } diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/TeamPolicyPropsRewardExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/TeamPolicyPropsRewardExe.java index 637e2dc2..e7d46abc 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/TeamPolicyPropsRewardExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/TeamPolicyPropsRewardExe.java @@ -10,6 +10,7 @@ import com.red.circle.other.infra.common.props.PropsSendCommon; import com.red.circle.other.infra.database.mongo.dto.team.TeamBillMemberTarget; import com.red.circle.other.infra.database.mongo.entity.team.team.TeamBillCycle; import com.red.circle.other.infra.database.mongo.entity.team.team.TeamMemberTarget; +import com.red.circle.other.infra.database.mongo.entity.team.team.TeamPolicyManager; import com.red.circle.other.infra.database.mongo.service.team.TeamBillCycleUtils; import com.red.circle.other.infra.database.mongo.service.team.team.TeamBillCycleService; import com.red.circle.other.infra.database.mongo.service.team.team.TeamMemberTargetService; @@ -18,6 +19,8 @@ import com.red.circle.other.inner.model.cmd.material.PrizeDescribeRewardCmd; import com.red.circle.other.inner.asserts.team.TeamErrorCode; import com.red.circle.tool.core.collection.CollectionUtils; import com.red.circle.wallet.inner.model.enums.GoldOrigin; + +import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; @@ -54,8 +57,13 @@ public class TeamPolicyPropsRewardExe { ResponseAssert.notNull(CommonErrorCode.RECEIVE_FAIL, teamBillCycle.getSettleResult().getPolicy()); - TeamBillMemberTarget billMemberTarget = TeamBillCycleUtils.calculatorPolicyTarget(target, - teamBillCycle.getSettleResult().getPolicy()); + Map policyManagerMap = teamBillCycle.getSettleResult().getPolicy(); + TeamPolicyManager policy = TeamBillCycleUtils.getPolicyFromMap( + policyManagerMap, + target.getRegion(), + target.getCountryCode()); + + TeamBillMemberTarget billMemberTarget = TeamBillCycleUtils.calculatorPolicyTarget(target,policy); ResponseAssert.notNull(CommonErrorCode.RECEIVE_FAIL, billMemberTarget); ResponseAssert.isTrue(CommonErrorCode.RECEIVE_FAIL, CollectionUtils.isNotEmpty(billMemberTarget.getPropsRewards())); diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/BdTeamAgentListQryExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/BdTeamAgentListQryExe.java index d096ffe4..02ab4f4e 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/BdTeamAgentListQryExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/BdTeamAgentListQryExe.java @@ -79,7 +79,6 @@ public class BdTeamAgentListQryExe { .setLastMonthBillDate(lastMonth) .setUserProfile(teamUserProfileMap.get(team.getAgentId())) .setBillBalance(getBillTotalSalary(billCycle)) - .setPolicyType(Objects.nonNull(billCycle.getSettleResult()) && Objects.nonNull(billCycle.getSettleResult().getPolicy().getPolicyType()) ? billCycle.getSettleResult().getPolicy().getPolicyType() : null) .setHostQuantity(getTeamHostQuantity(teamProfile)) .setCreateTime(team.getCreateTime()); }) diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamReleasePolicyQryExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamReleasePolicyQryExe.java index c8ab61bb..ee302224 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamReleasePolicyQryExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamReleasePolicyQryExe.java @@ -4,13 +4,21 @@ import com.red.circle.common.business.dto.cmd.app.AppIdLongCmd; import com.red.circle.framework.core.asserts.ResponseAssert; import com.red.circle.other.app.convertor.team.TeamAppConvertor; import com.red.circle.other.app.dto.clientobject.team.TeamPolicyManagerCO; +import com.red.circle.other.app.service.user.user.UserProfileService; +import com.red.circle.other.domain.gateway.user.UserProfileGateway; +import com.red.circle.other.domain.model.user.UserProfile; +import com.red.circle.other.infra.database.mongo.entity.team.team.TeamPolicyManager; import com.red.circle.other.infra.database.mongo.entity.team.team.TeamProfile; +import com.red.circle.other.infra.database.mongo.service.team.TeamBillCycleUtils; import com.red.circle.other.infra.database.mongo.service.team.team.TeamPolicyManagerService; import com.red.circle.other.infra.database.mongo.service.team.team.TeamProfileService; import com.red.circle.other.inner.asserts.team.TeamErrorCode; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; +import java.util.Map; +import java.util.Set; + /** * 团队最新发布政策. * @@ -23,16 +31,18 @@ public class TeamReleasePolicyQryExe { private final TeamAppConvertor teamAppConvertor; private final TeamProfileService teamProfileService; private final TeamPolicyManagerService teamPolicyManagerService; + private final UserProfileGateway userProfileGateway; public TeamPolicyManagerCO execute(AppIdLongCmd cmd) { TeamProfile teamProfile = teamProfileService.getById(cmd.getId()); ResponseAssert.notNull(TeamErrorCode.TEAM_NOT_FOUND, teamProfile); - return teamAppConvertor.toTeamPolicyManagerCO( - teamPolicyManagerService.getReleaseByRegionAndType( - teamProfile.getSysOrigin(), - teamProfile.getRegion()) - ); + UserProfile userProfile = userProfileGateway.getByUserId(cmd.getReqUserId()); + + Map policyManagerMap = teamPolicyManagerService.mapRegionReleaseWithCountry(Set.of(teamProfile.getRegion())); + TeamPolicyManager teamPolicyManager = TeamBillCycleUtils.getPolicyFromMap(policyManagerMap, teamProfile.getRegion(), userProfile.getCountryCode()); + + return teamAppConvertor.toTeamPolicyManagerCO(teamPolicyManager); } } diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/gift/strategy/GiftAnchorCountStrategy.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/gift/strategy/GiftAnchorCountStrategy.java index d1ac0887..4363c669 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/gift/strategy/GiftAnchorCountStrategy.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/gift/strategy/GiftAnchorCountStrategy.java @@ -179,48 +179,6 @@ public class GiftAnchorCountStrategy implements GiftStrategy { // }); } - /** - * 同步团队钻石 - * @param teamIds - */ - private void initProfilesDiamond(Set teamIds, List giftAcceptUsers) { - List teamProfiles = teamProfileService.listStatusAvailable(teamIds); - teamProfiles.forEach(teamProfile ->{ - TeamBillCycle teamBillCycle = getTeamUnpaidBill(teamProfile.getId()); - - TeamPolicyManager regionPolicyManager = teamPolicyManagerService.getReleaseByRegionAndType( - teamBillCycle.getSysOrigin(), teamBillCycle.getRegion() - ); - List teamMemberTargets = getTeamMemberTargets(teamBillCycle); - - List teamBillMemberTargets = calculatorTarget(teamMemberTargets, - regionPolicyManager); - - // 实时更新修改用户账单钻石余额 - if (Objects.equals(TeamPolicyTypeEnum.SALARY_DIAMOND.name(), regionPolicyManager.getPolicyType())) { - SysRegionConfig regionConfig = sysRegionConfigService.getById(teamBillCycle.getRegion()); - Map metadata = getMetadata(regionConfig); - boolean isOpenDailyAutoSalary = isOpenDailyAutoSalary(metadata); - log.warn("实时更新钻石账单周期:" + teamBillCycle.getBillBelong() + ",数据:" + teamBillMemberTargets + "\n" + - "实时更新钻石账单政策类型:" + regionPolicyManager.getPolicyType() + "\n" + - "区域账单配置" + regionConfig); - - List giftAcceptUser = giftAcceptUsers.stream() - .filter(GiftAcceptUser::getAnchor) - .map(GiftAcceptUser::getAcceptUserId) - .collect(Collectors.toList()); - giftAcceptUser.add(teamProfile.getOwnUserId()); - if (Boolean.TRUE.equals(isOpenDailyAutoSalary)) { - // 钻石日结,暂时这样写 - List teamBillMemberDayTargets = calculatorDayTarget(teamMemberTargets, - regionPolicyManager); - addDayBillDiamondBalance(teamBillMemberDayTargets, teamProfile, teamBillCycle, giftAcceptUser); - } else { - addBillDiamondBalance(teamBillMemberTargets, teamProfile, teamBillCycle, giftAcceptUser); - } - } - }); - } /** * 插入账单数据 @@ -504,23 +462,6 @@ public class GiftAnchorCountStrategy implements GiftStrategy { .map(SysRegionConfig::getMetadata).orElseGet(CollectionUtils::newHashMap); } - /** - * 计算政策目标工资 - */ - private List calculatorTarget(List teamMemberTargets, - TeamPolicyManager regionPolicyManager) { - //2fun新增钻石政策 - if (Objects.isNull(regionPolicyManager.getPolicyType()) || Objects.equals("MONEY", regionPolicyManager.getPolicyType())) { - return TeamBillCycleUtils.calculatorPolicyTarget(teamMemberTargets, regionPolicyManager); - } - - return TeamBillCycleUtils.calculatorPolicyDiamondTarget(teamMemberTargets, regionPolicyManager); - } - - private List calculatorDayTarget(List teamMemberTargets, - TeamPolicyManager regionPolicyManager) { - return TeamBillCycleUtils.calculatorPolicyDiamondDayTarget(teamMemberTargets, regionPolicyManager); - } private List listTeamProfile(TeamSalaryCountEvent event) { diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/team/TeamBillSettleListener.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/team/TeamBillSettleListener.java index b60c02da..977c1d17 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/team/TeamBillSettleListener.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/team/TeamBillSettleListener.java @@ -1,5 +1,6 @@ package com.red.circle.other.app.listener.team; +import cn.hutool.core.map.MapUtil; import com.red.circle.common.business.core.enums.ReceiptType; import com.red.circle.component.mq.MessageEventProcess; import com.red.circle.component.mq.MessageEventProcessDescribe; @@ -130,13 +131,10 @@ public class TeamBillSettleListener implements MessageListener { public TeamBillSettleResult processBill(TeamProfile teamProfile, TeamBillCycle teamBillCycle, Boolean isPay) { // 获取团队区域政策 - TeamPolicyManager regionPolicyManager = teamPolicyManagerService.getReleaseByRegionAndType( - teamBillCycle.getSysOrigin(), - teamBillCycle.getRegion() - ); + Map regionPolicyManager = teamPolicyManagerService.mapRegionReleaseWithCountry(Set.of(teamBillCycle.getRegion())); log.warn("团队账单结算regionPolicyManager."+regionPolicyManager); - if (Objects.isNull(regionPolicyManager)) { + if (MapUtil.isEmpty(regionPolicyManager)) { teamBillCycleService.updateStatus(teamBillCycle.getId(), TeamBillCycleStatus.HANG_UP, new TeamRemark() .setRemarkId(IdWorkerUtils.getIdStr()) @@ -161,8 +159,7 @@ public class TeamBillSettleListener implements MessageListener { return null; } - List teamBillMemberTargets = - TeamBillCycleUtils.calculatorPolicyTarget(teamMemberTargets, regionPolicyManager); + List teamBillMemberTargets = TeamBillCycleUtils.calculatorPolicyTargetWithMap(teamMemberTargets, regionPolicyManager); log.warn("团队账单结算teamBillMemberTargets."+teamBillMemberTargets); teamMemberTargets = teamMemberTargets.stream().filter(e -> !Boolean.TRUE.equals(e.getHistory())).toList(); @@ -196,8 +193,6 @@ public class TeamBillSettleListener implements MessageListener { .setSettleResult(settleResult) ); - if (Objects.isNull(regionPolicyManager.getPolicyType()) || - Objects.equals(TeamPolicyTypeEnum.MONEY.name(), regionPolicyManager.getPolicyType())) { log.warn("美金入账{}", teamProfile); // 成员入账 teamMemberCreditedBankBalance(teamProfile @@ -210,7 +205,6 @@ public class TeamBillSettleListener implements MessageListener { Objects.toString(teamBillCycle.getId()), settleResult, regionConfig); - } return settleResult; } 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 fbd49ca9..b0442628 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 @@ -212,7 +212,8 @@ public class TeamExchangeSurplusTargetListener implements MessageListener { return; } - if (Objects.isNull(billCycle.getSettleResult().getPolicy().getPolicyType()) || Objects.equals(TeamPolicyTypeEnum.MONEY, billCycle.getSettleResult().getPolicy().getPolicyType())) { + if (Objects.isNull(billTarget.getPolicyType()) || + Objects.equals(TeamPolicyTypeEnum.MONEY, billTarget.getPolicyType())) { // 发送团队成员美元工资 memberBankBalancePayment(teamProfile, memberTarget, usd, memberTarget.sumAcceptGiftValue(), @@ -259,7 +260,7 @@ public class TeamExchangeSurplusTargetListener implements MessageListener { return; } - if (Objects.isNull(billCycle.getSettleResult().getPolicy().getPolicyType()) || Objects.equals(TeamPolicyTypeEnum.MONEY, billCycle.getSettleResult().getPolicy().getPolicyType())) { + if (Objects.isNull(billTarget.getPolicyType()) || Objects.equals(TeamPolicyTypeEnum.MONEY, billTarget.getPolicyType())) { // 发送团队成员工资 memberBankBalancePayment(teamProfile, memberTarget, usd, surplusTarget, exchangeRatio, region.getMetadata()); diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/team/TeamSalaryCountListener.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/team/TeamSalaryCountListener.java index 716b84a6..7c535ebc 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/team/TeamSalaryCountListener.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/listener/team/TeamSalaryCountListener.java @@ -33,10 +33,7 @@ import com.red.circle.other.inner.model.cmd.team.TeamBillCmd; import com.red.circle.tool.core.collection.CollectionUtils; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; +import java.util.*; import java.util.concurrent.CompletableFuture; import com.red.circle.tool.core.date.TimestampUtils; @@ -107,8 +104,8 @@ public class TeamSalaryCountListener implements MessageListener { return; } - TeamPolicyManager regionPolicyManager = teamPolicyManagerService.getReleaseByRegionAndType( - teamBillCycle.getSysOrigin(), teamBillCycle.getRegion() + Map regionPolicyManager = teamPolicyManagerService.mapRegionReleaseWithCountry( + Set.of(teamBillCycle.getRegion()) ); if (Objects.isNull(regionPolicyManager)) { @@ -120,8 +117,8 @@ public class TeamSalaryCountListener implements MessageListener { List teamMemberTargets = getTeamMemberTargets(teamBillCycle); - List teamBillMemberTargets = calculatorTarget(teamMemberTargets, - regionPolicyManager); + List teamBillMemberTargets = TeamBillCycleUtils.calculatorPolicyTargetWithMap(teamMemberTargets, + regionPolicyManager); // 结算账单. teamBillCycleService.updateSelective(new TeamBillCycle() @@ -269,15 +266,6 @@ public class TeamSalaryCountListener implements MessageListener { return Objects.equals(metadata.get("openDailyAutoSalary"), "true"); } - private List calculatorTarget(List teamMemberTargets, - TeamPolicyManager regionPolicyManager) { - //2fun新增钻石政策 - if (Objects.isNull(regionPolicyManager.getPolicyType()) || Objects.equals(TeamPolicyTypeEnum.MONEY.name(), regionPolicyManager.getPolicyType())) { - return TeamBillCycleUtils.calculatorPolicyTarget(teamMemberTargets, regionPolicyManager); - } - - return TeamBillCycleUtils.calculatorPolicyDiamondTarget(teamMemberTargets, regionPolicyManager); - } private List calculatorDayTarget(List teamMemberTargets, TeamPolicyManager regionPolicyManager) { 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 24304c90..27bbead7 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 @@ -237,7 +237,6 @@ public class TeamSalaryPaymentListener implements MessageListener { // 辅助:组装钻石工资辅助模型 tmpBillMemberTarget = buildDiamondTmpBillMemberTarget(policy, billTarget); - log.warn("组装钻石工资辅助模型:{}\n{}", tmpBillMemberTarget, billCycle.getSettleResult().getPolicy().getPolicyType()); log.warn("发送团队成员钻石工资:{}\n{}\n{}\n{}\n{}\n{}", teamProfile, memberTarget, region, policy, payment, billCycle); // 发送团队成员钻石工资 diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/dto/team/TeamBillSettleResult.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/dto/team/TeamBillSettleResult.java index e2ed136e..9a0ec03d 100644 --- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/dto/team/TeamBillSettleResult.java +++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/dto/team/TeamBillSettleResult.java @@ -4,6 +4,9 @@ import com.red.circle.other.infra.database.mongo.entity.team.team.TeamPolicyMana import java.io.Serial; import java.io.Serializable; import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + import lombok.Data; import lombok.experimental.Accessors; @@ -22,7 +25,7 @@ public class TeamBillSettleResult implements Serializable { /** * 账单对应政策. */ - private TeamPolicyManager policy; + private Map policy; /** * 工作人数. 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 46cd7b25..5527e583 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 @@ -46,11 +46,7 @@ import com.red.circle.other.inner.model.cmd.team.TeamBillByConditionQryCmd; import com.red.circle.other.inner.model.cmd.team.TeamBillCycleBackQryCmd; import com.red.circle.other.inner.model.cmd.team.TeamCalculatorWorkCmd; import com.red.circle.other.inner.model.cmd.team.TeamMemberTargetResetCmd; -import com.red.circle.other.inner.model.dto.agency.agency.TeamBillAnchorStatisticsModelDTO; -import com.red.circle.other.inner.model.dto.agency.agency.TeamBillCycleDTO; -import com.red.circle.other.inner.model.dto.agency.agency.TeamBillSettleResultDTO; -import com.red.circle.other.inner.model.dto.agency.agency.TeamCalculatorWorkResultDTO; -import com.red.circle.other.inner.model.dto.agency.agency.TeamRemark; +import com.red.circle.other.inner.model.dto.agency.agency.*; import com.red.circle.other.inner.model.dto.user.UserProfileDTO; import com.red.circle.tool.core.collection.CollectionUtils; import com.red.circle.tool.core.date.DateFormatConstant; @@ -138,17 +134,14 @@ public class TeamBillCycleClientServiceImpl implements TeamBillCycleClientServic TeamBillCycle teamBillCycle = teamBillCycleService.getByBillId(param.getBillId()); ResponseAssert.notNull(TeamErrorCode.BILL_DOES_NOT_EXIST, teamBillCycle); - TeamPolicyManager teamPolicyManager = Objects.nonNull(param.getPolicyId()) - ? teamPolicyManagerService.getById(param.getPolicyId()) - : teamPolicyManagerService.getReleaseByRegionAndType( - teamBillCycle.getSysOrigin(), - teamBillCycle.getRegion()); - ResponseAssert.notNull(TeamErrorCode.NOT_FOUND_RELEASE_POLICY, teamPolicyManager); + Map policyManagerMap = teamPolicyManagerService.mapRegionReleaseWithCountry(Set.of(teamBillCycle.getRegion())); + + ResponseAssert.notNull(TeamErrorCode.NOT_FOUND_RELEASE_POLICY, policyManagerMap); List teamMemberTargets = getTeamMemberTargets(teamBillCycle); - List teamBillMemberTargets = TeamBillCycleUtils.calculatorPolicyTarget( - teamMemberTargets, teamPolicyManager); + List teamBillMemberTargets = TeamBillCycleUtils.calculatorPolicyTargetWithMap( + teamMemberTargets, policyManagerMap); return new TeamCalculatorWorkResultDTO() .setWorkMembers( @@ -157,7 +150,8 @@ public class TeamBillCycleClientServiceImpl implements TeamBillCycleClientServic .setMemberSalary(sumMemberSalary(teamBillMemberTargets)) .setOwnSalary(ownSalary(teamBillMemberTargets)) .setTotalSalary(ownTotalSalary(teamBillMemberTargets)) - .setPolicyId(teamPolicyManager.getId()); +// .setPolicyId(teamPolicyManager.getId()) + ; } @Override @@ -301,12 +295,11 @@ public class TeamBillCycleClientServiceImpl implements TeamBillCycleClientServic return model; } - TeamPolicyManager teamPolicyManager = Objects.isNull(billCycle.getSettleResult()) - ? TeamBillCycleUtils.getPolicyFromMap( + TeamPolicyManager teamPolicyManager = TeamBillCycleUtils.getPolicyFromMap( mapRegionPolicy, target.getRegion(), - target.getCountryCode()) - : teamInfraConvertor.toTeamPolicyManager(billCycle.getSettleResult().getPolicy()); + target.getCountryCode()); + if (Objects.isNull(teamPolicyManager)) { return model; @@ -438,7 +431,7 @@ public class TeamBillCycleClientServiceImpl implements TeamBillCycleClientServic // 结算账单. vo.setSettleResult(new TeamBillSettleResultDTO() - .setPolicy(teamInfraConvertor.toTeamPolicyManagerDTO(policyManager)) +// .setPolicy(teamInfraConvertor.toTeamPolicyManagerDTO(policyManager)) .setWorkMembers(countWorkMembers(teamMemberTargets)) .setFinishMembers(teamBillMemberTargets.size()) .setMemberSalary(sumMemberSalary(teamBillMemberTargets)) @@ -587,7 +580,7 @@ public class TeamBillCycleClientServiceImpl implements TeamBillCycleClientServic Set regionIds = getRegionIds(teamBillCycles); Map policyManagerMap = teamPolicyManagerService - .mapRegionRelease(regionIds); + .mapRegionReleaseWithCountry(regionIds); return teamBillCycles.stream().map(teamBillCycle -> { @@ -605,11 +598,11 @@ public class TeamBillCycleClientServiceImpl implements TeamBillCycleClientServic List teamMemberTargets = getTeamMemberTargets(teamBillCycle); List teamBillMemberTargets = TeamBillCycleUtils - .calculatorPolicyTarget(teamMemberTargets, policyManager); + .calculatorPolicyTargetWithMap(teamMemberTargets, policyManagerMap); // 结算账单. vo.setSettleResult(new TeamBillSettleResultDTO() - .setPolicy(teamInfraConvertor.toTeamPolicyManagerDTO(policyManager)) +// .setPolicy(teamInfraConvertor.toTeamPolicyManager(policyManagerMap)) .setWorkMembers(countWorkMembers(teamMemberTargets)) .setFinishMembers(teamBillMemberTargets.size()) .setMemberSalary(sumMemberSalary(teamBillMemberTargets)) diff --git a/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/team/impl/TeamProfileClientServiceImpl.java b/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/team/impl/TeamProfileClientServiceImpl.java index 2b88598b..2f22df93 100644 --- a/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/team/impl/TeamProfileClientServiceImpl.java +++ b/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/team/impl/TeamProfileClientServiceImpl.java @@ -395,8 +395,8 @@ public class TeamProfileClientServiceImpl implements TeamProfileClientService { //teamBillCycleService.removeBatchByTeamId(List.of(oldTeamProfile.getId())); TeamBillCycle teamBillCycle = teamBillCycleService.getLatestByTeamId(cmd.getId()); - TeamPolicyManager regionPolicyManager = teamPolicyManagerService.getReleaseByRegionAndType( - teamBillCycle.getSysOrigin(), teamBillCycle.getRegion() + Map regionPolicyManager = teamPolicyManagerService.mapRegionReleaseWithCountry( + Set.of(teamBillCycle.getRegion()) ); // 修改账单区域信息 teamBillCycleService.updateSelective(new TeamBillCycle() diff --git a/rc-service/rc-service-other/other-start/src/test/java/TeamMonthBillTest.java b/rc-service/rc-service-other/other-start/src/test/java/TeamMonthBillTest.java index 7051f1b0..e486e6c0 100644 --- a/rc-service/rc-service-other/other-start/src/test/java/TeamMonthBillTest.java +++ b/rc-service/rc-service-other/other-start/src/test/java/TeamMonthBillTest.java @@ -33,6 +33,8 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Arrays; import java.util.List; +import java.util.Map; +import java.util.Set; @SpringBootTest(classes = OtherServiceApplication.class) @RunWith(SpringRunner.class) @@ -107,14 +109,13 @@ public class TeamMonthBillTest { // 获取团队区域政策 - TeamPolicyManager regionPolicyManager = teamPolicyManagerService.getReleaseByRegionAndType( - teamBillCycle.getSysOrigin(), - teamBillCycle.getRegion() + Map regionPolicyManager = teamPolicyManagerService.mapRegionReleaseWithCountry( + Set.of(teamBillCycle.getRegion()) ); List teamMemberTargets = getTeamMemberTargets(teamBillCycle); List teamBillMemberTargets = - TeamBillCycleUtils.calculatorPolicyTarget(teamMemberTargets, regionPolicyManager); + TeamBillCycleUtils.calculatorPolicyTargetWithMap(teamMemberTargets, regionPolicyManager); // 结算账单. TeamBillSettleResult settleResult = new TeamBillSettleResult() diff --git a/rc-service/rc-service-other/other-start/src/test/java/TeamSalaryExportTest.java b/rc-service/rc-service-other/other-start/src/test/java/TeamSalaryExportTest.java index bbfe0a9c..7066bc7d 100644 --- a/rc-service/rc-service-other/other-start/src/test/java/TeamSalaryExportTest.java +++ b/rc-service/rc-service-other/other-start/src/test/java/TeamSalaryExportTest.java @@ -66,7 +66,7 @@ public class TeamSalaryExportTest { public void exportTeamSalaryToExcel() { try { // 1. 获取当前账单 - Integer billBelong = TeamBillCycleUtils.getCalcBillBelong(); + Integer billBelong = 20260116; log.info("当前账单: {}", billBelong); // 2. 查询所有待结算的账单 @@ -103,13 +103,11 @@ public class TeamSalaryExportTest { List teamMemberTargets = getTeamMemberTargets(teamBillCycle); // 获取团队区域政策 - TeamPolicyManager regionPolicyManager = teamPolicyManagerService.getReleaseByRegionAndType( - teamBillCycle.getSysOrigin(), - teamBillCycle.getRegion() - ); + Map regionPolicyManager = + teamPolicyManagerService.mapRegionReleaseWithCountry(Set.of(teamBillCycle.getRegion())); // 计算成员目标 - List teamBillMemberTargets = TeamBillCycleUtils.calculatorPolicyTarget( + List teamBillMemberTargets = TeamBillCycleUtils.calculatorPolicyTargetWithMap( teamMemberTargets, regionPolicyManager); // 收集成员明细数据 @@ -220,7 +218,7 @@ public class TeamSalaryExportTest { */ private List queryPendingBills(Integer billBelong) { Criteria criteria = Criteria.where("billBelong").lte(billBelong) - .and("status").is(TeamBillCycleStatus.UNPAID); + .and("_id").is(2011906992356577281L); return mongoTemplate.find( Query.query(criteria),