客户端接入

客户端接口面向普通用户(通过 JWT 鉴权),涵盖权益卡激活、权益项查询、 预约管理、评价等完整使用链路。Base URL 前缀为 /api/v1/

所有接口需在 Header 中携带 Authorization: Bearer <token>。 Token 通过晓葆平台短信登录接口获取。

概述

方法路径说明
GET/api/v1/benefit-cards/detect-bound检测已绑定的待激活卡片
POST/api/v1/benefit-cards/validate验证卡号和激活码(激活前预览)
POST/api/v1/benefit-cards/activate激活权益卡
POST/api/v1/benefit-cards/activate-bound激活已绑定的权益卡(快速激活)
GET/api/v1/benefit-cards获取用户权益卡列表
GET/api/v1/benefit-cards/{id}获取权益卡详情
GET/api/v1/user-benefit-items/{id}查询用户权益项详情(含剩余次数)
GET/api/v1/benefit-appointments/available-slots可预约时段查询
POST/api/v1/benefit-appointments创建预约
GET/api/v1/benefit-appointments预约列表
POST/api/v1/benefit-appointments/{id}/cancel取消预约
POST/api/v1/benefit-fulfillment-records/{id}/rate评价履约记录

检测已绑定卡片

用于用户首次进入权益卡页面时,检测是否有由合作方预先绑定但尚未激活的卡片。 存在时提示用户快速激活。

GET/api/v1/benefit-cards/detect-bound

成功响应

{
  "success": true,
  "data": {
    "has_bound_card": true,
    "card": {
      "card_number": "XB12 **** **** 3456",  // 脱敏展示
      "card_name": "健康权益卡·铂金版",
      "card_level": "PLATINUM",
      "issuer_name": "晓葆健康",
      "bound_at": "2026-03-01 10:00:00"
    }
  }
}

has_bound_cardfalse 时,引导用户手动输入卡号激活。

激活权益卡

手动激活流程分两步:先调用 /validate 预览卡片信息,用户二次确认后再调用 /activate 正式激活。

步骤 1:验证卡号(不执行激活)

POST/api/v1/benefit-cards/validate

步骤 2:正式激活

POST/api/v1/benefit-cards/activate

请求体(两个接口相同):

字段类型必填说明
card_numberstring15 位大写字母+数字,如 XB1234567890ABC
activation_codestring激活码,6-8 位

激活成功响应200 OK):

{
  "success": true,
  "data": {
    "user_benefit_card_id": 1001,
    "card_number": "XB12 **** **** 3456",
    "card_name": "健康权益卡·铂金版",
    "card_level": "PLATINUM",
    "status": "ACTIVE",
    "activated_at": "2026-04-01 10:00:00",
    "expires_at": "2027-04-01 23:59:59",
    "benefit_items": [
      {
        "user_benefit_item_id": 191,
        "benefit_code": "LIGHT_PHYSICAL_EXAM",
        "benefit_name": "轻体检服务",
        "total_quantity": 12,
        "remaining_quantity": 12,
        "quantity_unit": "TIMES"
      }
    ]
  }
}

快速激活已绑定卡片(合作方预绑定场景):

POST/api/v1/benefit-cards/activate-bound

请求体只需 card_number(无需激活码),响应结构同上。

查询权益卡列表

GET/api/v1/benefit-cards

成功响应

{
  "success": true,
  "data": {
    "total_count": 2,
    "valid_count": 1,
    "cards": [
      {
        "user_benefit_card_id": 1001,
        "card_name": "健康权益卡·铂金版",
        "card_level": "PLATINUM",
        "status": "ACTIVE",
        "expires_at": "2027-04-01 23:59:59",
        "benefit_items_count": 3
      }
    ]
  }
}

权益卡详情

GET/api/v1/benefit-cards/{id}

返回权益卡完整详情,包含每个权益项的剩余次数、使用记录统计、过期时间等。

查询权益项详情

权益项是权益卡内的具体服务单元(如「轻体检 × 12 次」),包含剩余次数和可用性判断。

GET/api/v1/user-benefit-items/{id}

路径参数iduser_benefit_item_id(非权益项模板 ID)。

成功响应

{
  "success": true,
  "data": {
    "user_benefit_item_id": 191,
    "benefit_item_id": 27,
    "benefit_item_code": "LIGHT_PHYSICAL_EXAM",
    "remaining_quantity": 12,
    "used_quantity": 0,
    "quantity_unit": "TIMES",
    "status": "ACTIVE",
    "benefit_item": {
      "benefit_name": "轻体检服务",
      "benefit_description": "支持全国 5000+ 健康站",
      "benefit_icon": "heart-pulse-line",
      "fulfillment_method": "APPOINTMENT"
    },
    "is_available": true,
    "unavailable_reason": null
  }
}

is_availablefalse 时,unavailable_reason会说明原因(如「等待期未满」「已过期」「次数已用完」)。

预约接口

对于 fulfillment_method = APPOINTMENTFORM_BOOKING 的权益项, 用户需先创建预约,服务方根据预约记录安排服务。

查询可预约时段

GET/api/v1/benefit-appointments/available-slots
查询参数类型必填说明
benefit_item_idinteger权益项 ID(过滤匹配该权益的健康站时段)
points_codestring指定健康站编码
start_datestring查询起始日期,默认今天
daysinteger查询天数(1–90),默认 30

创建预约

POST/api/v1/benefit-appointments
字段类型必填说明
user_benefit_item_idinteger是(GENERAL/APPOINTMENT 类型)用户权益项 ID
family_member_idinteger为谁预约(家庭成员 ID)
appointment_timestring预约时间,ISO8601,须晚于当前时间
appointment_typestringHEALTH_STATION(健康站到店) / GENERAL(上门/其他)
points_codestring是(HEALTH_STATION 类型)健康站编码
citystring是(GENERAL 类型)城市名称
addressstring详细地址,最长 256 字符
notesstring备注,最长 1000 字符

成功响应201 Created):

{
  "success": true,
  "data": {
    "appointment_id": 50001,
    "status": "SCHEDULED",
    "appointment_time": "2026-04-10T10:00:00+08:00",
    "appointment_type": "HEALTH_STATION",
    "health_station_name": "晓葆健康站(朝阳门店)",
    "family_member_name": "张三",
    "created_at": "2026-04-01 10:00:00"
  }
}

取消预约

POST/api/v1/benefit-appointments/{id}/cancel

请求体(可选):

字段类型说明
cancel_reasonstring取消原因,最长 500 字符

已完成(COMPLETED)的预约不可取消,返回 422

评价服务

服务完成后(履约状态为 COMPLETED),用户可对本次服务进行评价。 评价后不可修改。

POST/api/v1/benefit-fulfillment-records/{id}/rate

路径参数idfulfillment_record_id(履约记录 ID,可从预约详情中获取)。

字段类型必填说明
ratinginteger评分,1–5 星
rating_commentstring评价内容,最长 1000 字符

成功响应

{
  "success": true,
  "data": {
    "fulfillment_record_id": 1001,
    "rating": 5,
    "rating_comment": "服务很好,医生专业",
    "rating_at": "2026-04-01 12:00:00"
  }
}