# 实战业务培训 — 移动端接口说明 ## 1. 概述 | 项 | 说明 | | --- | --- | | Base Path | `/app/practicalTraining` | | 数据表 | `biz_practical_training`、`biz_practical_training_member` | | 鉴权 | 需登录(`SecurityUtils.getUserId()`) | | 公开展示 | 农技课堂 `GET /app/agriculturalCourse/list?type={006001–006004}` | ## 2. 培训状态(`training_status`) | 编码 | 含义 | | --- | --- | | `006001` | 未开始 | | `006002` | 报名中 | | `006003` | 已报满 | | `006004` | 已截止 | ## 3. 我的报名 ### 3.1 分页列表 `GET /app/practicalTraining/myEnroll/list` - 关联 `biz_practical_training_member`(`enroll_status=0`)与 `biz_practical_training`(已发布、未删除)。 - 仅当前登录用户有效报名记录;按 `enroll_time` 倒序。 - 支持 `pageNum` / `pageSize`。 **列表行主要字段**:`id`、`trainingTopic`、`trainingTime`、`trainingIntro`、`coverFileUrl`、`trainingStatus`、`trainingStatusName`、`actualEnrolledCount`、`plannedHeadCount`、`registrationEndTime`、`enrollTime`。 ### 3.2 详情 `GET /app/practicalTraining/myEnroll/{id}` - `{id}` 为培训主表 `biz_practical_training.id`。 - 须存在当前用户对该培训的有效报名,否则返回「未找到您的报名记录」。 - **详情字段**:培训完整信息 + `enrollTime` + `trainingStatus` / `trainingStatusName` + **`canCancel`**(是否允许取消报名)。 **`canCancel`**:`training_status != 006004`(已截止)时为 `true`。 ## 4. 报名 / 取消报名 ### 4.1 立即报名(农技课堂等入口) `POST /app/practicalTraining/{id}/enroll` - 仅 `training_status=006002` 且用户未报名时可成功。 ### 4.2 取消报名 `POST /app/practicalTraining/{id}/cancelEnroll` - 用户须已报名(`enroll_status=0`)。 - **`training_status=006004`(已截止)时不允许取消**,提示「报名已截止,不允许取消报名」。 - 未截止时(未开始 / 报名中 / 已报满)允许取消。 - 成功后回写 `actual_enrolled_count` 与 `training_status`。 ## 5. 错误示例 | 场景 | 提示 | | --- | --- | | 无报名记录查详情 | 未找到您的报名记录 | | 已截止取消 | 报名已截止,不允许取消报名 | | 未报名取消 | 您未报名该培训 | | 非报名中报名 | 当前培训不可报名 |