Files
railwaysystem/docs/api-v2/10_permission_and_error_codes.md
T

12 KiB

RailwaySystem 权限字符与业务错误码规范

设计依据: 全面沿用若依成熟的 RBAC 权限控制体系与全局异常拦截机制。 实施原则: 权限字符标准化归一为 train:* 前缀;错误码统一收敛并与若依 ServiceException 及 AjaxResult 深度融合,拒绝重复造轮子。 Review Round 1 修订: 严禁引入任何硬编码的“不及格/不合格结业”阻断错误码;报到逾期错误码调整为生命周期时限告警。


1. 权限编码规范 (RuoYi RBAC)

系统一期主要服务于三类角色:培训管理员 (admin)、任课教师 (teacher)、参训学员 (student)。 所有 API 严格通过 @PreAuthorize("@ss.hasPermi('train:xxx:xxx')") 进行鉴权拦截。

1.1 Module A:人员与基础资源权限 (23 个权限字符)

权限字符 权限名称 对应主要 API 适用角色
train:teacher:list 教师查询/导出 GET /train/teacher/list 管理员, 教师
train:teacher:query 教师详情 GET /train/teacher/{tId} 管理员, 教师
train:teacher:add 教师新增 POST /train/teacher 管理员
train:teacher:edit 教师修改/启停用 PUT /train/teacher/{tId} 管理员
train:student:list 学员库查询 GET /train/student/list 管理员
train:student:query 学员详情 GET /train/student/{sId} 管理员
train:student:add 学员单条录入 POST /train/student 管理员
train:student:edit 学员档案修改 PUT /train/student/{sId} 管理员
train:student:import 学员Excel导入 POST /train/student/import 管理员
train:course:list 课程库列表 GET /train/course/list 管理员, 教师
train:course:query 课程详情 GET /train/course/{cId} 管理员, 教师
train:course:add 课程新增 POST /train/course 管理员
train:course:edit 课程修改/绑资源 PUT /train/course/{cId} 管理员
train:resource:list 教学资源列表 GET /train/resource/list 管理员, 教师
train:resource:edit 教学资源增删改 POST/PUT/DELETE /train/resource 管理员
train:classroom:list 教室列表 GET /train/classroom/list 管理员, 教师
train:classroom:edit 教室维护 POST/PUT /train/classroom 管理员
train:site:list 实训场地列表 GET /train/training-site/list 管理员, 教师
train:site:edit 实训场地维护 POST/PUT /train/training-site 管理员
train:board:list 电子班牌查询 GET /train/electronic-board/list 管理员
train:board:edit 电子班牌注册维护 POST/PUT /train/electronic-board 管理员
train:dormitory:list 宿舍房间/房态查询 GET /train/dormitory/list 管理员, 宿管
train:dormitory:edit 宿舍房间维护 POST/PUT /train/dormitory 管理员, 宿管

1.2 Module B:开班计划与排课权限 (17 个权限字符)

