一、学生选课
1.已完成


查询原因:校验课程发布的正确性(课程发布后的数据可定有两个数据:CoursePub索引数据、CoursePub页面)
为什么查询内容走索引库不走数据库?
答:1.索引库性能好:可以承受大并发
2.索引库查询速度快(数据结构:倒排索引,数据可以基于内存存储)
为什么查询学员学习记录分析和实现(已实现)?
(课程详情页一开始向后端发送两个请求的原因)
答:—查询学员是否对收费课程有购买记录
—用户对于收费课程购买后,会自动创建一个学习记录(默认第一章第一小节)
—学习记录中有收费是否支付的标识:paid
2.订单微服务

由上图得:课程订单支付:需要创建订单,创建订单支付数据,同时还需要和第三方进行交互
步骤:
(1)导入学习中心和支付sql数据
orders:订单信息表,用于存储课程订单信息,对于收费课程,只有订单更新为已支付,学习中心的course_record表才会生成选课记录。(一个人对一门课的购买情况)
order_pay: 订单支付信息表用于存储订单的支付交易详情,它是平台订单与第三方支付的纽带。(一个人对一个订单的支付情况,包含第三方数据)
(2)学习中心微服务 和 订单微服务
(3)nacos配置公共信息
(4)服务中引入公共配置信息
1 需求分析
本次主要针对学生学科的业务操作,主要功能包括:
●学生进入首页或课程搜索找到目标课程,进入某个课程的详情页,需要判断是否收费,如果收费需要查询改学员对此课程的购买记录。
●课程收费的情况下,学生对此课程会创建出购买课程的订单,完成课程购买的操作。
●学生需要进行支付,来完成对课程的购买。
●学生可以在学习中心中查看自己所有的所学的课程,包括收费的课程和免费课程。
支付前订单表的设计
业务分析
1.是否开启事务:开
2.判断关键数据:用户id 课程id
3.判断业务数据
—课程发布数据是否存在:所以需要查询课程信息
判断是否存在
判断是否收费
(只有收费课程需要创建订单)
4.构建用户订单数据
—判断用户对一个收费课程是否有订单数据
没有:
—创建订单数据
(订单默认状态:初始态)
有:
—判断订单状态:初始态
—修改订单价格:
修改为最新价格数据————-CoursePub中的price
5.返回数据库最新的Order数据返回前端

注:—订单编号=项目标识+时间标识+唯一标识
(paymentUtil类中)
注:刚创建的订单应该是初始态
注:如果创建过订单信息,先查询是否过期,没过期,判断是否是初始态,需要获得最新价格
系统交互流程

本系统采用微信支付
微信支付方式:
—付款码支付
—JSAPI支付
—小程序支付
—Native支付(二维码支付:数据交互格式不同,v3:json v2:xml,我们用这个)
—APP支付
—刷脸支付
商户需要开发功能:
1.开发和第三方支付统一下单:获得二维码连接到地址
2.支付通知结果:获得用户支付结果——————采用第三方平台主动通知方式
微信商户申请步骤(贼墨迹)

集成微信————-文档1.6.2.3
测试代码
returncode:请求响应是否成功
resultcode:业务处理返回的结果
以上两个都成功才可以获得二维码链接地址
订单支付接口
传参:订单编号,用户账号(在请求头中获得)
订单支付表

业务分析
1.是否开启事务:是
2.判断关键数据:订单编号,userName
3.判断业务数据
—判断订单是否存在
—判断当前订单用户名与正在登录的用户名是否一致(根据orderNo和uname插叙)
—判断订单状态:初始态(未支付)
先操作表(先操作表,如果失败,可以回滚)
4创建保重的字段来赋值
支付前:user_name conpanyid orderid status(未支付) creat_date(mp自动复制)
支付后:pay_number pay_method pay_date pay_response
4.和第三方支付系统交互获得支付链接地址
*和第三方交互一定要用try—catch
代码过程中遇到错误,直接抛出异常,不满足返回paycodeUrlResult,如何解决?
但是这样返回的内容信息可能会很多所以优化
