【代码修复】SYSTEM:角色标识的提示不正确问题
parent
df5077f499
commit
047252d4fc
|
@ -25,13 +25,13 @@ import java.util.concurrent.TimeUnit;
|
||||||
*
|
*
|
||||||
* @author 芋道源码
|
* @author 芋道源码
|
||||||
*/
|
*/
|
||||||
@AutoConfiguration(before = MybatisPlusAutoConfiguration.class)
|
@AutoConfiguration(before = MybatisPlusAutoConfiguration.class) // 目的:先于 MyBatis Plus 自动配置,避免 @MapperScan 可能扫描不到 Mapper 打印 warn 日志
|
||||||
// 目的:先于 MyBatis Plus 自动配置,避免 @MapperScan 可能扫描不到 Mapper 打印 warn 日志
|
|
||||||
@MapperScan(value = "${yudao.info.base-package}", annotationClass = Mapper.class,
|
@MapperScan(value = "${yudao.info.base-package}", annotationClass = Mapper.class,
|
||||||
lazyInitialization = "${mybatis.lazy-initialization:false}") // Mapper 懒加载,目前仅用于单元测试
|
lazyInitialization = "${mybatis.lazy-initialization:false}") // Mapper 懒加载,目前仅用于单元测试
|
||||||
public class YudaoMybatisAutoConfiguration {
|
public class YudaoMybatisAutoConfiguration {
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
// 动态 SQL 智能优化支持本地缓存加速解析,更完善的租户复杂 XML 动态 SQL 支持,静态注入缓存
|
||||||
JsqlParserGlobal.setJsqlParseCache(new JdkSerialCaffeineJsqlParseCache(
|
JsqlParserGlobal.setJsqlParseCache(new JdkSerialCaffeineJsqlParseCache(
|
||||||
(cache) -> cache.maximumSize(1024)
|
(cache) -> cache.maximumSize(1024)
|
||||||
.expireAfterWrite(5, TimeUnit.SECONDS))
|
.expireAfterWrite(5, TimeUnit.SECONDS))
|
||||||
|
@ -73,5 +73,4 @@ public class YudaoMybatisAutoConfiguration {
|
||||||
throw new IllegalArgumentException(StrUtil.format("DbType{} 找不到合适的 IKeyGenerator 实现类", dbType));
|
throw new IllegalArgumentException(StrUtil.format("DbType{} 找不到合适的 IKeyGenerator 实现类", dbType));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -166,4 +166,3 @@ public class ApiSignatureAspect {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,19 +4,21 @@ import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
|
||||||
import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
|
import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
|
||||||
import cn.iocoder.yudao.framework.security.core.LoginUser;
|
import cn.iocoder.yudao.framework.security.core.LoginUser;
|
||||||
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
||||||
|
import cn.iocoder.yudao.module.system.api.logger.OperateLogApi;
|
||||||
import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogCreateReqDTO;
|
import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogCreateReqDTO;
|
||||||
import com.mzt.logapi.beans.LogRecord;
|
import com.mzt.logapi.beans.LogRecord;
|
||||||
import com.mzt.logapi.service.ILogRecordService;
|
import com.mzt.logapi.service.ILogRecordService;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.scheduling.annotation.Async;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 操作日志 ILogRecordService 实现类
|
* 操作日志 ILogRecordService 实现类
|
||||||
*
|
*
|
||||||
* 基于 {@link OperateLogFrameworkService}实现, 记录操作日志
|
* 基于 {@link OperateLogApi} 实现,记录操作日志
|
||||||
*
|
*
|
||||||
* @author HUIHUI
|
* @author HUIHUI
|
||||||
*/
|
*/
|
||||||
|
@ -24,22 +26,27 @@ import java.util.List;
|
||||||
public class LogRecordServiceImpl implements ILogRecordService {
|
public class LogRecordServiceImpl implements ILogRecordService {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
OperateLogFrameworkService operateLogFrameworkService;
|
private OperateLogApi operateLogApi;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Async
|
||||||
public void record(LogRecord logRecord) {
|
public void record(LogRecord logRecord) {
|
||||||
// 1. 补全通用字段
|
|
||||||
OperateLogCreateReqDTO reqDTO = new OperateLogCreateReqDTO();
|
OperateLogCreateReqDTO reqDTO = new OperateLogCreateReqDTO();
|
||||||
reqDTO.setTraceId(TracerUtils.getTraceId());
|
try {
|
||||||
// 补充用户信息
|
reqDTO.setTraceId(TracerUtils.getTraceId());
|
||||||
fillUserFields(reqDTO);
|
// 补充用户信息
|
||||||
// 补全模块信息
|
fillUserFields(reqDTO);
|
||||||
fillModuleFields(reqDTO, logRecord);
|
// 补全模块信息
|
||||||
// 补全请求信息
|
fillModuleFields(reqDTO, logRecord);
|
||||||
fillRequestFields(reqDTO);
|
// 补全请求信息
|
||||||
|
fillRequestFields(reqDTO);
|
||||||
|
|
||||||
// 2. 异步记录日志
|
// 2. 异步记录日志
|
||||||
operateLogFrameworkService.createOperateLog(reqDTO);
|
operateLogApi.createOperateLog(reqDTO).getCheckedData();
|
||||||
|
} catch (Throwable ex) {
|
||||||
|
// 由于 @Async 异步调用,这里打印下日志,更容易跟进
|
||||||
|
log.error("[record][url({}) log({}) 发生异常]", reqDTO.getRequestUrl(), reqDTO, ex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void fillUserFields(OperateLogCreateReqDTO reqDTO) {
|
private static void fillUserFields(OperateLogCreateReqDTO reqDTO) {
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
package cn.iocoder.yudao.framework.operatelog.core.service;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogCreateReqDTO;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* API 操作日志 Framework Service 接口
|
|
||||||
*
|
|
||||||
* @author 陈晨成
|
|
||||||
*/
|
|
||||||
public interface OperateLogFrameworkService {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建 操作日志
|
|
||||||
*
|
|
||||||
* @param reqDTO API 操作日志
|
|
||||||
*/
|
|
||||||
void createOperateLog(OperateLogCreateReqDTO reqDTO);
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
package cn.iocoder.yudao.framework.operatelog.core.service;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.module.system.api.logger.OperateLogApi;
|
|
||||||
import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogCreateReqDTO;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.scheduling.annotation.Async;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* API 操作日志 Framework Service 实现类
|
|
||||||
*
|
|
||||||
* 基于 {@link OperateLogApi} 服务,记录操作日志
|
|
||||||
*
|
|
||||||
* @author 陈晨成
|
|
||||||
*/
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@Slf4j
|
|
||||||
public class OperateLogFrameworkServiceImpl implements OperateLogFrameworkService {
|
|
||||||
|
|
||||||
private final OperateLogApi operateLogApi;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Async
|
|
||||||
public void createOperateLog(OperateLogCreateReqDTO reqDTO) {
|
|
||||||
try {
|
|
||||||
operateLogApi.createOperateLog(reqDTO);
|
|
||||||
} catch (Throwable ex) {
|
|
||||||
// 由于 @Async 异步调用,这里打印下日志,更容易跟进
|
|
||||||
log.error("[createOperateLog][url({}) log({}) 发生异常]", reqDTO.getRequestUrl(), reqDTO, ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -24,7 +24,7 @@ import org.springframework.security.web.access.AccessDeniedHandler;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Spring Security 自动配置类,主要用于相关组件的配置
|
* Spring Security 自动配置类,主要用于相关组件的配置
|
||||||
* <p>
|
*
|
||||||
* 注意,不能和 {@link YudaoWebSecurityConfigurerAdapter} 用一个,原因是会导致初始化报错。
|
* 注意,不能和 {@link YudaoWebSecurityConfigurerAdapter} 用一个,原因是会导致初始化报错。
|
||||||
* 参见 https://stackoverflow.com/questions/53847050/spring-boot-delegatebuilder-cannot-be-null-on-autowiring-authenticationmanager 文档。
|
* 参见 https://stackoverflow.com/questions/53847050/spring-boot-delegatebuilder-cannot-be-null-on-autowiring-authenticationmanager 文档。
|
||||||
*
|
*
|
||||||
|
|
|
@ -97,7 +97,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
||||||
}
|
}
|
||||||
if (ArrayUtil.isNotEmpty(pageVO.getCreateTime())) {
|
if (ArrayUtil.isNotEmpty(pageVO.getCreateTime())) {
|
||||||
taskQuery.taskCreatedAfter(DateUtils.of(pageVO.getCreateTime()[0]));
|
taskQuery.taskCreatedAfter(DateUtils.of(pageVO.getCreateTime()[0]));
|
||||||
taskQuery.taskCreatedAfter(DateUtils.of(pageVO.getCreateTime()[1]));
|
taskQuery.taskCreatedBefore(DateUtils.of(pageVO.getCreateTime()[1]));
|
||||||
}
|
}
|
||||||
long count = taskQuery.count();
|
long count = taskQuery.count();
|
||||||
if (count == 0) {
|
if (count == 0) {
|
||||||
|
@ -119,7 +119,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
||||||
}
|
}
|
||||||
if (ArrayUtil.isNotEmpty(pageVO.getCreateTime())) {
|
if (ArrayUtil.isNotEmpty(pageVO.getCreateTime())) {
|
||||||
taskQuery.taskCreatedAfter(DateUtils.of(pageVO.getCreateTime()[0]));
|
taskQuery.taskCreatedAfter(DateUtils.of(pageVO.getCreateTime()[0]));
|
||||||
taskQuery.taskCreatedAfter(DateUtils.of(pageVO.getCreateTime()[1]));
|
taskQuery.taskCreatedBefore(DateUtils.of(pageVO.getCreateTime()[1]));
|
||||||
}
|
}
|
||||||
// 执行查询
|
// 执行查询
|
||||||
long count = taskQuery.count();
|
long count = taskQuery.count();
|
||||||
|
@ -141,7 +141,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
||||||
}
|
}
|
||||||
if (ArrayUtil.isNotEmpty(pageVO.getCreateTime())) {
|
if (ArrayUtil.isNotEmpty(pageVO.getCreateTime())) {
|
||||||
taskQuery.taskCreatedAfter(DateUtils.of(pageVO.getCreateTime()[0]));
|
taskQuery.taskCreatedAfter(DateUtils.of(pageVO.getCreateTime()[0]));
|
||||||
taskQuery.taskCreatedAfter(DateUtils.of(pageVO.getCreateTime()[1]));
|
taskQuery.taskCreatedBefore(DateUtils.of(pageVO.getCreateTime()[1]));
|
||||||
}
|
}
|
||||||
// 执行查询
|
// 执行查询
|
||||||
long count = taskQuery.count();
|
long count = taskQuery.count();
|
||||||
|
|
Loading…
Reference in New Issue