package com.lunhan.water.service; import com.lunhan.water.common.enums.EYesOrNo; import com.lunhan.water.common.util.LocalDateTimeUtil; import com.lunhan.water.entity.enums.EMenuType; import com.lunhan.water.entity.enums.EOperation; import com.lunhan.water.entity.enums.EState; import com.lunhan.water.repository.impl.AdminPermissionMapperImpl; import com.lunhan.water.repository.po.AdminMenuPO; import com.lunhan.water.repository.po.AdminPermissionPO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.function.Function; @Service public class AdminPermissionService { @Autowired private AdminPermissionMapperImpl dao; /** * 获取所有权限(缓存) */ //@Cacheable(cacheManager = "json4RedisCacheManager",value = "userCache", key = "#id") //@Cacheable(cacheManager = "json4RedisCacheManager",value = "userCache", key = "#user.id") @Cacheable(cacheManager = "json4RedisCacheManager", value = "adminPermissionCache") public List listAllWithCache() { return dao.getList(); } // 删除权限缓存 @CacheEvict(cacheNames = "adminPermissionCache", allEntries = true) public void removeListAllCache() { } /** * 获取用户拥有的权限(缓存) */ @Cacheable(cacheManager = "json4RedisCacheManager", value = "userPermissionCache", key = "#id") public List listUserAllWithCache(Long id, List listRoleId, Function, List> funcGetUserPermission) { return funcGetUserPermission.apply(listRoleId); } // 删除指定用户拥有的权限缓存 @CacheEvict(cacheNames = "userPermissionCache", key = "#id") public void removeUserCache(Long id) { } // 删除所有用户拥有的权限缓存 @CacheEvict(cacheNames = "userPermissionCache", allEntries = true) public void removeAllUserCache() { } /** * 给菜单添加默认权限 * @param menu 菜单信息 */ public void createDefaultPermission(AdminMenuPO menu) { if (!Objects.equals(menu.getType(), EMenuType.PAGE.getValue())) { return; } Long now = LocalDateTimeUtil.nowTimeStamp(); List list = new ArrayList<>(); AdminPermissionPO item1 = new AdminPermissionPO(); item1.setSn(menu.getUrl().replaceAll("/", "") + "." + EOperation.LIST.getValue()); item1.setMenuId(menu.getId()); item1.setMenuUrl(menu.getUrl()); item1.setName(menu.getName() + "." + EOperation.LIST.getDesc()); item1.setIcon(""); item1.setType(EOperation.LIST.getValue()); item1.setStatus(EState.NORMAL.getValue()); item1.setCreateTime(now); item1.setIsDelete(EYesOrNo.NO.getValue()); list.add(item1); AdminPermissionPO item2 = new AdminPermissionPO(); item2.setSn(menu.getUrl().replaceAll("/", "") + "." + EOperation.ADD.getValue()); item2.setMenuId(menu.getId()); item2.setMenuUrl(menu.getUrl()); item2.setName(menu.getName() + "." + EOperation.ADD.getDesc()); item2.setIcon(""); item2.setType(EOperation.ADD.getValue()); item2.setStatus(EState.NORMAL.getValue()); item2.setCreateTime(now); item2.setIsDelete(EYesOrNo.NO.getValue()); list.add(item2); AdminPermissionPO item3 = new AdminPermissionPO(); item3.setSn(menu.getUrl().replaceAll("/", "") + "." + EOperation.UPDATE.getValue()); item3.setMenuId(menu.getId()); item3.setMenuUrl(menu.getUrl()); item3.setName(menu.getName() + "." + EOperation.UPDATE.getDesc()); item3.setIcon(""); item3.setType(EOperation.UPDATE.getValue()); item3.setStatus(EState.NORMAL.getValue()); item3.setCreateTime(now); item3.setIsDelete(EYesOrNo.NO.getValue()); list.add(item3); AdminPermissionPO item4 = new AdminPermissionPO(); item4.setSn(menu.getUrl().replaceAll("/", "") + "." + EOperation.DETAIL.getValue()); item4.setMenuId(menu.getId()); item4.setMenuUrl(menu.getUrl()); item4.setName(menu.getName() + "." + EOperation.DETAIL.getDesc()); item4.setIcon(""); item4.setType(EOperation.DETAIL.getValue()); item4.setStatus(EState.NORMAL.getValue()); item4.setCreateTime(now); item4.setIsDelete(EYesOrNo.NO.getValue()); list.add(item4); dao.insert(list); } }