package com.nanjing.water.service.cache; import com.nanjing.water.common.util.SerializeUtil; import com.nanjing.water.common.util.StringUtil; import com.nanjing.water.repository.impl.AdminMenuMapperImpl; import com.nanjing.water.repository.po.AdminMenuPO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import java.util.List; import java.util.Objects; import java.util.function.Function; @Service public class AdminMenuService { @Autowired private AdminMenuMapperImpl dao; @Autowired private StringRedisTemplate redisTemplate; /** * 获取所有菜单(缓存) */ public List listAllWithCache() { try { if (redisTemplate.hasKey("adminMenusCache")) { String json = redisTemplate.opsForValue().get("adminMenusCache"); if (StringUtil.isNotNullOrEmpty(json)) { return SerializeUtil.toListObject(json, AdminMenuPO.class); } } } catch (Exception e) { // } List list = dao.getList(); redisTemplate.opsForValue().set("adminMenusCache", SerializeUtil.toJson(list)); return list; } // 删除菜单缓存 public void removeListAllCache() { redisTemplate.delete("adminMenusCache"); } /** * 获取用户拥有的菜单(缓存) */ public List listUserAllWithCache(Long id, List listRoleId, Function, List> funcGetUserMenu) { try { if (redisTemplate.hasKey("userMenusCache")) { Object json = redisTemplate.opsForHash().get("userMenusCache", id); if (Objects.nonNull(json)) { return SerializeUtil.toListObject(json.toString(), AdminMenuPO.class); } } } catch (Exception e) { // } List list = funcGetUserMenu.apply(listRoleId); redisTemplate.opsForHash().put("adminMenusCache", id, SerializeUtil.toJson(list)); return list; } // 删除指定用户拥有的菜单缓存 public void removeUserMenuCache(Long id) { redisTemplate.opsForHash().delete("userMenusCache", id); } // 删除所有用户拥有的菜单缓存 public void removeAllUserMenuCache() { redisTemplate.delete("userMenusCache"); } }