在线学习平台-学生端

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

        学生端课程分页查询

        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

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

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

        

                mapper

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

        xml

<resultMap id="stuPageMap" type="stuCoursePageVo">
        <id property="courseId" column="course_id"></id>
        <result property="courseName" column="course_name"></result>
        <result property="courseCover" column="course_cover"></result>
<!--        <result property="classId" column="class_id"></result>-->   <!--这是管理端的课程查询需要的数据 -->
        <result property="teacherId" column="teacher_id"></result>
<!--        <result property="className" column="class_name"></result>-->
        <result property="teacherName" column="nick_name"></result>
        <result property="remark" column="remark"></result>
    </resultMap>
    <select id="stuPage" resultMap="stuPageMap">
        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,需要去关联教师的用户表
        ${ew.customSqlSegment}  --直接用条件构造器构造,不用写where
    </select>

        service

        Implc

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

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

       //条件构造器来构造where
        QueryWrapper<StuCoursePageVo> 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<StuCoursePageVo> list(@Validated Pager pager, Long teacherId, String courseName){

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

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

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/244736.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机系统结构MIPS流水线

题目 其中&#xff1a;R3的初值是R2396。假设&#xff1a;在整个代码序列的运行过程中&#xff0c;所有的存储器访问都是命中的&#xff0c;并且在一个时钟周期中对同一个寄存器的读操作和写操作可以通过寄存器文件“定向”。问&#xff1a; &#xff08;1&#xff09;在没有任…

C++模板编程浅析

函数模板 声明与定义函数模板 #include <iostream> using namespace std; template <class T> void swap_new(T& a, T& b);int main() {int a 1, b 2;float c 1.5, d 3.6;swap_new(a, b);swap_new(c, d);cout << a << " " &…

Redis HyperLogLog 数据结构模型统计

HyperLogLog HyperLogLog 不是一种新的数据结构 &#xff0c; 本质上是字符串类型。 是一种基数算法。 通过 HyperLogLog 可以节省内存空间&#xff0c;并完成独立总数的统计。 HyperLogLog 数据结构可用于仅使用少量恒定内存来计算集合中的唯一元素&#xff0c;具体而言&…

Centos硬盘操作合集

一、硬盘命令说明 lsblk 列出系统上的所有磁盘列表 查看磁盘列表 参数意义 blkid 列出硬盘UUID [rootzs ~]# blkid /dev/sda1: UUID"77dcd110-dad6-45b8-97d4-fa592dc56d07" TYPE"xfs" /dev/sda2: UUID"oDT0oD-LCIJ-Xh7r-lBfd-axLD-DRiN-Twa…

【coco】掩膜mask影像转coco格式txt(含python代码)

最近在做实例分割&#xff0c;遇到二值掩膜影像——coco格式txt的实例分割转换问题&#xff0c;困扰很久&#xff0c;不知道怎么转换&#xff0c;转出来的txt没法用代码成功读取。一系列问题&#xff0c;索性记录下自己的结局路程&#xff0c;方便大家python代码自取。 目录 &…

Python开发运维:Python调用K8S API实现资源管理

目录 一、实验 1.Python操作K8S API获取资源 2.Python操作K8S API创建deployment资源 3.Python操作K8S API删除k8s资源 4.Python操作K8S API修改k8s资源 5.Python操作K8S API查看k8s资源 二、问题 1.Windows11安装kubernetes报错 2.Python通过调用哪些方法实现Pod和De…

C4D云渲染怎么提升速度小技巧?C4D云渲染速度提升技巧

当许多C4D用户转向云渲染时&#xff0c;他们常常会发现渲染速度并没有预期中的提升&#xff0c;这让人产生疑问&#xff0c;为什么使用云渲染服务后&#xff0c;渲染时间依然没有显著缩短&#xff0c;C4D云渲染情况取决于多个因素&#xff0c;如&#xff1a;渲染任务特点以及所…

图的搜索(二):贝尔曼-福特算法、狄克斯特拉算法和A*算法

图的搜索&#xff08;二&#xff09;&#xff1a;贝尔曼-福特算法、狄克斯特拉算法和A*算法 贝尔曼-福特算法 贝尔曼-福特&#xff08;Bellman-Ford&#xff09;算法是一种在图中求解最短路径问题的算法。最短路径问题就是在加权图指定了起点和终点的前提下&#xff0c;寻找从…

代码上传的gitee平台

1.首先我们访问工作台 - Gitee.com进行注册和登录 2.我们创建一个仓库&#xff1a; 3.在本地创建我们的项目 在这文件夹里面我们打开git bush,执行 一下操作&#xff1a; git init &#xff1a;初始化仓库 git status&#xff1a;检查状态 git add . &#xff1a;将当前文件…

【wimdows电脑上管理员账户与管理员身份的区别】

管理员账户 在控制面板的用户账户中&#xff0c;点击更改账户类型&#xff0c;可以看到目前的账户是“管理员账户”还是“标准账户”。 管理员身份 在快捷方式上右击&#xff0c;可以看到&#xff0c;可以选择以管理员身份运行该软件。 如何查看某个应用是否以管理员身份…

6.Jetson Orin Nano 系统在NVME SSD上备份与恢复

Jetson Orin Nano 系统在NVME SSD上备份与恢复 刚开始我也参考其它博主写的系统备份与恢复&#xff0c;由于我Jetson 的系统盘是1t的&#xff0c;用dd命令拷贝的到另外一个1t的硬盘里面时&#xff0c;总会出现硬盘空间不足的情况出现。只能从小硬盘容量往大硬盘容量拷贝&#…

单通道led线性驱动芯片推荐:SM2082EGS

单通道LED线性驱动芯片是一种用于控制LED灯的芯片&#xff0c;它能够提供恒定的电流输出&#xff0c;从而实现LED灯的稳定亮度调节。这种芯片主要由输入端、控制电路、放大器和输出端构成&#xff0c;通过控制输入端的电压和信号来调节LED的亮度。 单通道led线性驱动芯片推荐&a…

JAVA:乘除窗体的实现

目录 题目要求&#xff1a; 窗口的实现&#xff1a; try 和 catch 的用法&#xff1a; 思路大意&#xff1a; 关键代码的实现&#xff1a; 题目要求&#xff1a; 使用 try 和catch 方法完成乘法除法的异常处理和窗体的实现&#xff0c;如下图所示&#xff1a; 窗口的实…

国际著名书画艺术家敖特:连续三届荣获世界美术大赛金奖

敖特 敖特是一位备受国际认可的蒙古族书画艺术家&#xff0c;以其卓越的才华和杰出的艺术成就而脱颖而出。他的艺术简历显示了他在国内外艺术大赛中多次荣获金奖&#xff0c;并获得了白俄罗斯、俄罗斯等国的最高艺术成就奖项&#xff0c;进一步证明了他在国际艺术界的卓越地位…

MidJourney笔记(7)-Seeds

我相信很多人在使用MidJourney的时候,都会遇到一个问题,就是如何保持生成图像的一致性,或者相对一致性,差异性不是很大。此时,我们就需要引入一个seed值,类似给这个提示词生成的图片做一个id标识。 那这个seed值怎么使用? 其实,在我们每次生成的图片,都有有一个seed值…

【Spring教程27】Spring框架实战:一文教你轻松掌握PostMan工具的安装与使用技巧!轻松搞定API测试!!!

目录 1 PostMan简介2 PostMan安装3 PostMan使用3.1 创建WorkSpace工作空间3.2 发送请求3.3 保存当前请求 4 发送步骤总结 欢迎大家回到《Java教程之Spring30天快速入门》&#xff0c;本教程所有示例均基于Maven实现&#xff0c;如果您对Maven还很陌生&#xff0c;请移步本人的博…

【C语言:文件操作】

文章目录 1. 什么是文件1.1为什么有文件&#xff1f;1.2什么是文件1.3文件的分类1.4文件缓冲区 2.文件的打开与关闭2.1文件的打开(fopen)2.2文件的关闭(fclose) 3.顺序读写数据文件3.1读写字符3.2读写字符串3.3格式化读写3.4二进制读写 4.文件的随机读写4.1fseek4.2ftell4.3rew…

【docker】镜像使用(Nginx 示例)

查看本地镜像列表 docker images删除本地镜像 # docker rmi [容器 ID]docker rmi a6bd71f48f68 查找镜像 docker search nginx 参数介绍 NAME: 镜像仓库源的名称DESCRIPTION: 镜像的描述OFFICIAL: 是否 docker 官方发布STARS: 点赞、喜欢AUTOMATED: 自动构建。 拉去镜像 …

shopify商城开发 引用谷歌字体库 fonts.google.com

引用谷歌字体库 https://fonts.google.com/ <link rel"preconnect" href"https://fonts.googleapis.com"> <link rel"preconnect" href"https://fonts.gstatic.com" crossorigin> <link href"https://fonts.goo…

C语言——K /C语言内存函数

一、memcpy 使用和模拟实现 void * memcpy ( void * destination, const void * source, size_t num ); • 函数 memcpy 从 source 的位置开始向后复制num个字节的数据到destination指向的内存位置。 • 这个函数在遇到 \0 的时候并不会停下来。 • 如果source和destination有…