package com.nanjing.water.service.cache;
|
|
import com.nanjing.water.common.enums.EYesOrNo;
|
import com.nanjing.water.common.util.LocalDateTimeUtil;
|
import com.nanjing.water.common.util.SerializeUtil;
|
import com.nanjing.water.common.util.StringUtil;
|
import com.nanjing.water.entity.enums.EMenuType;
|
import com.nanjing.water.entity.enums.EOperation;
|
import com.nanjing.water.entity.enums.EState;
|
import com.nanjing.water.repository.impl.AdminPermissionMapperImpl;
|
import com.nanjing.water.repository.po.AdminMenuPO;
|
import com.nanjing.water.repository.po.AdminPermissionPO;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
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;
|
|
@Autowired
|
private StringRedisTemplate redisTemplate;
|
|
/**
|
* 获取所有权限(缓存)
|
*/
|
public List<AdminPermissionPO> listAllWithCache() {
|
try {
|
if (redisTemplate.hasKey("adminPermissionCache")) {
|
String json = redisTemplate.opsForValue().get("adminPermissionCache");
|
if (StringUtil.isNotNullOrEmpty(json)) {
|
return SerializeUtil.toListObject(json, AdminPermissionPO.class);
|
}
|
}
|
} catch (Exception e) {
|
//
|
}
|
List<AdminPermissionPO> list = dao.getList();
|
redisTemplate.opsForValue().set("adminPermissionCache", SerializeUtil.toJson(list));
|
return list;
|
}
|
|
// 删除权限缓存
|
public void removeListAllCache() {
|
redisTemplate.delete("adminPermissionCache");
|
}
|
|
/**
|
* 获取用户拥有的权限(缓存)
|
*/
|
public List<AdminPermissionPO> listUserAllWithCache(Long id, List<Long> listRoleId, Function<List<Long>, List<AdminPermissionPO>> funcGetUserPermission) {
|
try {
|
if (redisTemplate.hasKey("userMenusCache")) {
|
Object json = redisTemplate.opsForHash().get("userPermissionCache", id);
|
if (Objects.nonNull(json)) {
|
return SerializeUtil.toListObject(json.toString(), AdminPermissionPO.class);
|
}
|
}
|
} catch (Exception e) {
|
//
|
}
|
List<AdminPermissionPO> list = funcGetUserPermission.apply(listRoleId);
|
redisTemplate.opsForHash().put("userPermissionCache", id, list);
|
return list;
|
}
|
// 删除指定用户拥有的权限缓存
|
public void removeUserCache(Long id) {
|
redisTemplate.opsForHash().delete("userPermissionCache", id);
|
}
|
// 删除所有用户拥有的权限缓存
|
public void removeAllUserCache() {
|
redisTemplate.delete("userPermissionCache");
|
}
|
|
/**
|
* 给菜单添加默认权限
|
* @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);
|
}
|
}
|