7.2 我的订阅列表【基础探测通过,待数据联调】

GET /tieup/api/v1/me/subscriptions

查询参数:

参数 类型 必填 说明
status integer 1=生效中,2=已过期,3=已取消,4=即将过期;status=4 表示当前时间距离 expires_at 5 天内
artist_id integer 偶像 ID

响应字段:

字段 类型 说明
items array 当前页数据列表
items[].subscription_no string 订阅编号
items[].fan_user_id integer 当前粉丝用户 ID
items[].artist_id integer 艺人 ID
items[].artist_user_id integer 艺人绑定 APP 用户 ID
items[].artist_name string 艺人名称
items[].artist_avatar string 艺人头像,严格读取独立维护的 tieup_artist.avatar;未配置时返回空字符串,不回退绑定账号的用户头像
items[].order_no string 订阅对应平台订单号
items[].recharge_no string/null 订阅对应业务单号
items[].subscription_plan_code string 订阅档位编码
items[].plan_name_snapshot string 订阅档位名称快照
items[].sub_type string 订阅周期类型:month=月卡,year=年卡
items[].subscription_action string 订阅动作:initial/renewal/legacy
items[].pay_amount string 支付金额,单位元,固定两位小数
items[].duration_days integer 本周期权益天数
items[].started_at string 订阅开始时间
items[].expires_at string 订阅过期时间
items[].is_auto_renew integer 是否继续自动续费:1=是,2=否;关闭自动续费不影响当前已支付周期
items[].status integer 订阅状态:1=生效中,2=已过期,3=已取消,4=即将过期
items[].cancelled_at string/null 取消时间
pagination.page integer 当前页码
pagination.page_size integer 每页数量
pagination.total integer 总数量
pagination.next_cursor string/null 下一页游标;当前页码分页场景固定为空

响应示例:

{
  "code": 200,
  "message": "成功",
  "data": {
    "items": [
      {
        "subscription_no": "TS202606170001",
        "fan_user_id": 10001,
        "artist_id": 20001,
        "artist_user_id": 30001,
        "artist_name": "示例艺人",
        "artist_avatar": "https://cdn.example.com/artist.png",
        "order_no": "TO202606170001",
        "recharge_no": "RC202606170001",
        "subscription_plan_code": "month_vip",
        "plan_name_snapshot": "月度订阅",
        "sub_type": "month",
        "subscription_action": "initial",
        "pay_amount": "29.90",
        "duration_days": 30,
        "started_at": "2026-06-17 10:00:00",
        "expires_at": "2026-07-17 23:59:59",
        "is_auto_renew": 2,
        "status": 4,
        "cancelled_at": null
      }
    ],
    "pagination": {
      "page": 1,
      "page_size": 20,
      "total": 1,
      "next_cursor": null
    }
  }
}

业务规则:

  • 列表按当前用户订阅过的艺人聚合;同一艺人的多笔订阅只返回 id 最大的最新一笔,列表排序仍按该最新记录 id 倒序。
  • artist_idstatus 均在每个艺人的最新订阅确定后执行筛选,不会回退返回该艺人的历史匹配记录;pagination.total 为筛选后艺人数量。
  • status=4 为 APP 动态展示状态,不写入 tieup_subscription.status
  • 即将过期判断范围为服务端当前时间之后 5 天内:now < expires_at <= now + 5 days
  • 已过期判断优先于即将过期:expires_at <= now 时返回 status=2,即使数据库状态补偿尚未执行。
  • status=1 筛选只返回未进入即将过期窗口的生效订阅;status=4 筛选只返回即将过期订阅。
  • status=2 筛选同时返回数据库已标记过期的记录和尚未落库但到期时间已到的记录。
  • sub_type 直接读取 tieup_subscription.sub_type,该字段由下单时传入的 month/year 固化,不通过 duration_days 推断。