feat(结算): 结算修改

This commit is contained in:
tianfeng 2025-09-05 20:10:15 +08:00
parent e1b38d4815
commit a8207f7272
5 changed files with 26 additions and 26 deletions

View File

@ -45,7 +45,6 @@
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId> <artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@ -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.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.TeamBillMemberTarget;
import com.red.circle.other.infra.database.mongo.dto.team.TeamBillSettleResult; 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.*;
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.user.region.SysRegionConfig; 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.TeamBillCycleUtils;
import com.red.circle.other.infra.database.mongo.service.team.team.TeamBillCycleService; import com.red.circle.other.infra.database.mongo.service.team.team.*;
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.user.region.SysRegionConfigService; 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.entity.team.BillDiamondBalance;
import com.red.circle.other.infra.database.rds.service.team.BillDiamondBalanceService; 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.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.collection.CollectionUtils;
import com.red.circle.tool.core.date.LocalDateTimeUtils; import com.red.circle.tool.core.date.LocalDateTimeUtils;
import com.red.circle.tool.core.date.TimestampUtils; import com.red.circle.tool.core.date.TimestampUtils;
@ -76,6 +69,7 @@ public class TeamBillSettleListener implements MessageListener {
private final SysRegionConfigService sysRegionConfigService; private final SysRegionConfigService sysRegionConfigService;
private final UserBankBalanceClient userBankBalanceClient; private final UserBankBalanceClient userBankBalanceClient;
private final TeamMemberTargetService teamMemberTargetService; private final TeamMemberTargetService teamMemberTargetService;
private final TeamMemberService teamMemberService;
private final TeamPolicyManagerService teamPolicyManagerService; private final TeamPolicyManagerService teamPolicyManagerService;
private final UserBankRunningWaterClient userBankRunningWaterClient; private final UserBankRunningWaterClient userBankRunningWaterClient;
private final SalaryDiamondBalanceClient salaryDiamondBalanceClient; private final SalaryDiamondBalanceClient salaryDiamondBalanceClient;
@ -158,6 +152,13 @@ public class TeamBillSettleListener implements MessageListener {
teamBillCycle.getBillBelong()); teamBillCycle.getBillBelong());
log.warn("团队账单结算teamMemberTargets."+teamMemberTargets); 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<TeamBillMemberTarget> teamBillMemberTargets = calculatorTarget(teamMemberTargets, List<TeamBillMemberTarget> teamBillMemberTargets = calculatorTarget(teamMemberTargets,
regionPolicyManager); regionPolicyManager);
log.warn("团队账单结算teamBillMemberTargets."+teamBillMemberTargets); log.warn("团队账单结算teamBillMemberTargets."+teamBillMemberTargets);
@ -746,14 +747,9 @@ public class TeamBillSettleListener implements MessageListener {
} }
private BigDecimal ownSalary(List<TeamBillMemberTarget> teamBillMemberTargets) { private BigDecimal ownSalary(List<TeamBillMemberTarget> teamBillMemberTargets) {
BigDecimal ownSalaryTotal = teamBillMemberTargets.stream().map(TeamBillMemberTarget::getOwnSalary) return teamBillMemberTargets.stream().map(TeamBillMemberTarget::getOwnSalary)
.reduce(BigDecimal.ZERO, BigDecimal::add) .reduce(BigDecimal.ZERO, BigDecimal::add)
.setScale(2, RoundingMode.DOWN); .setScale(2, RoundingMode.DOWN);
// 代理有工资时 +1份主播的工资主播代理也是主播
if (ownSalaryTotal.compareTo(BigDecimal.ZERO) > 0 && CollectionUtils.isNotEmpty(teamBillMemberTargets)) {
return ownSalaryTotal.add(teamBillMemberTargets.get(0).getMemberSalary());
}
return ownSalaryTotal;
} }
private BigDecimal ownTotalSalary(List<TeamBillMemberTarget> teamBillMemberTargets) { private BigDecimal ownTotalSalary(List<TeamBillMemberTarget> teamBillMemberTargets) {

View File

@ -51,6 +51,11 @@ public class TeamMemberTarget implements Serializable {
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long teamId; private Long teamId;
/**
* 是否团队长
*/
private Boolean isOwn;
/** /**
* 账单归属. * 账单归属.
*/ */

View File

@ -176,9 +176,9 @@ public final class TeamBillCycleUtils {
resultTarget.setSatisfyLevel(Boolean.TRUE); resultTarget.setSatisfyLevel(Boolean.TRUE);
resultTarget.setPropsRewards(teamPolicy.getPropsRewards()); resultTarget.setPropsRewards(teamPolicy.getPropsRewards());
return resultTarget; 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.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.setLevel(teamPolicy.getLevel());
resultTarget.setSatisfyLevel(Boolean.TRUE); resultTarget.setSatisfyLevel(Boolean.TRUE);
resultTarget.setPropsRewards(teamPolicy.getPropsRewards()); resultTarget.setPropsRewards(teamPolicy.getPropsRewards());

View File

@ -24,7 +24,7 @@ public class TeamMonthBillTest {
*/ */
@Test @Test
public void processTeamBill() { public void processTeamBill() {
// teamBillTask.processTeamMonthBillTest(); teamBillTask.processTeamMonthBillTest();
} }
/** /**
@ -32,8 +32,8 @@ public class TeamMonthBillTest {
*/ */
@Test @Test
public void testListener() { public void testListener() {
Long teamId = 1960260858980765698L; Long teamId = 1963841774709805058L;
// teamBillSettleListener.processBillTest(teamId); teamBillSettleListener.processBillTest(teamId);
} }
} }