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>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</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.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<TeamBillMemberTarget> teamBillMemberTargets = calculatorTarget(teamMemberTargets,
regionPolicyManager);
log.warn("团队账单结算teamBillMemberTargets."+teamBillMemberTargets);
@ -746,14 +747,9 @@ public class TeamBillSettleListener implements MessageListener {
}
private BigDecimal ownSalary(List<TeamBillMemberTarget> 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<TeamBillMemberTarget> teamBillMemberTargets) {

View File

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

View File

@ -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());

View File

@ -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);
}
}