9.6 KiB
9.6 KiB
API文档
URL 以及 接口结构仅供参考。无需完全对应
接口定义(JSON 请求 / 响应)
1.1 发送验证码 POST /api/v1/auth/send-code
传入 手机号- 请求
{
"phone": "18888888888"
}
- 响应
{
"code": 200,
"message": "验证码已发送",
"data": {
"expiresIn": 300
}
}
1.2 登录 POST /api/v1/auth/login
传入 手机号 验证码- 请求
{
"phone": "18888888888",
"code": "123456"
}
- 响应
{
"code": 200,
"message": "登录成功",
"data": {
"token": "jwt-token",
"user": {
"id": "user_001",
"name": "操作员",
"role": "admin",
"permissions": [
"view_revenue",
"view_exam",
"manage_meal_status",
"edit_notes"
]
}
}
}
2.1 获取今日体检统计 GET /api/v1/home/daily-stats
获取:今日预约人数 已签到人数 在检人数 已打印导检单数量 已完成人数 已用餐人数- 响应
{
"code": 200,
"data": {
"dailyAppointment": 80,
"signedIn": 60,
"inExam": 25,
"guidePrinted": 40,
"completed": 30,
"meal": 15
}
}
3.1 获取营收统计(管理员)GET /api/v1/home/revenue-stats
获取:体检收入 加项收入 整体收入 目标收入- 响应
{
"code": 200,
"data": {
"examRevenue": 86000,
"addonRevenue": 12400,
"totalRevenue": 98400,
"targetRevenue": 120000,
"gap": 21600
}
}
4.1 获取 B1 数据 GET /api/v1/home/b1-dashboard
获取:当前客户总数 待检人数 在检人数列表:科室 医生 已检人数 已检部位数 总时长 平均时长- 响应
{
"code": 200,
"data": {
"summary": {
"totalClients": 33,
"waiting": 10,
"inExam": 10
},
"rows": [
{
"department": "B超1",
"doctor": "张医生",
"examinedCount": 6,
"examinedParts": 18,
"totalDuration": 90,
"avgDuration": 15,
"inExam": 2,
"waiting": 2
}
]
}
}
5.1 获取北3数据 GET /api/v1/home/north3-dashboard
获取:今日家医生数 分配客户数 面诊数列表:家医 面诊率 分配客户数 面诊数- 响应
{
"code": 200,
"data": {
"summary": {
"totalDoctors": 3,
"totalAssigned": 45,
"consultations": 26
},
"rows": [
{
"doctor": "刘医生",
"assignmentCount": 15,
"consultations": 9,
"consultRate": 0.6
}
]
}
}
7.1 获取体检客户列表 GET /api/v1/exam/clients
条件:时间段,如 8:00 ~ 12:00 到 12:00 ~ 17:00(或者上午0下午1)条件:用户等级,如高客 普客 散客 团客条件:登记情况,如已登记 未登记获取:套餐名称 渠道 状态 签到时间(耗时起始时间) 是否已签到 已加项数量 是否打印体检单- 查询参数
{
"timeRange": "08:00-12:00",
"level": "高客",
"customerType": "团客",
"signStatus": "已登记",
"search": "张",
"page": 1,
"pageSize": 20
}
- 响应
{
"code": 200,
"data": {
"total": 100,
"page": 1,
"pageSize": 20,
"list": [
{
"id": "A001",
"name": "张伟",
"packageName": "高端入职体检套餐",
"channel": "团体客户",
"status": "体检中",
"signedIn": true,
"signTime": "2025-11-18 08:55",
"elapsed": "00:45",
"addonCount": 2,
"guidePrinted": true,
"timeSlot": "上午",
"level": "VIP",
"vipType": "高客",
"customerType": "团客"
}
]
}
}
8.1 获取体检客户详情 GET /api/v1/exam/clients/{clientId}
基础信息:姓名 身份证 手机号 性别 年龄 客户级别 渠道 婚姻 家医 团标签体检进度:已查项目 未查项目 弃检项目 延期项目历史记录加项内容该次体检是否上传身份证(或已上传的身份证信息)该次体检是否已签名(或已上传的签名图片)体检知情同意书可选的加项列表(可以用字段表明已经支付后的加项)导检单PDF- 响应
{
"code": 200,
"data": {
"id": "A001",
"basicInfo": {
"name": "张伟",
"idCard": "4401********1234",
"mobile": "137****9988",
"gender": "男",
"age": 35,
"level": "VIP",
"channel": "团检",
"maritalStatus": "未婚",
"familyDoctor": "李医生",
"groupTag": "团检"
},
"progress": {
"checkedItems": ["签到", "更衣"],
"pendingItems": ["家医面诊"],
"abandonedItems": [],
"deferredItems": []
},
"history": [],
"addonSummary": [
{
"name": "肿瘤标志物筛查",
"paid": true,
"tags": [
{
"title": "热门",
"type": 1,
},
{
"title": "肺结节筛查",
"type": 2,
},
{
"title": "医生推荐",
"type": 3,
},
{
"title": "渠道八折",
"type": 4,
}
],
"originalPrice": "320.00",
"currentPrice": "240.00"
}
],
"idCardUploaded": true,
"idCardImages": {
"front": "https://...",
"back": "https://..."
},
"consentSigned": true,
"consentImage": "https://...",
"consentDocumentUrl": "https://...",
"addonOptions": [
{
"id": "addon_001",
"name": "甲状腺彩超",
"price": 300,
"paid": false
}
],
"guidePdfUrl": "https://example.com/guides/A001.pdf"
}
}
8.2 上传身份证 POST /api/v1/exam/clients/{clientId}/id-card
具体用户上传身份证正面、反面- 请求
{
"frontImage": "base64-front",
"backImage": "base64-back"
}
- 响应
{
"code": 200,
"message": "身份证上传成功"
}
8.5 上传体检同意书签名 POST /api/v1/exam/clients/{clientId}/consent
上传体检同意书签名图片- 请求
{
"signatureImage": "base64-signature",
"documentVersion": "v1.0"
}
- 响应
{
"code": 200,
"message": "签名已保存"
}
8.6 生成加项订单 POST /api/v1/exam/clients/{clientId}/addon-orders
选择加项内容后获取订单号以及支付二维码- 请求
{
"addonIds": ["addon_001", "addon_002"],
"paymentMethod": "wechat_qr", // 如果是聚合码则取消
}
- 响应
{
"code": 200,
"data": {
"orderId": "order_001",
"amount": 800,
"qrcodeUrl": "https://example.com/pay/order_001.png",
"expiresIn": 300
}
}
8.7 查询订单支付状态 GET /api/v1/payments/{orderId}
根据订单号查询 是否已经支付成功(HTTP或SSE)- 响应
{
"code": 200,
"data": {
"orderId": "order_001",
"status": "paid",
"paidAt": "2025-11-18T09:20:00+08:00"
}
}
- SSE(可选)
GET /api/v1/payments/{orderId}/events- 服务端推送字段:
event=status,data={"status":"paid"}。
- 服务端推送字段:
9.0 获取客服咨询信息 GET /api/v1/support/info
获取 标题 内容 图片- 响应
{
"code": 200,
"data": {
"title": "客服咨询 · 圆圆客服台卡",
"content": "一站式健康服务说明",
"imageUrl": "https://example.com/assets/support-card.png"
}
}
9.1 获取用餐状态列表 GET /api/v1/meals
条件 全部 已用餐 未用餐 姓名 体检号- 查询参数
{
"status": "all",
"clientName": "张",
"clientId": "A001"
}
- 响应
{
"code": 200,
"data": [
{
"id": "A001",
"name": "张伟",
"status": "体检中",
"mealStatus": "done",
"mealTime": "2025-11-18 09:30"
}
]
}
9.2 更新用餐状态 POST /api/v1/meals/{clientId}
更新指定用户用餐状态- 请求
{
"mealStatus": "done"
}
- 响应
{
"code": 200,
"message": "用餐状态已更新"
}
9.3 获取太平 VIP 认证二维码 GET /api/v1/support/taiping-vip
获取 标题 内容 图片- 响应
{
"code": 200,
"data": {
"title": "太平 VIP 认证",
"content": "扫描二维码完成认证",
"imageUrl": "https://example.com/assets/taiping-vip.png"
}
}
10.1 获取报告寄送登记二维码 GET /api/v1/support/report-delivery
获取 客服名称 图片- 响应
{
"code": 200,
"data": {
"serviceName": "圆圆客服",
"imageUrl": "https://example.com/assets/delivery-qrcode.png"
}
}
10.2 报告寄送登记 POST /api/v1/support/report-delivery
传入 收件人 手机号 地址- 请求
{
"recipient": "李四",
"phone": "13800000000",
"address": "上海市浦东新区世纪大道100号10楼",
"remark": "加急寄送"
}
- 响应
{
"code": 200,
"message": "寄送信息已保存",
"data": {
"deliveryId": "delivery_001"
}
}
10.3 保存操作员备注 POST /api/v1/notes
保存操作员备注内容- 请求
{
"operatorId": "user_001",
"content": "客户希望下午完成全部项目"
}
- 响应
{
"code": 200,
"message": "备注已保存"
}
10.4 获取操作员备注 GET /api/v1/notes
获取操作员备注内容- 响应
{
"code": 200,
"data": [
{
"operatorId": "user_001",
"content": "客户希望下午完成全部项目",
"createdAt": "2025-11-18 10:00:00"
}
]
}