新增bd 两个more页面

This commit is contained in:
tianfeng 2025-10-31 11:17:18 +08:00
parent d1bca6f78f
commit 41e53e8efc
9 changed files with 363 additions and 0 deletions

View File

@ -280,6 +280,21 @@ public class TeamBdRestController extends BaseController {
return teamBdHistoryService.queryBdHistory(cmd);
}
/**
* 查询BD历史记录详情More页面
*
* @param cmd 查询命令
* @return BD历史记录详情
* @eo.name 查询BD历史记录详情
* @eo.url /history/more
* @eo.method get
* @eo.request-type formdata
*/
@GetMapping("/history/more")
public BdHistoryMoreCO queryBdHistoryMore(@Validated BdHistoryMoreQryCmd cmd) {
return teamBdHistoryService.queryBdHistoryMore(cmd);
}
/**
* 查询BD Leader历史记录
*
@ -295,5 +310,20 @@ public class TeamBdRestController extends BaseController {
return teamBdHistoryService.queryBdLeaderHistory(cmd);
}
/**
* 查询BD Leader历史记录详情More页面
*
* @param cmd 查询命令
* @return BD Leader历史记录详情
* @eo.name 查询BD Leader历史记录详情
* @eo.url /leader/history/more
* @eo.method get
* @eo.request-type formdata
*/
@GetMapping("/leader/history/more")
public BdLeaderHistoryMoreCO queryBdLeaderHistoryMore(@Validated BdLeaderHistoryMoreQryCmd cmd) {
return teamBdHistoryService.queryBdLeaderHistoryMore(cmd);
}
}

View File

