patch: 权限板块日志补丁
This commit is contained in:
parent
9f82efd772
commit
377261e938
@ -20,6 +20,8 @@ public class RedisConstant {
|
||||
public static final String TYPE_EMAIL = "mail:";
|
||||
// 登陆相关
|
||||
public static final String TYPE_AUTH = "auth:";
|
||||
// 权限相关
|
||||
public static final String TYPE_PERMISSION = "permission:";
|
||||
|
||||
/*
|
||||
* 表分类
|
||||
@ -30,4 +32,6 @@ public class RedisConstant {
|
||||
public static final String TABLE_TOKEN = "token:";
|
||||
// 用户相关
|
||||
public static final String TABLE_USER = "user:";
|
||||
// 角色相关
|
||||
public static final String TABLE_ROLE = "role:";
|
||||
}
|
||||
|
@ -9,6 +9,18 @@ import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* <h1>Redis工具类</h1>
|
||||
* <hr/>
|
||||
* 用于操作Redis
|
||||
*
|
||||
* @param <R> 泛型
|
||||
* @since v1.1.0
|
||||
* @version v1.1.0
|
||||
* @see RedisConfiguration
|
||||
* @see com.jsl.oa.common.constant.RedisConstant
|
||||
* @author xiao_lfeng
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
public abstract class RedisOperating<R> {
|
||||
protected final RedisTemplate<String, R> redisTemplate;
|
||||
|
@ -1,9 +1,14 @@
|
||||
package com.jsl.oa.dao;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.jsl.oa.common.constant.BusinessConstants;
|
||||
import com.jsl.oa.mapper.PermissionMapper;
|
||||
import com.jsl.oa.model.doData.PermissionDO;
|
||||
import com.jsl.oa.utils.redis.PermissionRedisUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@ -23,32 +28,60 @@ import java.util.List;
|
||||
@RequiredArgsConstructor
|
||||
public class PermissionDAO {
|
||||
private final PermissionMapper permissionMapper;
|
||||
private final PermissionRedisUtil<String> permissionRedisUtil;
|
||||
private final Gson gson;
|
||||
|
||||
public List<String> getPermission(Long uid) {
|
||||
/**
|
||||
* <h2>获取用户权限信息</h2>
|
||||
* <hr/>
|
||||
* 通过用户 ID 获取用户权限信息
|
||||
*
|
||||
* @param uid 用户ID
|
||||
* @return {@link List<String>}
|
||||
*/
|
||||
public List<String> getPermission(@NotNull Long uid) {
|
||||
log.info("\t> 执行 DAO 层 PermissionDAO.getPermission 方法");
|
||||
List<PermissionDO> permissionList = permissionMapper.permissionUserPid(uid);
|
||||
List<String> getPermissionForString = new ArrayList<>();
|
||||
for (PermissionDO permission : permissionList) {
|
||||
// 寻找是否存在父亲
|
||||
StringBuilder permissionString = new StringBuilder();
|
||||
if (permission.getPid() != null) {
|
||||
// 存在父亲
|
||||
this.getFatherPermission(permissionString, permission.getPid());
|
||||
// 寻找子类
|
||||
this.getChildPermission(permissionString, permission.getId(), getPermissionForString);
|
||||
getPermissionForString.add(permissionString.toString());
|
||||
} else {
|
||||
// 不存在父亲
|
||||
permissionString.append(permission.getName());
|
||||
this.getChildPermission(permissionString, permission.getId(), getPermissionForString);
|
||||
getPermissionForString.add(permissionString.toString());
|
||||
List<String> getPermissionForString;
|
||||
String permissionRedisString = permissionRedisUtil.getData(BusinessConstants.NONE, uid.toString());
|
||||
if (permissionRedisString == null) {
|
||||
log.info("\t\t> 从 MySQL 获取数据");
|
||||
List<PermissionDO> permissionList = permissionMapper.permissionUserPid(uid);
|
||||
getPermissionForString = new ArrayList<>();
|
||||
for (PermissionDO permission : permissionList) {
|
||||
// 寻找是否存在父亲
|
||||
StringBuilder permissionString = new StringBuilder();
|
||||
if (permission.getPid() != null) {
|
||||
// 存在父亲
|
||||
this.getFatherPermission(permissionString, permission.getPid());
|
||||
// 寻找子类
|
||||
this.getChildPermission(permissionString, permission.getId(), getPermissionForString);
|
||||
getPermissionForString.add(permissionString.toString());
|
||||
} else {
|
||||
// 不存在父亲
|
||||
permissionString.append(permission.getName());
|
||||
this.getChildPermission(permissionString, permission.getId(), getPermissionForString);
|
||||
getPermissionForString.add(permissionString.toString());
|
||||
}
|
||||
}
|
||||
// 存入 Redis
|
||||
permissionRedisUtil.setData(BusinessConstants.NONE, uid.toString(), gson.toJson(getPermissionForString), 1440);
|
||||
} else {
|
||||
log.info("\t\t> 从 Redis 获取数据");
|
||||
getPermissionForString = gson.fromJson(permissionRedisString, new TypeToken<List<String>>() {}.getType());
|
||||
}
|
||||
// 存入 Redis
|
||||
|
||||
return getPermissionForString;
|
||||
}
|
||||
|
||||
/**
|
||||
* <h2>获取子类权限信息</h2>
|
||||
* <hr/>
|
||||
* 通过父类 ID 获取子类权限信息<br/>
|
||||
* 递归调用
|
||||
*
|
||||
* @param permissionString 父类权限信息
|
||||
* @param id 父类 ID
|
||||
* @param getPermissionForString 存储权限信息
|
||||
*/
|
||||
private void getChildPermission(StringBuilder permissionString, Long id, List<String> getPermissionForString) {
|
||||
// 获取子类权限信息
|
||||
List<PermissionDO> permissionList = permissionMapper.getChildPermission(id);
|
||||
@ -73,6 +106,15 @@ public class PermissionDAO {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <h2>获取父类权限信息</h2>
|
||||
* <hr/>
|
||||
* 通过子类 ID 获取父类权限信息<br/>
|
||||
* 递归调用
|
||||
*
|
||||
* @param permissionString 父类权限信息
|
||||
* @param pid 父类 ID
|
||||
*/
|
||||
public void getFatherPermission(StringBuilder permissionString, Long pid) {
|
||||
// 获取权限信息
|
||||
PermissionDO permissionDO = permissionMapper.getPermissionById(pid);
|
||||
|
@ -4,6 +4,7 @@ import com.jsl.oa.common.constant.BusinessConstants;
|
||||
import com.jsl.oa.common.constant.RedisConstant;
|
||||
import com.jsl.oa.config.redis.RedisConfiguration;
|
||||
import com.jsl.oa.config.redis.RedisOperating;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
@ -22,6 +23,7 @@ import java.util.concurrent.TimeUnit;
|
||||
* @see com.jsl.oa.common.constant.RedisConstant
|
||||
* @since v1.1.0
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class EmailRedisUtil<R> extends RedisOperating<R> {
|
||||
|
||||
@ -41,6 +43,7 @@ public class EmailRedisUtil<R> extends RedisOperating<R> {
|
||||
@Override
|
||||
public Long getExpiredAt(@NotNull BusinessConstants businessConstants, String email) {
|
||||
String key = RedisConstant.TYPE_EMAIL + RedisConstant.TABLE_EMAIL + businessConstants.getValue() + email;
|
||||
log.info("\t\t> 读取 Redis 键为 {} 的过期时间", key);
|
||||
return redisTemplate.getExpire(key);
|
||||
}
|
||||
|
||||
@ -56,6 +59,7 @@ public class EmailRedisUtil<R> extends RedisOperating<R> {
|
||||
@Override
|
||||
public Boolean delData(@NotNull BusinessConstants businessConstants, String email) {
|
||||
String key = RedisConstant.TYPE_EMAIL + RedisConstant.TABLE_EMAIL + businessConstants.getValue() + email;
|
||||
log.info("\t\t> 删除 Redis 键为 {} 的数据", key);
|
||||
return redisTemplate.delete(key);
|
||||
}
|
||||
|
||||
@ -71,6 +75,7 @@ public class EmailRedisUtil<R> extends RedisOperating<R> {
|
||||
@Override
|
||||
public R getData(@NotNull BusinessConstants businessConstants, String email) {
|
||||
String key = RedisConstant.TYPE_EMAIL + RedisConstant.TABLE_EMAIL + businessConstants.getValue() + email;
|
||||
log.info("\t\t> 读取 Redis 键为 {} 的数据", key);
|
||||
return redisTemplate.opsForValue().get(key);
|
||||
}
|
||||
|
||||
@ -88,6 +93,7 @@ public class EmailRedisUtil<R> extends RedisOperating<R> {
|
||||
public Boolean setData(@NotNull BusinessConstants businessConstants, String email, R value, Integer time) {
|
||||
// 处理数据
|
||||
String key = RedisConstant.TYPE_EMAIL + RedisConstant.TABLE_EMAIL + businessConstants.getValue() + email;
|
||||
log.info("\t\t> 设置 Redis 键为 {} 的数据", key);
|
||||
redisTemplate.opsForValue().set(key, value);
|
||||
redisTemplate.expire(key, time, TimeUnit.MINUTES);
|
||||
return true;
|
||||
|
@ -0,0 +1,61 @@
|
||||
package com.jsl.oa.utils.redis;
|
||||
|
||||
import com.jsl.oa.common.constant.BusinessConstants;
|
||||
import com.jsl.oa.common.constant.RedisConstant;
|
||||
import com.jsl.oa.config.redis.RedisOperating;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* <h1>权限Redis工具类</h1>
|
||||
* <hr/>
|
||||
* 权限Redis工具类
|
||||
*
|
||||
* @param <R> 泛型
|
||||
* @since v1.1.0
|
||||
* @version v1.1.0
|
||||
* @see com.jsl.oa.common.constant.RedisConstant
|
||||
* @author xiaofeng
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class PermissionRedisUtil<R> extends RedisOperating<R> {
|
||||
public PermissionRedisUtil(RedisTemplate<String, R> redisTemplate, StringRedisTemplate stringRedisTemplate) {
|
||||
super(redisTemplate, stringRedisTemplate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getExpiredAt(@NotNull BusinessConstants businessConstants, String field) {
|
||||
String key = RedisConstant.TYPE_PERMISSION + RedisConstant.TABLE_ROLE + businessConstants.getValue() + field;
|
||||
log.info("\t\t> 读取 Redis 键为 {} 的过期时间", key);
|
||||
return redisTemplate.getExpire(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean delData(@NotNull BusinessConstants businessConstants, String field) {
|
||||
String key = RedisConstant.TYPE_PERMISSION + RedisConstant.TABLE_ROLE + businessConstants.getValue() + field;
|
||||
log.info("\t\t> 删除 Redis 键为 {} 的数据", key);
|
||||
return redisTemplate.delete(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public R getData(@NotNull BusinessConstants businessConstants, String field) {
|
||||
String key = RedisConstant.TYPE_PERMISSION + RedisConstant.TABLE_ROLE + businessConstants.getValue() + field;
|
||||
log.info("\t\t> 读取 Redis 键为 {} 的数据", key);
|
||||
return redisTemplate.opsForValue().get(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean setData(@NotNull BusinessConstants businessConstants, String field, R value, Integer time) {
|
||||
String key = RedisConstant.TYPE_PERMISSION + RedisConstant.TABLE_ROLE + businessConstants.getValue() + field;
|
||||
log.info("\t\t> 写入 Redis 键为 {} 的数据", key);
|
||||
redisTemplate.opsForValue().set(key, value);
|
||||
redisTemplate.expire(key, time, TimeUnit.MINUTES);
|
||||
return true;
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@ package com.jsl.oa.utils.redis;
|
||||
import com.jsl.oa.common.constant.BusinessConstants;
|
||||
import com.jsl.oa.common.constant.RedisConstant;
|
||||
import com.jsl.oa.config.redis.RedisOperating;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
@ -11,6 +12,20 @@ import org.springframework.stereotype.Component;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* <h1>Token Redis 工具类</h1>
|
||||
* <hr/>
|
||||
* 用于 Token 的 Redis 操作
|
||||
*
|
||||
* @param <R> 泛型
|
||||
* @version v1.1.0
|
||||
* @since v1.1.0
|
||||
* @see RedisOperating
|
||||
* @see RedisTemplate
|
||||
* @see StringRedisTemplate
|
||||
* @author xiao_lfeng
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class TokenRedisUtil<R> extends RedisOperating<R> {
|
||||
public TokenRedisUtil(RedisTemplate<String, R> redisTemplate, StringRedisTemplate stringRedisTemplate) {
|
||||
@ -20,18 +35,21 @@ public class TokenRedisUtil<R> extends RedisOperating<R> {
|
||||
@Override
|
||||
public Long getExpiredAt(@NotNull BusinessConstants businessConstants, String field) {
|
||||
String key = RedisConstant.TYPE_AUTH + RedisConstant.TABLE_TOKEN + businessConstants.getValue() + field;
|
||||
log.info("\t\t> 读取 Redis 键为 {} 的过期时间", key);
|
||||
return redisTemplate.getExpire(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean delData(@NotNull BusinessConstants businessConstants, String field) {
|
||||
String key = RedisConstant.TYPE_AUTH + RedisConstant.TABLE_TOKEN + businessConstants.getValue() + field;
|
||||
log.info("\t\t> 删除 Redis 键为 {} 的数据", key);
|
||||
return redisTemplate.delete(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public R getData(@NotNull BusinessConstants businessConstants, String field) {
|
||||
String key = RedisConstant.TYPE_AUTH + RedisConstant.TABLE_TOKEN + businessConstants.getValue() + field;
|
||||
log.info("\t\t> 读取 Redis 键为 {} 的数据", key);
|
||||
return redisTemplate.opsForValue().get(key);
|
||||
}
|
||||
|
||||
@ -39,6 +57,7 @@ public class TokenRedisUtil<R> extends RedisOperating<R> {
|
||||
public Boolean setData(@NotNull BusinessConstants businessConstants, String field, R value, Integer time) {
|
||||
// 处理数据
|
||||
String key = RedisConstant.TYPE_AUTH + RedisConstant.TABLE_TOKEN + businessConstants.getValue() + field;
|
||||
log.info("\t\t> 写入 Redis 键为 {} 的数据", key);
|
||||
redisTemplate.opsForValue().set(key, value);
|
||||
redisTemplate.expire(key, time, TimeUnit.MINUTES);
|
||||
return true;
|
||||
@ -46,6 +65,7 @@ public class TokenRedisUtil<R> extends RedisOperating<R> {
|
||||
|
||||
public List<R> getList(@NotNull BusinessConstants businessConstants) {
|
||||
String key = RedisConstant.TYPE_AUTH + RedisConstant.TABLE_TOKEN + businessConstants.getValue() + "*";
|
||||
log.info("\t\t> 读取 Redis 键为 {} 的数据", key);
|
||||
return this.getList(key);
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package com.jsl.oa.utils.redis;
|
||||
import com.jsl.oa.common.constant.BusinessConstants;
|
||||
import com.jsl.oa.common.constant.RedisConstant;
|
||||
import com.jsl.oa.config.redis.RedisOperating;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
@ -20,6 +21,7 @@ import java.util.concurrent.TimeUnit;
|
||||
* @version v1.1.0
|
||||
* @author xiao_lfeng
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class UserRedisUtil<R> extends RedisOperating<R> {
|
||||
public UserRedisUtil(RedisTemplate<String, R> redisTemplate, StringRedisTemplate stringRedisTemplate) {
|
||||
@ -29,18 +31,21 @@ public class UserRedisUtil<R> extends RedisOperating<R> {
|
||||
@Override
|
||||
public Long getExpiredAt(@NotNull BusinessConstants businessConstants, String field) {
|
||||
String key = RedisConstant.TYPE_AUTH + RedisConstant.TABLE_USER + businessConstants.getValue() + field;
|
||||
log.info("\t\t> 读取 Redis 键为 {} 的过期时间", key);
|
||||
return redisTemplate.getExpire(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean delData(@NotNull BusinessConstants businessConstants, String field) {
|
||||
String key = RedisConstant.TYPE_AUTH + RedisConstant.TABLE_USER + businessConstants.getValue() + field;
|
||||
log.info("\t\t> 删除 Redis 键为 {} 的数据", key);
|
||||
return redisTemplate.delete(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public R getData(@NotNull BusinessConstants businessConstants, String field) {
|
||||
String key = RedisConstant.TYPE_AUTH + RedisConstant.TABLE_USER + businessConstants.getValue() + field;
|
||||
log.info("\t\t> 读取 Redis 键为 {} 的数据", key);
|
||||
return redisTemplate.opsForValue().get(key);
|
||||
}
|
||||
|
||||
@ -48,6 +53,7 @@ public class UserRedisUtil<R> extends RedisOperating<R> {
|
||||
public Boolean setData(@NotNull BusinessConstants businessConstants, String field, R value, Integer time) {
|
||||
// 处理数据
|
||||
String key = RedisConstant.TYPE_AUTH + RedisConstant.TABLE_USER + businessConstants.getValue() + field;
|
||||
log.info("\t\t> 写入 Redis 键为 {} 的数据", key);
|
||||
redisTemplate.opsForValue().set(key, value);
|
||||
redisTemplate.expire(key, time, TimeUnit.MINUTES);
|
||||
return true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user