黑马程序员Java企业级实战开发《学成在线》微服务项目 p40实战项目

黑马程序员Java项目企业级微服务实战《学成在线》,基于SpringCloud、SpringCloudAlibaba技术栈开发,项目搭建到选课支付学习全通关
1.删除课程计划
(1)controller
@ApiOperation("课程计划删除")
@DeleteMapping("/teachplan/{teachplanId}")
public void deleteTeachplan(@PathVariable Long teachplanId) {
teachplanService.deleteTeachplan(teachplanId);
}
(2)service
/**
* 实现课程删除
* @param courseId
*/
public void deleteTeachplan(Long courseId);
(3)service
@Override
public void deleteTeachplan(Long teachplanId) {
if (teachplanId == null)
XueChengPlusException.cast("课程计划id为空");
Teachplan teachplan = teachplanMapper.selectById(teachplanId);
// 判断当前课程计划是章还是节
Integer grade = teachplan.getGrade();
// 当前课程计划为章
if (grade == 1) {
// 查询当前课程计划下是否有小节
LambdaQueryWrapper<Teachplan> queryWrapper = new LambdaQueryWrapper<>();
// select * from teachplan where parentid = {当前章计划id}
queryWrapper.eq(Teachplan::getParentid, teachplanId);
// 获取一下查询的条目数
Integer count = teachplanMapper.selectCount(queryWrapper);
// 如果当前章下还有小节,则抛异常
if (count > 0)
XueChengPlusException.cast("课程计划信息还有子级信息,无法操作");
teachplanMapper.deleteById(teachplanId);
} else {
// 课程计划为节
teachplanMapper.deleteById(teachplanId);
LambdaQueryWrapper<TeachplanMedia> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(TeachplanMedia::getTeachplanId, teachplanId);
teachplanMediaMapper.delete(queryWrapper);
}
}
2.课程计划排序
(1)controller
@ApiOperation("上移")
@PostMapping("/teachplan/moveup/{teachplanId}")
public void moveUp(@PathVariable Long teachplanId){
teachplanService.moveUp(teachplanId);
}
@ApiOperation("下移")
@PostMapping("/teachplan/movedown/{teachplanId}")
public void moveDown(@PathVariable Long teachplanId){
teachplanService.moveDown(teachplanId);
}
(2)service
/**
* 实现上移
* @param courseId
*/
public void moveUp(Long courseId);
/**
* 实现下移
* @param courseId
*/
public void moveDown(Long courseId);
}
(3)serviceImpl
@Override
public void moveUp(Long teachplanId) {
Teachplan teachplan = teachplanMapper.selectById(teachplanId);
LambdaQueryWrapper<Teachplan> queryWrapper =new LambdaQueryWrapper<>();
queryWrapper.eq(Teachplan::getCourseId,teachplan.getCourseId())
.eq(Teachplan::getStatus,1)
.eq(Teachplan::getParentid,teachplan.getParentid())
.lt(Teachplan::getOrderby,teachplan.getOrderby())//大于当前课程id的课程进行排序
.orderByDesc(Teachplan::getOrderby)//限制取的数据只有一条,防止取数据时遇到相同
.last("limit 1");
one(teachplan, queryWrapper);
}
@Override
public void moveDown(Long teachplanId) {
Teachplan teachplan = teachplanMapper.selectById(teachplanId);
LambdaQueryWrapper<Teachplan> queryWrapper =new LambdaQueryWrapper<>();
queryWrapper.eq(Teachplan::getCourseId,teachplan.getCourseId())
.eq(Teachplan::getStatus,1)
.eq(Teachplan::getParentid,teachplan.getParentid())
.gt(Teachplan::getOrderby,teachplan.getOrderby())//大于当前课程id的课程进行排序
.orderByDesc(Teachplan::getOrderby)
.last("limit 1");//限制取的数据只有一条,防止取数据时遇到相同
one(teachplan, queryWrapper);
}
//由于看着太长了,直接把判断封装成一个类
private void one(Teachplan teachplan, LambdaQueryWrapper<Teachplan> queryWrapper) {
Teachplan first = teachplanMapper.selectOne(queryWrapper);
if (first == null){
XueChengPlusException.cast("已经在第一个了,无法进行上升");
}else {
Integer orderby = teachplan.getOrderby();
teachplan.setOrderby(first.getOrderby());//将所选课程放入目标课程
first.setOrderby(orderby); //将目标课程放在所选课程
teachplanMapper.updateById(teachplan);//更新数据
teachplanMapper.updateById(first);
}
}