You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

23 KiB

PAD 接口文档

1. 基础信息

  • 服务默认端口:8845
  • 默认基础地址:http://<host>:8845
  • 直连接口统一前缀:/api/queue/**
  • 本文范围:
    • pad.* 标签对应的直连接口
    • 虽然路径不在 /api/queue/pad/** 下,但 Swagger 标签仍属于 pad.* 的配套接口
    • /public 统一网关映射

2. 统一返回结构

2.1 直连接口返回结构

绝大多数直连接口返回统一结构 R<T>

{
  "code": 200,
  "msg": "操作成功",
  "data": {}
}

字段说明:

字段 类型 说明
code int 状态码,成功通常为 200
msg string 返回消息
data object/array/null 具体业务数据

2.2 /public 网关返回结构

/public 返回 PublicGatewayResponseVo<T>,比 R<T> 多一个 traceId

{
  "code": 200,
  "msg": "OK",
  "traceId": "202604210001",
  "data": {}
}

3. 接口清单

说明:

  • Header.Authorization 表示请求头 Authorization: Bearer <token>
  • path.xxx 表示路径参数
  • query.xxx 表示查询参数
  • body.xxx 表示 JSON 请求体字段
  • 未接入 表示当前不能通过 /publictag + map.path 转发

3.1 pad.auth

方法 请求地址 网关调用(tag/path) 请求参数 返回值 备注
POST /api/queue/pad/auth/login pad.auth + /login body.usernamebody.passwordbody.tenantId 可选 R<LoginResponse> 登录
POST /api/queue/pad/auth/refresh 未接入 body.refreshToken R<LoginResponse> 刷新令牌
POST /api/queue/pad/auth/logout 未接入 Header.Authorization R<AuthLogoutVo> 用户退出
GET /api/queue/pad/auth/profile 未接入 Header.Authorization R<AuthProfileVo> 当前用户信息
POST /api/queue/pad/auth/sign pad.auth + /sign body.tagbody.pathbody.timestampbody.noncebody.querybody.body 可选 R<SignResponseVo> 生成签名
GET /api/queue/pad/auth/validate 未接入 Header.Authorization R<TokenValidationVo> 校验令牌

3.2 pad.business

方法 请求地址 网关调用(tag/path) 请求参数 返回值 备注
GET /api/queue/pad/business 未接入 R<List<Business>> 查询所有业务类型
POST /api/queue/pad/business 未接入 body.namebody.prefix 可选但必须唯一;body.enabledbody.typebody.handleCountbody.isSpecial 可选 R<Business> 创建业务类型
GET /api/queue/pad/business/{uid} 未接入 path.uid R<Business> 按 UID 查询
PUT /api/queue/pad/business/{uid} 未接入 path.uidbody.name;其他字段同创建 R<Business> 更新业务类型
DELETE /api/queue/pad/business/{uid} 未接入 path.uid R<BusinessOperationVo> 删除业务类型
PATCH /api/queue/pad/business/{uid}/enabled 未接入 path.uidquery.enabled R<BusinessOperationVo> 更新启用状态
GET /api/queue/pad/business/enabled pad.business + /enabled R<List<Business>> 查询启用业务类型
POST /api/queue/pad/business/health-reopt/url 未接入 body.idbody.swjgMcbody.swjgDm 可选 R<HealthReportUrlVo> 生成健康报告查询 URL
GET /api/queue/pad/business/page 未接入 query.page 默认 1query.size 默认 10 R<BusinessPageVo> 分页查询
GET /api/queue/pad/business/search 未接入 query.name R<List<Business>> 名称模糊查询
GET /api/queue/pad/business/special 未接入 R<List<Business>> 查询特殊业务
GET /api/queue/pad/business/statistics 未接入 R<BusinessStatisticsVo> 业务统计
GET /api/queue/pad/business/type/{type} 未接入 path.type R<List<Business>> 按类型查询
GET /api/queue/pad/business/validate/name 未接入 query.namequery.excludeUid 可选 R<BusinessValidationVo> 校验名称唯一性
GET /api/queue/pad/business/validate/prefix 未接入 query.prefixquery.excludeUid 可选 R<BusinessValidationVo> 校验前缀唯一性

3.3 pad.menu

方法 请求地址 网关调用(tag/path) 请求参数 返回值 备注
GET /api/queue/pad/menu/business-types 未接入 R<BusinessMenuVo> 获取业务类型菜单
GET /api/queue/pad/menu/main pad.menu + /main R<MenuPageVo> 获取主菜单

3.4 pad.print

方法 请求地址 网关调用(tag/path) 请求参数 返回值 备注
GET /api/queue/pad/print/printers pad.print + /printers R<List<String>> 获取打印机列表
POST /api/queue/pad/print/text pad.print + /text body.contentbody.printerName 可选 R<Boolean> 打印文本

3.5 pad.test

方法 请求地址 网关调用(tag/path) 请求参数 返回值 备注
POST /api/queue/pad/test/medical-report/url 未接入 body.idbody.swjgMcbody.swjgDm R<MedicalReportUrlVo> 测试用医保报告 URL

3.6 pad.ticket

方法 请求地址 网关调用(tag/path) 请求参数 返回值 备注
GET /api/queue/pad/business/list 未接入 R<List<Business>> 虽然路径不在 /ticket 下,但 Swagger Tag 属于 pad.ticket
GET /api/queue/pad/ticket/{uid} 未接入 path.uid R<Ticket> 按 UID 查询票号
PATCH /api/queue/pad/ticket/{uid}/assign-window 未接入 path.uidquery.winId R<TicketAssignWindowVo> 指派窗口
GET /api/queue/pad/ticket/{uid}/status 未接入 path.uid R<TicketStatusVo> 按 UID 查询状态
PATCH /api/queue/pad/ticket/{uid}/status 未接入 path.uidquery.status R<TicketStatusUpdateVo> 更新票号状态
GET /api/queue/pad/ticket/business/{bizUid} 未接入 path.bizUid R<List<Ticket>> 按业务类型查询票号
POST /api/queue/pad/ticket/call/{ticketNumber} 未接入 path.ticketNumberquery.windowNumber R<TicketCallVo> 指定票号叫号
POST /api/queue/pad/ticket/call/next 未接入 body.windowUidbody.empUid 可选 R<TicketCallResultVo> 叫下一号
POST /api/queue/pad/ticket/call/specific/{ticketUid} 未接入 path.ticketUidquery.windowUidquery.empUid 可选 R<TicketCallResultVo> 叫指定票
POST /api/queue/pad/ticket/create-jump 未接入 body.bizUidbody.rankUserNamebody.rankUserPhonebody.idCardbody.tktId 可选 R<TakeTicketResponse> 创建插队票
GET /api/queue/pad/ticket/list pad.ticket + /list query.page 默认 1query.size 默认 10query.statusquery.businessTypequery.tabType 可选 R<TicketPageVo> 票号列表
GET /api/queue/pad/ticket/list-by-status/{status} 未接入 path.status R<List<Ticket>> 按状态码查询
POST /api/queue/pad/ticket/resume 未接入 body.resumeTokenbody.targetPosition 可选,默认 3 R<TicketResumeResultVo> 复号
POST /api/queue/pad/ticket/verify/search 未接入 body.namebody.idCardbody.phone 至少传一个;三者均按包含匹配;body.page 默认 1body.size 默认 10 R<TicketVerifyQueryPageVo> 模糊查询 ticket_verify 并判断是否已完成实名/人脸比对
POST /api/queue/pad/ticket/skip/{ticketNumber} 未接入 path.ticketNumber R<TicketSkipVo> 跳过票号
GET /api/queue/pad/ticket/status/{ticketNumber} 未接入 path.ticketNumber R<TicketStatusDetailVo> 按票号字符串查询状态
POST /api/queue/pad/ticket/suspend 未接入 body.ticketUidbody.windowUidbody.empUidbody.idCardbody.phone 可选 R<TicketSuspendResultVo> 挂起票号
GET /api/queue/pad/ticket/suspend/info/{token} 未接入 path.token R<SuspendedTicketDetailVo> 查询挂起详情
POST /api/queue/pad/ticket/take pad.queue + /ticket/take body.bizUid,且 body.idCard / body.rankUserPhone 至少传一个;body.rankUserNamebody.enterpriseIdbody.appointmentUidbody.tktId 可选 R<TakeTicketVo> 取号
POST /api/queue/pad/ticket/take-by-appointment 未接入 body.bizUidbody.appointmentUid R<TakeTicketVo> 预约换号
GET /api/queue/pad/ticket/today_unified_tickets 未接入 query.page 默认 1query.size 默认 10 R<TicketPageVo> 今日统一票号列表
GET /api/queue/pad/ticket/waiting-count 未接入 query.bizUid 可选 R<WaitingCountVo> 查询等待人数

3.7 pad.appointment

方法 请求地址 网关调用(tag/path) 请求参数 返回值 备注
GET /api/queue/pad/appointment/time-slots pad.appointment + /time-slots R<List<AppointmentTimeSlotVo>> 可用时间段
GET /api/queue/pad/appointment/today 未接入 query.page 默认 1query.size 默认 10query.statusquery.businessTypequery.keyword 可选 R<AppointmentPageVo> 今日预约列表
DELETE /api/queue/pad/appointment/{appointmentId} 未接入 path.appointmentId R<AppointmentActionVo> 取消预约
PUT /api/queue/pad/appointment/{appointmentId}/status 未接入 path.appointmentIdquery.status R<AppointmentActionVo> 更新预约状态
GET /api/queue/pad/appointment/statistics 未接入 query.date 可选 R<AppointmentStatisticsVo> 预约统计

3.8 pad.window

方法 请求地址 网关调用(tag/path) 请求参数 返回值 备注
GET /api/queue/pad/window/list pad.window + /list query.page 默认 1query.size 默认 10query.enabledquery.name 可选 R<WindowPageVo> 窗口列表
GET /api/queue/pad/window/monitor/list pad.window + /monitor/list R<WindowMonitorListVo> 窗口监控列表
POST /api/queue/pad/window/create 未接入 body.namebody.sid 可选但必须唯一;body.enabledbody.ledAddressbody.ledTextbody.rankModebody.rankAddress 可选 R<WindowActionVo> 创建窗口
PUT /api/queue/pad/window/{windowId} 未接入 path.windowIdbody.name;其他字段同创建 R<WindowActionVo> 更新窗口
PUT /api/queue/pad/window/{windowId}/status 未接入 path.windowIdquery.enabled R<WindowActionVo> 切换窗口状态
GET /api/queue/pad/window/{windowId} 未接入 path.windowId R<WindowDetailVo> 窗口详情
GET /api/queue/pad/window/{windowId}/business 未接入 path.windowId R<WindowBusinessListVo> 获取窗口业务关联
POST /api/queue/pad/window/{windowId}/business 未接入 path.windowIdbody 为数组,元素至少要有 businessIdpriorityenabled 可选 R<WindowActionVo> 设置窗口业务关联
POST /api/queue/pad/window/{windowId}/led 未接入 path.windowIdquery.text R<WindowActionVo> LED 显示控制
DELETE /api/queue/pad/window/{windowId} 未接入 path.windowId R<WindowActionVo> 删除窗口

3.9 tag.hallSystem

Swagger 中标签名是 tag.hallSystem,但 /public 网关调用时实际 tag 要传 pad.hallSystem

方法 请求地址 网关调用(tag/path) 请求参数 返回值 备注
GET /api/queue/pad/hallSystem/list pad.hallSystem + /list query.prefix 可选 R<HallSystemListVo> 获取大厅配置列表
POST /api/queue/pad/hallSystem/value pad.hallSystem + /value body.keybody.value 可选 R<Boolean> 更新大厅配置
GET /api/queue/pad/hallSystem/overview/metrics pad.hallSystem + /overview/metricspad.queue + /overview/metrics R<PadOverviewMetricsVo> 实时概览指标
GET /api/queue/pad/hallSystem/overview/metrics/trend pad.hallSystem + /overview/metrics/trendpad.queue + /overview/metrics/trend query.startTimequery.endTime 可选,格式 yyyy-MM-dd HH:mm:ss R<PadOverviewMetricsTrendVo> 概览趋势

3.10 pad.window 配套 caller 窗口接口

方法 请求地址 网关调用(tag/path) 请求参数 返回值 备注
GET /api/queue/caller/windows/list 未接入 Header.Authorization R<CallerWindowBindingResponse> 当前账号可绑定窗口列表
POST /api/queue/caller/windows/select 未接入 Header.Authorizationbody.windowUid R<CallerWindowBindingResponse> 绑定窗口

3.11 pad.callTerminal

方法 请求地址 网关调用(tag/path) 请求参数 返回值 备注
POST /api/queue/caller/call-terminal/init 未接入 body.windowUidbody.empUid 可选 R<CallTerminalActionResponse> 初始化评价器
POST /api/queue/caller/call-terminal/call pad.callTerminal + /call body.windowUidbody.ticketUidbody.empUid 可选 R<CallTerminalActionResponse> 叫号
POST /api/queue/caller/call-terminal/recall 未接入 body.ticketUidbody.windowUid 可选 R<CallTerminalActionResponse> 重呼
POST /api/queue/caller/call-terminal/start 未接入 body.ticketUidbody.windowUidbody.empUid 可选 R<CallTerminalActionResponse> 开始办理
POST /api/queue/caller/call-terminal/complete 未接入 body.ticketUid R<CallTerminalActionResponse> 办结
POST /api/queue/caller/call-terminal/abandon 未接入 body.ticketUid R<CallTerminalActionResponse> 弃号
POST /api/queue/caller/call-terminal/transfer 未接入 body.ticketUidbody.targetWindowUid R<CallTerminalActionResponse> 转移
POST /api/queue/caller/call-terminal/pause 未接入 body.windowUidbody.empUidbody.pauseReason R<CallTerminalActionResponse> 暂停窗口
POST /api/queue/caller/call-terminal/resume 未接入 body.windowUidbody.empUid R<CallTerminalActionResponse> 恢复窗口
POST /api/queue/caller/call-terminal/evaluate 未接入 body.ticketUid;如果提交评分,body.rank 必须在 0-6 R<CallTerminalActionResponse> 发起评价或回写评价
GET /api/queue/caller/call-terminal/is-rank 未接入 query.ticketUid R<Map<String,Object>> 是否已评价
GET /api/queue/caller/call-terminal/queue-count 未接入 query.windowUid R<Map<String,Object>> 当前窗口排队人数
GET /api/queue/caller/call-terminal/pool 未接入 query.winUidquery.keywordquery.keywordsquery.statusquery.pagequery.sizequery.pageSizequery.pagesize 可选 R<CallTerminalTicketPoolResponse> 可叫号票池

pad.callTerminal 常见可选字段:

  • customText
  • serviceUrl
  • forward
  • read
  • driver
  • clients
  • rankUserName
  • rankUserPhone
  • idCard
  • phone

pad.ticket - 实名核验查询示例

请求示例:

{
  "name": "张",
  "idCard": "3301",
  "phone": "138",
  "page": 1,
  "size": 10
}

模糊查询规则:

  • nameLIKE %name%
  • idCardLIKE %idCard%
  • phoneLIKE %phone%
  • 多个条件同时传入时按 AND 组合
  • takeTicketVerified 复用当前取号实名校验逻辑,仅在传入 idCardphone 时返回
  • faceComparePassed 基于当前最新精确匹配记录的 compareValue == 1 判断

返回示例:

{
  "code": 200,
  "msg": "查询成功",
  "data": {
    "page": 1,
    "size": 10,
    "total": 1,
    "matched": true,
    "takeTicketVerified": true,
    "faceComparePassed": true,
    "records": [
      {
        "uid": 1,
        "ticketUid": 101,
        "name": "张三",
        "idCard": "330102199001011234",
        "phone": "13800138000",
        "compareCode": "IDC",
        "compareValue": 1,
        "compareResult": "verified",
        "faceComparePassed": true,
        "verifyTime": "2026-04-22T10:00:00"
      }
    ]
  }
}

4. /public 统一网关

4.1 入口

方法 请求地址 请求参数 返回值 备注
POST /public 请求体为加密后的字符串;解密后结构见下文 PublicGatewayResponseVo<T> 统一网关入口

4.2 解密后的请求体结构

{
  "tag": "pad.ticket",
  "map": {
    "traceId": "202604210001",
    "head": {
      "method": "GET",
      "contentType": "application/json",
      "timestamp": 1710000000000,
      "nonce": "n-1",
      "signature": "hex-signature"
    },
    "path": "/list",
    "query": {},
    "body": {}
  }
}

字段说明:

字段 说明
tag 路由标签,例如 pad.authpad.ticket
map.traceId 链路跟踪号
map.head.method 请求方法;建议显式传
map.head.timestamp 签名时间戳
map.head.nonce 签名随机串
map.head.signature HMAC-SHA256 签名
map.path 子路径,例如 /login/list
map.query 查询参数对象
map.body 请求体对象

4.3 当前已接入 /public 的接口

网关 tag map.path 实际分发到的直连接口 直连接口返回
pad.auth /login POST /api/queue/pad/auth/login R<LoginResponse>
pad.auth /sign POST /api/queue/pad/auth/sign R<SignResponseVo>
pad.menu /main GET /api/queue/pad/menu/main R<MenuPageVo>
pad.appointment /time-slots GET /api/queue/pad/appointment/time-slots R<List<AppointmentTimeSlotVo>>
pad.hallSystem /list GET /api/queue/pad/hallSystem/list R<HallSystemListVo>
pad.hallSystem /value POST /api/queue/pad/hallSystem/value R<Boolean>
pad.hallSystem /overview/metrics GET /api/queue/pad/hallSystem/overview/metrics R<PadOverviewMetricsVo>
pad.hallSystem /overview/metrics/trend GET /api/queue/pad/hallSystem/overview/metrics/trend R<PadOverviewMetricsTrendVo>
pad.queue /ticket/take POST /api/queue/pad/ticket/take R<TakeTicketVo>
pad.queue /overview/metrics GET /api/queue/pad/hallSystem/overview/metrics R<PadOverviewMetricsVo>
pad.queue /overview/metrics/trend GET /api/queue/pad/hallSystem/overview/metrics/trend R<PadOverviewMetricsTrendVo>
pad.business /enabled GET /api/queue/pad/business/enabled R<List<Business>>
pad.ticket /list GET /api/queue/pad/ticket/list R<TicketPageVo>
pad.window /list GET /api/queue/pad/window/list R<WindowPageVo>
pad.window /monitor/list GET /api/queue/pad/window/monitor/list R<WindowMonitorListVo>
pad.print /printers GET /api/queue/pad/print/printers R<List<String>>
pad.print /text POST /api/queue/pad/print/text R<Boolean>
pad.callTerminal /call POST /api/queue/caller/call-terminal/call R<CallTerminalActionResponse>

4.4 /public 调用规则

  • pad.auth /loginpad.auth /sign 外,其余已接入网关的接口都需要 map.head.timestampmap.head.noncemap.head.signature
  • POST 类接口建议显式传 map.head.method
  • pad.auth /sign 在实际使用时还需要 Bearer Token

5. 常见返回字段说明

5.1 LoginResponse

主要字段:

  • access_token
  • refresh_token
  • tokenType
  • expire_in
  • refresh_expire_in
  • client_id
  • scope
  • openid
  • userInfo

userInfo 主要字段:

  • id
  • uid
  • username
  • realName
  • role
  • tenantId
  • image

5.2 Business

主要字段:

  • uid
  • prefix
  • name
  • enabled
  • type
  • handleCount
  • isSpecial

5.3 TakeTicketVo / TakeTicketResponse

主要字段:

  • uid
  • tktId
  • tktIntid
  • status
  • bizUid
  • bizName
  • bizPrefix
  • waitingCount
  • waitingAhead
  • estimatedWaitMinutes
  • tktDate
  • tktTime
  • hallName
  • windowNames
  • message

5.4 TicketPageVo

主要字段:

  • list
  • total
  • page
  • size

list 元素类型为 UnifiedTicketVo

5.5 TicketStatusVo

主要字段:

  • uid
  • tktId
  • status
  • statusText
  • waitingAhead
  • estimatedWaitMinutes

5.6 TicketStatusDetailVo

主要字段:

  • ticketNumber
  • uid
  • businessUid
  • status
  • rank
  • customerName
  • customerPhone
  • generateTime
  • windowId

5.7 WaitingCountVo

主要字段:

  • waitingCount
  • estimatedWaitMinutes
  • bizUid

5.8 WindowPageVo

主要字段:

  • list
  • total
  • page
  • size
  • enabled
  • name

5.9 WindowActionVo

主要字段:

  • windowId
  • name
  • ledAddress
  • enabled
  • createTime
  • displayText
  • businessCount

5.10 WindowDetailVo

主要字段:

  • windowId
  • name
  • ledAddress
  • ledText
  • enabled
  • sid
  • rankMode
  • rankAddress
  • currentTicket
  • todayServed

5.11 WindowBusinessListVo

主要字段:

  • windowId
  • list

5.12 WindowMonitorListVo

主要字段:

  • list
  • idleCount
  • busyCount
  • pausedCount

5.13 HallSystemListVo

主要字段:

  • list
  • total

list 元素 HallSystemItemVo 主要字段:

  • key
  • value
  • memo

5.14 PadOverviewMetricsVo

主要字段:

  • waitingCount
  • todayAppointmentCount
  • idleWindowCount
  • idleKioskCount
  • serverTime

5.15 PadOverviewMetricsTrendVo

主要字段:

  • startTime
  • endTime
  • list

5.16 AppointmentPageVo

主要字段:

  • list
  • total
  • page
  • size

5.17 AppointmentActionVo

主要字段:

  • appointmentId
  • newStatus

5.18 AppointmentStatisticsVo

主要字段:

  • totalAppointments
  • todayAppointments
  • completedAppointments
  • cancelledAppointments
  • timeSlotStats

5.19 CallerWindowBindingResponse

主要字段:

  • locked
  • needSelect
  • selectedWindowUid
  • selectedWindowCode
  • selectedWindowName
  • nextStep
  • windows

5.20 CallTerminalActionResponse

主要字段:

  • action
  • success
  • message
  • ticketUid
  • ticketNo
  • ticketStatus
  • ticketStatusText
  • windowUid
  • windowName
  • resumeToken
  • led
  • taxerName
  • taxerPhone
  • waitSeconds

5.21 CallTerminalTicketPoolResponse

主要字段:

  • winUid
  • keyword
  • status
  • page
  • size
  • total
  • returnedCount
  • list