学成在线--16.添加课程计划

文章目录

  • 一.需求分析
  • 二.API接口
  • 三.后端
    • 1.Dao
    • 2.Service
    • 3.Controller
    • 4.测试
  • 四.前端
    • 1.页面原型说明
      • 1)添加按钮
      • 2)视图部分
      • 3)在数据模型中添加如下变量
      • 4)定义表单提交方法和重置方法
    • 2.Api调用
      • 1)定义 api方法
      • 2)调用 api
    • 3.测试

一.需求分析

用户操作流程:
1、进入课程计划页面,点击“添加课程计划”
2、打开添加课程计划页面,输入课程计划信息
在这里插入图片描述

一级二级三级
跟节点大章节小章节

上级结点 不填写的情况下:

  1. 不选择上级结点,表示当前添加的课程计划的父节点为课程的根结点,此时使用当前课程的courseid去查询根节点具体信息(当然包括根节点的id)。

  2. 若此时找不到根节点,则要自动添加课程的根结点。

  3. 点击提交。

二.API接口

文件位置:xcEduService01\xc-service-api\src\main\java\com\xuecheng\api\course\CourseControllerApi.java

@ApiOperation("添加课程计划")
public ResponseResult addTeachplan(Teachplan teachplan);

三.后端

1.Dao

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

public interface TeachplanRepository extends JpaRepository<Teachplan, String> {
//定义方法根据课程id和父结点id查询出结点列表,可以使用此方法实现查询根结点
public List<Teachplan> findByCourseidAndParentid(String courseId,String parentId);
}

2.Service

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

@Transactional
public ResponseResult addTeachplan(Teachplan teachplan) {if(teachplan == null ||StringUtils.isEmpty(teachplan.getPname()) ||StringUtils.isEmpty(teachplan.getCourseid())){ExceptionCast.cast(CommonCode.INVALID_PARAM);}//课程idString courseid = teachplan.getCourseid();//父结点的idString parentid = teachplan.getParentid();if(StringUtils.isEmpty(parentid)){//获取课程的根结点parentid = getTeachplanRoot(courseid);}//查询根结点信息Optional<Teachplan> optional = teachplanRepository.findById(parentid);Teachplan teachplan1 = optional.get();//父结点的级别String parent_grade = teachplan1.getGrade();//创建一个新结点准备添加Teachplan teachplanNew = new Teachplan();//将teachplan的属性拷贝到teachplanNew中BeanUtils.copyProperties(teachplan,teachplanNew);//要设置必要的属性teachplanNew.setParentid(parentid);if(parent_grade.equals("1")){teachplanNew.setGrade("2");}else{teachplanNew.setGrade("3");}teachplanNew.setStatus("0");//未发布teachplanRepository.save(teachplanNew);return new ResponseResult(CommonCode.SUCCESS);
}//获取课程的根结点
public String getTeachplanRoot(String courseId){Optional<CourseBase> optional = courseBaseRepository.findById(courseId);if(!optional.isPresent()){return null;}CourseBase courseBase = optional.get();//调用dao查询teachplan表得到该课程的根结点(一级结点)List<Teachplan> teachplanList = teachplanRepository.findByCourseidAndParentid(courseId, "0");if(teachplanList == null || teachplanList.size()<=0){//新添加一个课程的根结点Teachplan teachplan = new Teachplan();teachplan.setCourseid(courseId);teachplan.setParentid("0");teachplan.setGrade("1");//一级结点teachplan.setStatus("0");teachplan.setPname(courseBase.getName());teachplanRepository.save(teachplan);return teachplan.getId();}//返回根结点的idreturn teachplanList.get(0).getId();}

3.Controller

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

@Override
@PostMapping("/teachplan/add")
public ResponseResult addTeachplan(@RequestBody  Teachplan teachplan) {return courseService.addTeachplan(teachplan);
}

4.测试

复杂一些的业务逻辑建议写完服务端代码就进行单元测试。

使用swagger-ui或postman测试上边的课程计划添加接口。

四.前端

1.页面原型说明

文件位置:xc-ui-pc-teach\xc-ui-pc-teach\src\module\course\page\course_manage\course_plan.vue

1)添加按钮

<el-button type="primary" @click="teachplayFormVisible = true">添加课程计划</el-button>

2)视图部分

