文章目录

  • 一.需求分析
  • 二.课程分类查询介绍
  • 三.数据结构
  • 四.数据格式
  • 五.数据模型
  • 六.Api接口
  • 七.服务器端
    • 1.Dao
      • 1)定义mapper
      • 2)定义mapper映射文件
    • 2.Service
    • 3.Controller
  • 八.接口测试

一.需求分析

用户操作流程如下:
1、用户进入“我的课程”页面,点击“新增课程”,进入新增课程页面;
2、填写课程信息,选择课程分类、课程等级、学习模式等。
3、信息填写完毕,点击“提交”,课程添加成功或课程添加失败并提示失败原因。

需要解决的是在新增页面上输入的信息:
1、课程分类
多级分类,需要方便用户去选择。
2、课程等级、学习模式等这些选项建议是可以配置的

二.课程分类查询介绍

在新增课程界面需要选择课程所属分类, 分类信息是整个项目非常重要的信息,课程即商品,分类信息设置的好坏直接影响用户访问量。
分类信息在哪里应用?
1、首页分类导航

2、课程的归属地
添加课程时要选择课程的所属分类。

三.数据结构

分类表category的结构如下:

四.数据格式

在添加课程时需要选择课程所属的分类,因此需要定义课程分类查询接口。
接口格式要根据前端需要的数据格式来定义,前端展示课程分类使用elemenet-ui的cascader(级联选择器)组件。

数据格式例子如下:

[{value: 'zhinan',label: '指南',children: [{value: 'shejiyuanze',label: '设计原则',children: [{value: 'yizhi',label: '一致'}, {value: 'fankui',label: '反馈'}, {value: 'xiaolv',label: '效率'}, {value: 'kekong',label: '可控'}]}]}
]

五.数据模型

定义category的模型
文件位置:xcEduService01\xc-framework-model\src\main\java\com\xuecheng\framework\domain\course\Category.java

@Data
@ToString
@Entity
@Table(name="category")
@GenericGenerator(name = "jpa‐assigned", strategy = "assigned")
public class Category implements Serializable {private static final long serialVersionUID = ‐906357110051689484L;@Id@GeneratedValue(generator = "jpa‐assigned")@Column(length = 32)private String id;private String name;private String label;private String parentid;private String isshow;private Integer orderby;private String isleaf;
}

定义数据返回格式:
文件位置:xcEduService01\xc-framework-model\src\main\java\com\xuecheng\framework\domain\course\ext\CategoryNode.java

@Data
@ToString
public class CategoryNode extends Category {List<CategoryNode> children;
}

六.Api接口

文件位置:C:\Users\fxd\Desktop\java\21微服务教育网学成在线\07-课程管理实战\代码\xcEduService01\xc-service-api\src\main\java\com\xuecheng\api\course\CategoryControllerApi.java

package com.xuecheng.api.web.controller.api.course;
import com.xuecheng.framework.domain.course.ext.CategoryNode;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Api(value = "课程分类管理",description = "课程分类管理",tags = {"课程分类管理"})
public interface CategoryControllerApi {@ApiOperation("查询分类")public CategoryNode findList();
}

七.服务器端

1.Dao

1)定义mapper

文件位置:xcEduService01\xc-service-manage-course\src\main\java\com\xuecheng\manage_course\dao\CategoryMapper.java

@Mapper
public interface CategoryMapper {//查询分类public CategoryNode selectList();
}

2)定义mapper映射文件

采用表的自连接方式输出树型结果集。
文件位置:xcEduService01\xc-service-manage-course\src\main\resources\com\xuecheng\manage_course\dao\CategoryMapper.xml

<?xml version="1.0" encoding="UTF‐8" ?>
<!DOCTYPE mapper PUBLIC "‐//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis‐3‐
mapper.dtd" >
<mapper namespace="com.xuecheng.manage_course.dao.CategoryMapper" ><resultMap type="com.xuecheng.framework.domain.course.ext.CategoryNode" id="categoryMap" ><id property="id" column="one_id"/><result property="name" column="one_name"/><result property="label" column="one_label"/><result property="isshow" column="one_isshow"/><result property="isleaf" column="one_isleaf"/><result property="orderby" column="one_orderby"/><result property="parentid" column="one_parentid"/><collection property="children" ofType="com.xuecheng.framework.domain.course.ext.CategoryNode"><id property="id" column="two_id"/><result property="name" column="two_name"/><result property="label" column="two_label"/><result property="isshow" column="two_isshow"/><result property="isleaf" column="two_isleaf"/><result property="orderby" column="two_orderby"/><result property="parentid" column="two_parentid"/><collection property="children" ofType="com.xuecheng.framework.domain.course.ext.CategoryNode"><id property="id" column="three_id"/><result property="name" column="three_name"/><result property="label" column="three_label"/><result property="isshow" column="three_isshow"/><result property="isleaf" column="three_isleaf"/><result property="orderby" column="three_orderby"/><result property="parentid" column="three_parentid"/></collection></collection></resultMap><select id="selectList" resultMap="categoryMap" >SELECTa.id one_id,a.name one_name,a.label one_label,a.isshow one_isshow,a.isleaf one_isleaf,a.orderby one_orderby,a.parentid one_parentid,b.id two_id,b.name two_name,b.label two_label,b.isshow two_isshow,b.isleaf two_isleaf,b.orderby two_orderby,b.parentid two_parentid,c.id three_id,c.name three_name,c.label three_label,c.isshow three_isshow,c.isleaf three_isleaf,c.orderby three_orderby,c.parentid three_parentidFROMcategory a LEFT JOIN category bON a.id = b.parentidLEFT JOIN category cON b.id = c.parentidWHERE a.parentid = '0'ORDER BY a.orderby,b.orderby,c.orderby</select>
</mapper>

