From e3be12cd8b5733f99c7cf54854718604809ad146 Mon Sep 17 00:00:00 2001 From: hy001 Date: Fri, 29 May 2026 20:56:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=89=8B=E5=8A=A8=E5=B7=A5?= =?UTF-8?q?=E8=B5=84=E6=8C=89=E6=9C=88=E5=BA=A6=E8=B4=A6=E6=9C=9F=E5=8F=91?= =?UTF-8?q?=E6=94=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cmd/team/TeamManualSalaryPaymentCmd.java | 5 +++++ .../cmd/team/TeamManualSalaryPaymentQryCmd.java | 5 +++++ .../team/impl/TeamMemberTargetServiceImpl.java | 4 +++- .../TeamManualSalaryPaymentClientServiceImpl.java | 15 +++++++++++++-- ...mManualSalaryPaymentClientServiceImplTest.java | 3 ++- 5 files changed, 28 insertions(+), 4 deletions(-) diff --git a/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/model/cmd/team/TeamManualSalaryPaymentCmd.java b/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/model/cmd/team/TeamManualSalaryPaymentCmd.java index 20ecf358..40773025 100644 --- a/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/model/cmd/team/TeamManualSalaryPaymentCmd.java +++ b/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/model/cmd/team/TeamManualSalaryPaymentCmd.java @@ -33,6 +33,11 @@ public class TeamManualSalaryPaymentCmd extends Command { */ private List userIds; + /** + * 月度账期,格式 yyyyMM. 为空时使用当前月. + */ + private Integer billBelong; + /** * 后台操作人. */ diff --git a/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/model/cmd/team/TeamManualSalaryPaymentQryCmd.java b/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/model/cmd/team/TeamManualSalaryPaymentQryCmd.java index e8cca771..f2c9056e 100644 --- a/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/model/cmd/team/TeamManualSalaryPaymentQryCmd.java +++ b/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/model/cmd/team/TeamManualSalaryPaymentQryCmd.java @@ -32,6 +32,11 @@ public class TeamManualSalaryPaymentQryCmd extends PageCommand { */ private Long userId; + /** + * 月度账期,格式 yyyyMM. 为空时使用当前月. + */ + private Integer billBelong; + /** * 排序字段. */ diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/team/impl/TeamMemberTargetServiceImpl.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/team/impl/TeamMemberTargetServiceImpl.java index ab845576..d5dd1dfc 100644 --- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/team/impl/TeamMemberTargetServiceImpl.java +++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/team/impl/TeamMemberTargetServiceImpl.java @@ -826,8 +826,10 @@ public class TeamMemberTargetServiceImpl implements TeamMemberTargetService { public List listManualSalaryTargets(String sysOrigin, String countryCode, Collection userIds, Integer billBelong) { Criteria criteria = Criteria.where("sysOrigin").is(sysOrigin) - .and("history").is(Boolean.FALSE) .and("billBelong").is(billBelong); + if (Objects.equals(billBelong, getCalcBillBelong())) { + criteria.and("history").is(Boolean.FALSE); + } if (StringUtils.isNotBlank(countryCode)) { criteria.and("countryCode").in(countryCodeAliasSupport.getMatchCodes(countryCode)); diff --git a/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/team/impl/TeamManualSalaryPaymentClientServiceImpl.java b/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/team/impl/TeamManualSalaryPaymentClientServiceImpl.java index 350677de..abc365ca 100644 --- a/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/team/impl/TeamManualSalaryPaymentClientServiceImpl.java +++ b/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/team/impl/TeamManualSalaryPaymentClientServiceImpl.java @@ -86,8 +86,9 @@ public class TeamManualSalaryPaymentClientServiceImpl implements public PageResult page(TeamManualSalaryPaymentQryCmd cmd) { validatePage(cmd); + Integer billBelong = resolveBillBelong(cmd.getBillBelong()); List rows = buildRows(cmd.getSysOrigin(), cmd.getCountryCode(), - singletonUserId(cmd.getUserId()), TeamBillCycleUtils.getCalcBillBelong()); + singletonUserId(cmd.getUserId()), billBelong); rows = sortRows(rows, cmd.getSortField(), cmd.getSortOrder()); int cursor = 1; @@ -115,7 +116,7 @@ public class TeamManualSalaryPaymentClientServiceImpl implements public List pay(TeamManualSalaryPaymentCmd cmd) { validatePay(cmd); - Integer billBelong = TeamBillCycleUtils.getCalcBillBelong(); + Integer billBelong = resolveBillBelong(cmd.getBillBelong()); String lockKey = MANUAL_SALARY_LOCK_PREFIX + cmd.getSysOrigin() + ":" + cmd.getCountryCode() + ":" + billBelong; ResponseAssert.isTrue(CommonErrorCode.OPERATION_CONFLICT, @@ -746,6 +747,16 @@ public class TeamManualSalaryPaymentClientServiceImpl implements ResponseAssert.notBlank(ResponseErrorCode.REQUEST_PARAMETER_ERROR, cmd.getCountryCode()); } + private Integer resolveBillBelong(Integer billBelong) { + if (Objects.isNull(billBelong)) { + return TeamBillCycleUtils.getCalcBillBelong(); + } + int month = billBelong % 100; + ResponseAssert.isTrue(ResponseErrorCode.REQUEST_PARAMETER_ERROR, + billBelong >= 200001 && billBelong <= 209912 && month >= 1 && month <= 12); + return billBelong; + } + private String paymentId(Long userId, Integer billBelong) { return userId + "_" + billBelong; } diff --git a/rc-service/rc-service-other/other-inner-endpoint/src/test/java/com/red/circle/other/app/inner/service/team/impl/TeamManualSalaryPaymentClientServiceImplTest.java b/rc-service/rc-service-other/other-inner-endpoint/src/test/java/com/red/circle/other/app/inner/service/team/impl/TeamManualSalaryPaymentClientServiceImplTest.java index 8614c81b..8d8fcfcd 100644 --- a/rc-service/rc-service-other/other-inner-endpoint/src/test/java/com/red/circle/other/app/inner/service/team/impl/TeamManualSalaryPaymentClientServiceImplTest.java +++ b/rc-service/rc-service-other/other-inner-endpoint/src/test/java/com/red/circle/other/app/inner/service/team/impl/TeamManualSalaryPaymentClientServiceImplTest.java @@ -131,7 +131,7 @@ class TeamManualSalaryPaymentClientServiceImplTest { String region = "2046067717605224449"; Long userId = 2054591808909930498L; Long teamId = 2054614353419759617L; - Integer billBelong = TeamBillCycleUtils.getCalcBillBelong(); + Integer billBelong = 202605; String paymentId = userId + "_" + billBelong; TeamMemberTarget target = new TeamMemberTarget() .setId("target-id") @@ -202,6 +202,7 @@ class TeamManualSalaryPaymentClientServiceImplTest { List results = service.pay(new TeamManualSalaryPaymentCmd() .setSysOrigin(sysOrigin) .setCountryCode(countryCode) + .setBillBelong(billBelong) .setUserIds(List.of(userId))); assertEquals(1, results.size());