添加课程计划采用弹出窗口组件Dialog,在course_plan.vue页面添加添加课程计划的弹出窗口代码

    <el-dialog title="添加课程计划" :visible.sync="teachplayFormVisible" ><el-form ref="teachplanForm"  :model="teachplanActive" label-width="140px" style="width:600px;" :rules="teachplanRules" ><el-form-item label="上级结点" ><el-select v-model="teachplanActive.parentid" placeholder="不填表示根结点"><el-optionv-for="item in teachplanList":key="item.id":label="item.pname":value="item.id"></el-option></el-select></el-form-item><el-form-item label="章节/课时名称" prop="pname"><el-input v-model="teachplanActive.pname" auto-complete="off"></el-input></el-form-item><el-form-item label="课程类型" ><el-radio-group v-model="teachplanActive.ptype"><el-radio class="radio" label='1'>视频</el-radio><el-radio class="radio" label='2'>文档</el-radio></el-radio-group></el-form-item><el-form-item label="学习时长(分钟)  请输入数字" ><el-input type="number" v-model="teachplanActive.timelength" auto-complete="off" ></el-input></el-form-item><el-form-item label="排序字段" ><el-input v-model="teachplanActive.orderby" auto-complete="off" ></el-input></el-form-item><el-form-item label="章节/课时介绍" prop="description"><el-input type="textarea" v-model="teachplanActive.description" ></el-input></el-form-item><el-form-item label="状态" prop="status"><el-radio-group v-model="teachplanActive.status" ><el-radio class="radio" label="0" >未发布</el-radio><el-radio class="radio" label='1'>已发布</el-radio></el-radio-group></el-form-item><el-form-item  ><el-button type="primary" v-on:click="addTeachplan">提交</el-button><el-button type="primary" v-on:click="resetForm">重置</el-button></el-form-item></el-form></el-dialog>

3)在数据模型中添加如下变量

data() {return {mediaFormVisible:false,teachplayFormVisible:false,//控制添加窗口是否显示teachplanList : [{id: 1,pname: '一级 1',children: [{id: 4,pname: '二级 1-1',children: [{id: 9,pname: '三级 1-1-1'}, {id: 10,pname: '三级 1-1-2'}]}]}],defaultProps:{children: 'children',label: 'pname'},teachplanRules: {pname: [{required: true, message: '请输入课程计划名称', trigger: 'blur'}],status: [{required: true, message: '请选择状态', trigger: 'blur'}]},teachplanActive:{},teachplanId:''}
},

4)定义表单提交方法和重置方法

methods: {
//提交课程计划addTeachplan(){//校验表单this.$refs.teachplanForm.validate((valid) => {if (valid) {//调用api方法//将课程id设置到teachplanActivethis.teachplanActive.courseid = this.courseidcourseApi.addTeachplan(this.teachplanActive).then(res=>{if(res.success){this.$message.success("添加成功")//刷新树this.findTeachplan()}else{this.$message.error(res.message)}})}})},//重置表单resetForm(){this.teachplanActive = {}},//查询课程计划courseApi.findTeachplanList(this.courseid).then(res=>{if(res && res.children){this.teachplanList = res.children;}})}},

2.Api调用

1)定义 api方法

文件位置:xc-ui-pc-teach\xc-ui-pc-teach\src\module\course\api\course.js

/*添加课程计划*/
export const addTeachplan = teachplah => {return http.requestPost(apiUrl+'/course/teachplan/add',teachplah)
}

2)调用 api

