3 Commits

3 changed files with 19 additions and 3 deletions

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.executor.parameter.ParameterHandler;
import org.apache.ibatis.executor.resultset.ResultSetHandler; import org.apache.ibatis.executor.resultset.ResultSetHandler;
import org.apache.ibatis.plugin.*; import org.apache.ibatis.plugin.*;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
@@ -39,12 +40,23 @@ public class MybatisDecryptInterceptor implements Interceptor {
@Override @Override
public Object intercept(Invocation invocation) throws Throwable { public Object intercept(Invocation invocation) throws Throwable {
// 开始进行参数解密
ResultSetHandler resultSetHandler = (ResultSetHandler) invocation.getTarget();
Field parameterHandlerField = resultSetHandler.getClass().getDeclaredField("parameterHandler");
parameterHandlerField.setAccessible(true);
Object target = parameterHandlerField.get(resultSetHandler);
if (target instanceof ParameterHandler parameterHandler) {
Object parameterObject = parameterHandler.getParameterObject();
if (ObjectUtil.isNotNull(parameterObject) && !(parameterObject instanceof String)) {
this.decryptHandler(parameterObject);
}
}
// 获取执行mysql执行结果 // 获取执行mysql执行结果
Object result = invocation.proceed(); Object result = invocation.proceed();
if (result == null) { if (result == null) {
return null; return null;
} }
decryptHandler(result); this.decryptHandler(result);
return result; return result;
} }

View File

@@ -2,6 +2,7 @@ package org.dromara.system.service.impl;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.constant.SystemConstants;
import org.dromara.common.core.domain.dto.TaskAssigneeDTO; import org.dromara.common.core.domain.dto.TaskAssigneeDTO;
import org.dromara.common.core.domain.model.TaskAssigneeBody; import org.dromara.common.core.domain.model.TaskAssigneeBody;
import org.dromara.common.core.service.TaskAssigneeService; import org.dromara.common.core.service.TaskAssigneeService;
@@ -51,6 +52,7 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService {
SysRoleBo bo = new SysRoleBo(); SysRoleBo bo = new SysRoleBo();
bo.setRoleKey(taskQuery.getHandlerCode()); bo.setRoleKey(taskQuery.getHandlerCode());
bo.setRoleName(taskQuery.getHandlerName()); bo.setRoleName(taskQuery.getHandlerName());
bo.setStatus(SystemConstants.NORMAL);
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
params.put("beginTime", taskQuery.getBeginTime()); params.put("beginTime", taskQuery.getBeginTime());
params.put("endTime", taskQuery.getEndTime()); params.put("endTime", taskQuery.getEndTime());
@@ -73,6 +75,7 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService {
SysPostBo bo = new SysPostBo(); SysPostBo bo = new SysPostBo();
bo.setPostCategory(taskQuery.getHandlerCode()); bo.setPostCategory(taskQuery.getHandlerCode());
bo.setPostName(taskQuery.getHandlerName()); bo.setPostName(taskQuery.getHandlerName());
bo.setStatus(SystemConstants.NORMAL);
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
params.put("beginTime", taskQuery.getBeginTime()); params.put("beginTime", taskQuery.getBeginTime());
params.put("endTime", taskQuery.getEndTime()); params.put("endTime", taskQuery.getEndTime());
@@ -96,6 +99,7 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService {
SysDeptBo bo = new SysDeptBo(); SysDeptBo bo = new SysDeptBo();
bo.setDeptCategory(taskQuery.getHandlerCode()); bo.setDeptCategory(taskQuery.getHandlerCode());
bo.setDeptName(taskQuery.getHandlerName()); bo.setDeptName(taskQuery.getHandlerName());
bo.setStatus(SystemConstants.NORMAL);
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
params.put("beginTime", taskQuery.getBeginTime()); params.put("beginTime", taskQuery.getBeginTime());
params.put("endTime", taskQuery.getEndTime()); params.put("endTime", taskQuery.getEndTime());
@@ -107,7 +111,6 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService {
return new TaskAssigneeDTO(page.getTotal(), handlers); return new TaskAssigneeDTO(page.getTotal(), handlers);
} }
/** /**
* 查询用户并返回任务指派的列表,支持分页 * 查询用户并返回任务指派的列表,支持分页
* *
@@ -120,6 +123,7 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService {
SysUserBo bo = new SysUserBo(); SysUserBo bo = new SysUserBo();
bo.setUserName(taskQuery.getHandlerCode()); bo.setUserName(taskQuery.getHandlerCode());
bo.setNickName(taskQuery.getHandlerName()); bo.setNickName(taskQuery.getHandlerName());
bo.setStatus(SystemConstants.NORMAL);
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
params.put("beginTime", taskQuery.getBeginTime()); params.put("beginTime", taskQuery.getBeginTime());
params.put("endTime", taskQuery.getEndTime()); params.put("endTime", taskQuery.getEndTime());

View File

@@ -233,7 +233,7 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand
} }
// 跳过以 $ 或 # 开头的字符串 // 跳过以 $ 或 # 开头的字符串
if (StringUtils.startsWith(storageId, "$") || StringUtils.startsWith(storageId, "#")) { if (StringUtils.startsWith(storageId, "$") || StringUtils.startsWith(storageId, "#")) {
log.info("跳过 storageId 解析,检测到内置变量表达式:{}", storageId); log.debug("跳过 storageId 解析,检测到内置变量表达式:{}", storageId);
return null; return null;
} }
try { try {