package com.fengdu.gas.service;
|
|
import com.fengdu.gas.repository.po.AdminMenuPO;
|
import com.fengdu.gas.repository.po.AdminPermissionPO;
|
import com.fengdu.gas.common.enums.EYesOrNo;
|
import com.fengdu.gas.common.util.LocalDateTimeUtil;
|
import com.fengdu.gas.entity.enums.EMenuType;
|
import com.fengdu.gas.entity.enums.EOperation;
|
import com.fengdu.gas.entity.enums.EState;
|
import com.fengdu.gas.repository.impl.AdminPermissionMapperImpl;
|
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<AdminPermissionPO> listAllWithCache() {
|
return dao.getList();
|
}
|
|
// 删除权限缓存
|
@CacheEvict(cacheNames = "adminPermissionCache", allEntries = true)
|
public void removeListAllCache() {
|
}
|
|
/**
|
* 获取用户拥有的权限(缓存)
|
*/
|
@Cacheable(cacheManager = "json4RedisCacheManager", value = "userPermissionCache", key = "#id")
|
public List<AdminPermissionPO> listUserAllWithCache(Long id, List<Long> listRoleId, Function<List<Long>, List<AdminPermissionPO>> 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<AdminPermissionPO> 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);
|
}
|
}
|