chore: 优化部分代码格式

This commit is contained in:
2024-06-18 23:12:00 +08:00
parent a235a6ea8b
commit 91cd4d4d22
4 changed files with 37 additions and 39 deletions

View File

@@ -176,7 +176,6 @@ public class DataPermissionHandlerImpl implements DataPermissionHandler {
* @param expression 处理前的表达式
* @return 处理完后的表达式
*/
//
private Expression buildSelfExpression(DataPermission dataPermission,
DataPermissionCurrentUser currentUser,
Expression expression) {

View File

@@ -24,6 +24,5 @@
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-core</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -60,12 +60,12 @@ public abstract class AbstractMyBatisInterceptor implements Interceptor {
* 获取加密参数
*
* @param mappedStatementId 映射语句 ID
* @param parameterIndex 参数数量
* @param parameterIndex 参数索引
* @return 加密参数
*/
public Map<String, FieldEncrypt> getEncryptParams(String mappedStatementId, Integer parameterIndex) {
return ENCRYPT_PARAM_CACHE
.computeIfAbsent(mappedStatementId, it -> getEncryptParamsNoCached(mappedStatementId, parameterIndex));
.computeIfAbsent(mappedStatementId, m -> getEncryptParamsNoCached(mappedStatementId, parameterIndex));
}
/**

View File

@@ -26,7 +26,6 @@ import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import org.apache.ibatis.cache.CacheKey;
import org.apache.ibatis.executor.Executor;
import org.apache.ibatis.mapping.BoundSql;
@@ -119,9 +118,9 @@ public class MyBatisEncryptInterceptor extends AbstractMyBatisInterceptor {
Object entity = parameterMap.getOrDefault(parameterName, null);
this.doEncrypt(this.getEncryptFields(entity), entity);
} else if (parameterName.startsWith(Constants.WRAPPER)) {
// 处理参数为 Wrapper 的情况
Wrapper wrapper = (Wrapper)parameterMap.getOrDefault(parameterName, null);
// 处理 wrapper 的情况
handleWrapperEncrypt(wrapper, mappedStatement);
this.doEncrypt(wrapper, mappedStatement);
} else {
FieldEncrypt fieldEncrypt = encryptParamEntry.getValue();
parameterMap.put(parameterName, this.doEncrypt(parameterMap.get(parameterName), fieldEncrypt));
@@ -129,23 +128,6 @@ public class MyBatisEncryptInterceptor extends AbstractMyBatisInterceptor {
}
}
/**
* 处理加密
*
* @param parameterValue 参数值
* @param fieldEncrypt 字段加密注解
* @throws Exception /
*/
private Object doEncrypt(Object parameterValue, FieldEncrypt fieldEncrypt) throws Exception {
if (null == parameterValue) {
return null;
}
IEncryptor encryptor = super.getEncryptor(fieldEncrypt);
// 优先获取自定义对称加密算法密钥,获取不到时再获取全局配置
String password = ObjectUtil.defaultIfBlank(fieldEncrypt.password(), properties.getPassword());
return encryptor.encrypt(parameterValue.toString(), password, properties.getPublicKey());
}
/**
* 处理加密
*
@@ -166,21 +148,21 @@ public class MyBatisEncryptInterceptor extends AbstractMyBatisInterceptor {
}
/**
* 处理 wrapper 加密情况
* 处理 Wrapper 加密
*
* @param wrapper wrapper 对象
* @param wrapper Wrapper 对象
* @param mappedStatement 映射语句
* @throws Exception /
*/
private void handleWrapperEncrypt(Wrapper wrapper, MappedStatement mappedStatement) throws Exception {
private void doEncrypt(Wrapper wrapper, MappedStatement mappedStatement) throws Exception {
if (wrapper instanceof AbstractWrapper abstractWrapper) {
String sqlSet = abstractWrapper.getSqlSet();
if (StringUtils.isEmpty(sqlSet)) {
if (CharSequenceUtil.isEmpty(sqlSet)) {
return;
}
String className = CharSequenceUtil.subBefore(mappedStatement.getId(), StringConstants.DOT, true);
Class<?> mapperClass = Class.forName(className);
Optional<Class> baseMapperGenerics = getDoByMapperClass(mapperClass, Optional.empty());
Optional<Class> baseMapperGenerics = getEntityTypeByMapperClass(mapperClass, Optional.empty());
// 获取不到泛型对象 则不进行下面的逻辑
if (baseMapperGenerics.isEmpty()) {
return;
@@ -190,7 +172,7 @@ public class MyBatisEncryptInterceptor extends AbstractMyBatisInterceptor {
// 将 name=#{ew.paramNameValuePairs.xxx},age=#{ew.paramNameValuePairs.xxx} 切出来
for (String sqlFragment : sqlSet.split(Constants.COMMA)) {
String columnName = sqlFragment.split(Constants.EQUALS)[0];
// 截取其中的 xxx 字符 #{ew.paramNameValuePairs.xxx}
// 截取其中的 xxx 字符,例如#{ew.paramNameValuePairs.xxx}
String paramNameVal = sqlFragment.split(Constants.EQUALS)[1].substring(25, sqlFragment
.split(Constants.EQUALS)[1].length() - 1);
Optional<TableFieldInfo> fieldInfo = fieldList.stream()
@@ -201,22 +183,39 @@ public class MyBatisEncryptInterceptor extends AbstractMyBatisInterceptor {
FieldEncrypt fieldEncrypt = tableFieldInfo.getField().getAnnotation(FieldEncrypt.class);
if (fieldEncrypt != null) {
Map<String, Object> paramNameValuePairs = abstractWrapper.getParamNameValuePairs();
Object o = paramNameValuePairs.get(paramNameVal);
paramNameValuePairs.put(paramNameVal, this.doEncrypt(o, fieldEncrypt));
paramNameValuePairs.put(paramNameVal, this.doEncrypt(paramNameValuePairs
.get(paramNameVal), fieldEncrypt));
}
}
}
}
}
/**
* 处理加密
*
* @param parameterValue 参数值
* @param fieldEncrypt 字段加密注解
* @throws Exception /
*/
private Object doEncrypt(Object parameterValue, FieldEncrypt fieldEncrypt) throws Exception {
if (null == parameterValue) {
return null;
}
IEncryptor encryptor = super.getEncryptor(fieldEncrypt);
// 优先获取自定义对称加密算法密钥,获取不到时再获取全局配置
String password = ObjectUtil.defaultIfBlank(fieldEncrypt.password(), properties.getPassword());
return encryptor.encrypt(parameterValue.toString(), password, properties.getPublicKey());
}
/**
* 从 Mapper 获取泛型
*
* @param mapperClass mapper class
* @param tempResult 临时存储的泛型对象
* @return domain 对象
* @param mapperClass Mapper class
* @param tempResult 临时存储的泛型对象
* @return 泛型
*/
private static Optional<Class> getDoByMapperClass(Class<?> mapperClass, Optional<Class> tempResult) {
private static Optional<Class> getEntityTypeByMapperClass(Class<?> mapperClass, Optional<Class> tempResult) {
Type[] genericInterfaces = mapperClass.getGenericInterfaces();
Optional<Class> result = tempResult;
for (Type genericInterface : genericInterfaces) {
@@ -225,15 +224,16 @@ public class MyBatisEncryptInterceptor extends AbstractMyBatisInterceptor {
Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
// 如果匹配上 BaseMapper 且泛型参数是 Class 类型,则直接返回
if (rawType.equals(BaseMapper.class)) {
return actualTypeArguments[0] instanceof Class ?
Optional.of((Class) actualTypeArguments[0]) : result;
return actualTypeArguments[0] instanceof Class
? Optional.of((Class)actualTypeArguments[0])
: result;
} else if (rawType instanceof Class interfaceClass) {
// 如果泛型参数是 Class 类型,则传递给递归调用
if (actualTypeArguments[0] instanceof Class tempResultClass) {
result = Optional.of(tempResultClass);
}
// 递归调用,继续查找
Optional<Class> innerResult = getDoByMapperClass(interfaceClass, result);
Optional<Class> innerResult = getEntityTypeByMapperClass(interfaceClass, result);
if (innerResult.isPresent()) {
return innerResult;
}