学成在线笔记+踩坑(7)——绑定媒资

简介: 绑定媒资、解除媒资绑定

 导航:

【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析

目录

8 绑定媒资

8.1 需求分析

8.1.1 业务流程

8.1.2 数据模型

8.2 接口定义

8.2.1 抽取模型类

8.2.2 定义接口层

8.3 接口开发

8.3.1 DAO开发

8.3.2 Service开发

8.3.3 接口层完善

8.3.4 接口测试

8.4 解除媒资绑定


8 绑定媒资

8.1 需求分析

8.1.1 业务流程

首先进入课程计划界面,然后选择要绑定的视频进行绑定即可。

具体的业务流程如下:

1.教育机构用户进入课程管理页面并某一个课程,在"课程大纲"标签页的某一小节后可点击”添加视频“。

image.gif

2.弹出添加视频对话框,可通过视频关键字搜索已审核通过的视频媒资。

image.gif

3.选择视频媒资,点击提交按钮,完成课程计划绑定媒资流程。

image.gif

课程计划关联视频后如下图:

image.gif

点击已经绑定的视频名称即可解除绑定。

image.gif

8.1.2 数据模型

课程计划绑定媒资文件后存储至课程计划绑定媒资表

image.gif

8.2 接口定义

8.2.1 抽取模型类

根据业务流程,用户进入课程计划列表,首先确定向哪个课程计划添加视频,点击”添加视频“后用户选择视频,选择视频,点击提交,前端以json格式请求以下参数:

提交媒资文件id、文件名称、教学计划id

示例如下:

{
  "mediaId": "70a98b4a2fffc89e50b101f959cc33ca",
  "fileName": "22-Hmily实现TCC事务-开发bank2的confirm方法.avi",
  "teachplanId": 257
}

image.gif

此接口在内容管理模块提供。

请求参数模型类型:

@Data
@ApiModel(value="BindTeachplanMediaDto", description="教学计划-媒资绑定提交数据")
public class BindTeachplanMediaDto {
@ApiModelProperty(value = "媒资文件id", required = true)
private String mediaId;
@ApiModelProperty(value = "媒资文件名称", required = true)
private String fileName;
 @ApiModelProperty(value = "课程计划标识", required = true)
 private Long teachplanId;
}

image.gif

8.2.2 定义接口层

在TeachplanController类中定义接口如下:

@ApiOperation(value = "课程计划和媒资信息绑定")
@PostMapping("/teachplan/association/media")
public void associationMedia(@RequestBody BindTeachplanMediaDto bindTeachplanMediaDto){
}

image.gif

8.3 接口开发

8.3.1 DAO开发

对teachplanMedia表自动生成Mapper。

8.3.2 Service开发

根据需求定义service接口

/**
 * @description 教学计划绑定媒资
 * @param bindTeachplanMediaDto
 * @return com.xuecheng.content.model.po.TeachplanMedia
 * @author Mr.M
 * @date 2022/9/14 22:20
*/
public TeachplanMedia associationMedia(BindTeachplanMediaDto bindTeachplanMediaDto);

image.gif

定义接口实现

@Transactional
 @Override
public TeachplanMedia associationMedia(BindTeachplanMediaDto bindTeachplanMediaDto) {
 //教学计划id
 Long teachplanId = bindTeachplanMediaDto.getTeachplanId();
 Teachplan teachplan = teachplanMapper.selectById(teachplanId);
 if(teachplan==null){
  XueChengPlusException.cast("教学计划不存在");
 }
 Integer grade = teachplan.getGrade();
 if(grade!=2){
  XueChengPlusException.cast("只允许第二级教学计划绑定媒资文件");
 }
 //课程id
 Long courseId = teachplan.getCourseId();
 //先删除原来该教学计划绑定的媒资
 teachplanMediaMapper.delete(new LambdaQueryWrapper<TeachplanMedia>().eq(TeachplanMedia::getTeachplanId,teachplanId));
 //再添加教学计划与媒资的绑定关系
 TeachplanMedia teachplanMedia = new TeachplanMedia();
 teachplanMedia.setCourseId(courseId);
 teachplanMedia.setTeachplanId(teachplanId);
 teachplanMedia.setMediaFilename(bindTeachplanMediaDto.getFileName());
 teachplanMedia.setMediaId(bindTeachplanMediaDto.getMediaId());
 teachplanMedia.setCreateDate(LocalDateTime.now());
 teachplanMediaMapper.insert(teachplanMedia);
 return teachplanMedia;
}

