# 农技课堂 — 接口说明

> 数据视图：`v_agricultural_course`（DDL 见 `sql/biz_v_agricultural_course.sql`）。  
> 后端包：`com.ruoyi.web.modules.news`；接口：`BizAppAgriculturalCourseController`。

---

## 1. 视图 `v_agricultural_course`

仅聚合 **已发布** 记录，字段统一如下：

| 视图列 | 说明 |
| --- | --- |
| `id` | 源业务主键（视频课程/实战培训） |
| `title` | 标题 |
| `introduction` | 简介 |
| `type` | 类型编码（见 **§1.1**） |
| `cover_file_url` | 封面 URL |
| `content_file_url` | 视频 URL（实战培训多为空） |
| `publish_time` | 发布时间 |
| `actual_enrolled_count` | 实际报名人数（仅实战培训） |
| `planned_head_count` | 计划人数（仅实战培训） |
| `registration_start_time` | 报名开始（仅实战培训） |
| `registration_end_time` | 报名截止（仅实战培训） |
| `training_time` | 培训时间（仅实战培训） |
| `expected_outcome` | 预期成果（仅实战培训） |

### 1.1 `type` 取值

| 场景 | `type` 来源 | 示例 |
| --- | --- | --- |
| 视频课程 | `biz_tech_resource.course_topic` | `005001` 基础养殖 … `005004` 政策解读 |
| 实战培训 | `biz_practical_training.training_status` | `006001` 未开始 … `006004` 已截止 |

移动端视频 Tab 传 `005001`–`005004`；实战培训 Tab 传 `006001`–`006004`（常用 `006002` 报名中）。

---

## 2. 列表接口

**`GET /app/agriculturalCourse/list`**

| 参数 | 必填 | 说明 |
| --- | --- | --- |
| `type` | 是 | 类别编码，见 **§1.1** |
| `title` | 否 | 标题模糊 |
| `pageNum` | 否 | 默认 1 |
| `pageSize` | 否 | 默认 10，最大 50 |

响应 `TableDataInfo`：`rows`、`total`；排序 `publish_time` 降序。

**`rows[]` 主要字段**：`id`、`title`、`introduction`、`type`、`coverFileUrl`、`contentFileUrl`、`publishTime`；实战培训另含 `actualEnrolledCount`、`plannedHeadCount`、`registrationStartTime`、`registrationEndTime`、`trainingTime`、`expectedOutcome`。

示例：

```http
GET /app/agriculturalCourse/list?type=005001&pageNum=1&pageSize=10
GET /app/agriculturalCourse/list?type=006002&title=牧业
```

页面参考：`ruoyi-ui-app/package-a/agri-classroom/index.vue`。
