hailin
1621b75a47
feat(admin): 引荐关系树节点增加个人/团队预种份数展示
...
后端:
- ReferralNodeDto 新增 selfPrePlantingPortions, teamPrePlantingPortions
- user-detail.controller: getReferralTree 中并行调用
ReferralProxyService 批量获取所有节点的预种统计
(当前用户用 getPrePlantingStats,祖先+下级用 batchGetPrePlantingStats)
前端:
- ReferralNode 类型新增两个预种字段
- 引荐关系树节点(祖先链 + 递归展开节点)在"本人认种/团队认种"
下方新增一行"个人预种: X份 / 团队预种: Y份"
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 19:16:02 -08:00
hailin
ac15d6682a
feat(admin): 用户预种数量展示 & 授权申请照片查看
...
## 功能7:用户管理展示预种数量
### 需求
在用户管理(列表+详情页)展示个人及团队预种份数,
并支持跳转预种管理页查看团队中哪些ID购买了预种。
### 后端变更
referral-service — 新增内部 API:
- GET /internal/referral/pre-planting-stats/:accountSequence
- POST /internal/referral/pre-planting-stats/batch
从 TeamStatistics 表查询 selfPrePlantingPortions/teamPrePlantingPortions
admin-service:
- 新建 ReferralProxyService (src/referral/) 代理 referral-service 内部 API
- UserFullDetailDto 新增 selfPrePlantingPortions, teamPrePlantingPortions
- user-detail.controller 并行调用获取预种统计
- user.controller 批量获取用户列表预种统计
- UserListItemDto 新增 selfPrePlantingPortions, teamPrePlantingPortions
- pre-planting-config.controller 新增 teamOf 查询参数
→ 先从 referralQueryView 获取团队成员列表
→ 将 accountSequences 传递给 planting-service 过滤
planting-service:
- internal-pre-planting.controller 的 admin orders/positions 端点
新增 accountSequences 查询参数,支持按用户列表过滤
### 前端变更
admin-web:
- 用户列表页表格新增"个人预种(份)"、"团队预种(份)"两列
- 用户详情页新增预种统计卡片(个人/团队预种份数)
- 团队预种数字可点击,跳转 /pre-planting?teamOf={accountSequence}
- 预种管理页支持 teamOf URL 参数,团队过滤模式下显示提示条+返回链接
---
## 功能8:授权管理查看申请照片
### 需求
管理后台无法查看社区/市公司/省公司申请时提供的办公室照片。
原因:authorization-service 收到 officePhotoUrls 后只验证未持久化。
照片文件本身已存储在 MinIO,只需持久化 URL 到数据库。
### 后端变更
authorization-service:
- schema.prisma: AuthorizationRole 新增 officePhotoUrls String[] 字段
- authorization-role.aggregate: props/字段/getter/构造/toPersistence/所有工厂方法
- repository: save() create/update 块 + toDomain() 映射
- application service: 3个 self-apply 方法传递 officePhotoUrls 到 aggregate
- admin controller: queryAuthorizations 响应包含 officePhotoUrls
admin-service:
- schema.prisma: AuthorizationRoleQueryView 新增 officePhotoUrls 字段
- user-detail-query.repository 接口 + impl: 包含 officePhotoUrls
- user-detail.dto: AuthorizationRoleDto 新增 officePhotoUrls
### 前端变更
admin-web:
- 授权管理页表格新增"申请照片"列,点击弹出照片网格 Modal
- 照片支持点击放大(全屏 lightbox 覆盖层)
- 用户详情页授权信息 Tab 同样支持查看照片
- authorization.types.ts / userDetail.types.ts 类型更新
---
## 部署注意事项
1. authorization-service 需运行: npx prisma migrate dev --name add-office-photo-urls
2. admin-service 需运行: npx prisma migrate dev --name add-auth-role-office-photos
3. 需部署: authorization-service, admin-service, referral-service, planting-service, admin-web
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 03:09:17 -08:00
hailin
e2b2c17d38
feat(admin-web): 用户详情页引荐关系树优化
...
- 引荐关系节点显示团队认种量:本人认种 / 团队认种
- 无上级引荐人时显示"总部"节点
- 角色标签优化:社区权益→部门权益,区域→部门名称/城市名称
- 后端 ReferralNode 添加 teamAdoptionCount 字段
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 05:12:28 -08:00
hailin
f55ac7e9cb
feat(admin-web): 用户详情页显示权益考核记录
...
- 后端 admin-service 添加 getBenefitAssessments 查询方法
- 更新 AuthorizationDetailResponseDto 包含 benefitAssessments
- 前端用户详情页授权信息 Tab 新增权益考核记录表格
- 显示字段:考核月份、角色、区域、完成/需求、权益操作、
权益状态变化、有效期至、结果
- 添加权益操作类型样式:已激活(绿)、已续期(蓝)、已停用(红)、无变化(灰)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 04:42:51 -08:00
hailin
6a05150017
fix(admin-service): 用户详情页引荐人数改用实时查询
...
之前 directReferralCount 使用 CDC 同步的预计算字段(值为 0),
现在改为调用 getDirectReferralCount 实时查询
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 22:51:16 -08:00
hailin
d303cf076b
fix(admin-service): 引荐关系树实时统计本人认种和直推数量
...
问题:
- 引荐节点的"本人认种"和"引荐"显示为0
- user_query_view.personal_adoption_count 和
referral_query_view.direct_referral_count 没有被CDC更新
解决方案:
- getAncestors: 实时统计每个祖先的认种订单数和直推数
- getDirectReferrals: 实时统计每个下级的认种订单数和直推数
- getReferralTree API: 实时获取当前用户的统计数据
- 新增 getDirectReferralCount 方法
实时统计方式:
- 本人认种 = planting_order_query_view 中状态为 MINING_ENABLED 的订单数
- 直推数量 = referral_query_view 中 referrer_id 等于该用户的记录数
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 22:30:38 -08:00
hailin
7176bbd5c2
feat(admin-service): 用户详情页统计数据改用真实数据
...
- 移除前端"活跃引荐"统计卡片
- 添加 getPersonalAdoptionCount 方法从 PlantingPositionQueryView 获取个人认种量
- 添加 getTeamStats 方法计算团队地址数和团队认种量
- 修改 getFullDetail 使用新方法获取真实统计数据
- 团队地址数通过 ancestorPath 查询所有下级用户
- 团队认种量汇总所有团队成员的 effectiveTreeCount
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 21:23:18 -08:00
hailin
eccc637a02
fix(admin-service): 修复金额显示单位错误
...
移除错误的 1e8 乘除转换:
- 数据库存储的是实际金额 (Decimal(20,8)),不需要缩放
- decimalToBigint → decimalToString: 直接格式化为字符串
- 移除 controller 中不再需要的 formatDecimal 方法
- 更新接口类型: bigint → string (金额相关字段)
影响的接口:
- PlantingSummary.totalAmount
- PlantingLedgerItem.totalAmount
- WalletSummary 所有余额字段
- WalletLedgerItem.amount/balanceAfter
- SystemAccountLedger.amount/balanceAfter
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 21:15:28 -08:00
hailin
1c5fd9eaad
fix(admin-service): 修复 BigInt 序列化错误
...
日志输出时不再使用 JSON.stringify 序列化包含 BigInt 的对象,
改为直接输出关键字段值,避免 "Do not know how to serialize a BigInt" 错误
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 21:03:41 -08:00
hailin
5f6ecf9670
fix(admin): 用户详情页 USDT 改为绿积分 + 添加调试日志
...
前端修改:
- 钱包汇总: USDT 可用/冻结 → 绿积分 可用/冻结
- 认种汇总: 总金额 (USDT) → 总金额 (绿积分)
- 资产类型标签: USDT → 绿积分
后端修改:
- UserDetailController: 添加认种/钱包查询日志
- UserDetailQueryRepositoryImpl: 添加数据库查询日志
- 日志包含 accountSequence、查询结果、数据条数等信息
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 20:53:30 -08:00
hailin
f15bdeaef8
fix(admin-service): 用户详情查询改用 accountSequence
...
- 钱包/认种查询从 userId 改为 accountSequence 作为关联键
- 修复用户详情页钱包数据显示为0的问题
- accountSequence 是全局唯一业务标识,关联更可靠
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 20:43:36 -08:00
hailin
3d31e8beb9
feat(admin): 实现用户详情页面
...
前端 (admin-web):
- 新增用户详情页面 /users/[id]
- 实现推荐关系树可视化,支持点击节点切换视角
- 添加认种分类账Tab,显示汇总和订单明细
- 添加钱包分类账Tab,显示余额汇总和流水明细
- 添加授权信息Tab,显示角色、月度考核和系统账户流水
- 用户列表"查看详情"改为 Link 导航到详情页
后端 (admin-service):
- 新增 UserDetailController 提供详情页API
- 新增 UserDetailQueryRepository 查询CDC同步的数据
- API: GET /admin/users/:seq/full-detail
- API: GET /admin/users/:seq/referral-tree
- API: GET /admin/users/:seq/planting-ledger
- API: GET /admin/users/:seq/wallet-ledger
- API: GET /admin/users/:seq/authorization-detail
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 20:10:01 -08:00