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

文章目录

  • 一.需求分析
  • 二.数据模型
  • 三.服务端
    • 1.Api接口
      • 1)查询课程营销信息
      • 2)更新课程营销信息
    • 2.Dao
    • 3.Service
    • 4.Controller
  • 四.前端
    • 1.Api 方法
    • 2.编写 course_marketinfo.vue
      • 1)template
      • 2)数据对象
      • 3)保存方法
      • 4)在mounted钩子方法中查询课程营销信息及数据字典信息

一.需求分析

课程营销信息包括课程价格、课程有效期等信息。
在这里插入图片描述

二.数据模型

课程营销信息使用course_market表存储。
数据模型如下:
文件位置:xcEduService01\xc-framework-model\src\main\java\com\xuecheng\framework\domain\course\CourseMarket.java

package com.xuecheng.framework.domain.course;import lombok.Data;
import lombok.ToString;
import org.hibernate.annotations.GenericGenerator;import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;@Data
@ToString
@Entity
@Table(name="course_market")
@GenericGenerator(name = "jpa-assigned", strategy = "assigned")
public class CourseMarket implements Serializable {private static final long serialVersionUID = -916357110051689486L;@Id@GeneratedValue(generator = "jpa-assigned")@Column(length = 32)private String id;private String charge;private String valid;private String qq;private Float price;private Float price_old;
//    private Date expires;@Column(name = "start_time")private Date startTime;@Column(name = "end_time")private Date endTime;}

三.服务端

1.Api接口

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

1)查询课程营销信息

@ApiOperation("获取课程营销信息")
public CourseMarket getCourseMarketById(String courseId);

2)更新课程营销信息

@ApiOperation("更新课程营销信息")
public ResponseResult updateCourseMarket(String id,CourseMarket courseMarket);

2.Dao

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

public interface CourseMarketRepository extends JpaRepository<CourseMarket, String> {
}

3.Service

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

public CourseMarket getCourseMarketById(String courseid) {Optional<CourseMarket> optional = courseMarketRepository.findById(courseId);if(!optional.isPresent()){return optional.get();} return null;
}@public CourseMarket updateCourseMarket(String id, CourseMarket courseMarket) {CourseMarket one = this.getCourseMarketById(id);if(one!=null){one.setCharge(courseMarket.getCharge());one.setStartTime(courseMarket.getStartTime());//课程有效期,开始时间one.setEndTime(courseMarket.getEndTime());//课程有效期,结束时间one.setPrice(courseMarket.getPrice());one.setQq(courseMarket.getQq());one.setValid(courseMarket.getValid());courseMarketRepository.save(one);}else{//添加课程营销信息one = new CourseMarket();BeanUtils.copyProperties(courseMarket, one);//设置课程idone.setId(id);courseMarketRepository.save(one);} return one;
}

4.Controller

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

@Override
@PostMapping("/coursemarket/update/{id}")
public ResponseResult updateCourseMarket(@PathVariable("id") String id, @RequestBody CourseMarket courseMarket) {CourseMarket courseMarket_u = courseService.updateCourseMarket(id, courseMarket);if(courseMarket_u!=null){return new ResponseResult(CommonCode.SUCCESS);}else{return new ResponseResult(CommonCode.FAIL);}
} @Override
@GetMapping("/coursemarket/get/{courseId}")
public CourseMarket getCourseMarketById(@PathVariable("courseId") String courseId) {return courseService.getCourseMarketById(courseId);
}

四.前端

1.Api 方法

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

//获取课程营销信息
export const getCourseMarketById = id => {return http.requestQuickGet(apiUrl+'/course/coursemarket/get/'+id)
} // 更新课程营销信息
export const updateCourseMarket =(id,courseMarket) => {return http.requestPost(apiUrl+'/course/coursemarket/update/'+id,courseMarket)
}

2.编写 course_marketinfo.vue

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

1)template

