1. 缓存菜品
用redis来缓存菜品数据, 因为每次查询数据库就会造成一次压力
缓存逻辑:
每个分类下的菜品保存一份缓存数据
数据库中的菜品有变化的时候,清理缓存数据
清除缓存功能
为了保证数据的一致性,相当于数据库中的数据和页面中从缓存中取的数据是相同的,在数据库中的数据进行变动的时候,需要清除缓存中的数据(新增,删除,修改,起售,停售菜品都是需要清除缓存的)。
为了在crud方法中进行清除缓存,直接提一个方法出来。
缓存套餐功能 Spring Cache
springcache是spring框架开发的一个缓存的框架它支持redis的缓存
先让我们看看springcache中常用的注解
注解一般放在Controller的方法上,@CachePut 注解一般有两个参数,第一个时存储的名称,第二个时名称后边的key,使用SpEL动态的计算key。其余的注解也都是这两个参数。在用户端的查询操作需要使用@Cacheable,服务器端的增删改都使用@CacheEvict
具体请参考:原文链接:https://blog.youkuaiyun.com/ros275229/article/details/136232825
添加购物车功能
添加购物车时,需要先判断数据库中是否有相同菜品,如果有的,就将其数量字段更新为加一,如果没有就直接插入,插入的时候,先判断是菜品还是套餐。
Controller
Service
Impl
@Override
public void addShopPingCart(ShoppingCartDTO shoppingCartDTO) {
ShoppingCart shoppingCart = new ShoppingCart();
BeanUtils.copyProperties(shoppingCartDTO, shoppingCart);
shoppingCart.setUserId(BaseContext.getCurrentId());
//先查这个人有没有购物车(未结算)
// boolean flage_Dish=false;//默认这个购物车内没找到该菜品或套餐
// boolean flage_Setmeal=false;//默认这个购物车内没找到该菜品或套餐
//公共部分
List<ShoppingCart> shoppingCartList = shoppingCartMapper.checkShoppingCartList(shoppingCart);
if (shoppingCartList != null && shoppingCartList.size() == 1) {
//如果已经存在,就更新数量,数量加1
shoppingCart = shoppingCartList.get(0);
shoppingCart.setNumber(shoppingCart.getNumber() + 1);
shoppingCartMapper.updateShoppingCart(shoppingCart);
} else {
//如果不存在,插入数据,数量就是1
//判断当前添加到购物车的是菜品还是套餐
Long dishId = shoppingCartDTO.getDishId();
//判断菜品id是否为空
if (dishId != null) {
//添加到购物车的是菜品
insertDish(shoppingCart);
} else {
//添加到购物车的是套餐
insertSetmeal(shoppingCart);
}
shoppingCart.setCreateTime(LocalDateTime.now());
shoppingCart.setNumber(1);
shoppingCartMapper.insert(shoppingCart);
//查到有该用户的购物车,直接给数量加1,即使判断了套餐或菜品无意义
// for (ShoppingCart cart : shoppingCartList) {
// if (shoppingCart.getDishId() != null) {
// if (cart.getDishId() == shoppingCart.getDishId()) {
// //查出来的菜品id等于购物车的货物id,或套餐id==货物id
// flage_Dish=true;
// cart.setNumber(cart.getNumber() + 1);
// shoppingCartMapper.updateShoppingCart(cart);
// }
// } if (shoppingCart.getSetmealId() != null) {
// if (cart.getSetmealId() == shoppingCart.getSetmealId()) {
// flage_Setmeal=true;
// cart.setNumber(cart.getNumber() + 1);
// shoppingCartMapper.updateShoppingCart(cart);
// }
// }
// }
// if (flage_Dish==false){
// insertDish(shoppingCart);
// shoppingCart.setCreateTime(LocalDateTime.now());
// shoppingCart.setNumber(1);
// shoppingCartMapper.insert(shoppingCart);
// }
// if (flage_Setmeal==false){
// insertSetmeal(shoppingCart);
// shoppingCart.setCreateTime(LocalDateTime.now());
// shoppingCart.setNumber(1);
// shoppingCartMapper.insert(shoppingCart);
// }
//如果没找到就新增
}
// else {
// //判断是否未菜品
// if (shoppingCart.getDishId() != null) {
// //通过dishid查菜品获得字段
// insertDish(shoppingCart);
// //判断是否未套餐
// } else if (shoppingCart.getSetmealId() != null) {
// insertSetmeal(shoppingCart);
// }
//执行插入。菜品获或者套餐
// }
}
查看购物车功能:
Controller
Service
Impl
Mapper
Mapper.xml
清空购物车功能:
Controller
Service
Impl
Mapper
Mapper.xml