苍穹外卖笔记

DAY01

nginx反向代理

请添加图片描述

MD5加密

拓展:spring security + jwt 提供了更强大灵活安全的身份验证

yapi进行接口导入

Swagger介绍

帮助后端生成接口文档并进行测试
knife4j对swagger进行了封装
在这里插入图片描述
在配置类中加入相关配置 设置静态资源映射
在这里插入图片描述
接口文档测试
在这里插入图片描述
j加入api相关注解后的效果
在这里插入图片描述

在这里插入图片描述

DAY02

新增员工

需求分析和设计

在这里插入图片描述
在这里插入图片描述

写相关代码

controller service mapper层

测试(1. 后端文档测试 2. 前后端联调

在全局参数设置中设置token(否则会被拦截器拦截直接返回401error)
在这里插入图片描述

代码完善

在这里插入图片描述

  1. 由于username唯一 因此应该设置全局异常处理器对异常进行处理
    在这里插入图片描述
  2. 解决问题2
    **思考:**解析出登录员工id后,如何传递给Service的save方法?
    通过ThreadLocal进行传递。

用户登录请求后,后续请求头再次请求时就会携带一个JWT token ,用这个JWTtoken,在拦截器中就能解析出当前登录用户id并将其放入内存,之后在serviceImpl中就可以将其取出
客户端发起的每一次请求 都是一个线程
在这里插入图片描述
在这里插入图片描述
在拦截器存进去
在这里插入图片描述
在serviceImpl里取出来
在这里插入图片描述

员工分页查询

DAY01 02涉及到的知识

Yapi 和Swagger
全局异常处理
ThreadLocal

DAY03

阿里云OSS

事务注解 @Transactional

.builder()

在这里插入图片描述

DAY04

新增套餐–不懂的点

根据分类id查询菜品时我们是如何将分类id传进去的 查询到菜品后返回的是dish类型 如何将返回的dish对象变为新增套餐时请求参数中的setmealDishes

基本和DAY03涉及的知识点基本一样

DAY05

Redis-- 存储状态值status

常用数据类型
在这里插入图片描述

@SpringBootTest注解

Day06

HttpClient

在java中通过编码方式发送http请求
在引入aliyun.oss的时候已经将其依赖传递

流程图

复习jwt令牌

在这里插入图片描述

DAY07

使用redis缓存,减少数据库查询操作

在这里插入图片描述

需要修改redis中缓存的数据的情况

新增/修改/删除菜品 起售停售菜品

Spring-cache进行缓存优化

底层基于代理技术
在这里插入图片描述

@CachePut注解

@Cacheable注解

在方法执行前先通过controller创建的代理对象去查询redis中有没有数据,有则直接返回,controller.java中的方法就不会被执行;没有 则需要通过反射调用这个方法 到数据库中去查询数据 并将查询到的数据放入redis缓存

@CacheEvict

通过controller创建的代理对象 在这个代理对象中动态的将要删除的key计算出来,计算出来之后通过代理对象操作redis,最终将缓存数据清理

缓存套餐开发代码中的应用

/user/SetmealController中用到
@Cacheable(cacheNames = “setmealCache”,key = “#categoryId”) //key: setmealCache::100

/admin/SetmealController和/admin/DishController中用到
@CacheEvict(cacheNames = “setmealCache”, allEntries = true)

添加购物车

冗余字段的作用–空间换时间

避免了多表联查 提高查询速度
冗余字段一般不能大量使用 一般使用冗余字段的属性都比较稳定,不会经常变化
在这里插入图片描述

需解决的问题

要插入的数据如果已经存在了,只需要将此类物品的数量进行更新
如果不存在 才需要进行插入操作

根据用户id来查询不同用户的购物车

涉及到jwt token ThreadLocal 拦截器 相关知识

因为ShoppingCartDTO中并没有登录用户id,所以我们需要从token中获取
在用户登录后 我们每次发请求后会携带一个token 在拦截器中会解析这个token,这个token中就包含登录用户id,并通过ThreadLocal将这个登录用户id就绑定好了,因此我们在controller中就可以通过ThreadLocal将其取出
在获取登录用户的id 即userId的过程中
在这里插入图片描述
在这里插入图片描述

代码有点小bug

以下3条会各自记录成不同数据 而不会number+1
在这里插入图片描述

DAY08

用户下单

@Transactional事务注解

在用户下单功能的serviceImpl中
出现的问题是在order表中插入数据成功而因为在orderDetail的mapper.xml中sql语句编写的错误导致orderDetail表中插入数据失败,因此此时需要事务回滚

订单支付

在这里插入图片描述
在订单支付过程中 一些过程对安全性要求比较高,

如何保证数据安全呢------加密解密 签名多种方式

微信后台如何调用商户系统–内网穿透

当前我们商户系统的ip是一个自己笔记本电脑的Ip,即局域网中的一个ip地址,此时微信后台调用不到;要实现调用的话就要求我们的这个笔记本获取到一个公网ip

DAY09

校验收货地址是否超出配送范围 – 这个功能没做

将微信支付功能进行模拟

按照这篇文章

DAY10

Spring Task

WebSocket协议

在这里插入图片描述

  • 16
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值