diff --git a/rc-service/rc-service-other/other-application/pom.xml b/rc-service/rc-service-other/other-application/pom.xml index c54b5320..453bb3c0 100644 --- a/rc-service/rc-service-other/other-application/pom.xml +++ b/rc-service/rc-service-other/other-application/pom.xml @@ -45,7 +45,6 @@ org.springframework.boot spring-boot-starter-test - test 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 bc69144f..6686f214 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 @@ -13,24 +13,17 @@ import com.red.circle.mq.business.model.event.team.TeamBillSettleEvent; import com.red.circle.mq.rocket.business.streams.TeamBillSettleSink; import com.red.circle.other.infra.database.mongo.dto.team.TeamBillMemberTarget; import com.red.circle.other.infra.database.mongo.dto.team.TeamBillSettleResult; -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.entity.team.team.TeamProfile; +import com.red.circle.other.infra.database.mongo.entity.team.team.*; import com.red.circle.other.infra.database.mongo.entity.user.region.SysRegionConfig; 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; -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.infra.database.mongo.service.team.team.*; import com.red.circle.other.infra.database.mongo.service.user.region.SysRegionConfigService; import com.red.circle.other.infra.database.rds.entity.team.BillDiamondBalance; import com.red.circle.other.infra.database.rds.service.team.BillDiamondBalanceService; -import com.red.circle.other.inner.enums.team.TeamPolicyTypeEnum; +import com.red.circle.other.inner.endpoint.team.target.TeamProfileClient; +import com.red.circle.other.inner.enums.team.*; +import com.red.circle.other.inner.model.dto.agency.agency.TeamMemberDTO; import com.red.circle.other.inner.model.dto.agency.agency.TeamRemark; -import com.red.circle.other.inner.enums.team.TeamBillCycleStatus; -import com.red.circle.other.inner.enums.team.TeamMemberTargetSettlementResult; -import com.red.circle.other.inner.enums.team.TeamMemberTargetStatus; import com.red.circle.tool.core.collection.CollectionUtils; import com.red.circle.tool.core.date.LocalDateTimeUtils; import com.red.circle.tool.core.date.TimestampUtils; @@ -76,6 +69,7 @@ public class TeamBillSettleListener implements MessageListener { private final SysRegionConfigService sysRegionConfigService; private final UserBankBalanceClient userBankBalanceClient; private final TeamMemberTargetService teamMemberTargetService; + private final TeamMemberService teamMemberService; private final TeamPolicyManagerService teamPolicyManagerService; private final UserBankRunningWaterClient userBankRunningWaterClient; private final SalaryDiamondBalanceClient salaryDiamondBalanceClient; @@ -158,6 +152,13 @@ public class TeamBillSettleListener implements MessageListener { teamBillCycle.getBillBelong()); log.warn("团队账单结算teamMemberTargets."+teamMemberTargets); + teamMemberTargets.forEach(teamMemberTarget -> { + TeamMember teamMember = teamMemberService.getByMemberId(teamMemberTarget.getUserId()); + if (Objects.nonNull(teamMember) && TeamMemberRole.OWN.eq(teamMember.getRole())) { + teamMemberTarget.setIsOwn(true); + } + }); + List teamBillMemberTargets = calculatorTarget(teamMemberTargets, regionPolicyManager); log.warn("团队账单结算teamBillMemberTargets."+teamBillMemberTargets); @@ -746,14 +747,9 @@ public class TeamBillSettleListener implements MessageListener { } private BigDecimal ownSalary(List teamBillMemberTargets) { - BigDecimal ownSalaryTotal = teamBillMemberTargets.stream().map(TeamBillMemberTarget::getOwnSalary) - .reduce(BigDecimal.ZERO, BigDecimal::add) - .setScale(2, RoundingMode.DOWN); - // 代理有工资时 +1份主播的工资(主播代理也是主播) - if (ownSalaryTotal.compareTo(BigDecimal.ZERO) > 0 && CollectionUtils.isNotEmpty(teamBillMemberTargets)) { - return ownSalaryTotal.add(teamBillMemberTargets.get(0).getMemberSalary()); - } - return ownSalaryTotal; + return teamBillMemberTargets.stream().map(TeamBillMemberTarget::getOwnSalary) + .reduce(BigDecimal.ZERO, BigDecimal::add) + .setScale(2, RoundingMode.DOWN); } private BigDecimal ownTotalSalary(List teamBillMemberTargets) { diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/entity/team/team/TeamMemberTarget.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/entity/team/team/TeamMemberTarget.java index 7bf0e7bd..10db288e 100644 --- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/entity/team/team/TeamMemberTarget.java +++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/entity/team/team/TeamMemberTarget.java @@ -51,6 +51,11 @@ public class TeamMemberTarget implements Serializable { @JsonSerialize(using = ToStringSerializer.class) private Long teamId; + /** + * 是否团队长 + */ + private Boolean isOwn; + /** * 账单归属. */ 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 209ff82b..12c6a348 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 @@ -176,9 +176,9 @@ public final class TeamBillCycleUtils { resultTarget.setSatisfyLevel(Boolean.TRUE); resultTarget.setPropsRewards(teamPolicy.getPropsRewards()); return resultTarget; - } else if (acceptGiftValue >= policyGiftValue) { + } 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()); + 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()); 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 2897299d..7e9fec25 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 @@ -24,7 +24,7 @@ public class TeamMonthBillTest { */ @Test public void processTeamBill() { -// teamBillTask.processTeamMonthBillTest(); + teamBillTask.processTeamMonthBillTest(); } /** @@ -32,8 +32,8 @@ public class TeamMonthBillTest { */ @Test public void testListener() { - Long teamId = 1960260858980765698L; -// teamBillSettleListener.processBillTest(teamId); + Long teamId = 1963841774709805058L; + teamBillSettleListener.processBillTest(teamId); } }