# 畜牧资源 — 接口说明

> 数据视图：`v_livestock_resource`（DDL 见 `sql/biz_v_livestock_resource.sql`）。  
> 后端包：`com.ruoyi.web.modules.news`；接口：`BizAppLivestockResourceController`。  
> 医疗资源类型编码与 `biz_medical_resource.resource_type`（资讯类别 `parentCode=004`、`categoryType=6`）；科技资源与 `biz_tech_resource.resource_type`（`categoryType=7`）一致。

---

## 1. 视图 `v_livestock_resource`

仅聚合 **`publish_status = 1`（已发布）** 记录，字段统一如下：

| 视图列 | 说明 |
| --- | --- |
| `title` | 资源名称 |
| `introduction` | 简介 |
| `type` | 资源类型编码（`resource_type`） |
| `cover_file_url` | 封面/主图访问 URL |
| `content_file_url` | 视频/附件访问 URL（可为 `null`） |
| `publish_time` | 发布时间 |

### 1.1 数据来源（UNION）

| 来源表 | `type` | 说明 |
| --- | --- | --- |
| `biz_medical_resource` | `004002` | 专家团队 |
| `biz_tech_resource` | `004006` | 技术成果 |
| `biz_tech_resource` | `004008` | 视频课程 |
| `biz_tech_resource` | `004007` | 共享仪器 |

**说明**：视图不含 `id`；列表项无全局唯一主键，详情页若需跳转源业务，须按 `type` + 业务规则另行约定或扩展视图。

### 1.2 移动端 Tab 与 `type`

畜牧资源页 4 个 Tab 与类型编码一一对应：

| Tab | `type` |
| --- | --- |
| 专家团队 | `004002` |
| 技术成果 | `004006` |
| 共享仪器 | `004007` |
| 视频课程 | `004008` |

---

## 2. 列表接口

### 2.1 请求

| 项 | 值 |
| --- | --- |
| **Method** | `GET` |
| **URI** | `/app/livestockResource/list` |
| **鉴权** | 移动端登录态（与 `/app/*` 其它接口一致） |

**Query 参数**

| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `type` | string | **是** | 资源类型编码，须为 **§1.2** 中四种之一 |
| `title` | string | 否 | 标题关键字，对 `title` 列模糊匹配 |
| `pageNum` | int | 否 | 页码，默认 **1**；小于 1 时按 1 处理 |
| `pageSize` | int | 否 | 每页条数，默认 **10**；小于 1 时按 10 处理；**最大 50** |

示例：

```http
GET /app/livestockResource/list?type=004006&pageNum=1&pageSize=10
GET /app/livestockResource/list?type=004008&title=养殖
```

### 2.2 响应

RuoYi 分页 `TableDataInfo`：`code`、`msg`、`rows`（当前页数据）、`total`（符合条件的总条数）。排序固定为 `publish_time` 降序。

**`rows[]` 单条字段（驼峰）**

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `title` | string | 标题 |
| `introduction` | string | 简介 |
| `type` | string | 资源类型编码 |
| `coverFileUrl` | string | 封面 URL，可空 |
| `contentFileUrl` | string | 视频/附件 URL，可空 |
| `publishTime` | string | 发布日期，`yyyy-MM-dd` |

**示例**

```json
{
  "code": 200,
  "msg": "查询成功",
  "total": 1,
  "rows": [
    {
      "title": "高原牦牛繁育技术成果",
      "introduction": "成果简介示例",
      "type": "004006",
      "coverFileUrl": "/profile/upload/cover.png",
      "contentFileUrl": "/profile/upload/demo.mp4",
      "publishTime": "2026-05-10"
    }
  ]
}
```

### 2.3 业务校验

| 场景 | 结果 |
| --- | --- |
| `type` 为空 | 「资源类型不能为空」 |
| `type` 非视图涵盖的四种编码 | 「资源类型无效，请选择畜牧资源支持的类型」 |

校验实现：`LivestockResourceTypeValidator`（`LivestockResourceRules`：`004002`、`004006`、`004007`、`004008`）。

---

## 3. 前端（小程序）对接要点

| 能力 | 说明 |
| --- | --- |
| 列表缩略图 | `coverFileUrl` |
| 视频/附件 | `contentFileUrl`（为空则不展示；专家团队 `004002` 视图侧 `content_file_url` 为 `null`） |
| 分类筛选 | 请求参数 `type` = Tab 对应编码 |
| 分类名称展示 | 医疗：`GET /category/informationCategory/children?parentCode=004&categoryType=6`（`004001`～`004004`）；科技：`categoryType=7`（`004005`～`004008`）取 `name` |
| 分页 / 上拉加载 | 首屏 `pageNum=1`；加载更多时 `pageNum++`，当 `rows.length < pageSize` 或已加载条数 ≥ `total` 时无更多数据 |

页面参考：`ruoyi-ui-app/package-a/livestock-resources/index.vue`（列表数据源待接本接口）。

---

## 4. 修订记录

| 日期 | 说明 |
| --- | --- |
| 2026-05-20 | 初版：`GET /app/livestockResource/list`；视图 `v_livestock_resource` 与四类 Tab |
