在线学习平台-学生端

     在线学习平台------手把手教程

        学生端课程分页查询

        sql:

        学生登入时,只能看见自己的所属课程,需要关联查询,查出学生对应的课程

SELECT
            t2.course_id,
            t2.course_name,
            t2.course_cover,
            t2.teacher_id,
            t3.nick_name,
            t2.remark
        from sys_user t1
        LEFT JOIN ms_course t2
        on t1.class_id = t2.class_id    --通过学生关联课程
        LEFT JOIN sys_user t3
        on t3.user_id = t2.teacher_id   --学生课程信息里还要把教师姓名给查出来
                                        --course表里只有id,需要去关联教师的用户表

        实体类

        在domain的Vo包下创建stu的包专门放学生模块的Vo

        如果在这多创建一级的包,别名包会扫描不出来

        所以需要自己去配置扫描包

在线学习平台-学生端_第1张图片

        在线学习平台-学生端_第2张图片

                mapper

//和之前的课程查询差不多,接收分页对象和wrapper对象
    Page stuPage(@Param("page")Page page,
                               @Param(Constants.WRAPPER)Wrapper wrapper);

        xml


        
        
        
   
        

        
        
    
    

        service

在线学习平台-学生端_第3张图片        Implc

//查询学生端课程详情
    @Override
    public Page stuPage(Pager pager, Long teacherId, String courseName) {

        //课程查询需要一个分页对象
        Page p = new Page<>(pager.getPageNum(),pager.getPageSize());

       //条件构造器来构造where
        QueryWrapper qw = new QueryWrapper<>();

        //没被假删的课程 t2是course表
        qw.ne("t2.del_flag",2);

        //t3对应的是用户模块的教师表
        qw.eq(teacherId != null,"t3.teacher_id",teacherId);

        //String类型需要调用StringUtils来判断不为空
        qw.like(StringUtils.isNotEmpty(courseName),"t2.course_name",courseName);
        
        //针对当前学生用户查询的
        qw.eq("t1.user_id", SecurityUtils.getUserId());
        
        //降序排列,最后添加的放在最上面
        qw.orderByDesc("t2.create_time");

        return msCourseMapper.stuPage(p,qw);
    }

controller

package com.mashang.elearing.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mashang.elearing.core.TableData;
import com.mashang.elearing.domain.vo.MsCoursePageVo;
import com.mashang.elearing.domain.vo.stu.StuCoursePageVo;
import com.mashang.elearing.service.IMSCourseService;
import com.ruoyi.common.core.page.Pager;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@Api(tags = "学生端课程模块")
@RestController
@RequestMapping("/student/course")
public class StuCourseController {

    //除了控制层是分割开的,其他层可以共用
    @Autowired
    private IMSCourseService msCourseService;

    @ApiOperation("学生课程分页查询")
    @GetMapping
    //分页需要有一个参数验证@Validated,保证PageNum和PageSize有传
    //teacherId和courseName是用来查询的对应信息的,没传默认查所有
    public TableData list(@Validated Pager pager, Long teacherId, String courseName){

        //查询出来的page对象含有所有信息和条数
        Page page = msCourseService.stuPage(pager, teacherId, courseName);

        List records = page.getRecords();
        long total = page.getTotal();

        //分页要查询出所有信息和总条数
        return TableData.success(records,total);
    }
}

 登入不同的账号会查询出不同的课程信息

测试的时候如果觉得麻烦,可以取消掉验证码接口

在线学习平台-学生端_第4张图片

把这段代码去掉,登入的时候只要传入账号密码就行,不用uuid和code

在线学习平台-学生端_第5张图片

账号密码登入后得到token,不同的token对应的用户信息不同,条件构造SecruityUtil.getUserId也不一样,查出来的课程自然也不一样

你可能感兴趣的:(在线学习平台,Java学习,mybatis,数据库,mysql,springboot,ssm,swagger)