检查课程是否有效

文章目录

    • 概要
    • 整体架构流程
    • 技术细节
    • 小结

概要

这是一个微服务内部接口,当用户学习课程时,可能需要播放课程视频。此时提供视频播放功能的媒资系统就需要校验用户是否有播放视频的资格。所以,开发媒资服务(tj-media)的同事就请你提供这样一个接口。

需求分析以及接口设计

业务分析

用户要想有播放视频的资格,那就必须满足两个条件:

  • 用户课表中是否有该课程

  • 课程状态是否是有效的状态(未过期)

所以这个接口很简单,就是查询用户课表,做一个非空和状态的判断即可。

接口信息如下:

接口说明

根据课程id,检查当前用户的课表中是否有该课程,课程状态是否有效。

请求方式

Http请求,GET

请求路径

/ls/lessons/{courseId}/valid

请求参数格式

课程id,请求路径占位符,参数名:courseId

返回值格式

课表lessonId,如果是报名了则返回lessonId,否则返回空

技术细节

1.Controller层:

@ApiOperation("校验当前用户是否可以学习当前课程")@GetMapping("/{courseId}/valid")public Long isLessonValid(@PathVariable("courseId") Long courseId){return iLearningLessonService.isLessonValid(courseId);}

2.Service层:

public Long isLessonValid(Long courseId) {//1.获取userIdLong userId = UserContext.getUser();//2.判断用户课表中是否有该课程LearningLesson lesson = this.lambdaQuery().eq(LearningLesson::getUserId, userId).eq(LearningLesson::getCourseId, courseId).one();/*if (lesson == null){throw new BizIllegalException("用户无该课程");}*///3.判断该课程过期时间LocalDateTime expireTime = lesson.getExpireTime();Duration duration = Duration.between(LocalDateTime.now(), expireTime);Long time = duration.getSeconds();if (time < 0){throw new BizIllegalException("该课程已过期");}return lesson.getId();}

3.Mapper层

效果展示

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

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

相关文章

红外遥控报警器设计(模电课设)

一、设计要求 利用NE555p芯片设计制作报警器。要求当有人遮挡红外光时发出报警信号&#xff0c;无人遮挡红外光时报警器不工作&#xff0c;即不发声。 二、元器件 555芯片&#xff1a;NE555P 集成运放&#xff1a;LM358 三级管&#xff1a;2N1711 蜂鸣器&#xff1a;HY-30…

英语fault和false的区别

"fault" 和 "false" 在英语中虽然都与错误或问题有关&#xff0c;但它们的含义和用法有很大的不同。下面详细解释这两个词的区别&#xff1a; 1. Fault 定义&#xff1a;错误、缺陷、责任、故障。特点&#xff1a; 错误或缺陷&#xff1a;指某物或某事存…

Spring MVC——针对实习面试

目录 Spring MVC什么是Spring MVC&#xff1f;简单介绍下你对Spring MVC的理解&#xff1f;Spring MVC的优点有哪些&#xff1f;Spring MVC的主要组件有哪些&#xff1f;Spring MVC的工作原理或流程是怎样的&#xff1f;Spring MVC常用注解有哪些&#xff1f; Spring MVC 什么是…

大连理工大学概率上机作业免费下载

大连理工大学概率论与数理统计上机资源 本资源库收录了大连理工大学概率论与数理统计课程的上机作业范例代码&#xff0c;旨在通过实际操作加深学生对概率统计概念的理解&#xff0c;帮助学生更好地理解和掌握知识点。 作业内容概览 第一题&#xff1a;随机变量关系探索 数…

如何通过对敏捷实践的调整,帮助远程团队提升研发效能?

首先明确一点&#xff0c;最敏捷的做法就是不要远程团队或分布式团队&#xff0c;远程一定比不上面对面同一地点的模式&#xff0c;毕竟环境不同&#xff0c;就不要期望远程团队和本地团队具备相同的效能&#xff0c;甚至期望更高。 那么&#xff0c;无论何种原因&#xff0c;…

机器学习(贝叶斯算法,决策树)

朴素贝叶斯分类 贝叶斯分类理论 假设现有两个数据集&#xff0c;分为两类 我们现在用p1(x,y)表示数据点(x,y)属于类别1(图中红色圆点表示的类别)的概率&#xff0c;用p2(x,y)表示数据点(x,y)属于类别2(图中蓝色三角形表示的类别)的概率&#xff0c;那么对于一个新数据点(x,y)…

题目讲解18 有效的括号

原题链接&#xff1a; 20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 思路分析&#xff1a; 第一步&#xff1a;先搭建一个数据结构——栈。 typedef char STDataType; typedef struct Stack {STDataType* arr;int top, capacity; } Stack;//初始化 void StackIn…

HarmonyOS笔记5:ArkUI框架的Navigation导航组件

ArkUI框架的Navigation导航组件 在移动应用中需要在不同的页面进行切换跳转。这种切换和跳转有两种方式&#xff1a;页面路由和Navigation组件实现导航。HarmonyOS推荐使用Navigation实现页面跳转。在本文中在HarmonyOS 5.0.0 Release SDK (API Version 12 Release)版本下&…

【在git中,如何删除远端的分支?】

在git中,如何删除远端的分支? eg总思路具体步骤 eg xxxxxx MINGW64 ~/Desktop/1/test_merge (main) $ 当前我们正处于main分支,那么应该如何删除master分支呢?总思路 你要先将要删除的分支合并到当前的主分支,然后才可以删除该分支. 具体步骤 要删除 Git 仓库中的 master…

搜维尔科技:Manus遥操作五指机械手专用手套惯性高精度虚拟现实

Manus遥操作五指机械手专用手套惯性高精度虚拟现实 搜维尔科技&#xff1a;Manus遥操作五指机械手专用手套惯性高精度虚拟现实

【C++】第九节:list

1、list的介绍及使用 1.1 list的介绍 list - C 参考 1.2 list的使用 1.2.1 list的构造 void TestList1() {list<int> l1; // 构造空的l1list<int> l2(4, 100); // l2中包含4个值为100的元素list<int> l3(l2.begin(), l2.end()); // 用l2的[begin(),end())…

Idea中创建和联系MySQL等数据库

备注&#xff1a;电脑中要已下好自己需要的MySQL数据库软件 MySQL社区版下载链接&#xff1a; https://dev.mysql.com/downloads/installer/ 优点&#xff1a; 1.相比与在命令行中管理数据库&#xff0c;idea提供了图形化管理&#xff0c;简单明了&#xff1b; 2.便于与后端…

django从入门到精通(五)——表单与模型

好的&#xff0c;下面将详细介绍 Django 的表单与模型&#xff0c;包括它们的定义、使用、如何在 Django Admin 中结合使用&#xff0c;以及相关的字段类型和验证机制。 Django 模型与表单 1. Django 模型 Django 模型是一个 Python 类&#xff0c;用于定义数据库中的数据结…

Linux_shell脚本if语句详细教程

前言 在 Linux Shell 脚本中&#xff0c;if 语句用于基于条件执行命令或代码块。它的基本语法结构如下&#xff1a; if 条件; then# 如果条件为真时执行的代码 elif 另一个条件; then# 如果另一个条件为真时执行的代码 else# 如果所有条件都不成立时执行的代码 fi一、if 语句…

Python自学之Colormaps指南

目录 1.色彩映射表&#xff08;Colormaps&#xff09;是什么&#xff1f; 2.Matplotlib中的色彩映射表类型 2.1同色渐变&#xff08;Sequential Colormaps&#xff09; 2.2双色渐变&#xff08;Divergence Colormaps&#xff09; 2.3定性色彩&#xff08;Qualitative Col…

PostgreSQL高可用Patroni安装(超详细)

目录 一 安装Patroni 0 Patroni 对Python的版本要求 1 卸载原来的Python 3.6 版本 2 安装Python 3.7 之上版本 3 安装依赖 psycopg3 4 安装patroni 5 卸载 patroni 二 安装ETCD 1 使用 yum 安装 etcd 2 etcd 配置文件 3 管理 etcd 4 设置密码 5 常用命令 三 安装…

利用redis的key失效监听器KeyExpirationEventMessageListener作任务定时提醒功能

某需求&#xff1a; 要求在任务截止日期的前3天时&#xff0c;系统自动给用户发一条消息提醒。 用定时任务的话感觉很不舒服。间隔时间不好弄。不能精准卡到那个点。 由于系统简单&#xff0c;没有使用消息列队&#xff0c;也不能使用延时队列来做。 用Timer的话开销还挺大的&a…

ubuntu下怎么设置机器程序开机自启?

在 Ubuntu 中&#xff0c;可以通过多种方法设置程序或脚本在系统启动时自动运行。以下是几种常见方法&#xff1a; 方法 1&#xff1a;使用 crontab crontab 是一个定时任务管理工具&#xff0c;可以用来设置程序在开机时自动运行。 1. 打开终端&#xff0c;编辑当前用户的 …

从视频帧生成点云数据、使用PointNet++模型提取特征,并将特征保存下来的完整实现。

文件地址 https://github.com/yanx27/Pointnet_Pointnet2_pytorch?spm5176.28103460.0.0.21a95d27ollfze Pointnet_Pointnet2_pytorch\log\classification\pointnet2_ssg_wo_normals文件夹改名为Pointnet_Pointnet2_pytorch\log\classification\pointnet2_cls_ssg "E:…

高效工具推荐:基于WebGPU的Whisper Web结合内网穿透远程使用指南

文章目录 前言1.本地部署Whisper Web1.1 安装git1.2 安装Node.js1.3 运行项目 2. Whisper Web使用介绍3. 安装Cpolar内网穿透4. 配置公网地址5. 公网访问测试6. 配置固定公网地址 前言 OpenAI开源的 Whisper 语音转文本模型效果都说还不错&#xff0c;今天就给大家推荐 GitHub…