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 处理前的表达式 * @param expression 处理前的表达式
* @return 处理完后的表达式 * @return 处理完后的表达式
*/ */
//
private Expression buildSelfExpression(DataPermission dataPermission, private Expression buildSelfExpression(DataPermission dataPermission,
DataPermissionCurrentUser currentUser, DataPermissionCurrentUser currentUser,
Expression expression) { Expression expression) {

View File

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

View File

@@ -60,12 +60,12 @@ public abstract class AbstractMyBatisInterceptor implements Interceptor {
* 获取加密参数 * 获取加密参数
* *
* @param mappedStatementId 映射语句 ID * @param mappedStatementId 映射语句 ID
* @param parameterIndex 参数数量 * @param parameterIndex 参数索引
* @return 加密参数 * @return 加密参数
*/ */
public Map<String, FieldEncrypt> getEncryptParams(String mappedStatementId, Integer parameterIndex) { public Map<String, FieldEncrypt> getEncryptParams(String mappedStatementId, Integer parameterIndex) {
return ENCRYPT_PARAM_CACHE 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.TableInfo;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import org.apache.ibatis.cache.CacheKey; import org.apache.ibatis.cache.CacheKey;
import org.apache.ibatis.executor.Executor; import org.apache.ibatis.executor.Executor;
import org.apache.ibatis.mapping.BoundSql; import org.apache.ibatis.mapping.BoundSql;
@@ -119,9 +118,9 @@ public class MyBatisEncryptInterceptor extends AbstractMyBatisInterceptor {
Object entity = parameterMap.getOrDefault(parameterName, null); Object entity = parameterMap.getOrDefault(parameterName, null);
this.doEncrypt(this.getEncryptFields(entity), entity); this.doEncrypt(this.getEncryptFields(entity), entity);
} else if (parameterName.startsWith(Constants.WRAPPER)) { } else if (parameterName.startsWith(Constants.WRAPPER)) {
// 处理参数为 Wrapper 的情况
Wrapper wrapper = (Wrapper)parameterMap.getOrDefault(parameterName, null); Wrapper wrapper = (Wrapper)parameterMap.getOrDefault(parameterName, null);
// 处理 wrapper 的情况 this.doEncrypt(wrapper, mappedStatement);
handleWrapperEncrypt(wrapper, mappedStatement);
} else { } else {
FieldEncrypt fieldEncrypt = encryptParamEntry.getValue(); FieldEncrypt fieldEncrypt = encryptParamEntry.getValue();
parameterMap.put(parameterName, this.doEncrypt(parameterMap.get(parameterName), fieldEncrypt)); 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 映射语句 * @param mappedStatement 映射语句
* @throws Exception / * @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) { if (wrapper instanceof AbstractWrapper abstractWrapper) {
String sqlSet = abstractWrapper.getSqlSet(); String sqlSet = abstractWrapper.getSqlSet();
if (StringUtils.isEmpty(sqlSet)) { if (CharSequenceUtil.isEmpty(sqlSet)) {
return; return;
} }
String className = CharSequenceUtil.subBefore(mappedStatement.getId(), StringConstants.DOT, true); String className = CharSequenceUtil.subBefore(mappedStatement.getId(), StringConstants.DOT, true);
Class<?> mapperClass = Class.forName(className); Class<?> mapperClass = Class.forName(className);
Optional<Class> baseMapperGenerics = getDoByMapperClass(mapperClass, Optional.empty()); Optional<Class> baseMapperGenerics = getEntityTypeByMapperClass(mapperClass, Optional.empty());
// 获取不到泛型对象 则不进行下面的逻辑 // 获取不到泛型对象 则不进行下面的逻辑
if (baseMapperGenerics.isEmpty()) { if (baseMapperGenerics.isEmpty()) {
return; return;
@@ -190,7 +172,7 @@ public class MyBatisEncryptInterceptor extends AbstractMyBatisInterceptor {
// 将 name=#{ew.paramNameValuePairs.xxx},age=#{ew.paramNameValuePairs.xxx} 切出来 // 将 name=#{ew.paramNameValuePairs.xxx},age=#{ew.paramNameValuePairs.xxx} 切出来
for (String sqlFragment : sqlSet.split(Constants.COMMA)) { for (String sqlFragment : sqlSet.split(Constants.COMMA)) {
String columnName = sqlFragment.split(Constants.EQUALS)[0]; 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 String paramNameVal = sqlFragment.split(Constants.EQUALS)[1].substring(25, sqlFragment
.split(Constants.EQUALS)[1].length() - 1); .split(Constants.EQUALS)[1].length() - 1);
Optional<TableFieldInfo> fieldInfo = fieldList.stream() Optional<TableFieldInfo> fieldInfo = fieldList.stream()
@@ -201,22 +183,39 @@ public class MyBatisEncryptInterceptor extends AbstractMyBatisInterceptor {
FieldEncrypt fieldEncrypt = tableFieldInfo.getField().getAnnotation(FieldEncrypt.class); FieldEncrypt fieldEncrypt = tableFieldInfo.getField().getAnnotation(FieldEncrypt.class);
if (fieldEncrypt != null) { if (fieldEncrypt != null) {
Map<String, Object> paramNameValuePairs = abstractWrapper.getParamNameValuePairs(); Map<String, Object> paramNameValuePairs = abstractWrapper.getParamNameValuePairs();
Object o = paramNameValuePairs.get(paramNameVal); paramNameValuePairs.put(paramNameVal, this.doEncrypt(paramNameValuePairs
paramNameValuePairs.put(paramNameVal, this.doEncrypt(o, fieldEncrypt)); .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 获取泛型 * 从 Mapper 获取泛型
* *
* @param mapperClass mapper class * @param mapperClass Mapper class
* @param tempResult 临时存储的泛型对象 * @param tempResult 临时存储的泛型对象
* @return domain 对象 * @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(); Type[] genericInterfaces = mapperClass.getGenericInterfaces();
Optional<Class> result = tempResult; Optional<Class> result = tempResult;
for (Type genericInterface : genericInterfaces) { for (Type genericInterface : genericInterfaces) {
@@ -225,15 +224,16 @@ public class MyBatisEncryptInterceptor extends AbstractMyBatisInterceptor {
Type[] actualTypeArguments = parameterizedType.getActualTypeArguments(); Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
// 如果匹配上 BaseMapper 且泛型参数是 Class 类型,则直接返回 // 如果匹配上 BaseMapper 且泛型参数是 Class 类型,则直接返回
if (rawType.equals(BaseMapper.class)) { if (rawType.equals(BaseMapper.class)) {
return actualTypeArguments[0] instanceof Class ? return actualTypeArguments[0] instanceof Class
Optional.of((Class) actualTypeArguments[0]) : result; ? Optional.of((Class)actualTypeArguments[0])
: result;
} else if (rawType instanceof Class interfaceClass) { } else if (rawType instanceof Class interfaceClass) {
// 如果泛型参数是 Class 类型,则传递给递归调用 // 如果泛型参数是 Class 类型,则传递给递归调用
if (actualTypeArguments[0] instanceof Class tempResultClass) { if (actualTypeArguments[0] instanceof Class tempResultClass) {
result = Optional.of(tempResultClass); result = Optional.of(tempResultClass);
} }
// 递归调用,继续查找 // 递归调用,继续查找
Optional<Class> innerResult = getDoByMapperClass(interfaceClass, result); Optional<Class> innerResult = getEntityTypeByMapperClass(interfaceClass, result);
if (innerResult.isPresent()) { if (innerResult.isPresent()) {
return innerResult; return innerResult;
} }