Files
monisuo/.claude/plan.md
2026-04-08 01:10:42 +08:00

5.1 KiB
Raw Blame History

用户详情数据面板 - 实现方案

需求概述

在管理后台用户管理页面,点击用户详情时展示全面的数据分析视图,包括:充值记录、累计充值/提现、推广人数信息、领取福利信息等。

方案设计

一、后端:新增用户详情聚合接口

文件: AdminController.java

新增 GET /admin/user/stats?userId=xxx 接口,一次性返回所有统计数据:

{
  "code": "0000",
  "data": {
    "user": { ... },           // 用户基本信息
    "fundAccount": { ... },    // 资金账户(余额、冻结、累计充值、累计提现)
    "tradeAccounts": [...],    // 交易账户持仓列表
    "depositStats": {          // 充值统计
      "totalCount": 5,
      "totalAmount": 10000.00,
      "successCount": 4,
      "successAmount": 8000.00
    },
    "withdrawStats": {         // 提现统计
      "totalCount": 3,
      "totalAmount": 3000.00,
      "successCount": 2,
      "successAmount": 2000.00,
      "totalFee": 200.00
    },
    "referralStats": {         // 推广统计
      "directCount": 5,        // 直接推广人数
      "indirectCount": 8,      // 间接推广人数
      "referrals": [           // 直接推广人列表
        { "userId": 10, "username": "user1", "nickname": "用户1", "createTime": "...", "deposited": true }
      ]
    },
    "bonusStats": {            // 福利统计
      "newUserBonusClaimed": true,
      "totalBonusClaimed": 500.00,
      "records": [             // 领取记录
        { "type": "新人首充福利", "amount": 100, "time": "..." },
        { "type": "邀请奖励-10-1", "amount": 100, "time": "..." }
      ]
    },
    "recentOrders": [...],     // 最近10笔充提订单
    "recentTrades": [...]      // 最近10笔交易订单
  }
}

实现要点:

  • AssetService 或新建 AdminDataService 中封装聚合查询逻辑
  • 使用已有的 AccountFundMapperOrderFundMapperAccountFlowMapperOrderTradeMapper 进行数据查询
  • 推广人列表通过 UserMapper 查询 referredBy = userId 获取
  • 福利记录通过 AccountFlow 查询 flowType=7 (福利类型) 或通过 remark LIKE 匹配福利关键词

二、前端:用户详情弹窗升级为多标签页

文件: monisuo-admin/src/pages/monisuo/users.vue

将现有的简单详情弹窗升级为多标签页数据面板:

弹窗布局

┌──────────────────────────────────────────────┐
│ 用户详情 - username                            │
├──────────────────────────────────────────────┤
│ [概览] [充提记录] [推广信息] [福利记录] [交易记录] │
├──────────────────────────────────────────────┤
│                                              │
│  (各标签页内容区)                               │
│                                              │
└──────────────────────────────────────────────┘

标签页内容设计

1. 概览 Tab

  • 用户基本信息卡片(用户名、昵称、手机、邮箱、注册时间、最后登录)
  • KPI 统计卡片行4列网格
    • 资金账户余额 / 冻结金额
    • 累计充值 / 累计提现
    • 直接推广人数 / 间接推广人数
    • 累计领取福利金额
  • 交易持仓列表(当前持有的币种)

2. 充提记录 Tab

  • 充提统计摘要(总充值笔数/金额、总提现笔数/金额、手续费总计)
  • 充提订单列表表格(时间、类型、金额、手续费、到账金额、状态)

3. 推广信息 Tab

  • 推广概览卡片(推广码、直接推广人数、间接推广人数)
  • 直接推广人列表表格(用户名、昵称、注册时间、是否已充值)

4. 福利记录 Tab

  • 福利统计摘要(已领取总额、各类型数量)
  • 福利领取记录表格(类型、金额、时间)

5. 交易记录 Tab

  • 最近交易订单列表(时间、币种、方向、价格、数量、金额)

三、前端 API 层

文件: monisuo-admin/src/services/api/monisuo-admin.api.ts

新增 useGetUserStatsQuery(userId) composable调用 /admin/user/stats 接口。

实现步骤

  1. 后端 - 在 AssetService 中新增 getUserStats(userId) 方法
  2. 后端 - 在 AdminController 中新增 /admin/user/stats 接口
  3. 前端 - 在 monisuo-admin.api.ts 中新增 API composable
  4. 前端 - 重构 users.vue 详情弹窗为多标签页数据面板

文件变更清单

文件 操作
src/.../service/AssetService.java 新增 getUserStats() 方法
src/.../controller/AdminController.java 新增 /admin/user/stats 接口
monisuo-admin/src/services/api/monisuo-admin.api.ts 新增 useGetUserStatsQuery
monisuo-admin/src/pages/monisuo/users.vue 重构详情弹窗