【郑州校区】学成在线 第6天 讲义-页面发布 课程管理九
3.3.4 课程管理服务
3.3.3.1 Dao
[AppleScript] 纯文本查看 复制代码 public interface TeachplanRepository extends JpaRepository<Teachplan, String> {
//定义方法根据课程id和父结点id查询出结点列表,可以使用此方法实现查询根结点
public List<Teachplan> findByCourseidAndParentid(String courseId,String parentId);
}
3.3.3.2 Service
[AppleScript] 纯文本查看 复制代码 //获取课程根结点,如果没有则添加根结点
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
[AppleScript] 纯文本查看 复制代码 //添加课程计划
@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方法
[AppleScript] 纯文本查看 复制代码 /
*
添加课程计划
*
/
export const addTeachplan =
teachplah =
> {
return http
.requestPost(apiUrl+
'
/course/teachplan/add
'
,teachplah)
}
2、调用 api
[AppleScript] 纯文本查看 复制代码 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、向新建课程中添加课程计划
添加一级结点
添加二级结点
|