开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):课程管理-添加课程信息接口】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/667/detail/11368
课程管理-添加课程信息接口
创建 vo 类封装表单提交的数据
package com. guli. edu. vo;
@Data
public class SubjectVo
private String id;
private String title;
package com. guli. edu. vo;
@Data
public class SubjectNestedVo i
private String id;
private String title;
private List<SubjectVo> children . new ArrayListo();
@Data
@EqualsAndHashCode (callSuper = false)
@Accessors(chain = true)
@ApiModel (value= "EduCourse对象", description=" 课程," )public class EduCourse implements Serializable (
private static final long serialVersionUID- 1L:
@ApiModelProperty(value = "课程ID")
@Tableld(value = "id", type = IdType. ID HORKER STOprivate String id:
@ApiModelProperty(value ="课程讲师
ID")private String teacherId:
@ApiModelProperty(value = "课程专业
ID")private String subjectId:
@ApiModelProperty(value - "课程标题")private String title;
@ApiModelProperty(value = "课程销售价格,设置为0则可免费观看")private BigDecimal price;
@ApiModelProperty(value =”总课时
")private Integer lessonNum;
@ApiModelProperty(value =“课程封面图片路径
")private String cover;
@ApiModelProperty(value - "课程简介
")private String description;
VO 类,用于表单数据的封装,然后第二步做这个事情,这个 info 教这个 VO 建一个屋一个用于封装一个 VO 叫 value or get 值对象用于他的风光,这是建的这一类,然后在这上面加上一个叫 data 注解,在里边,写上那些具体的属性,这个属性对的课程基本信息,还有描述信息,在里边就写他。
那现在找到这个 Vo 这个类,其实里边的属性应该就是我这个课件中的。
就是这些,把这些咱就不管他包含要提交的主要内容这个直接复制然后,这边加那个注解,这不影响另外,有一个这个对象这是因为现在在里面有个字段或者属性是这个课程的价格,一般一个价格就是元角,分的角,也就是它精确到这个叫做0.01的这个效果,而这个价格,如果说用个 double 或者说用 blued,它的精度有问题,所以他用这个对象表。
价格可以精确到更准确,这个值适用于价格的对象,包括里边这些属性,有这个课程的讲师 ID。
这个分类 ID 包括课程这个名称、价格、课时数,还有一个描述,主要这个属性,把这个第二部做到了,建一个屋内。
编写 controller 和 service 部分
@RestController
@RequestMapping ( /eduservice/course' )
@Cross0rigin
public class EduCourseControlleri
@Autowired
private EduCourseService courseService;
//添加课程基本信息的方法
@PostMapping(" addCourseInfo )
public R addCourseInfo0) f
return R. okO :
//添加课程基本信息的方法
@0verride
public void saveCourseInfo (CourseInfoVo courseInfoVo) {
//1向课程表添加课程基本信息
//CourseInfolo对象转换eduCourse对象
EduCourse eduCourse = new EduCourse() :
BeanUtils. copyProperties(courseInfoVo, eduCourse) ;
int insert = baseMapper. insert (eduCourse) :
if(insert == 0) {
//添加失败
throw new GuliExcept ion (20001,”添加课程信息失败):
自我判断这里边如果说它大于零,那这里边再往下进行,如果它等于零,那肯定就是失败,就是这么一个结构,把它写完了,第一步添加课程的基本信息。
之后,下面的在往下来做,下面做的是就是像课程简介表中,比如说刚才,加的是这张表里面数据下面要这张表数据,那这个表儿这里面加数据,首先第一个,就是如果说用 base map,那 base map,只是像 edu cos 就是课程表,看 switch 中有个service,这个 service 叫一波 cos description service 来用它才能做到,因为是操作描述的,在 edu code 中怎么去用这个 cocos 里面内容。
其实这个过程中一种,在此阶段学到一种最简单方式,用谁把谁住进来就可以了。
cost description in service,可以 service 叫 service。然后用的是edu costs description service,就是简介 service,用它就操作,那把这个拿过来,然后调里边的方法,他的添加应该叫 save,在里边传一个描述对象应该就可以了。那描述对象给他也是一个。
这种 description cost description 等于 new 上一个 edu 这么一个对象,然后向里边放数就可以了,当然可以用并要求我就直接设置,因为他只有这么少数几个值,主要是里面这个描述,把他就直接。
拿过来,给他放进去,这样的话这个对象就有了,然后咱们把这个描述对象放到这个方法中去,这段代码就能实现,像描述表中加数据,咱们现在就做到,主要这么两个过程,我再说一遍,第一个过程就是先向课程表数据,咱就把这个vo对象变成了 cos,然后用这个方法加课程表,第二个家描述,但是描述因为我在课程里边教不了描述,把描述的4S 给他就住进来。
课程描述的输入,然后输入之后,应援方法在描述传一个对象就可以得到这个我们说的这么一个基本过程,所以按照这个过程,现在这个基本的功能应该可以初步做到,但是过程中肯定有问题,那我们先调这里,
先做个测试:
//获取添加之后课程id
String cid = eduCourse. getId() ;
//2向课程简介表添加课程简介
//edu course_ description
EduCourseDescription courseDescription = new EduCourseDescription();
courseDescript ion. setDescription (courseInfoVo. getDescription());
//设置描述id就是课程id
courseDescript ion. setId(cid) ;|
courseDescr ipt ionService. save (courseDescription) ;
服务器启动了,然后到里边还是做一个刷新,刷新之后向里边传值 ID 去掉,因为它会自动生成。
输入1282,看这个1282的值,和刚才里边那个课程中那个就是。ID 值两个是一样儿,一样的话,他们就是一个一对一的关系,这是课程的基本信息,然后这个是课程的描述信息,这样的话在万里接口就做到了,这就是添加课程的基本信息,主要的过程。
就是刚才分析的流程,然后提交两个数据,一个是课程表,一个描述,但是课程描述是一个一对一的关系,所以按照刚才的过程,把这个做到。
添加课程的基本信息的一个接口部分就完了。