rwadurian/backend/services/reward-service/src
hailin 090c8b747e fix(reward): 修复 accountSequence 转 userId 时字母前缀导致的 BigInt 转换失败
问题描述:
- 社区权益激活后,用户收不到奖励
- 错误: SyntaxError: Cannot convert D25121400002 to a BigInt
- 原因: accountSequence 格式为 D25121400002 (D+日期+序号),直接 BigInt() 转换失败

修改方案:
- 新增 parseAccountSequenceToUserId() 辅助方法
- 如果 accountSequence 以字母开头,去掉第一个字符后再转 BigInt
- 影响 5 个方法: calculateProvinceTeamRight, calculateProvinceAreaRight,
  calculateCityTeamRight, calculateCityAreaRight, calculateCommunityRight

技术背景:
- accountSequence 格式: D25121400002 (用户) / S0000000001 (固定系统账户) / 9440000 (省系统)
- 省市系统账户在 authorization-service 动态创建,identity-service 中不存在
- reward-service 的 userId 字段实际业务中不被使用 (查询用 accountSequence)

潜在隐患:
1. userId 字段存储的不是 identity-service 中的真实 userId
   - D25121400002 -> 25121400002 (不是真实的自增 userId)
   - S0000000001 -> 1 (恰好匹配固定系统账户)
   - 9440000 -> 9440000 (省系统账户,本无字母前缀)
2. 如果未来 reward-service 需要与 identity-service 关联查询,可能出现问题
3. 建议后续考虑: 将 userId 改为可选字段,或完全移除该字段依赖

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 08:18:23 -08:00
..
api refactor!: 重构账户序列号格式 (BREAKING CHANGE) 2025-12-12 09:11:18 -08:00
application fix(reward): 待领取奖励转可结算使用accountSequence 2025-12-14 05:58:19 -08:00
config refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
domain fix(reward): 修复 accountSequence 转 userId 时字母前缀导致的 BigInt 转换失败 2025-12-14 08:18:23 -08:00
infrastructure fix(reward): 修复调用 authorization-service 时传递 userId 而非 accountSequence 的问题 2025-12-14 06:48:58 -08:00
shared refactor: use accountSequence as unified user identifier across all services 2025-12-10 13:55:03 -08:00
app.module.ts refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
main.ts fix(services): add Kafka microservice for @MessagePattern to work 2025-12-10 09:57:07 -08:00