image.gif

8.3.3 接口层完善

完善接口层调用Service层的代码

@ApiOperation(value = "课程计划和媒资信息绑定")
@PostMapping("/teachplan/association/media")
void associationMedia(@RequestBody BindTeachplanMediaDto bindTeachplanMediaDto){
    teachplanService.associationMedia(bindTeachplanMediaDto);
}

image.gif

8.3.4 接口测试

1、使用httpclient测试

### 课程计划绑定视频
POST {{media_host}}/media/teachplan/association/media
Content-Type: application/json
{
  "mediaId": "",
  "fileName": "",
  "teachplanId": ""
}

image.gif

2、前后端联调

此功能较为简单推荐直接前后端联调

向指定课程计划添加视频

8.4 解除媒资绑定

根据接口定义实现解除绑定功能。

点击已经绑定的视频名称即可解除绑定。

image.gif

请求如下,返回200状态码表示成功:

delete /teachplan/association/media/{teachPlanId}/{mediaId}

image.gif

开发完成使用httpclient测试、前后端联调

### 课程计划接触视频绑定
DELETE {{media_host}}/media/teachplan/association/media/{teachPlanId}/{mediaId}

image.gif


相关文章
|
2月前
|
存储 安全 Java
学成在线笔记+踩坑(12)——用户认证
连接用户中心数据库、账号密码认证、验证码认证
学成在线笔记+踩坑(12)——用户认证
|
2月前
|
存储 前端开发 Java
学成在线笔记+踩坑(5)——【媒资模块】上传视频,断点续传
上传视频,MinIO断点续传、检查文件/分块、上传分块、合并分块
学成在线笔记+踩坑(5)——【媒资模块】上传视频,断点续传
|
2月前
|
SQL 前端开发 Java
谷粒商城笔记+踩坑(15)——商品详情搭建+异步编排
查询 pms_spu_info_desc@Autowired// 4、获取 spu 的介绍 pms_spu_info_desc获取线程池的属性值这里直接调用与配置文件相对应的属性配置类@Bean。
谷粒商城笔记+踩坑(15)——商品详情搭建+异步编排
|
6月前
|
JavaScript Java 测试技术
基于微信小程序的二手物品交易平台ssm附带文章和源代码设计说明文档ppt
基于微信小程序的二手物品交易平台ssm附带文章和源代码设计说明文档ppt
51 0
|
6月前
|
JavaScript Java 测试技术
基于微信小程序的课堂点名系统的设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序的课堂点名系统的设计与实现(源码+lw+部署文档+讲解等)
|
6月前
|
小程序 JavaScript 前端开发
【经验分享】如何实现在支付宝小程序内的图片裁剪功能
【经验分享】如何实现在支付宝小程序内的图片裁剪功能
153 1
|
6月前
|
JavaScript 小程序 Java
基于Java+SpringBoot+Vue的摄影素材分享网站的设计与实现(亮点:活动报名、点赞评论、图片下载、视频下载、在线观看)
基于Java+SpringBoot+Vue的摄影素材分享网站的设计与实现(亮点:活动报名、点赞评论、图片下载、视频下载、在线观看)
121 0
|
6月前
|
前端开发
前端学成在线项目详细解析二
12-banner区域-课程表布局
66 0
|
6月前
|
前端开发
前端学成在线项目详细解析三
19-推荐课程-内容样式 HTML结构
55 0
|
6月前
|
前端开发 JavaScript SEO
前端学成在线项目详细解析一
学成在线项目 01-项目目录 网站根目录是指存放网站的第一层文件夹,内部包含当前网站的所有素材,包含 HTML、CSS、图片、JavaScript等等。
96 0