前言
先简单交代和阐述一下业务背景和逻辑,该系统是一个综合类的音乐系统,上传音乐时,逻辑和qq音乐一样,前端页面就能体现出大概逻辑,如下图所示:
专辑和歌曲是密不可分的,而且歌曲的封面就是对应专辑的封面,提交审核的时候,也是同理,是一起打包提交的,sql层如下图所示:
设计
由于后台管理系统,qq音乐的后台不予开放,那就自己设计一下,初步设想是这样:
- 有一个整体的 通过/拒绝通过 按钮,然后有一个整体的备注(必填)
- 每个歌曲都可以去听,展示其信息,都有对应的 通过/拒绝通过 按钮,而且必须给注释
- 整体通过与局部拒绝互斥,整体拒绝与局部通过互斥,没有全选功能,必须一个一个选
后端的话,
- 需要建一个专辑对应的log表,来储存一些操作信息,比如管理员的id,操作时间,操作类型等等
- 再建音乐的log表,来储存其备注等等
- 并修改申请表中的状态
- 提供其需要接口
逻辑大致如上。
实现
SQL实现
先建两个log表
由于业务逻辑是一次提交处理,本质上专辑的审核和歌曲的审核是父与子的关系,所以直接绑定一个专辑处理的id即可,音乐信息肯定不能去正式音乐表里拿,要从申请的音乐表里拿(这里面是还未通过审核的)
UI设计
动态实现,非静态
后端接口实现
歌曲栏就参考这个ui,给专辑音乐申请的时候,直接写入数据库即可,接口较为简单,下面为实现代码:
public Result applyMusic(ApplyMusicListDto dto) {
// 向数据库里开始插入信息,先校验参数
boolean isEmpty = BeanUtil.isEmpty(dto);
if (isEmpty) return Result.error("参数不许为空!");
// 有两个表 所以分两个表进行插入
try {
List<ApplyM