实现课程详情接口

1、通过编写sql语句,查询课程信息

java 复制代码
SELECT * FROM edu_course ec 
LEFT JOIN edu_course_description ecd ON ec.id = ecd.id 
LEFT JOIN edu_teacher et ON ec.teacher_id = et.id
WHERE ec.id =18;

2、编写接口信息

(1)创建展示vo类 在com/atguigu/eduservice/entity/vo中添加CourseWebVo类。

java 复制代码
@Data
public class CourseWebVo {
    private String id;

    @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 String description;

    @ApiModelProperty(value = "讲师ID")
    private String teacherId;

    @ApiModelProperty(value = "讲师姓名")
    private String teacherName;

    @ApiModelProperty(value = "讲师资历,一句话说明讲师")
    private String intro;

    @ApiModelProperty(value = "讲师头像")
    private String avatar;

    @ApiModelProperty(value = "课程类别ID")
    private String subjectLevelOneId;

    @ApiModelProperty(value = "类别名称")
    private String subjectLevelOne;

    @ApiModelProperty(value = "课程类别ID")
    private String subjectLevelTwoId;

    @ApiModelProperty(value = "类别名称")
    private String subjectLevelTwo;
}

(2)实现Controller

在com/atguigu/eduservice/api目录下的CourseApiController添加根据id查询课程详情方法。

java 复制代码
@ApiOperation(value = "根据id查询课程详情")
@GetMapping("getCourseInfo/{id}")
public R getCourseInfo(@PathVariable String id){
    //1查询课程详情信息
    CourseWebVo courseWebVo = courseService.getCourseWebVo(id);
    //2查询课程相关大纲数据
    List<ChapterVo> chapterVideoList = chapterService.getChapterVideoById(id);
    return R.ok().data("courseWebVo",courseWebVo).data("chapterVideoList",chapterVideoList);
}

(3)在EduCourseService中添加接口

java 复制代码
CourseWebVo getCourseWebVo(String id);

(4)在EduCourseServiceImpl中实现接口的方法

java 复制代码
//根据id查询课程详情(前台)
@Override
public CourseWebVo getCourseWebVo(String id) {
    CourseWebVo courseWebVo = baseMapper.getFrontCourseInfo(id);
    return courseWebVo;
}

(5)编写mapper接口 在com/atguigu/eduservice/mapper目录下EduCourseMapper中编写mapper接口。

java 复制代码
CourseWebVo getFrontCourseInfo(String id);

(6)实现mapper接口方法 在com/atguigu/eduservice/mapper/xml目录下实现mapper接口方法。

java 复制代码
<select id="getFrontCourseInfo" resultType="com.atguigu.eduservice.entity.vo.CourseWebVo">
SELECT ec.id,ec.title,ec.price,ec.cover,ec.lesson_num AS lessonNum,
ec.buy_count AS buyCount,ec.view_count AS viewCount,
ecd.description,et.id AS teacherId,et.name AS teacherName,
et.intro,et.avatar
FROM edu_course ec 
LEFT JOIN edu_course_description ecd ON ec.id = ecd.id 
LEFT JOIN edu_teacher et ON ec.teacher_id = et.id
WHERE ec.id =#{id}
    </select>
相关推荐
ltl5 分钟前
位置编码:为什么需要它,为什么用正弦
后端
明月_清风11 分钟前
Go 函数设计的工程智慧:多返回值、闭包与那些"反直觉"的选择
后端·go
渣渣苏14 分钟前
硬核拆解 HNSW:亿级向量如何实现毫秒级召回?(上篇)
人工智能·算法·支持向量机·ai·向量数据库·hnsw·智能体
如竟没有火炬14 分钟前
字符串相乘——int数组转字符串
开发语言·数据结构·python·算法·leetcode·深度优先
却尘15 分钟前
一个 `&` 引发的血案:改完配置 pipeline 装聋作哑,顺便重学了 Python/Go/Java
后端·go
吃好睡好便好18 分钟前
在Matlab中绘制三维等高线图
开发语言·python·学习·算法·matlab·信息可视化
倚栏听风雨19 分钟前
Spring AI 实战:用 JdbcChatMemory + MySQL 给 AI 接上「长期记忆」
后端
项目申报小狂人28 分钟前
一种使用双向长短时记忆网络结合鲸鱼优化算法的类火星矿物元素精确定量分析模型
人工智能·算法·lstm
wangjialelele32 分钟前
【SystemV】基于建造者模式的信号量
linux·c语言·c++·算法·建造者模式
我叫黑大帅1 小时前
最简单的生产-消费者,你都会遇到哪些问题?
后端·面试·go