我的课程
需求分析
课程添加完成后可通过我的课程进入课程修改页面,此页面显示我的课程列表,如下图所示,可分页查询。
注意:由于课程图片服务器没有搭建,这里在测试时图片暂时无法显示。
上边的查询要实现分页、会存在多表关联查询,所以建议使用mybatis实现我的课程查询。
PageHelper
PageHelper介绍
PageHelper是mybatis的通用分页插件,通过mybatis的拦截器实现分页功能,拦截sql查询请求,添加分页语句,
最终实现分页查询功能。
我的课程具有分页功能,本项目使用Pagehelper实现Mybatis分页功能开发,由于本项目使用springboot开发,在
springboot上集成pagehelper([https://github.com/pagehelper/pagehelper-spring-boot]{.underline})
PageHelper的使用方法及原理如下:
在调用dao的service方法中设置分页参数:PageHelper.startPage(page,
size),分页参数会设置在ThreadLocal中
PageHelper在mybatis执行sql前进行拦截,从ThreadLocal取出分页参数,修改当前执行的sql语句,添加分页
sql。
最后执行添加了分页sql的sql语句,实现分页查询。
PageHelper配置
- 添加依赖
- 配置pageHelper
在application.yml中配置pageHelper操作的数据库类型:
PageHelper测试
- 定义mapper 接口
- 定义mapper.xml映射文件
- 测试Dao
测试前修改日志级别为debug,并跟踪运行日志,发现sql语句中已经包括分页语句。
前端页面说明
我的课程列表使用element 的card组件,如下:
页面布局代码如下:
Api接口
输入参数:
页码、每页显示个数、查询条件
输出结果类型:
QueryResponseResult<自定义类型>
在api工程创建course包,创建CourseControllerApi接口。
新增课程
需求分析
用户操作流程如下:
1、用户进入”我的课程”页面,点击”新增课程”,进入新增课程页面
2、填写课程信息,选择课程分类、课程等级、学习模式等。
3、信息填写完毕,点击”提交”,课程添加成功或课程添加失败并提示失败原因。
需要解决的是在新增页面上输入的信息:
1、课程分类
多级分类,需要方便用户去选择。
2、课程等级、学习模式等这些选项建议是可以配置的。页面效果如下:
课程分类查询
介绍
在新增课程界面需要选择课程所属分类,
分类信息是整个项目非常重要的信息,课程即商品,分类信息设置的好坏直接影响用户访问量。
分类信息在哪里应用?
1、首页分类导航
2、课程的归属地
添加课程时要选择课程的所属分类。
数据结构
分类表category的结构如下:
分类查询
数据格式
在添加课程时需要选择课程所属的分类,这里需要定义课程分类查询接口。
接口格式要根据前端需要的数据格式来定义,前端展示课程分类使用elemenet-ui的cascader(级联选择器)组
件。
数据格式例子如下:
数据模型
1)定义category的模型
category模型对数据字段对应,如下:
- 定义数据返回格式
Api接口
数据字典
介绍
在新增课程界面需要选择课程等级、课程状态等,这些信息统一采用数据字典管理的方式。
本项目对一些业务的分类配置信息,比如:课程等级、课程状态、用户类型、用户状态等进行统一管理,通过在数
据库创建数据字典表来维护这些分类信息。
数据字典对系统的业务分类进行统一管理,并且也可以解决硬编码问题,比如添加课程时选择课程等级,下拉框中
的课程等级信息如果在页面硬编码将造成不易修改维护的问题,所以从数据字典表中获取,如果要修改名称则在数
据字典修改即可,提高系统的可维护性。
数据模型
在mongodb中创建数据字典表sys_dictionary
一个字典信息如下:
字段说明如下:
d_name:字典名称
d_type:字典分类
d_value:字典数据
sd_name:项目名称
sd_id:项目id
sd_status:项目状态(1:可用,0不可用)
数据模型类:
SysDictionaryValue类型:
Api接口
课程信息修改
需求分析
课程添加成功进入课程管理页面,通过课程管理页面修改课程的基本信息、编辑课程图片、编辑课程营销信息等。
本小节实现修改课程。
课程管理页面说明
页面结构
课程管理页面的结构如下:
课程管理导航页面
1、定义course_manage.vue为课程管理导航页面。导航效果使用Element-UI的NavMenu组件实现。
2、创建各各信息管理页面
通过管理页面的导航可以进入各各信息管理页面,这里先创建各各信息管理页面,页面内容暂时为空,待开发时再
完善,在本模块的page目录下创建course_manage目录,此目录存放各各信息管理页面,页面明细如下:
课程管理首页:course_summary.vue
基本信息修改页面:course_baseinfo.vue
图片管理页面:course_picture.vue 营销信息页面:course_marketinfo.vue
老师信息页面:course_teacher.vue
课程计划页面:course_plan.vue
课程发布页面:course_pub.vue
3、创建路由
Api接口
修改课程需要如下接口:
1、根据id查询课程信息
2、修改课程提交接口定义如下:
1) 根据课程ID查询课程信息
- 修改课程信息
课程营销
需求分析
课程营销信息包括课程价格、课程有效期等信息。
数据模型
课程营销信息使用course_market表存储。数据模型如下:
Api接口
课程营销信息需要定义如下接口:
1) 查询课程营销信息
2)更新课程营销信息
接口实现可采用先查询课程营销,如果存在则更新信息,否则添加课程营销信息的方法。