From 39640025affb1d2b2c8b560d107483cf2c3639bf Mon Sep 17 00:00:00 2001 From: Bunny <1319900154@qq.com> Date: Tue, 9 Jan 2024 14:30:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E8=8F=9C=E5=93=81=EF=BC=9B?= =?UTF-8?q?=E5=B0=86=E6=9F=A5=E8=AF=A2=E6=95=B0=E6=8D=AE=E5=85=88=E6=94=BE?= =?UTF-8?q?=E5=85=A5Redis=EF=BC=9B=E4=BF=AE=E6=94=B9=E5=90=8E=EF=BC=8C?= =?UTF-8?q?=E6=B8=85=E7=90=86Redis=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/sky/config/RedisConfiguration.java | 4 --- .../com/sky/config/WebMvcConfiguration.java | 5 +-- .../sky/controller/admin/DishController.java | 24 +++++++++++++ .../controller/user/CategoryController.java | 12 ++++--- .../sky/controller/user/DishController.java | 36 ++++++++++++++----- .../com/sky/service/impl/DishServiceImpl.java | 7 ++++ sky-server/src/main/resources/application.yml | 1 - 7 files changed, 66 insertions(+), 23 deletions(-) diff --git a/sky-server/src/main/java/com/sky/config/RedisConfiguration.java b/sky-server/src/main/java/com/sky/config/RedisConfiguration.java index 72d6537..311f42c 100644 --- a/sky-server/src/main/java/com/sky/config/RedisConfiguration.java +++ b/sky-server/src/main/java/com/sky/config/RedisConfiguration.java @@ -1,17 +1,13 @@ package com.sky.config; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Configurable; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; -import javax.annotation.Resource; - @Configuration @Slf4j public class RedisConfiguration { diff --git a/sky-server/src/main/java/com/sky/config/WebMvcConfiguration.java b/sky-server/src/main/java/com/sky/config/WebMvcConfiguration.java index 7bf00db..f289d4b 100644 --- a/sky-server/src/main/java/com/sky/config/WebMvcConfiguration.java +++ b/sky-server/src/main/java/com/sky/config/WebMvcConfiguration.java @@ -1,12 +1,9 @@ package com.sky.config; -import ch.qos.logback.classic.pattern.MessageConverter; -import com.fasterxml.jackson.databind.ObjectMapper; import com.sky.interceptor.JwtTokenAdminInterceptor; import com.sky.interceptor.JwtTokenUserInterceptor; import com.sky.json.JacksonObjectMapper; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.HttpMessageConverter; @@ -47,7 +44,7 @@ public class WebMvcConfiguration extends WebMvcConfigurationSupport { .addPathPatterns("/admin/**") .excludePathPatterns("/admin/employee/login"); - registry.addInterceptor(jwtTokenAdminInterceptor) + registry.addInterceptor(jwtTokenUserInterceptor) .addPathPatterns("/user/**") .excludePathPatterns("/user/user/login") .excludePathPatterns("/user/shop/status"); diff --git a/sky-server/src/main/java/com/sky/controller/admin/DishController.java b/sky-server/src/main/java/com/sky/controller/admin/DishController.java index ed3f724..c58fdf9 100644 --- a/sky-server/src/main/java/com/sky/controller/admin/DishController.java +++ b/sky-server/src/main/java/com/sky/controller/admin/DishController.java @@ -10,10 +10,12 @@ import com.sky.vo.DishVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; +import java.util.Set; @RestController @RequestMapping("/admin/dish") @@ -22,6 +24,8 @@ import java.util.List; public class DishController { @Resource private DishService dishService; + @Resource + private RedisTemplate redisTemplate; /** * 新增菜品和口味 @@ -34,6 +38,10 @@ public class DishController { public Result save(@RequestBody DishDTO dishDTO) { log.info("新增菜品:{}", dishDTO); dishService.saveWithFlavor(dishDTO); + + // 修改、新增清理Redis数据 + String key = "dish_" + dishDTO.getCategoryId(); + redisTemplate.delete(key); return Result.success(); } @@ -62,6 +70,9 @@ public class DishController { public Result delete(@RequestParam List ids) { log.info("菜品批量删除:{}", ids); dishService.deleteBatch(ids); + + // 以dish_开头全部删除 + cleanRedisCache(); return Result.success(); } @@ -90,6 +101,9 @@ public class DishController { public Result update(@RequestBody DishDTO dishDTO) { log.info("修改菜品:{}", dishDTO); dishService.updateWithFlavor(dishDTO); + + // 如果修改了就将所有的缓存数据全部删除 + cleanRedisCache(); return Result.success(); } @@ -119,4 +133,14 @@ public class DishController { List list = dishService.list(categoryId); return Result.success(list); } + + /** + * 如果修改了就将所有的缓存数据全部删除 + */ + private void cleanRedisCache() { + Set keys = redisTemplate.keys("dish_*"); + if (keys != null && !keys.isEmpty()) { + redisTemplate.delete(keys); + } + } } diff --git a/sky-server/src/main/java/com/sky/controller/user/CategoryController.java b/sky-server/src/main/java/com/sky/controller/user/CategoryController.java index ab80e1f..edd0488 100644 --- a/sky-server/src/main/java/com/sky/controller/user/CategoryController.java +++ b/sky-server/src/main/java/com/sky/controller/user/CategoryController.java @@ -5,10 +5,11 @@ import com.sky.result.Result; import com.sky.service.CategoryService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; import java.util.List; @RestController("userCategoryController") @@ -16,15 +17,16 @@ import java.util.List; @Api(tags = "C端-分类接口") public class CategoryController { - @Autowired + @Resource private CategoryService categoryService; /** * 查询分类 - * @param type - * @return + * + * @param type Integer + * @return Result> */ - @GetMapping("/list") + @GetMapping("list") @ApiOperation("查询分类") public Result> list(Integer type) { List list = categoryService.list(type); diff --git a/sky-server/src/main/java/com/sky/controller/user/DishController.java b/sky-server/src/main/java/com/sky/controller/user/DishController.java index 53782aa..98d1403 100644 --- a/sky-server/src/main/java/com/sky/controller/user/DishController.java +++ b/sky-server/src/main/java/com/sky/controller/user/DishController.java @@ -1,5 +1,6 @@ package com.sky.controller.user; +import com.alibaba.fastjson.JSON; import com.sky.constant.StatusConstant; import com.sky.entity.Dish; import com.sky.result.Result; @@ -8,35 +9,52 @@ import com.sky.vo.DishVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; import java.util.List; +import java.util.concurrent.TimeUnit; @RestController("userDishController") @RequestMapping("/user/dish") @Slf4j @Api(tags = "C端-菜品浏览接口") public class DishController { - @Autowired + @Resource private DishService dishService; + @Resource + private RedisTemplate redisTemplate; /** * 根据分类id查询菜品 * - * @param categoryId - * @return + * @param categoryId Long + * @return Result> */ @GetMapping("/list") @ApiOperation("根据分类id查询菜品") - public Result> list(Long categoryId) { + public Result> list(@RequestParam Long categoryId) { + // 设置Redis中key + String key = "dish_" + categoryId; + // 查询Redis中数据 + List list = (List) redisTemplate.opsForValue().get(key); + // 如果不为空返回集合 + if (list != null && !list.isEmpty()) { + return Result.success(list); + } + + // 如果Redis中没有,将值放入 Dish dish = new Dish(); dish.setCategoryId(categoryId); - dish.setStatus(StatusConstant.ENABLE);//查询起售中的菜品 - - List list = dishService.listWithFlavor(dish); - + dish.setStatus(StatusConstant.ENABLE);// 查询起售中的菜品 + // 将这个数据保存到redis中 + list = dishService.listWithFlavor(dish); + redisTemplate.opsForValue().set(key, JSON.toJSON(list), 7, TimeUnit.DAYS); + // 如果Redis中没有,返回这个数据并保存这个数据 return Result.success(list); } diff --git a/sky-server/src/main/java/com/sky/service/impl/DishServiceImpl.java b/sky-server/src/main/java/com/sky/service/impl/DishServiceImpl.java index 7451704..75e514c 100644 --- a/sky-server/src/main/java/com/sky/service/impl/DishServiceImpl.java +++ b/sky-server/src/main/java/com/sky/service/impl/DishServiceImpl.java @@ -18,6 +18,7 @@ import com.sky.service.DishService; import com.sky.vo.DishVO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -34,6 +35,8 @@ public class DishServiceImpl implements DishService { private DishFlavorMapper dishFlavorMapper; @Resource private SetMealDishMapper setMealDishMapper; + @Resource + private RedisTemplate redisTemplate; /** * 新增菜品和口味 @@ -195,6 +198,10 @@ public class DishServiceImpl implements DishService { } } } + // 停售时将Redis缓存清除 + dish = dishMapper.getById(id); + String key = "dish_" + dish.getCategoryId(); + redisTemplate.delete(key); } /** diff --git a/sky-server/src/main/resources/application.yml b/sky-server/src/main/resources/application.yml index c244499..8d674c5 100644 --- a/sky-server/src/main/resources/application.yml +++ b/sky-server/src/main/resources/application.yml @@ -21,7 +21,6 @@ spring: port: ${sky.redis.port} password: ${sky.redis.password} database: ${sky.redis.database} - timeout: 5000 mybatis: