diff --git a/backend/services/authorization-service/src/application/services/authorization-application.service.ts b/backend/services/authorization-service/src/application/services/authorization-application.service.ts index 62c89d8a..085e52b6 100644 --- a/backend/services/authorization-service/src/application/services/authorization-application.service.ts +++ b/backend/services/authorization-service/src/application/services/authorization-application.service.ts @@ -1727,6 +1727,11 @@ export class AuthorizationApplicationService { // 4. 检查权益状态 if (nearestAuthCity.benefitActive) { + // 权益已激活,全部给该市团队 + // 累加月度新增树数(用于月度考核) + nearestAuthCity.addMonthlyTrees(treeCount) + await this.authorizationRepository.save(nearestAuthCity) + return { distributions: [ { accountSequence: nearestAuthCity.userId.accountSequence, treeCount, reason: '市团队权益已激活' }, @@ -1765,13 +1770,20 @@ export class AuthorizationApplicationService { const distributions: Array<{ accountSequence: string; treeCount: number; reason: string }> = [] if (currentTeamCount >= initialTarget) { + // 已达标但权益未激活(可能是月度考核失败),全部给该市团队 + // 注:这种情况下应该由系统自动激活权益,但这里作为兜底处理 distributions.push({ accountSequence: nearestAuthCity.userId.accountSequence, treeCount, reason: '已达初始考核目标', }) + // 自动激活权益 await this.tryActivateBenefit(nearestAuthCity) + + // 累加月度新增树数(用于月度考核) + nearestAuthCity.addMonthlyTrees(treeCount) + await this.authorizationRepository.save(nearestAuthCity) } else { // toReachTarget: 还差多少棵达到考核目标(包括达标那一棵) // 业务规则:达标前的全部给上级/总部,超过达标点后才给该市团队 @@ -1800,7 +1812,7 @@ export class AuthorizationApplicationService { reason: `初始考核(${currentTeamCount}+${toReachTarget}=${initialTarget}/${initialTarget}),${parentReason}`, }) } - // 超过达标点的部分,给该市团队 + // 超过达标点的部分(第101棵开始),给该市团队 const afterTargetCount = treeCount - toReachTarget if (afterTargetCount > 0) { distributions.push({ @@ -1809,8 +1821,15 @@ export class AuthorizationApplicationService { reason: `考核达标后权益生效(第${initialTarget + 1}棵起)`, }) } + // 自动激活权益(本次认种使其达标) await this.tryActivateBenefit(nearestAuthCity) + + // 激活后累加月度新增树数(只计算归自己的那部分) + if (afterTargetCount > 0) { + nearestAuthCity.addMonthlyTrees(afterTargetCount) + await this.authorizationRepository.save(nearestAuthCity) + } } }