3.3.3 API接口
1)添加课程计划
@ApiOperation("添加课程计划") public ResponseResult addTeachplan(Teachplan teachplan);
3.3.4 课程管理服务 3.3.3.1 Dao
public interface TeachplanRepository extends JpaRepository<Teachplan, String> {
//定义方法根据课程id和父结点id查询出结点列表,可以使用此方法实现查询根结点 public List<Teachplan>
findByCourseidAndParentid(String courseId,String parentId);
}
3.3.3.2 Service
//获取课程根结点,如果没有则添加根结点
public String getTeachplanRoot(String courseId){
//校验课程id
Optional<CourseBase> optional = courseBaseRepository.findById(courseId);
if(!optional.isPresent()){
return null;
}
CourseBase courseBase = optional.get();
//取出课程计划根结点
List<Teachplan> teachplanList = teachplanRepository.findByCourseidAndParentid(courseId, "0"); if(teachplanList == null || teachplanList.size()==0){
//新增一个根结点
Teachplan teachplanRoot = new Teachplan();
teachplanRoot.setCourseid(courseId);
teachplanRoot.setPname(courseBase.getName());
teachplanRoot.setParentid("0");
teachplanRoot.setGrade("1");//1级
teachplanRoot.setStatus("0");//未发布
teachplanRepository.save(teachplanRoot);
return teachplanRoot.getId();
}
Teachplan teachplan = teachplanList.get(0);
return teachplan.getId();
}
//添加课程计划
@Transactional
public ResponseResult addTeachplan(Teachplan teachplan){
//校验课程id和课程计划名称
if(teachplan == null ||
StringUtils.isEmpty(teachplan.getCourseid()) ||
StringUtils.isEmpty(teachplan.getPname())){
ExceptionCast.cast(CommonCode.INVALIDPARAM);
}
//取出课程id
String courseid = teachplan.getCourseid();
//取出父结点id
String parentid = teachplan.getParentid();
if(StringUtils.isEmpty(parentid)){
//如果父结点为空则获取根结点
parentid= getTeachplanRoot(courseid);
}
//取出父结点信息
Optional<Teachplan> teachplanOptional = teachplanRepository.findById(parentid);
if(!teachplanOptional.isPresent()){
ExceptionCast.cast(CommonCode.INVALIDPARAM);
}
//父结点
Teachplan teachplanParent = teachplanOptional.get();
//父结点级别
String parentGrade = teachplanParent.getGrade();
//设置父结点
teachplan.setParentid(parentid);
teachplan.setStatus("0");//未发布
//子结点的级别,根据父结点来判断
if(parentGrade.equals("1")){
teachplan.setGrade("2");
}else if(parentGrade.equals("2")){
teachplan.setGrade("3");
}
//设置课程id
teachplan.setCourseid(teachplanParent.getCourseid());
teachplanRepository.save(teachplan);
return new ResponseResult(CommonCode.SUCCESS);
}
3.3.3.3 controller
//添加课程计划
@Override
@PostMapping("/teachplan/add")
public ResponseResult addTeachplan(@RequestBody Teachplan teachplan) {
return courseService.addTeachplan(teachplan);
}
3.3.3.4 测试
复杂一些的业务逻辑建议写完服务端代码就进行单元测试。
使用swagger-ui或postman测试上边的课程计划添加接口。
3.3.5前端 3.3.5.1 Api调用
1、定义 api方法
/*添加课程计划*/ export const addTeachplan = teachplah => { return http.requestPost(apiUrl+'/course/teachplan/add',teachplah) }
2、调用 api
} //设置课程id
teachplan.setCourseid(teachplanParent.getCourseid());
teachplanRepository.save(teachplan);
return new ResponseResult(CommonCode.SUCCESS);
}
//添加课程计划
@Override
@PostMapping("/teachplan/add")
public ResponseResult addTeachplan(@RequestBody
Teachplan teachplan) {
return courseService.addTeachplan(teachplan);
}
addTeachplan(){
this.$refs.teachplayForm.validate((valid) => {
if (valid) {
//添加课程计划时带上课程id
this.teachplanActive.courseid = this.courseid;
courseApi.addTeachplan(this.teachplanActive).then((res) => {
if(res.success){
this.$message.success('提交成功');
//清空表单
this.teachplanActive = {}
//刷新整个树
this.findTeachplan();
}else{
this.$message.error('提交失败');
}
});
}
})
},
3.3.5 测试
测试流程:
1、新建一个课程
2、向新建课程中添加课程计划
添加一级结点
添加二级结点
转载于:https://blog.51cto.com/13517854/2355651