黑马程序员技术交流社区

标题: 【郑州校区】Java的新项目学成在线笔记-day6(十二) [打印本页]

作者: 谷粒姐姐    时间: 2019-2-27 15:57
标题: 【郑州校区】Java的新项目学成在线笔记-day6(十二)
3.3.3 API接口
1)添加课程计划
[AppleScript] 纯文本查看 复制代码
@ApiOperation("添加课程计划") public ResponseResult addTeachplan(Teachplan teachplan);

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();
        //取出课程计划根结点

[AppleScript] 纯文本查看 复制代码
 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");

[AppleScript] 纯文本查看 复制代码
 }     
    //设置课程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] 纯文本查看 复制代码
 
        }         //设置课程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();

[AppleScript] 纯文本查看 复制代码
 }else{     
      this.$message.error('提交失败');   
      }   
   });  
   }  
})  
},

3.3.5 测试
测试流程:
1、新建一个课程
2、向新建课程中添加课程计划
  添加一级结点
添加二级结点







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2