![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学成在线
文章平均质量分 96
Springcloud学习笔记
我爱布朗熊
目前是个学生,仍然在学习阶段
展开
-
7.3 支付模块 - 创建订单、查询订单、通知
在请求微信或支付宝下单接口时需要传入 商品订单号,在与第三方支付平台对接时发现,当用户支付失败或因为其它原因最终该订单没有支付成功,此时再次调用第三方支付平台的下单接口发现报错“订单号已存在”,此时如果我们传入一个没有使用过的订单号就可以解决问题,但是商品订单已经创建,因为没有支付成功重新创建一个新订单是不合理的。订单服务完成支付后将支付结果发给每一个与订单服务对接的微服务,订单服务将消息发给交换机,由交换机广播消息,每个订阅消息的微服务都可以接收到支付结果.原创 2024-03-07 18:24:15 · 836 阅读 · 0 评论 -
7.2 支付模块 - 付费课程选课、支付
此时又会创建一个新的服务 - 订单支付模块用户去学习收费课程时引导其去支付,如下图:当用户点击“微信支付”或支付宝支付时执行流程如下1、请求学习中心服务创建选课记录2、请求订单服务创建商品订单、生成支付二维码。3、用户扫码请求订单支付服务,订单支付服务请求第三方支付平台生成支付订单。4、前端唤起支付客户端,用户输入密码完成支付。5、第三方支付平台支付完成发起支付通知。6、订单支付服务接收第三方支付通知结果。7、用户在前端查询支付结果,请求订单支付服务查询支付结果。8、订单支付服务向学习中心服务通知支付结果。原创 2024-03-07 18:22:47 · 1034 阅读 · 0 评论 -
7.1 支付模块 - 用户选课
记录我在网站学习的课程,我的课程表中有免费课程和收费课程两种,对于免费课程可直接添加到我的课程表,对于收费课程需要下单、支付成功后自动加入我的课程表。:课程价格为0,有效期默认365,开始服务时间为选课时间,结束服务时间为选课时间加1年后的时间,选课状态为选课成功。如果选择的课程是收费的,那么在选课记录表中,选课状态就是待支付,等待支付成功后,此课程会加入到课表中。如果选择的课程是免费的,那么在选课记录表中,选课状态就是成功,并且此课程已经加入到课表中了。原创 2024-03-07 18:21:29 · 782 阅读 · 0 评论 -
6.4 认证授权模块 - 用户授权
如何实现授权?业界通常基于RBAC实现授权RBAC分为两种方式基于角色的访问控制按角色进行授权比如:主体的角色为总经理可以查询企业运营报表,查询员工工资信息等,访问控制流程如下判断如下图所示if(主体.hasRole("总经理角色id") || 主体.hasRole("部门经理角色id")){查询工资基于资源的访问控制优点:系统设计时定义好查询工资的权限标识,即使查询工资所需要的角色变化为总经理和部门经理也不需要修改授权代码,系统可扩展性强用户必须具有查询工资权限才可以查询员工工资信息等。原创 2024-02-26 17:03:10 · 1076 阅读 · 0 评论 -
6.3 认证授权模块 - 用户认证
写在auth工程中下面这篇文章和此处获取UserDetails对象的方式不同,可能是因为包不同的原因SpringSecurity - 基于数据库认证与授权在目前1.1.3所使用的security包中无法使用下面的代码@Component//注入,将来查询对象@Autowired/*** @param s 其实就是输入的username(账号)*/@Override// 1.根据username账号查询数据库// 因为账号是不可能重复的,直接selectOne即可。原创 2024-02-26 17:01:32 · 407 阅读 · 0 评论 -
6.2 认证授权模块 - 继承JWT、网关认证
JWT 介绍JSON Web Token(JWT)是一种使用JSON格式传递数据的网络令牌技术,它是一个开放的行业标准(RFC 7519),它定义了一种简洁的、自包含的协议格式,用于在通信双方传递json对象,传递的信息经过数字签名可以被验证和信任,它可以使用HMAC算法或使用RSA的公钥/私钥对来签名,防止内容篡改使用JWT可以实现无状态认证,什么是无状态认证?基于session。原创 2024-03-11 10:55:49 · 459 阅读 · 1 评论 -
6.1 认证授权模块
微信扫码认证,这是一种第三方认证的方式,这种认证方式是基于OAuth2协议实现OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。同时,任何第三方都可以使用OAUTH认证服务,任何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP、JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。原创 2024-02-26 16:57:45 · 385 阅读 · 0 评论 -
5.4 内容管理模块 - 课程搜索
全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。原创 2024-02-26 16:56:01 · 985 阅读 · 0 评论 -
5.3 内容管理模块 - 课程发布、任务调度、页面静态化、熔断降级
消息SDK给我们提供的,也就是下面这几步SDK中唯一没有的就是抽象方法execute,也就是执行任务的逻辑没有,我们需要的是写一个类继承MessageProcessAbstract并实现execute方法,编写任务的具体执行逻辑/*** @description 消息处理抽象类*/@Slf4j@Data@Autowired/*** @param mqMessage 执行任务内容* @return boolean true:处理成功,false处理失败。原创 2024-01-21 20:10:45 · 1055 阅读 · 0 评论 -
5.2 内容管理模块 - 课程发布需求分析、分布式技术方案
首先理解什么是本地事务?平常我们在程序中通过spring去控制事务是利用数据库本身的事务特性来实现的,因此叫数据库事务,由于应用主要靠关系数据库来控制事务,此数据库只属于该应用,所以基于本应用自己的关系型数据库的事务又被称为本地事务。本地事务具有ACID四大特性,数据库事务在实现时会将一次事务涉及的所有操作全部纳入到一个不可分割的执行单元,该执行单元中的所有操作 要么都成功,要么都失败,只要其中任一操作执行失败,都将导致整个事务的回滚。了解了本地事务之后再了解一下分布式事务如下所示,内容管理数据库、Redi原创 2024-01-21 20:08:05 · 1102 阅读 · 0 评论 -
5.1 内容管理模块 - 课程预览、提交审核
课程预览就是把课程的相关信息进行整合,在课程预览界面进行展示,课程预览界面与课程发布的课程详情界面一致客户可以通过课程预览页面查看信息是否存在问题如下课程预览的数据来源下图显示了整个课程预览的流程图说明如下:1、点击课程预览,通过Nginx、后台服务网关请求内容管理服务进行课程预览。2、内容管理服务查询课程相关信息进行整合,并通过模板引擎技术在服务端渲染生成页面,返回给浏览器。3、通过课程预览页面点击”马上学习“打开视频播放页面。4、视频播放页面通过Nginx请求后台服务网关,查询课程信息展示课程计划目录,原创 2024-01-15 22:30:56 · 1162 阅读 · 0 评论 -
4.4 媒资管理模块 - 分布式任务处理介绍、视频处理技术方案
视频转码是指的对视频文件的编码格式进行转换视频上传成功需要对视频的格式进行转码处理,比如:avi转成mp4一般做文件存储的服务都需要对文件进行处理,例如对视频进行转码处理,可能由于文件量较大需要使用多线程等技术进行高效处理文件格式:是指.mp4、.avi、.rmvb等 这些不同扩展名的视频文件的文件格式视频文件的内容主要包括视频和音频,其文件格式是按照一 定的编码格式去编码,并且按照该文件所规定的封装格式将视频、音频、字幕等信息封装在一起,原创 2024-01-09 21:21:33 · 1508 阅读 · 0 评论 -
4.3 媒资管理模块 - Minio系统上传图片与视频
下面的内容其实是完成标红的地方做这一部分的时候可能发现course_base课程基本信息表和media_files表没有关联,那怎么将图片的url存放到course_base课程基本信息表中的pic字段呢?当上传完图片之后,会点击保存,这个时候就会对course_base表中的各种信息进行操作了但是我感觉没有很好的方法让course_base表。原创 2023-12-24 23:15:23 · 1424 阅读 · 0 评论 -
4.2 媒资管理模块 - 项目搭建、minio文件系统
文件系统是负责管理和存储文件的系统软件,操作系统通过文件系统提供的接口去存取文件,用户通过操作系统访问磁盘上的文件文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Fash的固态硬盘)或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。原创 2023-12-24 23:13:29 · 1044 阅读 · 0 评论 -
4.1 媒资管理模块 - Nacos与Gateway搭建
媒资管理系统是每个在线教育平台所必须具备的每个教学机构都可以在媒资系统管理自己的教学资源,包括:视频、教案等文件,目前媒资管理的主要管理对象是视频、图片、文档等,包括:媒资文件的查询、文件上传、视频处理等媒资查询:教学机构查询自己所拥有的媒资信息文件上传:包括上传图片、上传文档、上传视频比如说内容管理中课程编辑和新增时需要添加课程封面图片视频处理:视频上传成功,系统自动对视频进行编码处理假如我们上传了一个avi格式的视频,这个视频在浏览器上是无法播放的需要进行转码,比如说转成Mp4格式。原创 2023-12-18 23:56:04 · 1645 阅读 · 0 评论 -
3.3 内容管理模块 - 课程计划
这一步是修改课程下一步展示的信息。原创 2023-12-18 23:55:04 · 906 阅读 · 0 评论 -
3.2 内容管理模块 - 课程分类、新增课程、修改课程
mysql为了避免无限递归默认递归次数为1000,可以通过设置cte_max_recursion_depth参数增加递归深度,还可以通过max_execution_time限制执行时间,超过此时间也会终止递归操作。价格信息存Float是没有问题的,但是计算的时候是有问题的,我们要使用BigDecimal。然后有一个“课程分类”,我们下面就要实现课程分类,这个地方缺少一个课程分类的下拉框。向下递归:先拿一级节点,拿到一级节点后找二级节点,拿到二级节点后找三级节点…点击“添加课程”,之后随便选一个“课程形式”原创 2023-12-18 23:53:56 · 893 阅读 · 0 评论 -
3.1 内容管理模块 - 工程搭建、课程查询、配置Swagger、数据字典
我们要创建的就是下面标红的内容管理模块本项目是一个前后端分离项目,前端与后端开发人员之间主要依据接口进行开发。下图是前后端交互的流程图1、前端请求后端服务提供的接口。(通常为http协议 )2、后端服务的控制层Controller接收前端的请求。3、Contorller层调用Service层进行业务处理。4、Service层调用Dao持久层对数据持久化。原创 2023-12-16 14:10:39 · 1011 阅读 · 0 评论 -
3. 内容模块管理 - 异常处理与校验
之前也学过对异常的统一管理,既然现在又看到了,就再学学springboot——全局异常处理器及封装结果集如果一致对异常进行try…catch…,代码也会很冗余,我们直接throw就行,然后可以对异常进行统一处理不论是那一层,都会有异常的出现,我们遇到异常都是向上抛出,最后让框架对异常统一处理假如dao出异常就会抛给service,service有异常就会抛给controller,controller会抛给spring框架@Datasuper();原创 2023-12-16 14:07:06 · 876 阅读 · 0 评论 -
2. 学成在线 - 项目搭建
整个项目分为三大类工程:父工程、基础工程 和微服务工程。父工程:xuecheng-plus-parent基础工程:xuecheng-plus-base微服务工程父工程的职责是对依赖包的版本进行管理创建成功后,把下面选中的文件删除,留下pom.xml文件做版本的控制父工程中没有代码,不用去依赖其它的包,它的作用是限定其它子工程依赖包的版本号,即在dependencyManagement 中去编辑即可2.pom.xml编辑依赖管理1)确定父工程为一个pom工程,在pom.xml中添加如下内容:原创 2023-12-16 14:04:22 · 1057 阅读 · 1 评论