fix(authorization): correctly distribute rewards when assessment target is exactly reached

修复当认种恰好达标时的收益分配错误:
- 之前:恰好达标时全部收益给上级/总部,被授权用户无法获得任何收益
- 现在:达标时的那一棵收益归被授权用户所有

影响的分配方法:
- getCommunityRewardDistribution (社区)
- getProvinceTeamRewardDistribution (省团队)
- getCityTeamRewardDistribution (市团队)
- getProvinceAreaRewardDistribution (省区域)
- getCityAreaRewardDistribution (市区域)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
hailin 2025-12-12 03:19:09 -08:00
parent f60d4eac87
commit a54e9743ef
1 changed files with 94 additions and 113 deletions

View File

@ -1050,30 +1050,25 @@ export class AuthorizationApplicationService {
treeCount, treeCount,
reason: `初始考核中(${currentTeamCount}+${treeCount}=${afterPlantingCount}/${initialTarget})${parentCommunityReason}`, reason: `初始考核中(${currentTeamCount}+${treeCount}=${afterPlantingCount}/${initialTarget})${parentCommunityReason}`,
}) })
} else if (afterPlantingCount === initialTarget) {
// 本次认种恰好达标,全部给上级/总部,但需要激活权益
distributions.push({
accountSequence: parentCommunityAccountSequence,
treeCount,
reason: `初始考核达标(${currentTeamCount}+${treeCount}=${initialTarget})${parentCommunityReason}`,
})
// 自动激活权益(本次认种使其恰好达标)
await this.tryActivateBenefit(nearestCommunity)
} else { } else {
// 本次认种跨越考核达标点 (afterPlantingCount > initialTarget) // 本次认种达到或跨越考核达标点 (afterPlantingCount >= initialTarget)
// 考核前的部分给上级/总部 // 考核前的部分给上级/总部remaining 可能为0此时不添加分配记录
distributions.push({ if (remaining > 0) {
accountSequence: parentCommunityAccountSequence, distributions.push({
treeCount: remaining, accountSequence: parentCommunityAccountSequence,
reason: `初始考核(${currentTeamCount}+${remaining}=${initialTarget})${parentCommunityReason}`, treeCount: remaining,
}) reason: `初始考核(${currentTeamCount}+${remaining}=${initialTarget})${parentCommunityReason}`,
// 考核后的部分给该社区 })
distributions.push({ }
accountSequence: Number(nearestCommunity.userId.accountSequence), // 考核后的部分(达标后多出来的)给该社区
treeCount: treeCount - remaining, const afterTargetCount = treeCount - remaining
reason: `考核达标后权益生效`, if (afterTargetCount > 0) {
}) distributions.push({
accountSequence: Number(nearestCommunity.userId.accountSequence),
treeCount: afterTargetCount,
reason: `考核达标后权益生效`,
})
}
// 自动激活权益(本次认种使其达标) // 自动激活权益(本次认种使其达标)
await this.tryActivateBenefit(nearestCommunity) await this.tryActivateBenefit(nearestCommunity)
@ -1223,27 +1218,25 @@ export class AuthorizationApplicationService {
treeCount, treeCount,
reason: `初始考核中(${currentTeamCount}+${treeCount}=${afterPlantingCount}/${initialTarget})${parentReason}`, reason: `初始考核中(${currentTeamCount}+${treeCount}=${afterPlantingCount}/${initialTarget})${parentReason}`,
}) })
} else if (afterPlantingCount === initialTarget) {
// 本次认种恰好达标
distributions.push({
accountSequence: parentAccountSequence,
treeCount,
reason: `初始考核达标(${currentTeamCount}+${treeCount}=${initialTarget})${parentReason}`,
})
// 自动激活权益
await this.tryActivateBenefit(nearestAuthProvince)
} else { } else {
// 本次认种跨越达标点 // 本次认种达到或跨越达标点 (afterPlantingCount >= initialTarget)
distributions.push({ // 考核前的部分给上级/总部remaining 可能为0此时不添加分配记录
accountSequence: parentAccountSequence, if (remaining > 0) {
treeCount: remaining, distributions.push({
reason: `初始考核(${currentTeamCount}+${remaining}=${initialTarget})${parentReason}`, accountSequence: parentAccountSequence,
}) treeCount: remaining,
distributions.push({ reason: `初始考核(${currentTeamCount}+${remaining}=${initialTarget})${parentReason}`,
accountSequence: Number(nearestAuthProvince.userId.accountSequence), })
treeCount: treeCount - remaining, }
reason: '考核达标后权益生效', // 考核后的部分(达标后多出来的)给该省团队
}) const afterTargetCount = treeCount - remaining
if (afterTargetCount > 0) {
distributions.push({
accountSequence: Number(nearestAuthProvince.userId.accountSequence),
treeCount: afterTargetCount,
reason: '考核达标后权益生效',
})
}
// 自动激活权益(本次认种使其达标) // 自动激活权益(本次认种使其达标)
await this.tryActivateBenefit(nearestAuthProvince) await this.tryActivateBenefit(nearestAuthProvince)
} }
@ -1354,32 +1347,27 @@ export class AuthorizationApplicationService {
reason: `初始考核中(${currentTeamCount}+${treeCount}=${afterPlantingCount}/${initialTarget}),进系统省账户`, reason: `初始考核中(${currentTeamCount}+${treeCount}=${afterPlantingCount}/${initialTarget}),进系统省账户`,
isSystemAccount: true, isSystemAccount: true,
}) })
} else if (afterPlantingCount === initialTarget) {
// 本次认种恰好达标,全部进系统省账户,但需要激活权益
distributions.push({
accountSequence: systemProvinceAccountId,
treeCount,
reason: `初始考核达标(${currentTeamCount}+${treeCount}=${initialTarget}),进系统省账户`,
isSystemAccount: true,
})
// 自动激活权益
await this.tryActivateBenefit(provinceCompany)
} else { } else {
// 本次认种跨越考核达标点 // 本次认种达到或跨越考核达标点 (afterPlantingCount >= initialTarget)
// 考核前的部分进系统省账户 // 考核前的部分进系统省账户remaining 可能为0此时不添加分配记录
distributions.push({ if (remaining > 0) {
accountSequence: systemProvinceAccountId, distributions.push({
treeCount: remaining, accountSequence: systemProvinceAccountId,
reason: `初始考核(${currentTeamCount}+${remaining}=${initialTarget}),进系统省账户`, treeCount: remaining,
isSystemAccount: true, reason: `初始考核(${currentTeamCount}+${remaining}=${initialTarget}),进系统省账户`,
}) isSystemAccount: true,
// 考核后的部分给该省公司 })
distributions.push({ }
accountSequence: Number(provinceCompany.userId.accountSequence), // 考核后的部分(达标后多出来的)给该省公司
treeCount: treeCount - remaining, const afterTargetCount = treeCount - remaining
reason: '考核达标后权益生效', if (afterTargetCount > 0) {
isSystemAccount: false, distributions.push({
}) accountSequence: Number(provinceCompany.userId.accountSequence),
treeCount: afterTargetCount,
reason: '考核达标后权益生效',
isSystemAccount: false,
})
}
// 自动激活权益 // 自动激活权益
await this.tryActivateBenefit(provinceCompany) await this.tryActivateBenefit(provinceCompany)
} }
@ -1525,27 +1513,25 @@ export class AuthorizationApplicationService {
treeCount, treeCount,
reason: `初始考核中(${currentTeamCount}+${treeCount}=${afterPlantingCount}/${initialTarget})${parentReason}`, reason: `初始考核中(${currentTeamCount}+${treeCount}=${afterPlantingCount}/${initialTarget})${parentReason}`,
}) })
} else if (afterPlantingCount === initialTarget) {
// 本次认种恰好达标
distributions.push({
accountSequence: parentAccountSequence,
treeCount,
reason: `初始考核达标(${currentTeamCount}+${treeCount}=${initialTarget})${parentReason}`,
})
// 自动激活权益
await this.tryActivateBenefit(nearestAuthCity)
} else { } else {
// 本次认种跨越达标点 // 本次认种达到或跨越达标点 (afterPlantingCount >= initialTarget)
distributions.push({ // 考核前的部分给上级/总部remaining 可能为0此时不添加分配记录
accountSequence: parentAccountSequence, if (remaining > 0) {
treeCount: remaining, distributions.push({
reason: `初始考核(${currentTeamCount}+${remaining}=${initialTarget})${parentReason}`, accountSequence: parentAccountSequence,
}) treeCount: remaining,
distributions.push({ reason: `初始考核(${currentTeamCount}+${remaining}=${initialTarget})${parentReason}`,
accountSequence: Number(nearestAuthCity.userId.accountSequence), })
treeCount: treeCount - remaining, }
reason: '考核达标后权益生效', // 考核后的部分(达标后多出来的)给该市团队
}) const afterTargetCount = treeCount - remaining
if (afterTargetCount > 0) {
distributions.push({
accountSequence: Number(nearestAuthCity.userId.accountSequence),
treeCount: afterTargetCount,
reason: '考核达标后权益生效',
})
}
// 自动激活权益(本次认种使其达标) // 自动激活权益(本次认种使其达标)
await this.tryActivateBenefit(nearestAuthCity) await this.tryActivateBenefit(nearestAuthCity)
} }
@ -1656,32 +1642,27 @@ export class AuthorizationApplicationService {
reason: `初始考核中(${currentTeamCount}+${treeCount}=${afterPlantingCount}/${initialTarget}),进系统市账户`, reason: `初始考核中(${currentTeamCount}+${treeCount}=${afterPlantingCount}/${initialTarget}),进系统市账户`,
isSystemAccount: true, isSystemAccount: true,
}) })
} else if (afterPlantingCount === initialTarget) {
// 本次认种恰好达标,全部进系统市账户,但需要激活权益
distributions.push({
accountSequence: systemCityAccountId,
treeCount,
reason: `初始考核达标(${currentTeamCount}+${treeCount}=${initialTarget}),进系统市账户`,
isSystemAccount: true,
})
// 自动激活权益
await this.tryActivateBenefit(cityCompany)
} else { } else {
// 本次认种跨越考核达标点 // 本次认种达到或跨越考核达标点 (afterPlantingCount >= initialTarget)
// 考核前的部分进系统市账户 // 考核前的部分进系统市账户remaining 可能为0此时不添加分配记录
distributions.push({ if (remaining > 0) {
accountSequence: systemCityAccountId, distributions.push({
treeCount: remaining, accountSequence: systemCityAccountId,
reason: `初始考核(${currentTeamCount}+${remaining}=${initialTarget}),进系统市账户`, treeCount: remaining,
isSystemAccount: true, reason: `初始考核(${currentTeamCount}+${remaining}=${initialTarget}),进系统市账户`,
}) isSystemAccount: true,
// 考核后的部分给该市公司 })
distributions.push({ }
accountSequence: Number(cityCompany.userId.accountSequence), // 考核后的部分(达标后多出来的)给该市公司
treeCount: treeCount - remaining, const afterTargetCount = treeCount - remaining
reason: '考核达标后权益生效', if (afterTargetCount > 0) {
isSystemAccount: false, distributions.push({
}) accountSequence: Number(cityCompany.userId.accountSequence),
treeCount: afterTargetCount,
reason: '考核达标后权益生效',
isSystemAccount: false,
})
}
// 自动激活权益 // 自动激活权益
await this.tryActivateBenefit(cityCompany) await this.tryActivateBenefit(cityCompany)
} }