教室借用流程 API¶
1. 发起借用申请¶
所有登录用户均可申请:
student → counselor
chinese_teacher → assistant
foreign_teacher → assistant
POST /api/v1/borrow
Body
{
"classroom_id": 121,
"start_time": "2025-04-12T09:00:00",
"end_time": "2025-04-12T11:00:00",
"reason": "Lecture",
"expected_students": 30,
"activity_type": "student_activity",
"is_urgent": false,
"applicant_id": 12,
"applicant_code": "2024123456"
}
说明:
applicant_id/applicant_code仅superadmin/secretary/assistant可用,用于代用户提交申请;普通用户忽略该字段。
业务规则:
时间限制(与
is_urgent、申请人角色有关):assistant/superadmin:不受时间限制student:仅允许申请未来 +1 到 +7 天chinese_teacher/foreign_teacher/counselor/secretary:仅允许申请未来 至少 +1 天is_urgent=true(加急):只能选择 当天
时间冲突:
与已有手动借用冲突:
time conflict with existing borrow application与课程表冲突:
time conflict with course schedule
2. 借用申请列表(按角色查看)¶
GET /api/v1/borrow
Query:
status
applicant
mine(可选,
true/1时只看自己的申请)source_type(可选,
manual/course)review_level(可选,
first_review/second_review)activity_type(可选,
student_activity/teaching_activity)page, page_size(兼容 size)
3. 申请详情¶
GET /api/v1/borrow/{id}
4. 审核申请¶
权限说明:
角色 |
可审批范围 |
|---|---|
|
学生活动一审( |
|
教学活动一审( |
|
所有申请二审 |
|
所有申请,且可跳过流程直接批准 |
PUT /api/v1/borrow/{id}/review
Body
{
"action": "approve",
"remark": "同意",
"forward_to": "superadmin"
}
action:approve/reject/forwardforward_to:仅当action=forward时需要
系统自动触发:
微信推送(中方教师/学生)
邮件推送(外方教师)
说明:
当申请处于
first_review,action=approve会将申请流转到second_review(状态仍为pending)当申请处于
second_review,action=approve才会最终approvedsuperadmin可跳过一审/二审流程直接批准assistant/superadmin允许自审自己的申请,其余角色禁止自审
5. 申请者主动取消¶
PUT /api/v1/borrow/{id}/cancel
限制:
仅允许申请人本人取消
距离借用开始时间不足 6 小时内不允许取消
6. 课程借用改期(申请人或管理员)¶
仅支持对 source_type=course 且 status=approved 的记录改期:原记录会被取消(cancelled),同时创建一条新的 course 记录并直接 approved。
POST /api/v1/borrow/{id}/reschedule
Body:
{
"classroom_id": 121,
"start_time": "2026-01-20T08:00:00+08:00",
"end_time": "2026-01-20T09:50:00+08:00"
}
权限:申请人本人,或 superadmin/secretary/assistant。