bd 修改
This commit is contained in:
parent
ff420940c8
commit
5878beb0d6
@ -4,6 +4,7 @@ import com.red.circle.common.business.dto.cmd.AppExtCommand;
|
|||||||
import com.red.circle.common.business.dto.cmd.app.AppFlowCmd;
|
import com.red.circle.common.business.dto.cmd.app.AppFlowCmd;
|
||||||
import com.red.circle.framework.dto.PageResult;
|
import com.red.circle.framework.dto.PageResult;
|
||||||
import com.red.circle.framework.web.controller.BaseController;
|
import com.red.circle.framework.web.controller.BaseController;
|
||||||
|
import com.red.circle.other.app.dto.clientobject.TeamBdMemberCO;
|
||||||
import com.red.circle.other.app.dto.clientobject.team.*;
|
import com.red.circle.other.app.dto.clientobject.team.*;
|
||||||
import com.red.circle.other.app.dto.cmd.activity.LotteryWithdrawCmd;
|
import com.red.circle.other.app.dto.cmd.activity.LotteryWithdrawCmd;
|
||||||
import com.red.circle.other.app.dto.cmd.team.*;
|
import com.red.circle.other.app.dto.cmd.team.*;
|
||||||
@ -11,11 +12,7 @@ import com.red.circle.other.app.service.team.TeamBdHistoryService;
|
|||||||
import com.red.circle.other.app.service.team.TeamBdService;
|
import com.red.circle.other.app.service.team.TeamBdService;
|
||||||
import com.red.circle.other.app.service.TeamBdBillService;
|
import com.red.circle.other.app.service.TeamBdBillService;
|
||||||
import com.red.circle.other.app.dto.cmd.TeamBdMemberBillCmd;
|
import com.red.circle.other.app.dto.cmd.TeamBdMemberBillCmd;
|
||||||
import com.red.circle.other.app.dto.cmd.TeamBdMemberBillDetailCmd;
|
|
||||||
import com.red.circle.other.app.dto.cmd.TeamBdMonthlyIncomeCmd;
|
|
||||||
import com.red.circle.other.app.dto.clientobject.TeamBdMemberBillCO;
|
import com.red.circle.other.app.dto.clientobject.TeamBdMemberBillCO;
|
||||||
import com.red.circle.other.app.dto.clientobject.TeamBdMemberBillDetailCO;
|
|
||||||
import com.red.circle.other.app.dto.clientobject.TeamBdMonthlyIncomeCO;
|
|
||||||
import com.red.circle.other.infra.database.mongo.entity.team.bd.MessageInviteGroup;
|
import com.red.circle.other.infra.database.mongo.entity.team.bd.MessageInviteGroup;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -251,40 +248,10 @@ public class TeamBdRestController extends BaseController {
|
|||||||
* @eo.request-type formdata
|
* @eo.request-type formdata
|
||||||
*/
|
*/
|
||||||
@GetMapping("/member-bill/list")
|
@GetMapping("/member-bill/list")
|
||||||
public List<TeamBdMemberBillCO> queryMemberBillList(@Validated TeamBdMemberBillCmd cmd) {
|
public TeamBdMemberCO queryMemberBillList(@Validated TeamBdMemberBillCmd cmd) {
|
||||||
return teamBdBillService.queryMemberBillList(cmd);
|
return teamBdBillService.queryMemberBillList(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询BD成员账单明细列表.
|
|
||||||
*
|
|
||||||
* @param cmd 查询命令
|
|
||||||
* @return 成员账单明细列表
|
|
||||||
* @eo.name 查询BD成员账单明细列表
|
|
||||||
* @eo.url /member-bill/detail-list
|
|
||||||
* @eo.method get
|
|
||||||
* @eo.request-type formdata
|
|
||||||
*/
|
|
||||||
@GetMapping("/member-bill/detail-list")
|
|
||||||
public List<TeamBdMemberBillDetailCO> queryMemberBillDetailList(TeamBdMemberBillDetailCmd cmd) {
|
|
||||||
return teamBdBillService.queryMemberBillDetailList(cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询BD团队月度收入汇总.
|
|
||||||
*
|
|
||||||
* @param cmd 查询命令
|
|
||||||
* @return 月度收入汇总
|
|
||||||
* @eo.name 查询BD团队月度收入
|
|
||||||
* @eo.url /monthly-income
|
|
||||||
* @eo.method get
|
|
||||||
* @eo.request-type formdata
|
|
||||||
*/
|
|
||||||
@GetMapping("/monthly-income")
|
|
||||||
public TeamBdMonthlyIncomeCO queryMonthlyIncome(@Validated TeamBdMonthlyIncomeCmd cmd) {
|
|
||||||
return teamBdBillService.queryMonthlyIncome(cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提交提现申请.
|
* 提交提现申请.
|
||||||
*
|
*
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package com.red.circle.other.app.command.bd.query;
|
|||||||
|
|
||||||
import com.red.circle.other.app.convertor.user.UserProfileAppConvertor;
|
import com.red.circle.other.app.convertor.user.UserProfileAppConvertor;
|
||||||
import com.red.circle.other.app.dto.clientobject.TeamBdMemberBillCO;
|
import com.red.circle.other.app.dto.clientobject.TeamBdMemberBillCO;
|
||||||
|
import com.red.circle.other.app.dto.clientobject.TeamBdMemberCO;
|
||||||
import com.red.circle.other.app.dto.cmd.TeamBdMemberBillCmd;
|
import com.red.circle.other.app.dto.cmd.TeamBdMemberBillCmd;
|
||||||
import com.red.circle.other.domain.gateway.user.UserProfileGateway;
|
import com.red.circle.other.domain.gateway.user.UserProfileGateway;
|
||||||
import com.red.circle.other.infra.database.mongo.dto.team.TeamBillSettleResult;
|
import com.red.circle.other.infra.database.mongo.dto.team.TeamBillSettleResult;
|
||||||
@ -12,6 +13,7 @@ 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.TeamBillCycleService;
|
||||||
import com.red.circle.other.infra.database.mongo.service.team.team.TeamMemberService;
|
import com.red.circle.other.infra.database.mongo.service.team.team.TeamMemberService;
|
||||||
import com.red.circle.other.infra.database.mongo.service.team.team.TeamProfileService;
|
import com.red.circle.other.infra.database.mongo.service.team.team.TeamProfileService;
|
||||||
|
import com.red.circle.other.infra.database.rds.entity.team.BusinessDevelopmentBaseInfo;
|
||||||
import com.red.circle.other.infra.database.rds.entity.team.BusinessDevelopmentTeam;
|
import com.red.circle.other.infra.database.rds.entity.team.BusinessDevelopmentTeam;
|
||||||
import com.red.circle.other.infra.database.rds.service.team.BusinessDevelopmentBaseInfoService;
|
import com.red.circle.other.infra.database.rds.service.team.BusinessDevelopmentBaseInfoService;
|
||||||
import com.red.circle.other.infra.database.rds.service.team.BusinessDevelopmentTeamService;
|
import com.red.circle.other.infra.database.rds.service.team.BusinessDevelopmentTeamService;
|
||||||
@ -57,18 +59,51 @@ public class TeamBdMemberBillListQryExe {
|
|||||||
* @param cmd 查询命令
|
* @param cmd 查询命令
|
||||||
* @return 账单列表
|
* @return 账单列表
|
||||||
*/
|
*/
|
||||||
public List<TeamBdMemberBillCO> execute(TeamBdMemberBillCmd cmd) {
|
public TeamBdMemberCO execute(TeamBdMemberBillCmd cmd) {
|
||||||
List<BusinessDevelopmentTeam> bdTeamList = new ArrayList<>();
|
List<BusinessDevelopmentTeam> bdTeamList = new ArrayList<>();
|
||||||
|
|
||||||
if ("BD".equals(cmd.getType())) {
|
if ("BD".equals(cmd.getType())) {
|
||||||
bdTeamList.addAll(businessDevelopmentTeamService.listByUserId(cmd.getReqUserId()));
|
bdTeamList.addAll(businessDevelopmentTeamService.listByUserId(cmd.getReqUserId()));
|
||||||
} else {
|
} else {
|
||||||
// bdTeamList.addAll(buildBdTeamVO(teamMemberService.listTeamMember(cmd.getReqUserId(), 100)));
|
List<BusinessDevelopmentBaseInfo> baseInfos = businessDevelopmentBaseInfoService.listBdByLeadUserId(cmd.getReqUserId());
|
||||||
|
|
||||||
|
|
||||||
|
Set<Long> bdIdSet = baseInfos.stream()
|
||||||
|
.map(BusinessDevelopmentBaseInfo::getUserId)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
Map<Long, UserProfileDTO> userProfileMap = userProfileAppConvertor.toMapUserProfileDTO(
|
||||||
|
userProfileGateway.mapByUserIds(bdIdSet));
|
||||||
|
|
||||||
|
List<TeamBdMemberBillCO> list = baseInfos.stream().map(e -> {
|
||||||
|
TeamBdMemberBillCO billCO = new TeamBdMemberBillCO();
|
||||||
|
|
||||||
|
// 代理用户信息
|
||||||
|
UserProfileDTO userProfile = userProfileMap.get(e.getUserId());
|
||||||
|
if (userProfile != null) {
|
||||||
|
billCO.setAgentId(userProfile.getId());
|
||||||
|
billCO.setAgentAccount(userProfile.getAccount());
|
||||||
|
billCO.setAgentName(userProfile.getUserNickname());
|
||||||
|
billCO.setAgentAvatar(userProfile.getUserAvatar());
|
||||||
|
}
|
||||||
|
billCO.setTeamSalaryAmount(BigDecimal.ZERO);
|
||||||
|
billCO.setTeamMemberCount(e.getMemberQuantity().intValue());
|
||||||
|
|
||||||
|
return billCO;
|
||||||
|
|
||||||
|
}).toList();
|
||||||
|
|
||||||
|
TeamBdMemberCO teamBdMemberCO = new TeamBdMemberCO();
|
||||||
|
teamBdMemberCO.setMemberBillList(list);
|
||||||
|
teamBdMemberCO.setTotalSalary(BigDecimal.ZERO);
|
||||||
|
teamBdMemberCO.setTotalRecharge(BigDecimal.ZERO);
|
||||||
|
teamBdMemberCO.setBillTitle(TeamBillCycleUtils.parseBillBelongToDateRangeStr(TeamBillCycleUtils.getCalcBillBelong()));
|
||||||
|
|
||||||
|
return teamBdMemberCO;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 1. 查询BD关联的所有代理
|
// 1. 查询BD关联的所有代理
|
||||||
if (CollectionUtils.isEmpty(bdTeamList)) {
|
if (CollectionUtils.isEmpty(bdTeamList)) {
|
||||||
return Collections.emptyList();
|
return new TeamBdMemberCO();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. 获取团队ID集合
|
// 2. 获取团队ID集合
|
||||||
@ -94,9 +129,16 @@ public class TeamBdMemberBillListQryExe {
|
|||||||
userProfileGateway.mapByUserIds(agentIdSet));
|
userProfileGateway.mapByUserIds(agentIdSet));
|
||||||
|
|
||||||
// 7. 组装返回结果
|
// 7. 组装返回结果
|
||||||
return bdTeamList.stream()
|
List<TeamBdMemberBillCO> collect = bdTeamList.stream()
|
||||||
.map(bdTeam -> buildMemberBillCO(bdTeam, billCycleMap, teamProfileMap, userProfileMap, currentBillBelong))
|
.map(bdTeam -> buildMemberBillCO(bdTeam, billCycleMap, teamProfileMap, userProfileMap, currentBillBelong))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
TeamBdMemberCO teamBdMemberCO = new TeamBdMemberCO();
|
||||||
|
teamBdMemberCO.setMemberBillList(collect);
|
||||||
|
teamBdMemberCO.setTotalSalary(collect.stream().map(TeamBdMemberBillCO::getTeamSalaryAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||||
|
teamBdMemberCO.setTotalRecharge(collect.stream().map(TeamBdMemberBillCO::getTeamRechargeAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||||
|
teamBdMemberCO.setBillTitle(TeamBillCycleUtils.parseBillBelongToDateRangeStr(TeamBillCycleUtils.getCalcBillBelong()));
|
||||||
|
return teamBdMemberCO;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Collection<? extends BusinessDevelopmentTeam> buildBdTeamVO(List<TeamMember> teamMembers) {
|
private Collection<? extends BusinessDevelopmentTeam> buildBdTeamVO(List<TeamMember> teamMembers) {
|
||||||
@ -124,6 +166,7 @@ public class TeamBdMemberBillListQryExe {
|
|||||||
UserProfileDTO userProfile = userProfileMap.get(bdTeam.getAgentId());
|
UserProfileDTO userProfile = userProfileMap.get(bdTeam.getAgentId());
|
||||||
if (userProfile != null) {
|
if (userProfile != null) {
|
||||||
co.setAgentId(bdTeam.getAgentId());
|
co.setAgentId(bdTeam.getAgentId());
|
||||||
|
co.setAgentAccount(userProfile.getAccount());
|
||||||
co.setAgentName(userProfile.getUserNickname());
|
co.setAgentName(userProfile.getUserNickname());
|
||||||
co.setAgentAvatar(userProfile.getUserAvatar());
|
co.setAgentAvatar(userProfile.getUserAvatar());
|
||||||
}
|
}
|
||||||
@ -155,30 +198,10 @@ public class TeamBdMemberBillListQryExe {
|
|||||||
co.setTeamSalaryAmount(settleResult.getTotalSalary());
|
co.setTeamSalaryAmount(settleResult.getTotalSalary());
|
||||||
co.setTeamRechargeAmount(BigDecimal.ZERO);
|
co.setTeamRechargeAmount(BigDecimal.ZERO);
|
||||||
|
|
||||||
// BD收益计算(这里使用默认比例,实际应该从配置读取)
|
|
||||||
BigDecimal salaryRatio = new BigDecimal("0.03"); // 3%
|
|
||||||
BigDecimal rechargeRatio = new BigDecimal("0.05"); // 5%
|
|
||||||
|
|
||||||
co.setBdRatioSalary(salaryRatio.multiply(new BigDecimal("100"))); // 转换为百分比
|
|
||||||
co.setBdRatioRecharge(rechargeRatio.multiply(new BigDecimal("100")));
|
|
||||||
|
|
||||||
BigDecimal bdSalaryIncome = Optional.ofNullable(settleResult.getTotalSalary())
|
|
||||||
.orElse(BigDecimal.ZERO)
|
|
||||||
.multiply(salaryRatio);
|
|
||||||
BigDecimal bdRechargeIncome = Optional.ofNullable(BigDecimal.ZERO)
|
|
||||||
.orElse(BigDecimal.ZERO)
|
|
||||||
.multiply(rechargeRatio);
|
|
||||||
|
|
||||||
co.setBdIncomeSalary(bdSalaryIncome);
|
|
||||||
co.setBdIncomeRecharge(bdRechargeIncome);
|
|
||||||
} else {
|
} else {
|
||||||
// 如果没有账单周期,设置默认值
|
// 如果没有账单周期,设置默认值
|
||||||
co.setTeamSalaryAmount(BigDecimal.ZERO);
|
co.setTeamSalaryAmount(BigDecimal.ZERO);
|
||||||
co.setTeamRechargeAmount(BigDecimal.ZERO);
|
co.setTeamRechargeAmount(BigDecimal.ZERO);
|
||||||
co.setBdIncomeSalary(BigDecimal.ZERO);
|
|
||||||
co.setBdIncomeRecharge(BigDecimal.ZERO);
|
|
||||||
co.setBdRatioSalary(BigDecimal.ZERO);
|
|
||||||
co.setBdRatioRecharge(BigDecimal.ZERO);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return co;
|
return co;
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import com.red.circle.other.app.command.bd.query.TeamBdMonthlyIncomeQryExe;
|
|||||||
import com.red.circle.other.app.command.bd.query.TeamBdWithdrawExe;
|
import com.red.circle.other.app.command.bd.query.TeamBdWithdrawExe;
|
||||||
import com.red.circle.other.app.dto.clientobject.TeamBdMemberBillCO;
|
import com.red.circle.other.app.dto.clientobject.TeamBdMemberBillCO;
|
||||||
import com.red.circle.other.app.dto.clientobject.TeamBdMemberBillDetailCO;
|
import com.red.circle.other.app.dto.clientobject.TeamBdMemberBillDetailCO;
|
||||||
|
import com.red.circle.other.app.dto.clientobject.TeamBdMemberCO;
|
||||||
import com.red.circle.other.app.dto.clientobject.TeamBdMonthlyIncomeCO;
|
import com.red.circle.other.app.dto.clientobject.TeamBdMonthlyIncomeCO;
|
||||||
import com.red.circle.other.app.dto.cmd.TeamBdMemberBillCmd;
|
import com.red.circle.other.app.dto.cmd.TeamBdMemberBillCmd;
|
||||||
import com.red.circle.other.app.dto.cmd.TeamBdMemberBillDetailCmd;
|
import com.red.circle.other.app.dto.cmd.TeamBdMemberBillDetailCmd;
|
||||||
@ -34,7 +35,7 @@ public class TeamBdBillServiceImpl implements TeamBdBillService {
|
|||||||
private final TeamBdWithdrawExe teamBdWithdrawExe;
|
private final TeamBdWithdrawExe teamBdWithdrawExe;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TeamBdMemberBillCO> queryMemberBillList(TeamBdMemberBillCmd cmd) {
|
public TeamBdMemberCO queryMemberBillList(TeamBdMemberBillCmd cmd) {
|
||||||
return teamBdMemberBillListQryExe.execute(cmd);
|
return teamBdMemberBillListQryExe.execute(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -24,6 +24,11 @@ public class TeamBdMemberBillCO implements Serializable {
|
|||||||
@JsonSerialize(using = ToStringSerializer.class)
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
private Long agentId;
|
private Long agentId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 代理账号
|
||||||
|
*/
|
||||||
|
private String agentAccount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 代理用户名.
|
* 代理用户名.
|
||||||
*/
|
*/
|
||||||
@ -65,24 +70,4 @@ public class TeamBdMemberBillCO implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private BigDecimal teamRechargeAmount;
|
private BigDecimal teamRechargeAmount;
|
||||||
|
|
||||||
/**
|
|
||||||
* BD收益-薪资部分(单位:元).
|
|
||||||
*/
|
|
||||||
private BigDecimal bdIncomeSalary;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* BD收益-充值部分(单位:元).
|
|
||||||
*/
|
|
||||||
private BigDecimal bdIncomeRecharge;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* BD收益比例-薪资(%).
|
|
||||||
*/
|
|
||||||
private BigDecimal bdRatioSalary;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* BD收益比例-充值(%).
|
|
||||||
*/
|
|
||||||
private BigDecimal bdRatioRecharge;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,19 @@
|
|||||||
|
package com.red.circle.other.app.dto.clientobject;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class TeamBdMemberCO {
|
||||||
|
|
||||||
|
private String billTitle;
|
||||||
|
|
||||||
|
private BigDecimal totalRecharge;
|
||||||
|
|
||||||
|
private BigDecimal totalSalary;
|
||||||
|
|
||||||
|
private List<TeamBdMemberBillCO> memberBillList;
|
||||||
|
|
||||||
|
}
|
||||||
@ -43,6 +43,27 @@ public class BdHistoryCO {
|
|||||||
private BigDecimal settlementSalary;
|
private BigDecimal settlementSalary;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* BD收益-薪资部分(单位:元).
|
||||||
|
*/
|
||||||
|
private BigDecimal bdIncomeSalary;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BD收益-充值部分(单位:元).
|
||||||
|
*/
|
||||||
|
private BigDecimal bdIncomeRecharge;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BD收益比例-薪资(%).
|
||||||
|
*/
|
||||||
|
private BigDecimal bdRatioSalary;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BD收益比例-充值(%).
|
||||||
|
*/
|
||||||
|
private BigDecimal bdRatioRecharge;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
* 结算状态: PENDING(In Progress) | SUCCESS(Completed) | FAILED
|
* 结算状态: PENDING(In Progress) | SUCCESS(Completed) | FAILED
|
||||||
*/
|
*/
|
||||||
private String status;
|
private String status;
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package com.red.circle.other.app.service;
|
|||||||
|
|
||||||
import com.red.circle.other.app.dto.clientobject.TeamBdMemberBillCO;
|
import com.red.circle.other.app.dto.clientobject.TeamBdMemberBillCO;
|
||||||
import com.red.circle.other.app.dto.clientobject.TeamBdMemberBillDetailCO;
|
import com.red.circle.other.app.dto.clientobject.TeamBdMemberBillDetailCO;
|
||||||
|
import com.red.circle.other.app.dto.clientobject.TeamBdMemberCO;
|
||||||
import com.red.circle.other.app.dto.clientobject.TeamBdMonthlyIncomeCO;
|
import com.red.circle.other.app.dto.clientobject.TeamBdMonthlyIncomeCO;
|
||||||
import com.red.circle.other.app.dto.cmd.TeamBdMemberBillCmd;
|
import com.red.circle.other.app.dto.cmd.TeamBdMemberBillCmd;
|
||||||
import com.red.circle.other.app.dto.cmd.TeamBdMemberBillDetailCmd;
|
import com.red.circle.other.app.dto.cmd.TeamBdMemberBillDetailCmd;
|
||||||
@ -24,7 +25,7 @@ public interface TeamBdBillService {
|
|||||||
* @param cmd 查询命令
|
* @param cmd 查询命令
|
||||||
* @return 账单列表
|
* @return 账单列表
|
||||||
*/
|
*/
|
||||||
List<TeamBdMemberBillCO> queryMemberBillList(TeamBdMemberBillCmd cmd);
|
TeamBdMemberCO queryMemberBillList(TeamBdMemberBillCmd cmd);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询 BD 成员账单明细列表.
|
* 查询 BD 成员账单明细列表.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user