2.Service

文件位置:xcEduService01\xc-service-manage-course\src\main\java\com\xuecheng\manage_course\service\CategoryService.java

@Service
public class CategoryService {@AutowiredCategoryMapper categoryMapper;//查询分类public CategoryNode findList(){return categoryMapper.selectList();}
}

3.Controller

文件位置:xcEduService01\xc-service-manage-course\src\main\java\com\xuecheng\manage_course\controller\CategoryController.java

@RestController
@RequestMapping("/category")
public class CategoryController implements CategoryControllerApi {@AutowiredCategoryService categoryService;@Override@GetMapping("/list")public CategoryNode findList() {return categoryService.findList();}
}

八.接口测试

接口描述如下:

使用swagger-ui或postman测试接口

学成在线--18.新增课程(课程分类查询)相关推荐

  1. 学成在线--19.新增课程(数据字典)

    文章目录 一.介绍 二.数据模型 三.数据模型类 四.字典查询API接口 五.服务器端 1.Dao 2.Service 3.Controller 一.介绍 在新增课程界面需要选择课程等级.课程状态等, ...

  2. 学成在线--17.我的课程

    文章目录 一.需求分析 二.API接口 三.PageHelper 1.PageHelper介绍 2.添加依赖 3.配置pageHelper 四.Dao 1.mapper 接口 2.mapper.xml ...

  3. 学成在线--20.新增课程(最后完善)

    文章目录 一.效果展示 二.服务端 1.Api接口 2.Dao 3.Service 4.Controller 三.前端 1.页面完善 1)创建course_add.vue页面 2)course_add ...

  4. 学成在线--21.课程信息修改

    文章目录 一.需求分析 二.课程管理导航页面 1.定义course_manage.vue为课程管理页面 2.创建各个信息管理页面 3.创建路由 三.服务端 1.Api接口 1)根据课程ID查询课程信息 ...

  5. 微服务实战项目-学成在线-课程发布模块

    学成在线-课程发布模块 1 模块需求分析 1.1 模块介绍 课程信息编辑完毕即可发布课程,发布课程相当于一个确认操作,课程发布后学习者在网站可以搜索到课程,然后查看课程的详细信息,进一步选课.支付.在 ...

  6. 学成在线--课程发布模块

    完整版请移步至我的个人博客查看:https://cyborg2077.github.io/ 学成在线–项目环境搭建 学成在线–内容管理模块 学成在线–媒资管理模块 学成在线–课程发布模块 学成在线–认 ...

  7. 学成在线 课程 页面

    学成在线 课程 页面 先把剩下两个页面中比较复杂的,也许要超链接的页面做掉了. 大部分布局上的功能都实现了,就剩下一些细节上的:例如说没有补上的注释,以及字体大小颜色上的细节方面.div都分了,cla ...

  8. 学成在线 课程列表 页面

    学成在线 课程列表 页面 在美好的礼拜天,正好我们不调休,把最后一个页面给完成了. 和其他用浮动座位布局方式比起来,课程类表页面最终还是使用了flexbox去布局,一来主要内容最下面的 分页 部分用浮 ...

  9. pink老师课程-学成在线案例资料

    哔哩哔哩里面pink老师课程那里实操. 代码和图片在末尾 总结 1.代码HTML结构要清晰,最好做好注释标明模块的开始和结束如:  <!--1.头部开始-->  <!--1.头部结束 ...

最新文章

  1. 转帖-MySQL Innodb日志机制深入分析
  2. 在vi或vim上查找字符串
  3. apply plugin: 'idea' --- gradle idea
  4. oracle 0值处理判断,ORACLE数据统计0的处理
  5. 2021 大厂实习笔试
  6. 开源文件管理服务器,GitHub - biiliwuiid/file-manager: 文件服务器管理系统
  7. 培训班出身的程序员怎么了
  8. 【MySQL】Linux 命令启动 mysql
  9. 【PostgreSQL-9.6.3】函数(1)--数值型函数
  10. 修改JEECG项目浏览器标题
  11. C#中如何生成矢量图
  12. 设计模式(十七)—— 迭代器模式
  13. 实验吧—Web——WP之 Forms
  14. zendstudio php6.5,ZendStudio13.6配置composer.phar和中文镜像、如何更新php项目依赖组件方法...
  15. 如何处理tomcat默认错误页面
  16. 公众号粉丝迁移需要多长时间?
  17. 可视化图布局算法浅析
  18. C语言100题练习计划 47——查询水果价格
  19. 虚拟服务器网络未识别,vm虚拟机未识别的网络
  20. Java编程英语单词大全_java编程常用英语单词

热门文章

  1. Synchronization 进程锁
  2. Java命令:jstack — 获取线程dump信息
  3. 教给孩子的10句“保命金言”(图)
  4. 解决 Idea 卡在 Resolving Maven dependencies ...
  5. 解决: Caused by: java.lang.IllegalStateException: Cannot load driver class: com.mysql.jdbc.Driver
  6. 阿里云 ECS服务器 开放 8080 端口 -- 图解
  7. nfs服务器工作原理
  8. Bootstrap简介
  9. javaweb 导出文件名乱码的问题解决方案
  10. leetcode add Two Numbers