Java的新项目学成在线笔记-day6(十二)

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值