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 23398ba..97d6c71 100644 --- a/sky-server/src/main/java/com/sky/config/RedisConfiguration.java +++ b/sky-server/src/main/java/com/sky/config/RedisConfiguration.java @@ -19,7 +19,7 @@ public class RedisConfiguration { redisTemplate.setConnectionFactory(redisConnectionFactory); //设置序列化器 redisTemplate.setKeySerializer(new StringRedisSerializer()); - redisTemplate.setValueSerializer(new StringRedisSerializer()); +// redisTemplate.setValueSerializer(new StringRedisSerializer()); return redisTemplate; } } diff --git a/sky-server/src/main/java/com/sky/controller/user/UserCategoryController.java b/sky-server/src/main/java/com/sky/controller/user/CategoryController.java similarity index 92% rename from sky-server/src/main/java/com/sky/controller/user/UserCategoryController.java rename to sky-server/src/main/java/com/sky/controller/user/CategoryController.java index ebc9de4..f70f7ee 100644 --- a/sky-server/src/main/java/com/sky/controller/user/UserCategoryController.java +++ b/sky-server/src/main/java/com/sky/controller/user/CategoryController.java @@ -14,11 +14,11 @@ import org.springframework.web.bind.annotation.RestController; import java.util.List; -@RestController +@RestController("UserCategoeyController") @RequestMapping("/user/category") @Api(tags = "Category") @Slf4j -public class UserCategoryController { +public class CategoryController { @Autowired private CategoryService categoryService; diff --git a/sky-server/src/main/java/com/sky/controller/user/UserDishController.java b/sky-server/src/main/java/com/sky/controller/user/DishController.java similarity index 92% rename from sky-server/src/main/java/com/sky/controller/user/UserDishController.java rename to sky-server/src/main/java/com/sky/controller/user/DishController.java index 2089a69..90bfbf8 100644 --- a/sky-server/src/main/java/com/sky/controller/user/UserDishController.java +++ b/sky-server/src/main/java/com/sky/controller/user/DishController.java @@ -12,11 +12,11 @@ import org.springframework.web.bind.annotation.RestController; import java.util.List; -@RestController +@RestController("UserDishController") @RequestMapping("/user/dish") @Api(tags = "UserDish") @Slf4j -public class UserDishController { +public class DishController { @Autowired private DishService dishService; diff --git a/sky-server/src/main/java/com/sky/controller/user/UserSetmealController.java b/sky-server/src/main/java/com/sky/controller/user/SetmealController.java similarity index 94% rename from sky-server/src/main/java/com/sky/controller/user/UserSetmealController.java rename to sky-server/src/main/java/com/sky/controller/user/SetmealController.java index 5cedbc6..2a641dd 100644 --- a/sky-server/src/main/java/com/sky/controller/user/UserSetmealController.java +++ b/sky-server/src/main/java/com/sky/controller/user/SetmealController.java @@ -16,11 +16,11 @@ import org.springframework.web.bind.annotation.RestController; import java.util.List; -@RestController +@RestController("UserSetmealController") @RequestMapping("/user/setmeal") @Api(tags = "UserSetmeal") @Slf4j -public class UserSetmealController { +public class SetmealController { @Autowired private SetmealService setmealService; diff --git a/sky-server/src/main/java/com/sky/mapper/DishMapper.java b/sky-server/src/main/java/com/sky/mapper/DishMapper.java index a09f73e..e8652e9 100644 --- a/sky-server/src/main/java/com/sky/mapper/DishMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/DishMapper.java @@ -68,7 +68,7 @@ public interface DishMapper { * @param categoryId * @return */ - @Select("select * from dish where category_id = #{categoryId}") + @Select("select * from dish where category_id = #{categoryId} and status = 1") List selectByCategoryId(Long categoryId); List selectByDishIdsAndStatusDisable(List dishIds); 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 54229a8..4cd533e 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 @@ -17,16 +17,21 @@ import com.sky.mapper.SetmealDishMapper; import com.sky.mapper.SetmealMapper; import com.sky.result.PageResult; import com.sky.service.DishService; +import com.sky.service.SetmealService; import com.sky.vo.DishVO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Set; @Service @Slf4j @@ -40,6 +45,8 @@ public class DishServiceImpl implements DishService { private SetmealDishMapper setmealDishMapper; @Autowired private SetmealMapper setmealMapper; + @Resource + private RedisTemplate redisTemplate; /** * 新增菜品 @@ -66,6 +73,9 @@ public class DishServiceImpl implements DishService { dishFlavorMapper.insertBatch(flavors); } + //clear redis cache + String key = "dish_"+dishDTO.getCategoryId(); + cleanCache(key); } /** @@ -111,6 +121,9 @@ public class DishServiceImpl implements DishService { }*/ dishMapper.deleteByIds(ids); dishFlavorMapper.deleteByDishIds(ids); + + //clear all the dish cache in redis + cleanCache("dish_*"); } /** @@ -158,6 +171,9 @@ public class DishServiceImpl implements DishService { //插入新的口味数据 dishFlavorMapper.insertBatch(flavors); } + + //clear redis cache + cleanCache("dish_*"); } /** @@ -197,18 +213,42 @@ public class DishServiceImpl implements DishService { } } } + + cleanCache("dish_*"); } @Override public List getDishVoByCategoryId(Long categoryId) { - List dishes = dishMapper.selectByCategoryId(categoryId); - List dishVOList = new ArrayList<>(); - for (Dish dish : dishes) { - DishVO dishVO = new DishVO(); - BeanUtils.copyProperties(dish, dishVO); - dishVO.setFlavors(dishFlavorMapper.getByDishId(dish.getId())); - dishVOList.add(dishVO); + List dishVOList; + + //construct key in redis: dish_{categoryId} + String key = "dish_"+categoryId; + + //check if dish data exists in redis + ValueOperations valueOperations = redisTemplate.opsForValue(); + dishVOList = (List) valueOperations.get(key); + + if (dishVOList != null && !dishVOList.isEmpty()) { + //if exists,return dish data + return dishVOList; + }else { + //if not exists + List dishes = dishMapper.selectByCategoryId(categoryId); + dishVOList = new ArrayList<>(); + for (Dish dish : dishes) { + DishVO dishVO = new DishVO(); + BeanUtils.copyProperties(dish, dishVO); + dishVO.setFlavors(dishFlavorMapper.getByDishId(dish.getId())); + dishVOList.add(dishVO); + } + valueOperations.set(key, dishVOList); + return dishVOList; } - return dishVOList; + } + + private void cleanCache(String pattern) { + //clear redis cache + Set keys = redisTemplate.keys(pattern); + redisTemplate.delete(keys); } }