From adedfdf5d1e54113e990fb9006a4ba67714fd475 Mon Sep 17 00:00:00 2001 From: tianfeng <769204422@qq.com> Date: Fri, 3 Oct 2025 01:23:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E7=BB=93=E7=AE=97=E5=8D=97?= =?UTF-8?q?=E4=BA=9A=E5=8C=BA=E5=9F=9F=E7=89=B9=E6=AE=8A=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/team/TeamBillSettleListener.java | 18 ++-- .../service/team/TeamBillCycleUtils.java | 84 +++++++++++++++++++ 2 files changed, 93 insertions(+), 9 deletions(-) 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 6686f214..3bd6077d 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 @@ -159,8 +159,15 @@ public class TeamBillSettleListener implements MessageListener { } }); - List teamBillMemberTargets = calculatorTarget(teamMemberTargets, - regionPolicyManager); + // 获得区域配置细信息 + SysRegionConfig regionConfig = sysRegionConfigService.getById(teamProfile.getRegion()); + if (Objects.isNull(regionConfig)) { + log.warn("没有获得团队的区域数据,团队ID:{}", teamProfile.getId()); + return; + } + + List teamBillMemberTargets = + TeamBillCycleUtils.calculatorPolicyTargetNew(teamMemberTargets, regionPolicyManager, regionConfig); log.warn("团队账单结算teamBillMemberTargets."+teamBillMemberTargets); // 结算账单. @@ -183,13 +190,6 @@ public class TeamBillSettleListener implements MessageListener { return; } - // 获得区域配置细信息 - SysRegionConfig regionConfig = sysRegionConfigService.getById(teamProfile.getRegion()); - if (Objects.isNull(regionConfig)) { - log.warn("没有获得团队的区域数据,团队ID:{}", teamProfile.getId()); - return; - } - if (Objects.isNull(regionPolicyManager.getPolicyType()) || Objects.equals(TeamPolicyTypeEnum.MONEY.name(), regionPolicyManager.getPolicyType())) { log.warn("美金入账{}", teamProfile); // 成员入账 diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/TeamBillCycleUtils.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/TeamBillCycleUtils.java index 12c6a348..dc653021 100644 --- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/TeamBillCycleUtils.java +++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/TeamBillCycleUtils.java @@ -6,6 +6,7 @@ import com.red.circle.other.infra.database.mongo.dto.team.TeamBillPolicyType; import com.red.circle.other.infra.database.mongo.dto.team.TeamPolicy; 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.entity.user.region.SysRegionConfig; import com.red.circle.other.infra.database.rds.entity.team.BillDiamondBalance; import com.red.circle.other.inner.enums.team.TeamMemberTargetIndex; import com.red.circle.tool.core.collection.CollectionUtils; @@ -129,6 +130,88 @@ public final class TeamBillCycleUtils { return calculatorPolicyTarget(List.of(target), policy).get(0); } + /** + * 计算成员工作情况. + */ + public static List calculatorPolicyTargetNew(List targets, + TeamPolicyManager policy, SysRegionConfig regionConfig) { + + if (CollectionUtils.isEmpty(targets)) { + return Lists.newArrayList(); + } + + List teamPolicies = Objects.nonNull(policy) + ? policy.getPolicy().stream() + .sorted(Comparator.comparing(TeamPolicy::getLevel, Comparator.reverseOrder())) + .collect(Collectors.toList()) + : Lists.newArrayList(); + + return targets.stream().map(target -> { + long targetTimeHours = target.sumAllTargetTime() / 60; + Long acceptGiftValue = target.sumAcceptGiftValue(); + Integer effectiveDay = target.sumEffectiveDay(); + + TeamBillMemberTarget resultTarget = new TeamBillMemberTarget() + .setTargetId(target.getTimeId()) + .setSysOrigin(target.getSysOrigin()) + .setUserId(target.getUserId()) + .setAcceptGiftValue(target.sumAcceptGiftValue()) + .setGiveGiftValue(target.sumGiveGiftValue()) + .setRoomValue(target.sumRoomValue()) + .setOnlineTime(target.sumAllTargetTime()) + .setMemberSalary(BigDecimal.ZERO) + .setOwnSalary(BigDecimal.ZERO) + .setTotalSalary(BigDecimal.ZERO) + .setSatisfyLevel(Boolean.FALSE); + + for (TeamPolicy teamPolicy : teamPolicies) { + Long policyOnlineTimeHours = NumUtils.isNullDefaultZero(teamPolicy.getOnlineTime()); + Long policyGiftValue = NumUtils.isNullDefaultZero(teamPolicy.getTarget()); + + // 南亚区域特殊处理 + if ("SA".equals(regionConfig.getRegionCode())) { + if (acceptGiftValue < policyGiftValue) { + continue; + } + if (!Boolean.TRUE.equals(target.getIsOwn())) { + resultTarget.setMemberSalary(teamPolicy.getMemberSalary().multiply(new BigDecimal("0.9")).setScale(2, RoundingMode.DOWN)); + resultTarget.setTotalSalary(teamPolicy.getMemberSalary().multiply(new BigDecimal("0.9")).setScale(2, RoundingMode.DOWN)); + } else { + resultTarget.setMemberSalary(teamPolicy.getMemberSalary()); + resultTarget.setOwnSalary(teamPolicy.getOwnSalary()); + resultTarget.setTotalSalary(teamPolicy.getTotalSalary()); + } + resultTarget.setLevel(teamPolicy.getLevel()); + resultTarget.setSatisfyLevel(Boolean.TRUE); + resultTarget.setPropsRewards(teamPolicy.getPropsRewards()); + return resultTarget; + } else { + + // 20240918 政策新增有效天字段,大于1小时(60分钟)即可获取当天有效天 + Integer policyEffectiveDay = NumUtils.isNullDefaultZero(teamPolicy.getEffectiveDay()); + if (targetTimeHours >= policyOnlineTimeHours && acceptGiftValue >= policyGiftValue && effectiveDay >= policyEffectiveDay) { + resultTarget.setMemberSalary(teamPolicy.getMemberSalary()); + resultTarget.setOwnSalary(teamPolicy.getOwnSalary()); + resultTarget.setTotalSalary(teamPolicy.getTotalSalary()); + resultTarget.setLevel(teamPolicy.getLevel()); + resultTarget.setSatisfyLevel(Boolean.TRUE); + resultTarget.setPropsRewards(teamPolicy.getPropsRewards()); + return resultTarget; + } else if (acceptGiftValue >= policyGiftValue && !Boolean.TRUE.equals(target.getIsOwn())) { + resultTarget.setMemberSalary(teamPolicy.getMemberSalary().multiply(new BigDecimal("0.9")).setScale(2, RoundingMode.DOWN)); + resultTarget.setTotalSalary(teamPolicy.getMemberSalary().multiply(new BigDecimal("0.9")).setScale(2, RoundingMode.DOWN)); + resultTarget.setLevel(teamPolicy.getLevel()); + resultTarget.setSatisfyLevel(Boolean.TRUE); + resultTarget.setPropsRewards(teamPolicy.getPropsRewards()); + return resultTarget; + } + + } + } + return resultTarget; + }).filter(Objects::nonNull).collect(Collectors.toList()); + } + /** * 计算成员工作情况. */ @@ -182,6 +265,7 @@ public final class TeamBillCycleUtils { resultTarget.setLevel(teamPolicy.getLevel()); resultTarget.setSatisfyLevel(Boolean.TRUE); resultTarget.setPropsRewards(teamPolicy.getPropsRewards()); + return resultTarget; } } return resultTarget;