
一、缓存菜品
1. 问题说明
问题:用户端访问的菜品通过数据库获得,当访问量大时,会造成卡顿
解决思路:缓存到redis

逻辑:每个分类下的菜品缓存一份数据;数据有变更时清理缓存数据
2. 代码开发
(1)缓存菜品:
user.DishController:拿到分类id后判断redis中有无缓存,有直接拿出来返回,没有调用数据库,将数据存到redis中。
将List<DishVO>存成redis的string(序列化器可直接转)
(2)清理缓存:增删改的时候清理,改删(全清),增(清增的)
admin.DishController:根据key清理缓存,全清的时候先获取所有dish_开头的key,再清
二、缓存套餐
1. Spring Cache
是一个框架,实现了基于注解的缓存功能;提供了一层抽象,底层可以切换不同的缓存(EHCache,Caffeine,Redis)
2. Spring Cache入门:
启动类加@EnableCaching
controller层新增类 方法上加注解**@CachePut:**
标题
controller层查询类 方法上加注解**@Cachable:** (通过代理对象实现)
controller层删除类 方法上加注解**@CachaEvict:** (通过代理对象实现)


3. 代码开发
启动类加@EnableCaching
user.SetmealController:查询方法加@CachePut
admin.SetmealController:增删改加@CacheEvict(删改全清)
三、添加购物车
1. 需求分析和设计
POST请求:/user/shoppingCard/add
请求参数json:套餐id或菜品id,口味
返回数据:code
2. 代码开发
ShoppogCartController:@RequestBody
ShoppongCartServiceImpl:判断数据库中是否有该菜品(套餐)的数据,如果有,直接数量加一(拿出list的第0个对象的id);如果没有,添加进数据库(现根据菜品id/套餐id查找相关信息,再添加)
ShoppongCartMapper:根据用户id和菜品id(套餐id)查询,返回list;
根据购物车id将数量+1;
添加购物车
3. 功能测试
查看购物车功能还未开发,可通过小程序测试,数据库表验证
四、查看购物车
复用上方的根据id查询,只传递用户id进去
五、清空购物车
根据用户id删除购物车数据