A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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、向新建课程中添加课程计划
  添加一级结点
添加二级结点


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马