文件位置:xc-ui-pc-teach\xc-ui-pc-teach\src\module\course\page\course_manage\course_plan.vue

      addTeachplan(){//校验表单this.$refs.teachplanForm.validate((valid) => {if (valid) {//调用api方法//将课程id设置到teachplanActivethis.teachplanActive.courseid = this.courseidcourseApi.addTeachplan(this.teachplanActive).then(res=>{if(res.success){this.$message.success("添加成功")//刷新树this.findTeachplan()}else{this.$message.error(res.message)}})}})},

3.测试

测试流程:
1、新建一个课程
2、向新建课程中添加课程计划
添加一级结点
添加二级结点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

理解 maven 的核心概念

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 本文以类图的方式&#xff0c;介绍 maven 核心的 12 个概念及相互之间的关系。 Table of Contents 1 maven管理的目标&#xff1a;工程…

C#关键字的使用

params object[] 用于函数多参数的定义public static void Write(string format, params object[] arg);explicit 关键字用于声明必须使用强制转换来调用的用户定义的类型转换运算符。 例如&#xff0c;在下面的示例中&#xff0c;此运算符将名为 Fahrenheit 的类转换为名为 Ce…

maven 中 pom.xml 配置文件标签说明,dependencyManagement和dependencies区别

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 参考&#xff1a;http://zhaoshijie.iteye.com/blog/2094478http://blog.csdn.net/cpf2016/article/details/45674377 还有一篇转载文章…

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

文章目录一.需求分析二.API接口三.PageHelper1.PageHelper介绍2.添加依赖3.配置pageHelper四.Dao1.mapper 接口2.mapper.xml映射文件3.测试Dao五.Service六.Controller七.前端1.创建course_list.vue2.路由3.定义API方法4.前端视图course_list.vue详解1&#xff09;API调用--在视…

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

文章目录一.需求分析二.课程分类查询介绍三.数据结构四.数据格式五.数据模型六.Api接口七.服务器端1.Dao1&#xff09;定义mapper2&#xff09;定义mapper映射文件2.Service3.Controller八.接口测试一.需求分析 用户操作流程如下&#xff1a; 1、用户进入“我的课程”页面&…

POI 方式-excle 表格导出实现-java-poi

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 效果&#xff1a; jsp 页面 用的Bootstrap &#xff1a; <li class"dropdown"> <a href"javascript:void(0)…

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

文章目录一.介绍二.数据模型三.数据模型类四.字典查询API接口五.服务器端1.Dao2.Service3.Controller一.介绍 在新增课程界面需要选择课程等级、课程状态等&#xff0c;这些信息统一采用数据字典管理的方式。 本项目对一些业务的分类配置信息&#xff0c;比如&#xff1a;课程…

程序员的进化

对于很多同学来说&#xff0c;他们对程序员的职业生涯非常关注。而这本质上是一个进化的过程。我们将如何进化&#xff1f;在每个进化阶段我们应该如何提高自己&#xff1f;下面的文章根据我自己的切身经历和阅读过的书&#xff0c;为程序员每个阶段的进化提供了不同的学习思路…

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

文章目录一.效果展示二.服务端1.Api接口2.Dao3.Service4.Controller三.前端1.页面完善1&#xff09;创建course_add.vue页面2&#xff09;course_add.vue页面路由3&#xff09;course_list.vue中添加链接2.查询数据字典1&#xff09;视图中代码2&#xff09;定义Api方法3&#…

html里面表格问题

表格问题汇总&#xff1a; 现代网站中表格的用武之地已经很少了&#xff0c;但是一些框架&#xff0c;如bootstorp还是会用到的&#xff0c;所以还是需要了解掌握。本随笔只涉及开发过程中遇到的表格问题&#xff0c;不做其他拓展。 1、caption代表的是表格元素的标题。至于标题…

RT-Thread简介

RT-Thread简介 RT-Thread是一款完全由国内团队开发维护的嵌入式实时操作系统&#xff08;RTOS&#xff09;&#xff0c;具有完全的自主知识产权。 经过16个年头的沉淀&#xff0c;伴随着物联网的兴起&#xff0c;它正演变成一个功能强大、组件丰富的物联网操作系统。 RT-Thre…

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

文章目录一.需求分析二.课程管理导航页面1.定义course_manage.vue为课程管理页面2.创建各个信息管理页面3.创建路由三.服务端1.Api接口1&#xff09;根据课程ID查询课程信息2&#xff09;修改课程信息2.Dao3.Service4.Controller四.前端1. 完成course_baseinfo.vue页面2.API方法…

C#曲线分析平台的制作(四,highcharts+ajax加载后台数据)

在上一篇博客&#xff1a;C#曲线分析平台的制作&#xff08;三&#xff0c;三层构架echarts显示&#xff09;中已经完成了后台的三层构架的简单搭建&#xff0c;为实现后面的拓展应用开发和review 改写提供了方便。而在曲线分析平台中&#xff0c;往往有要求时间轴联动功能&…

国际C语言混乱代码大赛结果公布

国际C语言混乱代码大赛&#xff08;IOCCC, The International Obfuscated C Code Contest&#xff09;是一项国际编程赛事&#xff0c;从1984年开始&#xff0c;每年举办一次&#xff08;1997年、1999年、2002年、2003年和2006年例外&#xff09;。目的是写出最有创意的最让人难…

eclipse加速之禁用 JS、jsp 等文件的语法验证

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 去除eclipse的JS验证&#xff1a; 将windows->preference->Java Script->Validator->Errors/Warnings-> Enable Javascr…

学成在线--22.课程营销

文章目录一.需求分析二.数据模型三.服务端1.Api接口1&#xff09;查询课程营销信息2&#xff09;更新课程营销信息2.Dao3.Service4.Controller四.前端1.Api 方法2.编写 course_marketinfo.vue1&#xff09;template2&#xff09;数据对象3&#xff09;保存方法4&#xff09;在m…

电子邮件系统

&#xff08;一&#xff09;电子邮件系统的构成 1.用户代理 用户与电子邮件系统的接口&#xff0c;用户代理使用户能够通过一个很友好的接口来发送和接收邮件&#xff0c;用户代理就是一个运行在PC上的程序。 2 邮件服务器 邮件服务器的功能是发送和接收邮件&#xff0c;同…

mysql查看binlog日志内容

2019独角兽企业重金招聘Python工程师标准>>> &#xff08;一&#xff09; binlog介绍 binlog,即二进制日志,它记录了数据库上的所有改变&#xff0c;并以二进制的形式保存在磁盘中&#xff1b; 它可以用来查看数据库的变更历史、数据库增量备份和恢复、Mysql的复制&…

架构师:我们需要顶层设计

架构师&#xff1a;我们需要顶层设计背景&#xff1a; 某公司&#xff0c;建立的程序又被推倒&#xff0c;外人觉得很奇怪&#xff0c;这个程序的主管非常敬业&#xff0c;关注到了程序每一个细节&#xff0c;甚至包括每一个按钮的文字和位置。这个主管很委屈&#xff0c;他说…

Diango博客--19.使用 Docker部署项目到线上服务器

文章目录1.克隆代码到服务器2.创建环境变量文件用于存放项目敏感信息3.在 .production 文件写入下面的内容并保存4.修改 Nginx 配置5.修改项目配置文件6.启动容器7.检查容器启动状况8.配置 HTTPS 证书&#xff08;没有配置域名无法配置&#xff0c;只能通过服务器 ip 以 HTTP 协…