权限字符 权限名称 对应主要 API 适用角色
train:plan:list 培训计划列表 GET /train/plans 管理员, 教师
train:plan:query 计划详情/工作台/课表 GET /train/plans/{planId}/* 管理员, 教师
train:plan:add 创建培训计划 POST /train/plans 管理员
train:plan:edit 编辑培训计划/配课 PUT /train/plans/{planId}, POST /courses 管理员
train:plan:complete 结束培训计划 POST /train/plans/{planId}/complete 管理员
train:enrollment:list 参训名单查询 GET /train/plans/{planId}/enrollments 管理员, 教师
train:enrollment:query 参训档案详情 GET /train/enrollments/{enrollmentId} 管理员
train:enrollment:add 添加参训人员 POST /train/plans/{planId}/enrollments 管理员
train:enrollment:import Excel批量导入参训人员 POST /train/plans/{planId}/enrollments/batch 管理员
train:enrollment:edit 修改参训状态 PUT /train/enrollments/{enrollmentId}/status 管理员
train:enrollment:remove 移除参训人员 DELETE /train/enrollments/{enrollmentId} 管理员
train:lesson:query 课次详情/冲突预检 POST /train/lessons/check-conflict 管理员, 教师
train:lesson:add 新增课次排课 POST /train/plans/{planId}/lessons 管理员
train:lesson:edit 修改课次排课 PUT /train/lessons/{lessonId} 管理员
train:lesson:remove 删除课次 DELETE /train/lessons/{lessonId} 管理员
train:report:confirm 学员报到确认 POST /train/enrollments/{enrollmentId}/report 管理员, 学员自助
train:report:list 报到记录列表 GET /train/plans/{planId}/reports 管理员

1.3 Module C:住宿、门禁与考勤权限 (8 个权限字符)

权限字符 权限名称 对应主要 API 适用角色
train:accommodation:list 住宿安排查看 GET /train/plans/{planId}/accommodations 管理员, 宿管
train:accommodation:assign 批量预分配宿舍 POST /train/plans/{planId}/accommodations/preallocate 管理员, 宿管
train:accommodation:adjust 单人调房/走读设置 PUT /train/enrollments/{enrollmentId}/accommodation* 管理员, 宿管
train:dormauth:list 门禁状态查询 GET /train/plans/{planId}/dorm-auths 管理员, 宿管
train:dormauth:sync 门禁授权同步/重试 POST /train/accommodations/{accommodationId}/auth/sync 管理员
train:attendance:list 考勤查询 GET /train/lessons/{lessonId}/attendance 管理员, 教师
train:attendance:checkin 课次打卡签到/签退 POST /train/attendance/sign-in, sign-out 班牌回调, 教师
train:attendance:edit 人工修正/补录考勤 PUT /train/attendance/{checkinId}, POST /manual-add 管理员, 教师

1.4 Module D:成绩、学习、统计与画像权限 (8 个权限字符)

权限字符 权限名称 对应主要 API 适用角色
train:score:query 成绩查询/台账矩阵 GET /train/plans/{planId}/scores/matrix 管理员, 教师
train:score:config 配置成绩项目与权重 POST /train/plans/{planId}/score-items 管理员
train:score:edit 录入单条/批量成绩 POST /train/scores/entry 管理员, 教师
train:score:import Excel批量导入成绩 POST /train/plans/{planId}/scores/import 管理员, 教师
train:learning:list 学习记录列表查询 GET /train/plans/{planId}/study-records 管理员, 教师
train:statistics:query 统计概览/下钻分析 GET /train/plans/{planId}/statistics/* 管理员, 领导
train:portrait:query 学员画像查询 GET /train/enrollments/{enrollmentId}/portrait 管理员, 教师, 学员
train:portrait:generate 刷新/生成学员画像 POST /train/enrollments/{enrollmentId}/portrait/generate 管理员

2. 统一业务错误码模型字典 (40000 ~ 40999)

系统全面兼容若依的 ServiceException 体系。后端业务校验不通过时,统一抛出带有特定错误码的 ServiceException,由若依框架现有的 GlobalExceptionHandler 统一捕获,转换输出为标准的 AjaxResult.error(code, msg)。

错误码 常量定义 默认错误提示信息 对应模块/用例
40001 TEACHER_PHONE_DUPLICATED 教师手机号码已存在 教师管理
40002 STUDENT_IDCARD_DUPLICATED 学员身份证号已建档,不可重复录入 学员管理
40003 COURSE_CODE_DUPLICATED 课程编码已存在 课程库
40004 RESOURCE_IN_USE 该教学资源已被课程引用,无法删除 教学资源
40005 BOARD_SN_DUPLICATED 电子班牌 SN 设备编号已存在 电子班牌
40006 DORM_ROOM_DUPLICATED 同一楼栋下该宿舍房号已存在 宿舍房间
40007 DORM_CAPACITY_CANNOT_SHRINK 房间容量不可调整至小于当前已入住人数 宿舍房间
40008 CLASSROOM_NAME_DUPLICATED 教室名称已存在 教室
40009 SITE_NAME_DUPLICATED 实训场地名称已存在 实训场地
40010 PLAN_TIME_INVALID 培训计划起止时间不合法 (结束时间必须晚于开始时间) 开班计划 (UC-01)
40011 PLAN_NAME_DUPLICATED 同名培训计划已存在 开班计划 (UC-01)
40012 PLAN_STATUS_LOCKED 当前培训计划已结训或取消,不允许修改 开班计划 (UC-02)
40013 PLAN_LESSON_OUT_OF_BOUNDS 调整培训时间导致现有已排课次超出计划周期 开班计划 (UC-02)
40014 PLAN_ALREADY_COMPLETED 培训计划已经结训,不可重复执行结训 开班计划 (UC-29)
40020 PLAN_COURSE_DUPLICATED 该课程已添加到本期培训计划中 课程配置 (UC-03)
40021 PLAN_COURSE_HAS_LESSONS 该课程已排定课次,请先删除关联课次后再移除课程 课程配置
40022 PLAN_COURSE_HAS_SCORE_ITEMS 该课程已关联成绩考核项目,不可直接移除 课程配置
40030 ENROLLMENT_DUPLICATED 该学员已在本班参训名单中,不可重复添加 参训管理 (UC-04)
40031 RECRUIT_LIMIT_EXCEEDED 参训人数已超出本期计划招生上限 参训管理 (UC-04)
40032 ENROLLMENT_HAS_BUSINESS_DATA 该学员已产生考勤或成绩数据,不可删除参训档案 参训管理
40040 LESSON_TEACHER_CONFLICT 教师排课时间冲突:该教师在指定时段已有其他教学任务 排课冲突 (UC-07/10)
40041 LESSON_CLASSROOM_CONFLICT 教室排课时间冲突:该教室在指定时段已被占用 排课冲突 (UC-07/10)
40042 LESSON_SITE_CONFLICT 实训场地排课时间冲突:该实训场地在指定时段已被占用 排课冲突 (UC-07/10)
40043 LESSON_PLAN_OVERLAP 本班课次时间重叠:同一培训班不可在同一时段上多门课 排课冲突 (UC-07/10)
40044 LESSON_ALREADY_HAS_ATTENDANCE 该课次已有学员签到打卡,禁止修改上课时间 课次维护 (UC-08)
40050 REPORT_ALREADY_CONFIRMED 该学员已完成报到确认,无需重复报到 学员报到 (UC-15)
40051 REPORT_DEADLINE_WARNING 已超过本期培训报到截止时间,触发时限提醒 学员报到 (UC-15)
40060 DORM_CAPACITY_EXCEEDED 候选宿舍总可用床位不足,无法满足当前分配需求 住宿分配 (UC-12)
40061 DORM_GENDER_CONFLICT 宿舍性别属性与学员性别不符,严禁混住 住宿分配 (UC-12/13)
40062 DORM_ROOM_FULL 目标宿舍房间床位已满,无法调入 住宿调整 (UC-13)
40070 STUDENT_FACE_DATA_MISSING 学员未采集人脸照片,无法下发门禁授权 门禁同步 (UC-16)
40071 DOOR_DEVICE_OFFLINE 目标门锁设备离线,门禁授权下发失败 门禁同步 (UC-16)
40080 ATTENDANCE_PLAN_MISMATCH 业务不变量校验失败:考勤学员与课次所属培训班不一致 考勤管理 (UC-17)
40090 SCORE_WEIGHT_SUM_INVALID 成绩项目配置不合法:各项有效权重之和必须等于100% 成绩配置 (UC-20)
40091 SCORE_ITEM_COURSE_MISMATCH 成绩项目关联的课程不属于当前培训计划 成绩配置 (UC-20)
40092 SCORE_EXCEEDS_FULL_SCORE 录入分数超出该项目设定的满分上限 成绩录入 (UC-21)
40093 SCORE_PLAN_MISMATCH 业务不变量校验失败:成绩录入学员工号与科目所属班次不符 成绩录入 (UC-21)
40100 STUDY_EVENT_INVALID 外部学习记录数据不合法 (结束时间早于开始时间或时长为负) 学习接入 (UC-24)
40110 PORTRAIT_NOT_FOUND 该学员画像尚未生成,请先执行画像刷新 学员画像 (UC-28)

补录说明: 错误码 40008 (CLASSROOM_NAME_DUPLICATED) 与 40009 (SITE_NAME_DUPLICATED) 属于 Issue Backlog 已有要求在错误码 Catalog 中的遗漏补录,不是新增业务需求。