课程·排课·场地接口
课程清单(course:read)、排课清单 / 教练排课 / 场地与场地使用情况(schedule:read)。
极客场馆开放平台 · 课程 / 排课 / 场地接口
版本 v1 · 配套文档:加密与签名接入 · 通用约定与错误码 所有路径前缀
https://www.gymker.com/api/open/v1。响应/错误码/幂等/限流见通用约定。
1. 能力总览
| 能力 | scope | 典型用途 |
|---|---|---|
| 课程清单 | course:read | 同步门店课程产品目录 |
| 排课清单(团课 + 小班) | schedule:read | 拉某时段课表 |
| 教练排课情况(私教 1:1) | schedule:read | 看教练排期与负荷 |
| 场地(教室)清单 | schedule:read | 同步场地基础信息 |
| 场地使用情况 | schedule:read | 看某时段各场地课次占用 |
每个 AppId 只对应一家门店,所有接口自动按该门店过滤。排课与场地使用按课次时间
startTime过滤。
2. 课程清单 · GET /courses
门店课程产品目录(产品定义)。scope course:read。
| Query | 类型 | 必填 | 说明 |
|---|---|---|---|
businessType | string | 否 | PRIVATE / SMALL_CLASS / GROUP / MEMBERSHIP |
status | int | 否 | 0 停用 / 1 启用 |
page / size | int | 否 | 默认 1 / 20,size ≤ 100 |
{
"id": 301, "businessType": "GROUP", "productCode": "GRP-001",
"productName": "燃脂团课", "color": "#FF6A00",
"maxCapacity": 20, "defaultClassroomId": 11,
"status": 1, "sortOrder": 1,
"createTime": "2026-01-10T10:00:00", "updateTime": "2026-03-01T09:00:00"
}
3. 排课清单 · GET /schedules
团课 + 小班课次,统一列表 + scheduleType 字段,按课次时间排序。私教 1:1 排课见 §4。scope schedule:read。
| Query | 类型 | 必填 | 说明 |
|---|---|---|---|
startDate / endDate | yyyy-MM-dd | 是 | 按 startTime 过滤,跨度 ≤ 90 天 |
scheduleType | string | 否 | 不传查全部;group(团课)/ small(小班) |
coachStaffId | long | 否 | 按教练过滤 |
page / size | int | 否 | 默认 1 / 20,size ≤ 100 |
{
"scheduleType": "group", "id": 88001, "courseName": "燃脂团课",
"coachStaffId": 5001, "coachName": "李教练", "classroomId": 11,
"startTime": "2026-05-22T10:00:00", "endTime": "2026-05-22T11:00:00",
"durationMinutes": 60, "capacity": 20, "bookedCount": 15,
"status": 1, "settleStatus": 1, "createTime": "2026-05-01T09:00:00"
}
status/settleStatus各类型字典不同,原样透出(settleStatus:0 待确认 / 1 有效 / 2 作废)。capacity团课取最终容量,小班取计划容量。
4. 教练排课情况 · GET /coach-schedules
私教 1:1 排课(coach_course_schedule),按课次时间排序。scope schedule:read。
| Query | 类型 | 必填 | 说明 |
|---|---|---|---|
startDate / endDate | yyyy-MM-dd | 是 | 按 startTime 过滤,跨度 ≤ 90 天 |
coachStaffId | long | 否 | 不传查全店教练 |
page / size | int | 否 | 默认 1 / 20,size ≤ 100 |
{
"id": 90001, "coachStaffId": 5001, "coachName": "李教练",
"memberId": 12345, "courseTypeId": 301, "classroomId": 11,
"startTime": "2026-05-22T14:00:00", "endTime": "2026-05-22T15:00:00",
"durationMins": 60, "status": 2,
"confirmTime": "2026-05-20T10:00:00", "cancelTime": null,
"createTime": "2026-05-20T09:58:00"
}
status:0 待分配 / 1 待确认 / 2 已确认 / 3 已完成 / 4 已取消 / 5 已拒绝。
5. 场地(教室)清单 · GET /venues
门店教室基础信息(classroom_config)。scope schedule:read。data 为数组:
[
{ "id": 11, "classroomName": "团操房", "maxCapacity": 30,
"status": 1, "sortOrder": 1, "remark": null,
"createTime": "2026-01-10T10:00:00" }
]
6. 场地使用情况 · GET /venues/usage
按教室聚合某时段内的课次占用,跨团课 + 小班 + 私教(排除已取消课次)。scope schedule:read。
| Query | 类型 | 必填 | 说明 |
|---|---|---|---|
startDate / endDate | yyyy-MM-dd | 是 | 按 startTime 过滤,跨度 ≤ 90 天 |
data 为数组(按课次数倒序);classroomId=null 行代表开放场地 / 未指定教室的课次:
[
{ "classroomId": 11, "classroomName": "团操房",
"sessionCount": 42, "totalMinutes": 2520,
"groupCount": 30, "smallCount": 8, "privateCount": 4 },
{ "classroomId": null, "classroomName": null,
"sessionCount": 12, "totalMinutes": 720,
"groupCount": 0, "smallCount": 0, "privateCount": 12 }
]