课程营销
需求分析
课程营销信息包括课程价格、课程有效期等信息。
数据模型
课程营销信息使用course_market表存储。
数据模型如下:
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;
/**
* 课程营销管理实体类
* Created by admin on 2018/2/10.
*/
@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;
}
API
1) 查询课程营销信息
@ApiOperation("获取课程营销信息")
public CourseMarket getCourseMarketById(String courseId);
2)更新课程营销信息
@ApiOperation("更新课程营销信息")
public ResponseResult updateCourseMarket(String id,CourseMarket courseMarket);
课程管理服务
Dao
public interface CourseMarketRepository extends JpaRepository<CourseMarket, String> {
}
Service
/**
* 获取课程营销信息
* @param courseId
* @return
*/
public CourseMarket getCourseMarketById(String courseId) {
Optional<CourseMarket> optional = courseMarketJpaRepository.findById(courseId);
if (optional.isPresent()) {
return optional.get();
}
return null;
}
/**
* 修改课程营销信息
* @param courseId
* @param courseMarket
* @return
*/
@Transactional
public CourseMarket updateCourseMarket(String courseId, CourseMarket courseMarket) {
CourseMarket marketById = this.getCourseMarketById(courseId);
//该课程有营销系信息
if (marketById!=null) {
marketById.setCharge(courseMarket.getCharge());
marketById.setStartTime(courseMarket.getStartTime());
marketById.setEndTime(courseMarket.getEndTime());
marketById.setPrice(courseMarket.getPrice());
marketById.setPrice_old(courseMarket.getPrice_old());
marketById.setQq(courseMarket.getQq());
marketById.setValid(courseMarket.getValid());
courseMarketJpaRepository.save(marketById);
}else{
//该课程为新课程,暂时没有添加营销信息
marketById = new CourseMarket();
BeanUtils.copyProperties(courseMarket,marketById);
//自行设置营销系信息
marketById.setId(courseId);
courseMarketJpaRepository.save(marketById);
}
return marketById;
}
Controller
/**
* 获取课程营销信息
* @param courseId
* @return
*/
@Override
@GetMapping("/coursemarket/get/{courseId}")
public CourseMarket getCourseMarketById(@PathVariable("courseId") String courseId) {
return courseService.getCourseMarketById(courseId);
}
/**
* 更课程营销信息
* @param courseId
* @param courseMarket
* @return
*/
@Override
@PostMapping("/coursemarket/update/{courseId}")
public ResponseResult updateCourseMarket(@PathVariable("courseId") String courseId,@RequestBody CourseMarket courseMarket) {
CourseMarket courseMarket1 = courseService.updateCourseMarket(courseId, courseMarket);
if (courseMarket1 != null) {
return new ResponseResult(CommonCode.SUCCESS);
} else {
return new ResponseResult(CommonCode.FAIL);
}
}
前端
Api 方法
//获取课程营销信息
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)
}
页面
编写 course_marketinfo.vue
1) template
<template>
<div>
<el-form :model="courseMarketForm" label-width="110px" :rules="courseMarketFormRules" ref="courseMarketForm">
<el-form-item label="课程价格" prop="charge">
<b v-for="charge in chargeList">
<el-radio v-model="courseMarketForm.charge" :label="charge.sdId" >{{charge.sdName}}</el-radio>
</b>
<br/>
金额(元):<el-input :disabled="this.courseMarketForm.charge == '203002'?false:true" v-model="courseMarketForm.price" ></el-input>
</el-form-item>
<el-form-item label="课程有效期" prop="expires">
<b v-for="valid in validList">
<el-radio v-model="courseMarketForm.valid" :label="valid.sdId" >{{valid.sdName}}</el-radio>
</b>
<br/>
开始时间:
<el-date-picker :disabled="this.courseMarketForm.valid == '204002'?false:true" type="date" placeholder="选择日期" v-model="courseMarketForm.startTime"></el-date-picker>
结束时间:
<el-date-picker :disabled="this.courseMarketForm.valid == '204002'?false:true" type="date" placeholder="选择日期" v-model="courseMarketForm.endTime"></el-date-picker>
</el-form-item>
<el-form-item label="服务咨询QQ" prop="qq">
<el-input v-model="courseMarketForm.qq" ></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click.native="save" >提交</el-button>
</div>
</div>
</template>
<script>
import * as courseApi from '../../api/course';
import utilApi from '../../../../common/utils';
import * as systemApi from '../../../../base/api/system';
}
</script>
<style scoped>
</style>
2) 数据对象
export default {
data() {
return {
active: 1,
dotype:'',
courseid:'',
chargeList:[],
validList:[],
price_tag:false,
expires_tag:false,
courseMarketForm: {
id:'',
charge:'',
valid:'',
price:'',
expires: '',
startTime: '',
endTime: '',
users: '',
expiration:[],
courseid:this.courseid
},
courseMarketFormRules: {
free: [
{required: true, message: '请选择收费规则', trigger: 'blur'}
],
valid: [
{required: true, message: '请选择有效期', trigger: 'blur'}
]
}
}
},
3)保存方法
methods: {
save: function () {
this.$refs.courseMarketForm.validate((valid) => {
if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => {
courseApi.updateCourseMarket(this.courseid,this.courseMarketForm).then((res) => {
this.editLoading = false;
if(res.success){
this.$message.success('提交成功');
if(this.dotype == '1'){
//跳转到课程图片
this.$router.push({ path: '/course/add/plan/3/1/'+this.courseid})
}
}else{
this.$message.error('提交失败');
}
});
});
}
});
}
},
4)在mounted钩子方法 中查询课程营销信息及数据字典信息
mounted(){
//操作类型
this.dotype = this.$route.params.dotype;
//课程id
this.courseid = this.$route.params.courseid;
this.courseMarketForm.id = this.courseid;
//查询字典
systemApi.sys_getDictionary('203').then((res) => {
this.chargeList = res.dvalue;
});
systemApi.sys_getDictionary('204').then((res) => {
this.validList = res.dvalue;
});
//获取课程营销信息
courseApi.getCourseMarketById(this.courseid).then((res) => {
//console.log(res);
if(res && res.id){
this.courseMarketForm = res;
}
});
}