教育项目--课程模块【32】

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;

/**
 * <p>
 * 课程,包含一个课程的详细内容
 * </p>
 *
 * @author taotao
 * @since 2021-02-01
 */
@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;

/**
 * @Program: science_source_education
 * @Description
 * @Author: 涛涛 * ^ *
 * @Create: 2021-02-01 16:20
 **/
@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;

    /**
     * 价格0.01的问题 使用BigDecimal类型
     */
    @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;

/**
 * <p>
 * 课程 服务类
 * </p>
 *
 * @author taotao
 * @since 2021-02-01
 */
public interface EduCourseService extends IService<EduCourse> {
    /**
     * 新增课程内容
     * @param courseInfoVo 封装好的课程新增Vo类
     */
    void insertCourse(CourseInfoVo courseInfoVo);

    /**
     * 根据ID发布课时信息
     * @param id
     */
    void publishCourseById(String id);

    /**
     * 条件查课程内容
     * @param pageParam
     * @param courseQuery
     */
    void pageQuery(Page<EduCourse> pageParam, CourseQuery courseQuery);

    /**
     * 根据ID删除课程内容
     * @param id
     * @return
     */
    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;

/**
 * <p>
 * 课程 服务实现类
 * </p>
 *
 * @author taotao
 * @since 2021-02-01
 */
@Service
public class EduCourseServiceImpl extends ServiceImpl<EduCourseMapper, EduCourse> implements EduCourseService {


    @Autowired
    EduCourseDescriptionService eduCourseDescriptionService;

    @Autowired
    EduSubjectService eduSubjectService;

    /**
     * 添加课程信息
     *
     * @param courseInfoVo
     */
    @Override
    public void insertCourse(CourseInfoVo courseInfoVo) {
        //添加课程信息-->课程表
        EduCourse eduCourse = new EduCourse();
        BeanUtils.copyProperties(courseInfoVo, eduCourse);

        //通过传入的课程专业ID获取他的父ID
        QueryWrapper<EduSubject> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("id", courseInfoVo.getSubjectId());
        EduSubject one = eduSubjectService.getOne(queryWrapper);
        eduCourse.setSubjectParentId(one.getParentId());

        //返回sql中影响的行数
        int insert = baseMapper.insert(eduCourse);

        if (insert <= 0) {
            throw new MyselfException(50003, "课程添加失败");
        }
        //添加课程简介-->课程简介表
        EduCourseDescription eduCourseDescription = new EduCourseDescription();
        //将入参的这个简介对象传给这个对象
        eduCourseDescription.setDescription(courseInfoVo.getDescription());

        String id = eduCourse.getId();
        //解决一一对象的ID一致的问题
        eduCourseDescription.setId(id);

        boolean save = eduCourseDescriptionService.save(eduCourseDescription);

        if (!save) {
            throw new MyselfException(50003, "课程添加失败");
        }


    }

    /**
     * 根据ID发布课时信息
     *
     * @param id
     */
    @Override
    public void publishCourseById(String id) {
        EduCourse course = new EduCourse();
        course.setId(id);
        //修改课时的状态【发布】
        course.setStatus(EduCourse.COURSE_NORMAL);
        //根据ID进行修改课时的状态信息
        baseMapper.updateById(course);
    }

    /**
     * 条件查课程内容
     *
     * @param pageParam
     * @param courseQuery
     */
    @Override
    public void pageQuery(Page<EduCourse> pageParam, CourseQuery courseQuery) {
        //创建一个QueryWrapper对象
        QueryWrapper<EduCourse> queryWrapper = new QueryWrapper<EduCourse>();
        //根据创建时间排序
        queryWrapper.orderByDesc("gmt_create");
        //如果传入的条件为空
        if (courseQuery == null) {
            //直接范围queryWapper为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);
    }

    /**
     * 根据ID删除课程内容
     *
     * @param courseId
     * @return
     */
    @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;

/**
 * <p>
 * 课程 前端控制器--课程模块
 * </p>
 *
 * @author taotao
 * @since 2021-02-01
 */
@RestController
@RequestMapping("/eduservice/edu-course")
@CrossOrigin
@Api(description = "课程内容")
public class EduCourseController {

    @Resource
    EduCourseService eduCourseService;


    /**
     * 添加课程
     * @param courseInfoVo 封装好的新增课程类
     * @return  返回方法的结果
     */
    @PostMapping()
    @ApiOperation(value = "添加课程")
    public R insertCourse(
            @ApiParam(name = "eduCourse", value = "课程对象")
            @RequestBody CourseInfoVo courseInfoVo) {

        eduCourseService.insertCourse(courseInfoVo);

        return R.ok();
    }
    /**
     * 根据id发布课程
     * @param id
     * @return
     */
    @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);
    }

    /**
     * 根据ID删除课程内容
     * @param id
     * @return
     */
    @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("删除失败");
        }
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小七会喷火

小七想要bi

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值