<template><div><el-form :model="courseForm" label-width="80px" :rules="courseRules" ref="courseForm"><el-form-item label="课程名称" prop="name"><el-input v-model="courseForm.name" auto-complete="off" ></el-input></el-form-item><el-form-item label="适用人群" prop="users"><el-input type="textarea" v-model="courseForm.users" auto-complete="off" ></el-input></el-form-item><el-form-item label="课程分类" prop="categoryActive"><el-cascaderexpand-trigger="hover":options="categoryList"v-model="categoryActive":props="props"></el-cascader></el-form-item><el-form-item label="课程等级" prop="grade"><b v-for="grade in gradeList"><el-radio v-model="courseForm.grade" :label="grade.sdId" >{{grade.sdName}}</el-radio>&nbsp;&nbsp;</b></el-form-item><el-form-item label="学习模式" prop="studymodel"><b v-for="studymodel_v in studymodelList"><el-radio v-model="courseForm.studymodel" :label="studymodel_v.sdId" >{{studymodel_v.sdName}}</el-radio>&nbsp;&nbsp;</b></el-form-item><el-form-item label="课程介绍" prop="description"><el-input type="textarea" v-model="courseForm.description" ></el-input></el-form-item></el-form><div slot="footer" class="dialog-footer"><el-button type="primary"  @click.native="save" :loading="editLoading">提交</el-button></div></div>
</template>

2)数据对象

    data() {return {dotype:'',courseid:'',studymodelList:[],gradeList:[],editLoading: false,props: {value: 'id',label:'label',children:'children'},categoryList: [],categoryActive:[],courseForm: {id:'',name: '',users: '',grade:'',studymodel:'',mt:'',st:'',description: ''},courseRules: {name: [{required: true, message: '请输入课程名称', trigger: 'blur'}],category: [{required: true, message: '请选择课程分类', trigger: 'blur'}],grade: [{required: true, message: '请选择课程等级', trigger: 'blur'}],studymodel: [{required: true, message: '请选择学习模式', trigger: 'blur'}]}}},

