07媒资管理模块之课程计划绑定媒资文件

课程计划绑定媒资文件

当文件上传完成后其他模块可以访问媒资服务中的媒资文件,如给内容管理模块中的课程计划绑定对应的视频,文档文件

界面原型

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

在这里插入图片描述

在弹出的添加视频对话框中可通过视频关键字搜索已审核通过的视频媒资,选择完视频媒资然后点击提交按钮,完成课程计划绑定媒资流程

在这里插入图片描述

课程计划关联视频后如下图,再次点击已经绑定的视频名称即可解除绑定

在这里插入图片描述

请求/响应模型类

teachplan_media表: 一个课程计划只能绑定一个媒资文件,但不同的课程计划可以绑定同一个媒资文件

在这里插入图片描述

即在课程计划列表界面需要确定给哪个课程计划绑定哪个视频

请求网址: http://localhost:8601/api/content/teachplan/association/media
请求方法: POST
载荷:

{ 
  // 媒资文件id
  "mediaId": "70a98b4a2fffc89e50b101f959cc33ca",
  // 视频文件名称
  "fileName": "22-Hmily实现TCC事务-开发bank2的confirm方法.avi",
  // 课程计划id
  "teachplanId": 257
}
@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;
}

绑定媒资

第一步: 在内容管理模块中的content-api工程中定义绑定媒资的接口

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

第二步: 添加课程计划与媒资的绑定关系,一个课程计划最终只能绑定一个媒资,如果课程计划已有绑定的媒资,再次绑定时为更新即删除原先绑定的媒资

/**
 * @description 教学计划绑定媒资
 * @param bindTeachplanMediaDto
*/
public TeachplanMedia associationMedia(BindTeachplanMediaDto bindTeachplanMediaDto);
@Transactional// 执行DML语句时进行事务控制
@Override
public TeachplanMedia associationMedia(BindTeachplanMediaDto bindTeachplanMediaDto) {
    // 先根据课程计划Id查询出对应的教学计划teachplan
    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;
}

解绑媒资

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

// 返回200状态码表示成功
delete /teachplan/association/media/{teachPlanId}/{mediaId}

在这里插入图片描述

第一步: 在内容管理模块中的content-api工程中定义解除绑定媒资的接口

@ApiOperation("课程计划解除媒资信息绑定")
@DeleteMapping("/teachplan/association/media/{teachPlanId}/{mediaId}")
public void unassociationMedia(@PathVariable Long teachPlanId, @PathVariable String mediaId) {
    teachplanService.unassociationMedia(teachPlanId, mediaId);
}

第二步: 将课程计划Id和媒资文件Id作为联合条件删除teachplan_media表中课程计划与媒资的绑定关系

/** 解绑教学计划与媒资信息
 * @param teachPlanId       教学计划id
 * @param mediaId           媒资信息id
 */
void unassociationMedia(Long teachPlanId, Long mediaId);
@Override
public void unassociationMedia(Long teachPlanId, Long mediaId) {
    LambdaQueryWrapper<TeachplanMedia> queryWrapper = new LambdaQueryWrapper<>();
    queryWrapper.eq(TeachplanMedia::getTeachplanId, teachPlanId)
        .eq(TeachplanMedia::getMediaId, mediaId);
    teachplanMediaMapper.delete(queryWrapper);
}
  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值