hailin
c22ce4ecc4
fix(reporting-service): 将过期收益累加到总部储蓄账户统计
...
- 修改 assembleFixedAccounts 方法接受过期收益总额参数
- 将过期分享收益累加到 HQ_COMMUNITY (S0000000001) 的累计收入中
- 添加日志记录累加过程
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 05:53:51 -08:00
hailin
db833fdf45
fix(wallet-service): 修复系统划转请求 DTO 验证错误
...
- 为 SystemWithdrawalRequestDTO 添加 class-validator 装饰器
- 添加 @ApiProperty 装饰器用于 Swagger 文档
- 使用 @Type(() => Number) 自动转换 amount 类型
- 简化验证逻辑,移除冗余的手动验证
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 05:52:36 -08:00
hailin
02fa87f6c8
fix(admin-web): 过滤掉不存在的固定系统账户
...
- 添加 filter 过滤掉 data 为 null 的账户
- 修复空白卡片显示问题(账户数据不存在时不显示卡片)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 05:41:58 -08:00
hailin
04a23a30a4
fix(admin-web): 修复系统划转服务响应解析路径
...
- 所有方法改为使用 .data.data 解析响应数据
- API响应结构为 { success, data: { code, message, data } }
- 修复 "e.map is not a function" 错误
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 05:32:48 -08:00
hailin
4f2f808484
feat(wallet-service): 实现 Outbox Pattern 保证系统划转事件发布的可靠性
...
实现内容:
- 添加 OutboxEvent 模型到 schema.prisma
- 创建 OutboxRepository 服务处理事件持久化
- 创建 OutboxPublisherService 后台轮询发布事件到 Kafka
- 修改 SystemWithdrawalApplicationService 将事件写入事务内
- 添加数据库迁移文件创建 outbox_events 表
技术细节:
- 业务数据和事件数据在同一个数据库事务中写入
- 后台任务每秒轮询 outbox_events 表,发布 PENDING 状态事件
- 事件发布后标记为 SENT,等待消费方确认后标记为 CONFIRMED
- 超时未确认的事件自动重试(指数退避策略)
- 保证事件不丢失,即使 Kafka 暂时不可用
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 05:15:07 -08:00
hailin
28f1e26400
fix(admin-web): 修复系统账户划转API调用问题
...
问题分析:
1. ACCOUNT_NAME endpoint 使用路径参数,但后端使用 query 参数
2. apiClient 响应拦截器已解包 response.data,service 解析路径多一层
3. SystemAccount 接口 name 字段与后端 accountName 不匹配
修复内容:
- endpoints.ts: ACCOUNT_NAME 改为基础路径,通过 params 传参
- systemWithdrawalService.ts:
- getAccounts() 解析路径从 data.data 改为 data
- getAccountName() 使用 query 参数方式调用
- request() 解析路径修正
- system-withdrawal.types.ts: SystemAccount.name -> accountName
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 04:55:20 -08:00
hailin
d16ad81d62
fix(wallet-service): 完善系统账户转出分类账memo信息
...
- memo 格式更新为包含完整信息:
- 接收方账户ID
- 接收方姓名
- 接收方钱包地址(缩略显示)
- 操作员姓名/ID
- 备注(如有)
- payloadJson 新增 toAddress 字段存储完整地址
示例: "转账至 D25010100001 (张三) | 地址: 0x1234...5678 | 操作员: 管理员A | 备注: 奖励发放"
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 04:52:00 -08:00
hailin
6350b36e1a
feat(reporting, admin-web): 添加省/市区域账户累计转出统计
...
- 后端 reporting-service: RegionAccountInfo 和汇总接口添加 totalTransferred 字段
- 后端 wallet-service client: 更新 AllSystemAccountsResponse 类型定义
- 前端 admin-web: SystemAccountsTab 组件显示累计转出列
- 前端类型: RegionAccountsSummary 添加 totalTransferred 字段
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 04:45:56 -08:00
hailin
27e64819b7
feat(wallet-service): 省/市区域账户增加累计转出字段
...
- provinceAccounts 和 cityAccounts 返回结构增加 totalTransferred 字段
- 完善分类账统计,与固定系统账户保持一致
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 04:39:47 -08:00
hailin
07fe3e3140
fix(admin-web): 修复划转记录API响应解析
...
- apiClient 响应拦截器已解包 response.data
- 修正取值路径为 response.data 而非 response.data.data
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 04:29:02 -08:00
hailin
06fc8aa5d9
fix(admin-web): 修复划转记录页面报错问题
...
- 适配后端返回格式:orders -> items, pageSize -> limit
- 解决 Cannot read properties of undefined (reading 'length') 错误
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 04:28:07 -08:00
hailin
230e0d98b6
chore(admin-web): 隐藏分类账明细Tab
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 04:21:15 -08:00
hailin
78fa354117
fix(wallet-service): 修复系统账户余额统计不一致问题
...
- 账户余额改为 usdtAvailable + settleableUsdt,与累计收入统计保持一致
- 解决社区权益进入 settleableUsdt 导致的余额与累计收入不匹配问题
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 04:15:42 -08:00
hailin
5c7cb616a7
feat(wallet-service): 添加运营1和积分股池到系统划转账户列表
...
- 添加 S0000000002 (运营1) 和 S0000000004 (积分股池) 到允许转出白名单
- 更新系统账户名称映射与前端保持一致
- 为 S0000000006 手续费归集账户添加兼容逻辑,当余额为0时从提现订单表统计历史手续费
- 优化过期奖励处理,按分配类型分别记录流水便于明细查看
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 03:44:46 -08:00
hailin
4f55d86050
feat(mobile-app): 更新客服联系方式
...
- 客服微信1: liulianhuanghou1
- 客服微信2: liulianhuanghou2
- 客服QQ1: 1502109619
- 客服QQ2: 2171447109
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 03:10:50 -08:00
hailin
fa7b45ec2f
fix(wallet-service, admin-web): 修复系统账户划转金额类型问题
...
- wallet-service: 支持 amount 为字符串或数字类型,添加类型转换
- admin-web: 改进错误处理,正确提取 Axios 错误消息
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 03:01:52 -08:00
hailin
1b237778ee
feat(mobile-app): 添加联系客服功能
...
在个人中心设置菜单中添加"联系客服"入口,点击后显示弹窗,
用户可以查看客服的QQ号和微信号,并支持一键复制到剪贴板。
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 23:56:59 -08:00
hailin
efb428ef31
fix(admin-web): 调换运营1和运营2名称
...
S0000000002 → 运营1
S0000000003 → 运营2
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 23:42:47 -08:00
hailin
6f52956c42
fix(admin-web): 修正系统账户显示名称映射
...
S0000000001 → 总部储蓄 (原运营1)
S0000000003 → 运营1 (原总部储蓄)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 23:37:45 -08:00
hailin
9a4c984bd2
fix(admin-web): 添加 SystemAccountDTO.accountSequence 类型字段
...
后端 wallet-service 返回的固定账户数据包含 accountSequence 字段,
前端类型定义缺少该字段导致编译失败。
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 23:27:36 -08:00
hailin
1354055f09
fix(admin-web): 修复固定账户明细显示错误
...
问题:点击某账户卡片时显示其他账户的明细
原因:前端硬编码了 accountSequence 与字段名的对应关系,与后端映射不一致
修复:从后端返回数据中读取真实的 accountSequence,而不是硬编码
- accounts 数组现在从 data.xxx.accountSequence 动态获取序列号
- 更新类型定义注释,说明序列号由后端分配
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 23:24:09 -08:00
hailin
eb40b658f6
revert(wallet-service): 回滚 fixedAccountTypes 映射修改
...
撤销错误的账户类型映射修改,恢复原始映射:
- S0000000001 → HQ_COMMUNITY
- S0000000002 → COST_ACCOUNT
- S0000000003 → OPERATION_ACCOUNT
修改后端映射会影响 reward-service、authorization-service 等多个服务。
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 23:22:22 -08:00
hailin
d28723f141
fix(wallet-service): 修正固定账户类型映射顺序
...
修复 getAllSystemAccounts 中 fixedAccountTypes 映射错误:
- S0000000001 应为 COST_ACCOUNT (运营1),而非 HQ_COMMUNITY
- S0000000002 应为 OPERATION_ACCOUNT (运营2),而非 COST_ACCOUNT
- S0000000003 应为 HQ_COMMUNITY (总部储蓄),而非 OPERATION_ACCOUNT
此修复确保固定账户的余额、收入和分类账明细正确对应。
同时移除前端调试日志。
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 23:20:41 -08:00
hailin
7766a9caba
style(admin-web): 隐藏仪表板热钱包余额的单位标签
...
移除公共账户和因子卡片的 dUSDT 和 KAVA 单位显示,保持界面简洁一致。
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 23:19:19 -08:00
hailin
fa0fd3adb3
debug(admin-web): 添加分类账数据匹配调试日志
...
添加 console.log 输出,用于调试固定账户明细数据匹配问题。
请在浏览器开发者工具控制台查看输出,确认后端返回的数据格式。
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 23:13:00 -08:00
hailin
7744abf57d
fix(reporting-service): 修复 DashboardController 的依赖注入问题
...
在 ApiModule 中导入 RedisModule,使 HotWalletBalanceCacheService
可以被 DashboardController 注入使用。
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 23:12:24 -08:00
hailin
8dba325499
feat(dashboard): 添加热钱包余额实时显示(公共账户/因子)
...
- blockchain-service: 扩展调度器同时缓存 dUSDT 和 KAVA 原生代币余额到 Redis
- Redis Key: hot_wallet:dusdt_balance:KAVA, hot_wallet:native_balance:KAVA
- 每5秒更新,TTL 30秒
- reporting-service: 添加热钱包余额读取服务和 API
- 新增 HotWalletBalanceCacheService 从 Redis 读取缓存
- 新增 GET /v1/dashboard/hot-wallet-balance 接口
- admin-web: 仪表板添加热钱包余额显示
- 公共账户显示 dUSDT 余额
- 因子显示 KAVA 原生代币余额
- 每15秒自动刷新
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 23:04:21 -08:00
hailin
e1aec6c2c3
refactor(admin-web): 固定账户明细改为在公共区域显示
...
将固定系统账户的分类账明细从每个卡片内部展开改为在卡片网格下方
的公共区域显示。点击任一账户的"查看明细"按钮,明细表格在下方
完整展示,提供更好的阅读体验。
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 22:58:30 -08:00
hailin
d6b3f04612
feat(admin-web): 固定系统账户卡片添加查看分类账明细按钮
...
在固定系统账户卡片下方添加"查看明细"按钮,点击后展开显示
该账户的分类账流水记录,包括时间、类型、金额、余额和备注。
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 22:50:03 -08:00
hailin
d53b1c7499
fix(admin-web): 修复 ExpiredRewardsSection 中 ApiResponse 类型使用错误
...
ApiResponse<T> 类型只有 code, message, data 属性,没有 success
将 response.success && response.data 改为 response.data
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 22:44:37 -08:00
hailin
95cb3510aa
fix(reward-service): 修复 getExpiredRewardsEntries 的 userId 类型转换
...
将 bigint 类型的 userId 转换为 number 类型以匹配返回类型定义
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 22:38:50 -08:00
hailin
e9c0196d68
feat(admin-web): 添加过期收益明细查询功能
...
- reward-service: 添加 getExpiredRewardsEntries API 查询过期收益明细
- reporting-service: 添加过期收益明细转发接口和类型定义
- admin-web: 过期收益统计区域新增"查看明细"按钮
- 支持分页浏览过期收益记录
- 支持按权益类型筛选
- 显示过期时间、用户ID、账户、权益类型、金额、订单号
回滚方式:删除各服务中标注 [2026-01-07] 的代码块
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 22:36:31 -08:00
hailin
90ca62b594
fix(admin-web): 修正系统账户名称映射
...
- S0000000001: 运营1
- S0000000002: 运营2
- S0000000003: 总部储蓄
- S0000000004: 积分股池
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 22:14:24 -08:00
hailin
463e70131d
feat(admin-web): 市级区域账户显示真实城市名称
...
添加 CITY_CODE_NAMES 映射,包含全国所有地级市的行政区划代码。
修改 getAccountDisplayName 函数,优先查找城市名称映射,
使市级账户显示如"汕头市 (8440500)"而非"广东市级"。
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 22:05:24 -08:00
hailin
fd602e104d
fix(admin-web): fix region account display name format
...
Previous format showed meaningless city code like "浙江01市 (330100)".
Now shows cleaner format: "浙江市级 (330100)" for city-level accounts.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 21:57:43 -08:00
hailin
e01c7efc3c
fix(admin-web): 修复区域账户显示省市名称
...
- getAccountDisplayName 支持6位区域代码(如 330100)
- 330100 → 浙江01市 (330100)
- 440600 → 广东06市 (440600)
- RegionAccountsSection 使用 regionCode 解析名称,不依赖后端 regionName
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 21:46:49 -08:00
hailin
2a1d6a6bcc
feat(admin-web): 系统划转页面也显示账户正式名称
...
- 账户卡片使用 getAccountDisplayName 显示名称和编码
- 订单列表源/目标账户显示正式名称
- 订单详情弹窗显示正式名称
- 确认划转弹窗显示正式名称
回滚方式:恢复原显示方式
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 21:44:34 -08:00
hailin
8c29603f5a
fix(reporting-service): use field-level @unique for statsDate in schema
...
Root cause: @@unique([field], name: "xxx") requires { xxx: { field } } syntax
in findUnique/upsert, but code used { field } directly.
Fix: Change to @unique(map: "uk_realtime_stats_date") on the field itself.
This keeps the same database index name while allowing { statsDate } syntax.
No migration needed - only Prisma client type generation changes.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 21:38:13 -08:00
hailin
4e201d3a66
fix(reporting-service): use findFirst + update instead of upsert for realtimeStats
...
Replace upsert with findFirst + create/update pattern to avoid Prisma
unique constraint syntax issues. The @@unique constraint with a custom
name doesn't allow direct field-based queries in findUnique/upsert.
This approach maintains the same behavior without schema changes.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 21:36:26 -08:00
hailin
2d9d6ceed7
feat(admin-web): 系统账户显示正式名称并保留编码
...
- 添加 SYSTEM_ACCOUNT_NAMES 映射:S0000000001-S0000000006 映射到正式名称
- 添加 PROVINCE_CODE_NAMES 映射:中国省份行政区划代码映射
- 添加 getAccountDisplayName 函数:统一显示格式 "名称 (编码)"
- FixedAccountsSection: 固定账户显示为 "总部账户 (S0000000001)" 格式
- RegionAccountsSection: 区域账户合并显示名称和编码
- LedgerAccountCard: 分类账卡片显示完整账户信息
- FeeAccountSection: 手续费归集账户显示正式名称
- RewardTypeSummarySection: 收益明细显示账户正式名称
- OfflineSettlementSection: 面对面结算明细显示账户正式名称
回滚方式:恢复 imports,删除映射常量和 getAccountDisplayName 函数
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 21:29:14 -08:00
hailin
ce1d342269
fix(reporting-service): use named unique constraint for realtimeStats queries
...
Prisma requires using the named unique constraint (uk_realtime_stats_date)
in where clauses for findUnique and upsert operations. This fixes the
PrismaClientValidationError that was occurring when processing planting
order events.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 21:25:24 -08:00
hailin
d400290652
fix(reporting-service): 修复统计 incrementPlanting 对 undefined 参数的处理
...
当 planting.order.paid 事件中 treeCount 为 undefined 时:
- GlobalStatsRepository: 使用 ?? 0 提供默认值
- RealtimeStatsRepository: 使用 ?? 0 提供默认值
- 避免 Prisma upsert 因 undefined increment 值而报错
问题原因:planting-service 发送的事件数据中 treeCount 可能为 undefined
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 21:18:26 -08:00
hailin
ead1aac60c
fix(admin-web): add operatorId to system-withdrawal request
...
The wallet-service API requires operatorId parameter but frontend
was not sending it, causing 400 error. Now includes operatorId
and operatorName from current logged-in user.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 21:16:49 -08:00
hailin
272b4ffdbf
feat(wallet-service): 添加手续费归集统计的历史数据兼容
...
当 FEE_COLLECTION 流水为空时,自动从提现订单表查询历史手续费:
- getFeeCollectionSummary: 从 withdrawal_orders 和 fiat_withdrawal_orders 聚合统计
- getFeeCollectionEntries: 从两个订单表查询明细列表,支持分页和类型筛选
- 按月统计使用 UNION ALL 合并两种提现订单数据
- 明细记录添加备注说明区分来源(区块链/法币)
回滚方式:删除 fallback 代码块和两个私有方法
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 21:11:37 -08:00
hailin
4dcdfb8a3c
fix(wallet/reporting): 修复手续费归集统计 API 的数据库表名和响应解包问题
...
- wallet-service: 修复 getFeeCollectionSummary 中原生 SQL 使用错误表名
- 将 ledger_entries 改为 wallet_ledger_entries(Prisma 映射表名)
- reporting-service: 修复 getFeeCollectionSummary/Entries 响应解包
- wallet-service 返回 { success, data, timestamp } 格式需要解包 data
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 21:04:02 -08:00
hailin
4e5d9685a1
feat(admin-web): 添加面对面结算明细列表功能
...
- wallet-service: 新增 getOfflineSettlementEntries 方法和 API
- reporting-service: 新增客户端方法和 API 转发
- admin-web: 添加明细列表组件和样式,支持展开/收起
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 20:40:12 -08:00
hailin
9953f0eee5
fix(reporting-service): 修复面对面结算数据解包问题
...
wallet-service 返回 { success, data, timestamp } 包装格式,
getOfflineSettlementSummary 需要用 response.data.data 解包才能获取真正的数据。
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 20:23:54 -08:00
hailin
4df9895863
feat(admin-web): 完善系统账户报表收益统计显示
...
- 分享引荐收益汇总:显示所有状态(PENDING/SETTLEABLE/SETTLED/EXPIRED)的完整数据
- 面对面结算:改为从 wallet_ledger_entries 表查询 SPECIAL_DEDUCTION 类型
- 新增按状态分组统计表格和详细分类卡片
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 20:11:09 -08:00
hailin
2c8263754f
fix(wallet-service): fix system-withdrawal API route prefix to match Kong gateway
...
Changed controller route from 'system-withdrawal' to 'wallets/system-withdrawal'
to align with Kong's /api/v1/wallets/* routing
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 10:53:54 -08:00
hailin
305514b246
feat(admin-web): 仪表板改用 planting-service 源数据
...
统计卡片和趋势图不再使用 reporting-service,直接使用 planting-service 的源数据:
- 统计卡片:总认种量、总订单数、今日认种、本月认种
- 趋势图:支持 7天/30天/90天 切换
- 新增 usePlantingTrendForDashboard hook
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 10:47:44 -08:00