mirror of
https://github.com/continew-org/continew-starter.git
synced 2025-09-09 20:57:23 +08:00
chore: 优化部分代码格式
This commit is contained in:
@@ -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) {
|
||||||
|
@@ -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>
|
@@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user