@ -1,10 +1,14 @@
package com.red.circle.other.app.service.team;
import com.red.circle.other.app.dto.clientobject.team.*;
import com.red.circle.other.app.dto.cmd.team.BdHistoryMoreQryCmd;
import com.red.circle.other.app.dto.cmd.team.BdHistoryQryCmd;
import com.red.circle.other.app.dto.cmd.team.BdLeaderHistoryMoreQryCmd;
import com.red.circle.other.app.dto.cmd.team.BdLeaderHistoryQryCmd;
import com.red.circle.other.infra.database.mongo.entity.bd.BdLeaderSalarySettlementRecord;
import com.red.circle.other.infra.database.mongo.entity.bd.BdSalarySettlementRecord;
import com.red.circle.other.infra.database.mongo.entity.bd.detail.BdLeaderTeamMemberDetail;
import com.red.circle.other.infra.database.mongo.entity.bd.detail.BdTeamMemberDetail;
import com.red.circle.other.infra.enums.BdSettlementStatus;
import com.red.circle.tool.core.collection.CollectionUtils;
import com.red.circle.tool.core.text.StringUtils;
@ -149,6 +153,122 @@ public class TeamBdHistoryServiceImpl implements TeamBdHistoryService {
return summary;
}
@Override
public BdHistoryMoreCO queryBdHistoryMore(BdHistoryMoreQryCmd cmd) {
Long userId = cmd.getReqUserId();
String sysOrigin = cmd.getReqSysOrigin().getOrigin();
Integer billBelong = cmd.getBillBelong();
// 构建查询条件
Query query = new Query();
query.addCriteria(Criteria.where("bdUserId").is(userId));
query.addCriteria(Criteria.where("sysOrigin").is(sysOrigin));
query.addCriteria(Criteria.where("billBelong").is(billBelong));
// 查询结算记录
BdSalarySettlementRecord record = mongoTemplate.findOne(
query, BdSalarySettlementRecord.class);
// 构建返回结果
BdHistoryMoreCO result = new BdHistoryMoreCO();
result.setPeriod(formatPeriod(billBelong));
if (record == null) {
result.setTeamTotalRecharge(BigDecimal.ZERO);
result.setTeamTotalSalary(BigDecimal.ZERO);
result.setMemberDetails(new ArrayList<>());
return result;
}
// 设置汇总数据
result.setTeamTotalRecharge(record.getTeamRechargeAmount() != null ?
record.getTeamRechargeAmount() : BigDecimal.ZERO);
result.setTeamTotalSalary(record.getTeamSalaryAmount() != null ?
record.getTeamSalaryAmount() : BigDecimal.ZERO);
// 转换成员明细
List<BdTeamMemberDetailCO> memberDetails = new ArrayList<>();
if (!CollectionUtils.isEmpty(record.getMemberDetails())) {
memberDetails = record.getMemberDetails().stream()
.map(this::convertToBdTeamMemberDetailCO)
.toList();
}
result.setMemberDetails(memberDetails);
return result;
}
@Override
public BdLeaderHistoryMoreCO queryBdLeaderHistoryMore(BdLeaderHistoryMoreQryCmd cmd) {
Long userId = cmd.getReqUserId();
String sysOrigin = cmd.getReqSysOrigin().getOrigin();
Integer billBelong = cmd.getBillBelong();
// 构建查询条件
Query query = new Query();
query.addCriteria(Criteria.where("bdLeaderUserId").is(userId));
query.addCriteria(Criteria.where("sysOrigin").is(sysOrigin));
query.addCriteria(Criteria.where("billBelong").is(billBelong));
// 查询结算记录
BdLeaderSalarySettlementRecord record = mongoTemplate.findOne(
query, BdLeaderSalarySettlementRecord.class);
// 构建返回结果
BdLeaderHistoryMoreCO result = new BdLeaderHistoryMoreCO();
result.setPeriod(formatPeriod(billBelong));
if (record == null) {
result.setTeamSalary(BigDecimal.ZERO);
result.setBdNumber(0);
result.setMemberDetails(new ArrayList<>());
return result;
}
// 设置汇总数据
result.setTeamSalary(record.getTeamSalaryAmount() != null ?
record.getTeamSalaryAmount() : BigDecimal.ZERO);
result.setBdNumber(record.getBdNumber() != null ? record.getBdNumber() : 0);
// 转换成员明细
List<BdLeaderTeamMemberDetailCO> memberDetails = new ArrayList<>();
if (!CollectionUtils.isEmpty(record.getMemberDetails())) {
memberDetails = record.getMemberDetails().stream()
.map(this::convertToBdLeaderTeamMemberDetailCO)
.toList();
}
result.setMemberDetails(memberDetails);
return result;
}
/**
* 转换BD团队成员明细
*/
private BdTeamMemberDetailCO convertToBdTeamMemberDetailCO(BdTeamMemberDetail detail) {
BdTeamMemberDetailCO co = new BdTeamMemberDetailCO();
co.setUserId(detail.getUserId());
co.setUserName(detail.getUserName());
co.setUserAvatar(detail.getUserAvatar());
co.setSalary(detail.getSalary() != null ? detail.getSalary() : BigDecimal.ZERO);
co.setRecharge(detail.getRecharge() != null ? detail.getRecharge() : BigDecimal.ZERO);
co.setHostCount(detail.getHostCount() != null ? detail.getHostCount() : 0);
return co;
}
/**
* 转换BD Leader团队成员明细
*/
private BdLeaderTeamMemberDetailCO convertToBdLeaderTeamMemberDetailCO(BdLeaderTeamMemberDetail detail) {
BdLeaderTeamMemberDetailCO co = new BdLeaderTeamMemberDetailCO();
co.setBdUserId(detail.getBdUserId());
co.setBdUserName(detail.getBdUserName());
co.setBdUserAvatar(detail.getBdUserAvatar());
co.setSalary(detail.getSalary() != null ? detail.getSalary() : BigDecimal.ZERO);
co.setAgencyCount(detail.getAgencyCount() != null ? detail.getAgencyCount() : 0);
return co;
}
/**
* 转换BD结算记录为DTO
*/

View File

@ -0,0 +1,35 @@
package com.red.circle.other.app.dto.clientobject.team;
import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.util.List;
/**
* BD历史记录详情
*/
@Data
@Accessors(chain = true)
public class BdHistoryMoreCO {
/**
* 结算周期格式2025.10.01-2025.10.15
*/
private String period;
/**
* 团队总充值美元
*/
private BigDecimal teamTotalRecharge;
/**
* 团队总工资美元
*/
private BigDecimal teamTotalSalary;
/**
* 团队成员明细列表
*/
private List<BdTeamMemberDetailCO> memberDetails;
}

