1.新增课程
2.更新课程
3.根据ID发布课程
4.分页条件展示课程
实体类PO类
package com.djr.eduservice.entity;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.*;
import java.util.Date;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="EduCourse对象", description="课程")
public class EduCourse implements Serializable {
public static final String COURSE_NORMAL = "课时状态正常";
private static final String ABNORMAL_CLASS_STATUS="课时状态未发布";
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "课程ID")
@TableId(value = "id", type = IdType.ID_WORKER_STR)
private String id;
@ApiModelProperty(value = "课程讲师ID")
private String teacherId;
@ApiModelProperty(value = "课程专业ID")
private String subjectId;
@ApiModelProperty(value = "课程专业父级ID")
private String subjectParentId;
@ApiModelProperty(value = "课程标题")
private String title;
@ApiModelProperty(value = "课程销售价格,设置为0则可免费观看")
private BigDecimal price;
@ApiModelProperty(value = "总课时")
private Integer lessonNum;
@ApiModelProperty(value = "课程封面图片路径")
private String cover;
@ApiModelProperty(value = "销售数量")
private Long buyCount;
@ApiModelProperty(value = "浏览数量")
private Long viewCount;
@ApiModelProperty(value = "乐观锁")
private Long version;
@ApiModelProperty(value = "课程状态 Draft未发布 Normal已发布")
private String status;
@ApiModelProperty(value = "逻辑删除 1(true)已删除, 0(false)未删除")
@TableLogic
private Integer isDeleted;
@ApiModelProperty(value = "创建时间")
@TableField(fill = FieldFill.INSERT)
private Date gmtCreate;
@ApiModelProperty(value = "更新时间")
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date gmtModified;
}
封装返回对象
package com.djr.eduservice.entity.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
@ApiModel(value = "课程基本信息", description = "编辑课程基本信息的表单对象")
public class CourseInfoVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "课程ID")
private String id;
@ApiModelProperty(value = "课程讲师ID")
private String teacherId;
@ApiModelProperty(value = "课程专业ID")
private String subjectId;
@ApiModelProperty(value = "课程标题")
private String title;
@ApiModelProperty(value = "课程销售价格,设置为0则可免费观看")
private BigDecimal price;
@ApiModelProperty(value = "总课时")
private Integer lessonNum;
@ApiModelProperty(value = "课程封面图片路径")
private String cover;
@ApiModelProperty(value = "课程简介")
private String description;
}
service
package com.djr.eduservice.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.djr.eduservice.entity.EduCourse;
import com.baomidou.mybatisplus.extension.service.IService;
import com.djr.eduservice.entity.vo.CourseInfoVo;
import com.djr.eduservice.entity.vo.CourseQuery;
public interface EduCourseService extends IService<EduCourse> {
void insertCourse(CourseInfoVo courseInfoVo);
void publishCourseById(String id);
void pageQuery(Page<EduCourse> pageParam, CourseQuery courseQuery);
boolean removeCourseById(String id);
}
serviceIMPL
package com.djr.eduservice.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.djr.eduservice.entity.EduChapter;
import com.djr.eduservice.entity.EduCourse;
import com.djr.eduservice.entity.EduCourseDescription;
import com.djr.eduservice.entity.EduSubject;
import com.djr.eduservice.entity.vo.CourseInfoVo;
import com.djr.eduservice.entity.vo.CourseQuery;
import com.djr.eduservice.mapper.EduCourseMapper;
import com.djr.eduservice.service.EduCourseDescriptionService;
import com.djr.eduservice.service.EduCourseService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.djr.eduservice.service.EduSubjectService;
import com.djr.servicebase.exceptionhandler.MyselfException;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
@Service
public class EduCourseServiceImpl extends ServiceImpl<EduCourseMapper, EduCourse> implements EduCourseService {
@Autowired
EduCourseDescriptionService eduCourseDescriptionService;
@Autowired
EduSubjectService eduSubjectService;
@Override
public void insertCourse(CourseInfoVo courseInfoVo) {
EduCourse eduCourse = new EduCourse();
BeanUtils.copyProperties(courseInfoVo, eduCourse);
QueryWrapper<EduSubject> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("id", courseInfoVo.getSubjectId());
EduSubject one = eduSubjectService.getOne(queryWrapper);
eduCourse.setSubjectParentId(one.getParentId());
int insert = baseMapper.insert(eduCourse);
if (insert <= 0) {
throw new MyselfException(50003, "课程添加失败");
}
EduCourseDescription eduCourseDescription = new EduCourseDescription();
eduCourseDescription.setDescription(courseInfoVo.getDescription());
String id = eduCourse.getId();
eduCourseDescription.setId(id);
boolean save = eduCourseDescriptionService.save(eduCourseDescription);
if (!save) {
throw new MyselfException(50003, "课程添加失败");
}
}
@Override
public void publishCourseById(String id) {
EduCourse course = new EduCourse();
course.setId(id);
course.setStatus(EduCourse.COURSE_NORMAL);
baseMapper.updateById(course);
}
@Override
public void pageQuery(Page<EduCourse> pageParam, CourseQuery courseQuery) {
QueryWrapper<EduCourse> queryWrapper = new QueryWrapper<EduCourse>();
queryWrapper.orderByDesc("gmt_create");
if (courseQuery == null) {
baseMapper.selectPage(pageParam, queryWrapper);
return;
}
String title = courseQuery.getTitle();
String teacherId = courseQuery.getTeacherId();
String subjectParentId = courseQuery.getSubjectParentId();
String subjectId = courseQuery.getSubjectId();
if (!StringUtils.isEmpty(title)) {
queryWrapper.like("title", title);
}
if (!StringUtils.isEmpty(teacherId)) {
queryWrapper.eq("teacher_id", teacherId);
}
if (!StringUtils.isEmpty(subjectParentId)) {
queryWrapper.ge("subject_parent_id", subjectParentId);
}
if (!StringUtils.isEmpty(subjectId)) {
queryWrapper.ge("subject_id", subjectId);
}
baseMapper.selectPage(pageParam, queryWrapper);
}
@Override
public boolean removeCourseById(String courseId) {
QueryWrapper<EduCourse> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("course_id", courseId);
Integer count = baseMapper.delete(queryWrapper);
if (count >= 0) {
return true;
}
return false;
}
}
controller
package com.djr.eduservice.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.djr.commonutils.R;
import com.djr.eduservice.entity.EduCourse;
import com.djr.eduservice.entity.vo.CourseInfoVo;
import com.djr.eduservice.entity.vo.CourseQuery;
import com.djr.eduservice.service.EduCourseService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("/eduservice/edu-course")
@CrossOrigin
@Api(description = "课程内容")
public class EduCourseController {
@Resource
EduCourseService eduCourseService;
@PostMapping()
@ApiOperation(value = "添加课程")
public R insertCourse(
@ApiParam(name = "eduCourse", value = "课程对象")
@RequestBody CourseInfoVo courseInfoVo) {
eduCourseService.insertCourse(courseInfoVo);
return R.ok();
}
@ApiOperation(value = "根据id发布课程")
@PutMapping("publish-course/{id}")
public R publishCourseById(
@ApiParam(name = "id", value = "课程ID", required = true)
@PathVariable String id){
eduCourseService.publishCourseById(id);
return R.ok();
}
@ApiOperation(value = "分页课程列表")
@GetMapping("{page}/{limit}")
public R pageQuery(
@ApiParam(name = "page", value = "当前页码", required = true)
@PathVariable Long page,
@ApiParam(name = "limit", value = "每页记录数", required = true)
@PathVariable Long limit,
@ApiParam(name = "courseQuery", value = "查询对象", required = false)
CourseQuery courseQuery){
Page<EduCourse> pageParam = new Page<>(page, limit);
eduCourseService.pageQuery(pageParam, courseQuery);
List<EduCourse> records = pageParam.getRecords();
long total = pageParam.getTotal();
return R.ok().data("total", total).data("rows", records);
}
@ApiOperation(value = "根据ID删除课程")
@DeleteMapping("{id}")
public R removeById(
@ApiParam(name = "id", value = "课程ID", required = true)
@PathVariable String id){
boolean result = eduCourseService.removeCourseById(id);
if(result){
return R.ok();
}else{
return R.error().message("删除失败");
}
}
}