项目
表设计
开发过程,自己负责哪些模块,怎么设计的
开发接口
例:登录接口
遇到了些什么困难。怎么解决的
跨域问题:一个地址去访问另外一个地址,这个过程中如果有三个地方任何一个不一样:访问协议、ip地址、端口号(在Controller上加CrossOrigin注解)
SpringSecurity较难使用,maven版本问题等
讲一下项目中使用了的技术
对象存储OSS
阿里云oss
Java操作oss
代码实现
代码实现2
代码实现3
注册一个阿里云账号->点击oss的管理控制台创建一个buckt->创建一个密钥
maven导入oss依赖->在配置文件中加上地域节点、id、密钥、bucketName->创建一个工具类(加上@component给bean管理)实现一个InitializingBean接口(加上@Value属性自动导入,重写里面的方法(将四个静态常量赋值,方便外面调用))->创建OSSClient实例,在存储空间Bucket加入文件名称和文件输入流,最后关闭OSSClient(shutdown())
nginx
启动(点击nginx.exe),关闭(nginx.exe -s stop)
请求转发:对外暴露了一个接口根据路径匹配到服务器
在nginx.conf的http中加上一个server设置每个地址对应的端口号
动静分离:把Java代码和普通静态页面分开放置
阿里云视频点播
调用阿里云提供的类或者里面的方法实现视频功能
获取播放地址:引入依赖->创建一个initVodClient方法(regionId的点播服务接入区域默认上海),引入密钥和id,创建一个client对象(后面都是用这对象)->初始化client对象->创建request设置视频id值(request.setVideoId(“视频ID”)),通过request得到response值,在对response处理数据->最终得到一个视频地址(根据视频id)
获取播放凭证:初始化client对象,request.setVideoId(“视频ID”),通过request得到response值,再通过response的getPlayAuth()方法得到播放凭证
上传到阿里云:本地上传,上传视频中传入四个参数(id,密钥,文件名称,本地文件路径名称),可以分片上传
数据库存储视频id(能得到视频地址和播放凭证)
微信支付流程
订单支付的话,在课程页面点击某课程,根据课程id跳转到该课程的详情页面,courseId是带进路由的。然后写了一个vo类封装了课程类,讲师类,章节类,小节类,视频类,将他们查询显示。页面有立即购买/立即观看。如果这个课程用户购买过就显示立即观看,否则显示立即购买。是否有购买是根据memberId和courseId在order表中查询status字段是否为1。这里还用到了Feign服务,因为这个判断是否购买的逻辑是卸载order模块中的,我用的service_edu去调用service_order
立即购买
- 生成订单
- 根据订单id查询订单信息
支付页面生成二维码 - 根据订单号查询订单信息
- 使用map设置需要的参数(id、商户号、商户key、课程类型价格等)
- 用微信支付提供固定地址发送httpclient请求,要设置成xml格式传递,执行post请求发送
- 用xmlToMap方法把xml变成map返回
支付状态返回页面(为1的时候支付成功,支付状态每3秒刷新一次,跳转到课程详情)
微服务和Cloud
版本对应
Nacos
第三方登录怎么做、用户登录注册怎么做的
颁发令牌
微信扫码登录准备
在配置文件中加入id,密钥,地址->创建工具类实现InitializingBean接口(@Value导入属性值),里面的方法把静态变量初始化->生成微信二维码(固定地址后用%s拼接值用strong.format设值)->对重定向地址设置一个encode编码
项目中Redis干了什么?
访问量最大的(首页面),对首页数据缓存
加入redis依赖、创建一个RedisConfig类(加上@Configration表示为配置类,@EnableCaching开启缓存)、在查询所有banner的方法上添加缓存注解(@Cacheable(key.value)先查询缓存),基于springboot的缓存注解(@CachePut:新增方法存入缓存)
用户登录的时候状态失效怎么办
一个用户登录,另一个用户在另一个地方登录,怎么挤掉他
ngix如何实现负载均衡、负载均衡原理、策略
轮询算法、根据请求时间(谁最短访问谁)、权重