View File

@ -0,0 +1,35 @@
package com.red.circle.other.app.dto.clientobject.team;
import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.util.List;
/**
* BD Leader历史记录详情
*/
@Data
@Accessors(chain = true)
public class BdLeaderHistoryMoreCO {
/**
* 结算周期格式2025.10.01-2025.10.15
*/
private String period;
/**
* 团队工资总和美元
*/
private BigDecimal teamSalary;
/**
* BD 数量
*/
private Integer bdNumber;
/**
* BD 成员明细列表
*/
private List<BdLeaderTeamMemberDetailCO> memberDetails;
}

View File

@ -0,0 +1,42 @@
package com.red.circle.other.app.dto.clientobject.team;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
/**
* BD Leader团队成员明细
*/
@Data
@Accessors(chain = true)
public class BdLeaderTeamMemberDetailCO {
/**
* BD 用户 ID
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long bdUserId;
/**
* BD 用户名称
*/
private String bdUserName;
/**
* BD 用户头像
*/
private String bdUserAvatar;
/**
* 工资金额美元
*/
private BigDecimal salary;
/**
* Agency 数量
*/
private Integer agencyCount;
}

View File

@ -0,0 +1,47 @@
package com.red.circle.other.app.dto.clientobject.team;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
/**
* BD团队成员明细
*/
@Data
@Accessors(chain = true)
public class BdTeamMemberDetailCO {
/**
* 用户 ID
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long userId;
/**
* 用户名称
*/
private String userName;
/**
* 用户头像
*/
private String userAvatar;
/**
* 工资金额美元
*/
private BigDecimal salary;
/**
* 充值金额美元
*/
private BigDecimal recharge;
/**
* Host 数量
*/
private Integer hostCount;
}

View File

@ -0,0 +1,20 @@
package com.red.circle.other.app.dto.cmd.team;
import com.red.circle.common.business.dto.cmd.AppExtCommand;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* BD历史记录详情查询命令
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class BdHistoryMoreQryCmd extends AppExtCommand {
/**
* 结算周期格式202501 表示2025年1月上半月202502 表示2025年1月下半月
*/
@NotNull(message = "结算周期不能为空")
private Integer billBelong;
}

View File

@ -0,0 +1,20 @@
package com.red.circle.other.app.dto.cmd.team;
import com.red.circle.common.business.dto.cmd.AppExtCommand;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* BD Leader历史记录详情查询命令
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class BdLeaderHistoryMoreQryCmd extends AppExtCommand {
/**
* 结算周期格式202501 表示2025年1月上半月202502 表示2025年1月下半月
*/
@NotNull(message = "结算周期不能为空")
private Integer billBelong;
}

View File

@ -1,8 +1,12 @@
package com.red.circle.other.app.service.team;
import com.red.circle.other.app.dto.clientobject.team.BdHistoryMoreCO;
import com.red.circle.other.app.dto.clientobject.team.BdHistorySummaryCO;
import com.red.circle.other.app.dto.clientobject.team.BdLeaderHistoryMoreCO;
import com.red.circle.other.app.dto.clientobject.team.BdLeaderHistorySummaryCO;
import com.red.circle.other.app.dto.cmd.team.BdHistoryMoreQryCmd;
import com.red.circle.other.app.dto.cmd.team.BdHistoryQryCmd;
import com.red.circle.other.app.dto.cmd.team.BdLeaderHistoryMoreQryCmd;
import com.red.circle.other.app.dto.cmd.team.BdLeaderHistoryQryCmd;
/**
@ -19,4 +23,14 @@ public interface TeamBdHistoryService {
* 查询BD Leader历史记录
*/
BdLeaderHistorySummaryCO queryBdLeaderHistory(BdLeaderHistoryQryCmd cmd);
/**
* 查询BD历史记录详情More页面
*/
BdHistoryMoreCO queryBdHistoryMore(BdHistoryMoreQryCmd cmd);
/**
* 查询BD Leader历史记录详情More页面
*/
BdLeaderHistoryMoreCO queryBdLeaderHistoryMore(BdLeaderHistoryMoreQryCmd cmd);
}