欢迎光临散文网 会员登陆 & 注册

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

2023-07-20 12:54 作者:自信小达  | 我要投稿


黑马程序员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);
   }
}


黑马程序员Java企业级实战开发《学成在线》微服务项目 p40实战项目的评论 (共 条)

分享到微博请遵守国家法律