在线学习平台-学生端

news2024/9/27 21:24:59

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

        学生端课程分页查询

        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.coloradmin.cn/o/1310045.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

git查看commit提交记录详情

相关的命令 git log&#xff1a;查看所有的commit提交记录&#xff1b;git show&#xff1a; 查看提交的详情&#xff1b; 首先&#xff0c;需要通过git log显示所有commit记录&#xff1a; 查看最新的commit&#xff1a;git show查看指定commit的所有修改&#xff1a;git s…

计算机网络应用层(期末、考研)

计算机网络总复习链接&#x1f517; 目录 DNS域名服务器域名解析过程分类递归查询&#xff08;给根域名服务器造成的负载过大&#xff0c;实际中几乎不用&#xff09;迭代查询 域名缓存&#xff08;了解即可&#xff09;完整域名解析过程采用UDP服务 FTP控制连接与数据连接 电…

LLM之Prompt(三)| XoT:使用强化学习和蒙特卡罗树搜索将外部知识注入Prompt中,性能超过CoT,ToT和GoT

​论文地址&#xff1a;https://arxiv.org/pdf/2311.04254.pdf 一、当前Prompt技术的局限性 LLM使用自然语言Prompt可以将复杂的问题分解为更易于管理的“thought”可以回复用户的问题。然而&#xff0c;大多数现有的Prompt技术都有局限性&#xff1a; 输入输出&#xff08;I…

centos7服务器上的文件上传到谷歌云盘(google drive)

1,下载gdrive客户端&#xff0c;Releases glotlabs/gdrive GitHub 2&#xff0c;下载完解压,并移动到cp gdrive /usr/local/bin/ 3&#xff0c;查看是否安装成功 4,添加账户&#xff0c;gdrive account add 根据链接&#xff0c;创建Client id和 Client secret 5,填写Client…

HarmonyOS(ArkTS)基础组件参数 媒体类型讲解

我们这里做了一个空的容器 然后 我们可以这样写 Entry Component struct Index {build() {Row() {Column() {Text("你好")Divider()Button("点击")}.width(100%)}.height(100%)} }这里 我们分别使用了三个组件 Text文本组件 Divider分割线组件 Button按钮…

【通俗易懂】基于fabric8io操作k8s集群实战(pod、deployment、service、volume)

目录 前言一、基于fabric8io操作pod1.1 yaml创建pod1.2 fabric8io创建pod案例 二、基于fabric8io创建Service&#xff08;含Deployment&#xff09;2.1 yaml创建Service和Deployment2.2 fabric8io创建service案例 三、基于fabric8io操作Volume3.1 yaml配置挂载存储卷3.2 基于fa…

智能优化算法应用:基于乌鸦算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于乌鸦算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于乌鸦算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.乌鸦算法4.实验参数设定5.算法结果6.参考文献7.MA…

go http服务接收POST请求文件同时接收自定义参数

以gin框架为例&#xff0c;其它框架功能都有&#xff0c;大同小异。 gin中接收文件的方式如下&#xff1a; 单个文件 file : c.FormFile("file") 多个文件 form, err : c.MultipartForm() files : form.File["uoload[]"] 此时files就是所有发来的文件…

JS实现日历表

有需要的可以用一下&#xff0c;这是一个简单的demo. HTML&#xff1a; <table><thead><tr><th colspan"2"><span class"left"></span></th><th colspan"3"><span class"time"&g…

积木艺术化佳乐专用五万颗花型艺术积木诠释东方之美

12月11日,为期四天以“惊喜AMAZE”为主题的2023广州设计周圆满落幕!KALOS BLOCKS佳乐专凭借优秀的产品设计与场馆设计,开展四天,流量爆棚,圈粉无数,在设计周展馆中C位出道,获得现场观众和众多设计师的一致好评! 以梅花之形,现东方之美—— 一次唤醒艺术升维的仪式感一次东方美学…

【数学建模】《实战数学建模:例题与讲解》第九讲-时间序列分析(含Matlab代码)

【数学建模】《实战数学建模&#xff1a;例题与讲解》第九讲-时间序列分析&#xff08;含Matlab代码&#xff09; 基本概念确定性时间序列分析方法平稳时间序列模型ARIMA模型季节性序列 习题8.11. 题目要求2.解题过程3.程序4.结果 习题8.21. 题目要求2.解题过程3.程序4.结果 习…

Qt/C++音视频开发59-使用mdk-sdk组件/原qtav作者力作/性能凶残/超级跨平台

一、前言 最近一个月一直在研究mdk-sdk音视频组件&#xff0c;这个组件是原qtav作者的最新力作&#xff0c;提供了各种各样的示例demo&#xff0c;不仅限于支持C&#xff0c;其他各种比如java/flutter/web/android等全部支持&#xff0c;性能上也是杠杠的&#xff0c;目前大概…

数字图像处理(实践篇)二十五 使用hyperlpr3进行车牌识别

目录 1 HyperLPR 2 中文字体文件下载 3 实践 1 HyperLPR HyperLPR是一个基于Python的使用深度学习针对对中文车牌识别的实现,与开源的EasyPR相比,它的检测速度和鲁棒性和多场景的适应性都要好于EasyPR。 HyperLPR3是一个高性能开源中文车牌识别框架。

leetcode-138-随机链表的复制(Java实现)

题目&#xff1a; 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每个新节点的值都设为其对应的原节点…

【Netty】Socket与I/O模型

目录 Socket网络编程Socket概述Socket整体流程代码实现 I/O模型说明BIO(同步并阻塞)NIO(同步非阻塞)AIO(异步非阻塞)BIO、NIO、AIO适用场景 Socket网络编程 Socket概述 Socket&#xff0c;套接字就是两台主机之间逻辑连接的端点。TCP/IP协议是传输层协议&#xff0c;主要解决…

免费分享一套Springboot+Vue前后端分离的校园二手交易平台,挺漂亮的

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringbootVue前后端分离的校园二手交易平台&#xff0c;分享下哈。 项目视频演示 【免费】SpringbootVue校园二手交易平台系统 毕业设计 Java毕业设计_哔哩哔哩_bilibili 项目介绍 校园二手交易网站是一…

100V耐压 内置MOS ESOP8 40V输入 转5V 2.1A恒压输出

100V耐压内置MOS ESOP8 40V输入转5V 2.1A恒压输出 芯片测试数据如下图&#xff1a;

C#中简单的继承和多态

今天我们来聊一聊继承&#xff0c;说实话今天也是我第一次接触。 继承的概念是什么呢&#xff1f;就是一个类可以继承另一个类的属性和方法&#xff08;成员&#xff09; 继承是面向对象编程中的一个非常重要的特性。 好了&#xff0c;废话不多说&#xff0c;下面切入正题&a…

@SpringBootApplication自动配置原理剖析

SpringBootApplication自动配置原理剖析 自动配置: 根据我们添加的依赖,会自动将一些配置类的bean注册进ioc容器中,可以使用Autowired或者Resource等注解来使用它。 1.1 SpringBootApplication Spring Boot项目创建完成会默认生成一个Application的入口类(启动类),命名规则a…

推荐一些跨平台的比较优秀的翻译服务(软件或平台)

因为编程及查阅资料需要频繁的查阅英文&#xff0c;推荐一些跨平台的比较优秀的翻译服务&#xff08;软件或平台&#xff09; 1、DeepL Translate (https://www.deepl.com/translator) 这是一款基于机器翻译的在线翻译软件。win、安卓、Linux、IOS上都有可用的版本也可以基于w…