```sql
CREATE TABLE `video` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`title` varchar(524) DEFAULT NULL COMMENT '视频标题',
`summary` varchar(1026) DEFAULT NULL COMMENT '视频概述',
`cover_img` varchar(524) DEFAULT NULL COMMENT '封面图片URL',
`price` int(11) DEFAULT NULL COMMENT '视频价格(单位:分)',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`point` double(11,2) DEFAULT '8.70' COMMENT '视频评分(默认8.7,最高10分)',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
```
| 字段名 | 类型 | 说明 |
|--------|------|------|
| id | int(11) unsigned | 主键,自增 |
| title | varchar(524) | 视频标题,最大524字符 |
| summary | varchar(1026) | 视频概述,最大1026字符 |
| cover_img | varchar(524) | 封面图片URL |
| price | int(11) | 视频价格,单位为分 |
| create_time | datetime | 创建时间 |
| point | double(11,2) | 视频评分,范围0-10,保留2位小数 |
位于 `src/main/java/net/xdclass/online_xdclass/model/entity/Video.java`
```js
public class Video {
private Integer id;
private String title;
private String summary;
private String coverImg;
private Integer price;
private Date createTime;
private Double point;
private List<Chapter> chapterList;
```
该类定义了视频的核心属性,与数据库表字段一一对应。
位于 `src/main/java/net/xdclass/online_xdclass/model/request/VideoRequest.java`
该类用于接收前端传入的视频数据,包含以下字段:
- title: 视频标题
- summary: 视频概述
- coverImg: 封面图片URL
- price: 视频价格(分)
- createTime: 创建时间
- point: 视频评分
位于 `src/main/resources/mapper/VideoMapper.xml`
```xml
<insert id="addBatch" useGeneratedKeys="true" parameterType="Video">
INSERT INTO `video` (`title`,`summary`,`cover_img`,`price`,`create_time`,`point`)
VALUES
<foreach collection="list" item="video" separator=",">
(
</foreach>
</insert>
```
位于 `src/main/java/net/xdclass/online_xdclass/service/VideoService.java`
位于 `src/main/java/net/xdclass/online_xdclass/service/impl/VideoServiceImpl.java`
服务层通过调用Mapper接口实现批量插入功能。
位于 `src/main/java/net/xdclass/online_xdclass/controller/VideoController.java`
```java
@PostMapping("addList")
public JsonData addList(@RequestBody List<VideoRequest> videoRequest){
int row = videoService.addBatch(videoRequest);
if (row > 0){
return JsonData.buildSuccess("新增成功");
}else{
return JsonData.buildError("新增失败");
}
}
```
- **请求路径**: `/api/v1/pub/video/addList`
- **请求方法**: POST
- **请求参数**: JSON数组,包含多个VideoRequest对象
- **响应格式**: JSON格式的统一返回结果
```http
POST /api/v1/pub/video/addList
Content-Type: application/json
[
{
"title": "Java基础入门",
"summary": "本课程讲解Java语言的基础知识",
"cover_img": "https://example.com/images/java.jpg",
"price": 9900,
"point": 9.5
},
{
"title": "Spring Boot实战",
"summary": "Spring Boot框架开发实战教程",
"cover_img": "https://example.com/images/spring.jpg",
"price": 12900,
"point": 9.8
}
]
```
```json
{
"code": 0,
"msg": "新增成功",
"data": null
}
```
```json
{
"code": 1,
"msg": "新增失败",
"data": null
}
```
- **路径**: `/api/v1/pub/video/addList`
- **方法**: POST
- **请求头**: `Content-Type: application/json`
```json
[
{
"title": "测试视频1",
"summary": "这是一个测试视频",
"cover_img": "https://example.com/test.jpg",
"price": 0,
"point": 8.5
}
]
```
- title: 最大524字符
- summary: 最大1026字符
- cover_img: 最大524字符
- price: 以分为单位(如100元=10000分)
- point: 0-10之间的双精度浮点数,保留2位小数
- create_time: 由后端自动填充
- 支持批量插入多个视频
- 插入成功返回影响的行数
- 若影响行数大于0则表示成功