diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/BdLeaderSalarySettlementServiceImpl.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/BdLeaderSalarySettlementServiceImpl.java index 4157a6bb..3296f46f 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/BdLeaderSalarySettlementServiceImpl.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/BdLeaderSalarySettlementServiceImpl.java @@ -72,7 +72,6 @@ public class BdLeaderSalarySettlementServiceImpl implements BdLeaderSalarySettle // 按 BD Leader 用户 ID 分组(去重),并过滤掉管理员 Map> bdLeaderGroupMap = allBdLeaders.stream() .filter(info -> info.getBdLeadUserId() != null) - .filter(info -> !adminUserIds.contains(info.getBdLeadUserId())) .collect(Collectors.groupingBy(BusinessDevelopmentBaseInfo::getBdLeadUserId)); log.warn("共找到 {} 个 BD Leader", bdLeaderGroupMap.size()); @@ -83,7 +82,7 @@ public class BdLeaderSalarySettlementServiceImpl implements BdLeaderSalarySettle // 遍历每个 BD Leader 进行结算 for (Long bdLeaderUserId : bdLeaderGroupMap.keySet()) { try { - processSingleBdLeaderSettlement(bdLeaderUserId, billBelong, billTitle); + processSingleBdLeaderSettlement(bdLeaderUserId, billBelong, billTitle, adminUserIds); successCount++; } catch (Exception e) { log.error("BD Leader {} 工资结算失败", bdLeaderUserId, e); @@ -103,7 +102,7 @@ public class BdLeaderSalarySettlementServiceImpl implements BdLeaderSalarySettle @Override @Transactional(rollbackFor = Exception.class) - public BdLeaderSalarySettlementCO processSingleBdLeaderSettlement(Long bdLeaderUserId, Integer billBelong, String billTitle) { + public BdLeaderSalarySettlementCO processSingleBdLeaderSettlement(Long bdLeaderUserId, Integer billBelong, String billTitle, Set adminUserIds) { log.info("开始处理 BD Leader {} 的工资结算", bdLeaderUserId); // 1. 生成幂等业务号 @@ -186,10 +185,13 @@ public class BdLeaderSalarySettlementServiceImpl implements BdLeaderSalarySettle calculateLeaderSalary(record); // 6. 保存结算记录 + record.setIsAdmin(adminUserIds != null && adminUserIds.contains(bdLeaderUserId)); bdLeaderSalarySettlementRecordService.create(record); // 7. 如果工资大于 0,则发放工资 - if (record.getSettlementSalary() != null && record.getSettlementSalary().compareTo(BigDecimal.ZERO) > 0) { + if (record.getSettlementSalary() != null && + record.getSettlementSalary().compareTo(BigDecimal.ZERO) > 0 && + !Boolean.TRUE.equals(record.getIsAdmin())) { try { // 调用钱包服务发放工资 issueSalary(bdLeaderUserId, record); diff --git a/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/service/BdLeaderSalarySettlementService.java b/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/service/BdLeaderSalarySettlementService.java index b3645d3f..bc78eb0e 100644 --- a/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/service/BdLeaderSalarySettlementService.java +++ b/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/service/BdLeaderSalarySettlementService.java @@ -2,6 +2,8 @@ package com.red.circle.other.app.service; import com.red.circle.other.app.dto.clientobject.BdLeaderSalarySettlementCO; +import java.util.Set; + /** * BD Leader 工资结算服务. * @@ -26,5 +28,5 @@ public interface BdLeaderSalarySettlementService { * @param billTitle 结算周期标题 * @return 结算结果 */ - BdLeaderSalarySettlementCO processSingleBdLeaderSettlement(Long bdLeaderUserId, Integer billBelong, String billTitle); + BdLeaderSalarySettlementCO processSingleBdLeaderSettlement(Long bdLeaderUserId, Integer billBelong, String billTitle, Set adminUserIds); } diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/entity/bd/BdLeaderSalarySettlementRecord.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/entity/bd/BdLeaderSalarySettlementRecord.java index bdcd6d0c..87041a99 100644 --- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/entity/bd/BdLeaderSalarySettlementRecord.java +++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/entity/bd/BdLeaderSalarySettlementRecord.java @@ -52,6 +52,11 @@ public class BdLeaderSalarySettlementRecord implements Serializable { @JsonSerialize(using = ToStringSerializer.class) private Long bdLeaderUserId; + /** + * 是否是管理员 + */ + private Boolean isAdmin; + /** * 结算周期(格式:202501 表示2025年1月上半月,202502 表示2025年1月下半月). */