• 在线教育项目-day07【添加课程-填写课程基本信息1】


    1.使用代码生成器生成代码

     

     运行

    记得将所有的主键生成策略都改一下

     课程id需要我们自己去输入

    以及时间的自动填充

    2.细节问题

    1.创建vo实体类用于表单数据封装

    2.表单提交的数据添加到数据库(需要加到两个数据库,课程表,课程描述表)

    3.把讲师和分类做成下拉列表的形式,课程分类做成二级联动效果

    3.具体实现

    创建vo实体类用于表单数据封装

    @Data
    public class CourseInfoVo {
        @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;
    
    }

    这个实体类就是我们要传的值

    然后创建controller的方法

    @RestController
    @RequestMapping("/eduservice/edu-course")
    @CrossOrigin
    public class EduCourseController {
        @Autowired
        EduCourseService courseService;
        @PostMapping("addcourse")
        public R addcourseInfo(@RequestBody CourseInfoVo courseInfoVo){
            courseService.saveCourseInfo(courseInfoVo);
            return R.OK();
        }
    
    }

    service

    public interface EduCourseService extends IService<EduCourse> {
    
        void saveCourseInfo(CourseInfoVo courseInfoVo);
    }

    serviceImpl

    @Service
    public class EduCourseServiceImpl extends ServiceImpl<EduCourseMapper, EduCourse> implements EduCourseService {
    
        @Autowired
        private EduCourseDescriptionService courseDescriptionService;
        @Override
        public void saveCourseInfo(CourseInfoVo courseInfoVo) {
            //向课程表中加信息
            //courseInfoVo转换成EduCourse
            EduCourse eduCourse=new EduCourse();
            BeanUtils.copyProperties(courseInfoVo,eduCourse);
            int i=baseMapper.insert(eduCourse);
            if(i==0){
                throw new onlineEduException(20001,"添加失败");
            }
            //获取添加课程id
            String cid=eduCourse.getId();
            //向课程描述表中加信息
            EduCourseDescription eduCourseDescription=new EduCourseDescription();
            eduCourseDescription.setDescription(courseInfoVo.getDescription());
            eduCourseDescription.setId(cid);
            courseDescriptionService.save(eduCourseDescription);
    
        }
    }

    在这里需要注意couse和couse_description的id应该是一对一的

    进行测试

     然后我们去数据库中查看

     

     可以看到是一样的

    前端部分

    先创建course.js

    import request from '@/utils/request'
    export default {
        //1 添加课程信息
        addCourseInfo(courseInfo) {
            return request({
                url: '/eduservice/edu-course/addcourse',
                method: 'post',
                data:courseInfo
              })
        },
    

    再创建我们的三个页面,页面代码最后同一放出

     

     完善方法

    因为跳到第二页需要一个id,所以我们需要更改我们的方法

     然后,返回cid

     做讲师下拉列表的实现

    在js中添加函数实现

     //2 查询所有讲师
        getListTeacher() {
            return request({
                url: '/eduservice/edu-teacher/findAll',
                method: 'get'
              })
        }

    在info.vue

    的方法中添加

            //查询所有的讲师
            getListTeacher() {
                course.getListTeacher()
                    .then(response => {
                        this.teacherList = response.data.items
                    })
            },

    前端

     效果

     做一级二级分类功能

    主要写前端

    subjectLevelOneChanged(value) {
                //value就是一级分类id值
                //遍历所有的分类,包含一级和二级
                for(var i=0;i<this.subjectOneList.length;i++) {
                    //每个一级分类
                    var oneSubject = this.subjectOneList[i]
                    //判断:所有一级分类id 和 点击一级分类id是否一样
                    if(value === oneSubject.id) {
                        //从一级分类获取里面所有的二级分类
                        this.subjectTwoList = oneSubject.children
                        //把二级分类id值清空
                        this.courseInfo.subjectId = ''
                    }
                }
            },
            //查询所有的一级分类
            getOneSubject() {
                subject.getSubjectList()
                    .then(response => {
                        this.subjectOneList = response.data.items
                    })
            },

  • 相关阅读:
    Filter过滤器
    jsp-JSTL表达式
    jsp-EL表达式
    JSP概述
    servlet编码问题
    微信开放平台-踩坑1
    Supervisor的安装以及使用
    laravel-mix的安装
    Laravel框架中打印sql
    Laravel 5.7 使用 PHP artisan migrate 的问题
  • 原文地址:https://www.cnblogs.com/dmzna/p/12817793.html
Copyright © 2020-2023  润新知