3)保存方法

    methods: {save () {//修改课程this.$refs.courseForm.validate((valid) => {if (valid) {this.$confirm('确认提交吗?', '提示', {}).then(() => {this.editLoading = true;let mt = this.categoryActive[0];let st = this.categoryActive[1];this.courseForm.mt = mt;this.courseForm.st = st;let id = this.courseForm.idcourseApi.updateCoursebase(id,this.courseForm).then((res) => {this.editLoading = false;if(res.success){this.$message({message: '提交成功',type: 'success'});}else{if(res.message){this.$message.error(res.message);}else{this.$message.error('提交失败');}}});});}});}},

4)在mounted钩子方法中查询课程营销信息及数据字典信息

  mounted(){//查询数据字典字典systemApi.sys_getDictionary('201').then((res) => {
//        console.log(res);this.studymodelList = res.dvalue;});systemApi.sys_getDictionary('200').then((res) => {this.gradeList = res.dvalue;});//取课程分类courseApi.category_findlist({}).then((res) => {this.categoryList = res.children;});//查询课程信息//课程idthis.courseid = this.$route.params.courseid;courseApi.getCoursebaseById(this.courseid).then((res) => {
//          console.log(res);this.courseForm = res;//课程分类显示,需要两级分类this.categoryActive.push(this.courseForm.mt);this.categoryActive.push(this.courseForm.st);});}

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

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

相关文章

电子邮件系统

&#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 协…

Jquery Datatable 数据填充报错:requested unknown parameter ‘XXX‘ for row xx, column xx 解决方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 报错如图&#xff1a; 解决方法见官网&#xff1a;https://datatables.net/manual/tech-notes/4 摘要如下&#xff1a; Parameter is an…

Tarjan-缩点

$Tarjan$缩点 Tarjan的第二个应用就是求缩点啦。缩点虽然比割点麻烦一点&#xff0c;但是用处也比割点要大不少。 本来要学另外两个缩点算法的,但是似乎没什么用...$MST$里确实有只能有$prim$或者只能用$kruscal$的题目&#xff0c;但是这三种缩点...在网上没有找到介绍它们之间…

百度王一男: DevOps 的前提是拆掉业务-开发-测试-运维中间的三面墙

这是一个创建于 375 天前的主题&#xff0c;其中的信息可能已经有所发展或是发生改变。由数人云、优维科技、中生代社区联合发起的 系列 Meetup 《 DevOps&SRE 超越传统运维之道》 先后在深圳、北京举行过两场 7 月 15 日上海站&#xff0c;敬请期待 ▼ 王一男老师在《 Dev…

解决Cannot change version of project facet Dynamic web module to 2.5

见 &#xff1a; http://blog.csdn.net/steveguoshao/article/details/38414145 我们用Eclipse创建Maven结构的web项目的时候选择了Artifact Id为maven-artchetype-webapp&#xff0c;由于这个catalog比较老&#xff0c;用的servlet还是2.3的&#xff0c;而一般现在至少都是2.5…

Diango博客--22.Django Haystack 全文检索与关键词高亮

文章目录1. Django Haystack 简介2. 安装 django-haystack和elasticsearch 23. 构建容器来运行 elasticsearch 服务4. 配置 Haystack5. 处理数据6. 配置 URL7. 修改搜索表单8. 创建搜索结果页面9. 高亮关键词10. 建立索引文件11. 修改搜索引擎为中文分词12. 防止标题被截断13. …

3分钟学会SVN:SVN快速上手

选择SVN客户端 Windows平台 TortoiseSVN&#xff1a;也叫乌龟SVN&#xff0c;Windows上最流行的SVN客户端&#xff0c;安装后你的右键就会多了几个SVN相关的菜单&#xff0c;非常方便Eclipse插件&#xff1a;在Eclipse中集成SVN插件&#xff0c;适合使用Eclipse开发的用户&…

Diango博客--23.单元测试:测试 blog 应用

文章目录1. 前言2. 搭建测试环境3. 测试模型4. 测试视图5. 测试模板标签6. 测试辅助方法和类1. 前言 我们博客功能越来越来完善了&#xff0c;但这也带来了一个问题&#xff0c;我们不敢轻易地修改已有功能的代码了&#xff01; 我们怎么知道代码修改后带来了预期的效果&…

图片格式转换工具与方法

2019独角兽企业重金招聘Python工程师标准>>> 使用ffmpeg进行格式转换 1.jpg 转 I420 ffmpeg -i 001.jpg -pix_fmt yuv420p 001_I420_fromJPG.yuv 2.png 转 I420 ffmpeg -i 222.png -pix_fmt yuv420p 222_I420_fromPNG.yuv 3.bmp 转 I420 ffmpeg -i xxx.bmp -pix_fmt…

Diango博客--24.单元测试:测试评论应用

文章目录1. 前言2. 数据基类3.测试 Comment Model4. 测试视图函数5. 测试模板标签1. 前言 comments应用的测试和blog应用测试的套路是一样的。 先来建立测试文件的目录结构。首先在 comments 应用的目录下建立一个名为 tests 的 Python 包&#xff0c;然后删除 comments 应用…

结合shiro 的图形验证码生成

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 在做用户登录功能时&#xff0c;很多时候都需要验证码支持&#xff0c;验证码的目的是为了防止机器人模拟真实用户登录而恶意访问&#…

E24- please install the following Perl modules before executing ./mysql_install_db

2019独角兽企业重金招聘Python工程师标准>>> [roott-cet7 scripts]# ./mysql_install_db --basedir/usr/local/mysql/ --datadir/app/data/ --usermysql FATAL ERROR: please install the following Perl modules before executing ./mysql_install_db: Data::Dumpe…

SpringMVC异常报406 (Not Acceptable)的解决办法

使用SpsringMVC&#xff0c;使用restEasy调试&#xff0c;controller请求设置如下&#xff1a; Java代码 RequestMapping(value"/list",methodRequestMethod.GET,producesMediaType.APPLICATION_JSON_VALUE) ResponseBody public List<EditTimeout> list()…

Diango博客--25.使用Coverage统计测试覆盖率

文章目录1. 前言2. 安装 Coverage3. 简单配置 Coverage4. 运行 Coverage5. 完善 Coverage 配置6. 生成 HTML 报告7. 完善单元测试1. 前言 我们完成了对 blog 应用和 comment 应用这两个核心 app 的测试。现在我们想知道的是究竟测试效果怎么样呢&#xff1f;测试充分吗&#x…

Android动画之逐帧动画(FrameAnimation)详解

今天我们就来学习逐帧动画,废话少说直接上效果图如下: 帧动画的实现方式有两种&#xff1a; 一、在res/drawable文件夹下新建animation-list的XML实现帧动画 1、首先在res/drawable文件夹下添加img00-img24共25张图片 2、新建frame_anim.xml [html] view plaincopy <?xml v…

网络爬虫--1.通用爬虫和聚焦爬虫

文章目录一.前言二.通用爬虫1.工作原理2.通用爬虫的局限性三.聚焦爬虫一.前言 根据使用场景&#xff0c;网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种。 其中通用网络爬虫是捜索引擎抓取系统&#xff08;Baidu、Google、Yahoo等&#xff09;的重要组成部分。主要目的是将互联网…