hyapp-server/docs/我的页概览接口.md

6.2 KiB
Raw Blame History

My Page Overview API

本文定义 App 底部 我的 页首屏聚合接口。首屏只返回设计稿可直接展示的轻量摘要基础资料、顶部计数、金币卡片、VIP 卡片、身份入口和固定功能入口。

Endpoint

GET /api/v1/users/me/overview
Authorization: Bearer <access_token>

响应使用 gateway /api/v1 envelope

{
  "code": "OK",
  "message": "ok",
  "request_id": "req_01",
  "data": {
    "profile": {
      "user_id": "10001",
      "display_user_id": "163000",
      "default_display_user_id": "163000",
      "display_user_id_kind": "default",
      "display_user_id_expires_at_ms": 0,
      "username": "Alice",
      "avatar": "https://cdn.example.com/avatar.png",
      "language": "en",
      "profile_completed": true,
      "onboarding_status": "completed"
    },
    "profile_stats": {
      "visitors_count": 12,
      "following_count": 34,
      "friends_count": 56,
      "updated_at_ms": 1777996800000
    },
    "wallet": {
      "coin_amount": 12000,
      "updated_at_ms": 1777996800000
    },
    "vip": {
      "level": 3,
      "name": "VIP3",
      "active": true,
      "started_at_ms": 1777392000000,
      "expires_at_ms": 1777996800000
    },
    "roles": {
      "is_host": true,
      "is_agency": false,
      "is_manager": false,
      "is_bd": false,
      "is_bd_leader": false,
      "is_coin_seller": false,
      "host_status": "active",
      "agency_id": 0,
      "bd_id": 0,
      "pending_role_invitations": 0
    },
    "entries": [
      {
        "key": "store",
        "visible": true,
        "enabled": true,
        "route": "/store",
        "icon_key": "store",
        "badge_count": 0,
        "order": 10
      },
      {
        "key": "apply_host",
        "visible": false,
        "enabled": false,
        "route": "/host/apply",
        "icon_key": "apply_host",
        "badge_count": 0,
        "order": 70
      },
      {
        "key": "host_center",
        "visible": true,
        "enabled": true,
        "route": "/host",
        "icon_key": "host_center",
        "badge_count": 0,
        "order": 80
      }
    ],
    "server_time_ms": 1777996800000
  }
}

Field Sources

Field Source Rule
profile user-service.GetUser 只取头像、昵称、展示 ID、语言等基础资料
profile_stats user-service.GetMyProfileStats user_profile_stats 计数表,不实时扫访问、关注、好友大表
wallet wallet-service.GetWalletValueSummary 首屏只返回金币余额,不返回钻石和美元余额
vip wallet-service.GetMyVip 只取等级、名称、有效期和 active 状态
roles user-service.GetUserRoleSummary 所有身份统一判断,避免 gateway 多 RPC fanout
entries gateway composition 根据 roles 生成入口显隐;标题由 App 按 key 做多语言
server_time_ms gateway 当前服务端毫秒时间

我的 页首屏不调用 ListMessageTabs,不返回系统消息红点、活动消息红点、邀请码、钻石、美元余额,也不返回钱包操作开关。充值、提现、兑换能力在钱包二级页取。

Entry Rules

Entry Key Visible Rule
store always true
bag always true
level always true
task always true
apply_host roles.is_host == false
host_center roles.is_host == true
agency_center roles.is_agency == true
manager_center roles.is_manager == true
bd_center roles.is_bd == true
bd_leader_center roles.is_bd_leader == true
coin_seller_center roles.is_coin_seller == true
settings always true
language always true

同一个用户可能同时拥有多个身份。角色必须用 bool flags 表达,不要用互斥枚举。

Excluded From Overview

这些内容不能放进首屏接口:

Field Reason Replacement
消息 tab、系统消息、活动消息 我的页设计稿不展示消息红点 消息 tab 页面接口
邀请码入口和邀请统计 截图首屏没有邀请码入口 邀请页或活动入口
wallet.recharge_enabled / diamond_exchange_enabled 首屏卡片不需要操作开关 GET /api/v1/wallet/me/overview
DIAMOND / HOST_SALARY_USD, AGENCY_SALARY_USD, BD_SALARY_USD, ADMIN_SALARY_USD 首屏钱包卡片只展示金币 钱包二级页余额接口
邀请用户列表、钱包流水、工资明细、团队成员、背包完整列表、任务列表 都需要分页或聚合 对应二级页接口

Performance Budget

  • 聚合超时预算:200ms
  • 必须并行请求 profile、profile stats、wallet value summary、VIP、role summary。
  • 允许 wallet、VIP、profile stats、role summary 降级并返回 unavailable=true
  • user-service.GetUser 失败时整体失败,因为基础资料是首屏主数据。
  • 首屏不得实时 COUNT(*)、不得扫流水、不得扫成员、不得查完整背包、不得现算工资。
sequenceDiagram
  participant C as Client
  participant G as gateway-service
  participant U as user-service
  participant W as wallet-service

  C->>G: GET /api/v1/users/me/overview
  par profile
    G->>U: GetUser(user_id)
  and stats
    G->>U: GetMyProfileStats(user_id)
  and roles
    G->>U: GetUserRoleSummary(user_id)
  and wallet
    G->>W: GetWalletValueSummary(user_id)
    G->>W: GetMyVip(user_id)
  end
  G->>G: compose entries
  G-->>C: overview

Secondary Endpoints

Endpoint Purpose
GET /api/v1/users/me/visitors 访问记录列表
GET /api/v1/users/me/following 关注列表
GET /api/v1/users/me/friends 好友列表
GET /api/v1/users/me/friend-requests 好友申请列表
GET /api/v1/users/me/role-summary 单独刷新身份摘要
GET /api/v1/wallet/me/overview 钱包二级页余额和操作开关
GET /api/v1/wallet/recharge/products 当前区域充值渠道和档位
GET /api/v1/wallet/diamond-exchange/config 钻石兑换金币/余额配置
GET /api/v1/wallet/transactions 钱包流水分页
GET /api/v1/vip/me 当前 VIP 状态
GET /api/v1/vip/packages 可购买 VIP 包
POST /api/v1/vip/purchase 购买、续期或升级 VIP