From e228152fad7b9671a1ef60c159add818117e59be Mon Sep 17 00:00:00 2001 From: wsm <2746563060@qq.com> Date: Wed, 5 Aug 2026 09:59:21 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix(syslog):=20=E6=93=8D=E4=BD=9C=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E5=86=99=E5=85=A5=E5=BC=82=E5=B8=B8=E4=B8=8D=E5=86=8D?= =?UTF-8?q?=E6=8A=9B=E5=87=BA=EF=BC=8C=E9=81=BF=E5=85=8D=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=B7=B2=E8=90=BD=E5=BA=93=E4=BD=86=E6=8E=A5=E5=8F=A3=E4=BB=8D?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit saveSysLog 整体包 try-catch,日志环节任何异常只记录 warn, 不影响业务事务和接口响应。 --- .../jeecg/common/aspect/AutoLogAspect.java | 89 ++++++++++--------- 1 file changed, 47 insertions(+), 42 deletions(-) diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/AutoLogAspect.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/AutoLogAspect.java index e07c9d4..adc5715 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/AutoLogAspect.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/AutoLogAspect.java @@ -2,6 +2,7 @@ package org.jeecg.common.aspect; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.PropertyFilter; +import lombok.extern.slf4j.Slf4j; import org.apache.shiro.SecurityUtils; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; @@ -39,6 +40,7 @@ import java.util.Date; * @email jeecgos@163.com * @Date 2018年1月14日 */ +@Slf4j @Aspect @Component public class AutoLogAspect { @@ -66,51 +68,54 @@ public class AutoLogAspect { } private void saveSysLog(ProceedingJoinPoint joinPoint, long time, Object obj) { - MethodSignature signature = (MethodSignature) joinPoint.getSignature(); - Method method = signature.getMethod(); + try { + MethodSignature signature = (MethodSignature) joinPoint.getSignature(); + Method method = signature.getMethod(); - LogDTO dto = new LogDTO(); - AutoLog syslog = method.getAnnotation(AutoLog.class); - if(syslog != null){ - //update-begin-author:taoyan date: - String content = syslog.value(); - if(syslog.module()== ModuleType.ONLINE){ - content = getOnlineLogContent(obj, content); + LogDTO dto = new LogDTO(); + AutoLog syslog = method.getAnnotation(AutoLog.class); + if(syslog != null){ + //update-begin-author:taoyan date: + String content = syslog.value(); + if(syslog.module()== ModuleType.ONLINE){ + content = getOnlineLogContent(obj, content); + } + //注解上的描述,操作日志内容 + dto.setLogType(syslog.logType()); + dto.setLogContent(content); } - //注解上的描述,操作日志内容 - dto.setLogType(syslog.logType()); - dto.setLogContent(content); + + //请求的方法名 + String className = joinPoint.getTarget().getClass().getName(); + String methodName = signature.getName(); + dto.setMethod(className + "." + methodName + "()"); + + + //设置操作类型 + if (CommonConstant.LOG_TYPE_2 == dto.getLogType()) { + dto.setOperateType(getOperateType(methodName, syslog.operateType())); + } + + //获取request + HttpServletRequest request = SpringContextUtils.getHttpServletRequest(); + //请求的参数 + dto.setRequestParam(getReqestParams(request,joinPoint)); + //设置IP地址 + dto.setIp(IpUtils.getIpAddr(request)); + //获取登录用户信息 + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if(sysUser!=null){ + dto.setUserid(sysUser.getUsername()); + dto.setUsername(sysUser.getRealname()); + } + //耗时 + dto.setCostTime(time); + dto.setCreateTime(new Date()); + //保存系统日志 + baseCommonService.addLog(dto); + } catch (Exception e) { + log.warn("【系统日志-操作日志切面】记录操作日志异常,不影响业务执行, method: {}, error: {}", joinPoint.getSignature().toShortString(), e.getMessage()); } - - //请求的方法名 - String className = joinPoint.getTarget().getClass().getName(); - String methodName = signature.getName(); - dto.setMethod(className + "." + methodName + "()"); - - - //设置操作类型 - if (CommonConstant.LOG_TYPE_2 == dto.getLogType()) { - dto.setOperateType(getOperateType(methodName, syslog.operateType())); - } - - //获取request - HttpServletRequest request = SpringContextUtils.getHttpServletRequest(); - //请求的参数 - dto.setRequestParam(getReqestParams(request,joinPoint)); - //设置IP地址 - dto.setIp(IpUtils.getIpAddr(request)); - //获取登录用户信息 - LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - if(sysUser!=null){ - dto.setUserid(sysUser.getUsername()); - dto.setUsername(sysUser.getRealname()); - - } - //耗时 - dto.setCostTime(time); - dto.setCreateTime(new Date()); - //保存系统日志 - baseCommonService.addLog(dto); } From 20b76afa0204f9dc9449d371f89b9c20b2eb5b0c Mon Sep 17 00:00:00 2001 From: wsm <2746563060@qq.com> Date: Wed, 5 Aug 2026 09:59:38 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat(syslog):=20=E6=93=8D=E4=BD=9C=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E5=92=8C=E7=99=BB=E5=BD=95=E6=97=A5=E5=BF=97=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E6=93=8D=E4=BD=9C=E4=BA=BA=E5=AF=86=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sys_log 新增 user_security_level 列,取值与 sys_user.user_security_level 一致 (字典:3非密/4一般/5重要),LogDTO/SysLog 实体同步补充字段。 --- .../src/main/java/org/jeecg/common/api/dto/LogDTO.java | 7 ++++++- .../main/java/org/jeecg/common/aspect/AutoLogAspect.java | 1 + .../org/jeecg/modules/base/mapper/xml/BaseCommonMapper.xml | 5 +++-- .../modules/base/service/impl/BaseCommonServiceImpl.java | 1 + .../main/java/org/jeecg/modules/system/entity/SysLog.java | 5 +++++ sql-changelog/README.md | 1 + .../ddl/20260805_系统日志表新增操作人密级字段.sql | 6 ++++++ 7 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 sql-changelog/ddl/20260805_系统日志表新增操作人密级字段.sql diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/LogDTO.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/LogDTO.java index 74dde4f..4a34edf 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/LogDTO.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/LogDTO.java @@ -60,7 +60,12 @@ public class LogDTO implements Serializable { * 客户终端类型 pc:电脑端 app:手机端 h5:移动网页端 */ private String clientType; - + + /** + * 操作人密级(3非密,4一般,5重要) + */ + private Integer userSecurityLevel; + public LogDTO(){ } diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/AutoLogAspect.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/AutoLogAspect.java index adc5715..be41114 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/AutoLogAspect.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/AutoLogAspect.java @@ -107,6 +107,7 @@ public class AutoLogAspect { if(sysUser!=null){ dto.setUserid(sysUser.getUsername()); dto.setUsername(sysUser.getRealname()); + dto.setUserSecurityLevel(sysUser.getUserSecurityLevel()); } //耗时 dto.setCostTime(time); diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/mapper/xml/BaseCommonMapper.xml b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/mapper/xml/BaseCommonMapper.xml index 8f5d80c..bb7f4ce 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/mapper/xml/BaseCommonMapper.xml +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/mapper/xml/BaseCommonMapper.xml @@ -4,7 +4,7 @@ - insert into sys_log (id, log_type, log_content, method, operate_type, request_url, request_type, request_param, ip, userid, username, cost_time, create_time,create_by, tenant_id, client_type) + insert into sys_log (id, log_type, log_content, method, operate_type, request_url, request_type, request_param, ip, userid, username, cost_time, create_time,create_by, tenant_id, client_type, user_security_level) values( #{dto.id,jdbcType=VARCHAR}, #{dto.logType,jdbcType=INTEGER}, @@ -21,7 +21,8 @@ #{dto.createTime,jdbcType=TIMESTAMP}, #{dto.createBy,jdbcType=VARCHAR}, #{dto.tenantId,jdbcType=INTEGER}, - #{dto.clientType,jdbcType=VARCHAR} + #{dto.clientType,jdbcType=VARCHAR}, + #{dto.userSecurityLevel,jdbcType=INTEGER} ) diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/service/impl/BaseCommonServiceImpl.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/service/impl/BaseCommonServiceImpl.java index bce29d0..b33bc15 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/service/impl/BaseCommonServiceImpl.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/service/impl/BaseCommonServiceImpl.java @@ -82,6 +82,7 @@ public class BaseCommonServiceImpl implements BaseCommonService { if(user!=null){ sysLog.setUserid(user.getUsername()); sysLog.setUsername(user.getRealname()); + sysLog.setUserSecurityLevel(user.getUserSecurityLevel()); } sysLog.setCreateTime(new Date()); //保存日志(异常捕获处理,防止数据太大存储失败,导致业务失败)JT-238 diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysLog.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysLog.java index 9aa07ed..3988b61 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysLog.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysLog.java @@ -120,4 +120,9 @@ public class SysLog implements Serializable { */ private Integer tenantId; + /** + * 操作人密级(3非密,4一般,5重要) + */ + private Integer userSecurityLevel; + } diff --git a/sql-changelog/README.md b/sql-changelog/README.md index c0431b2..dec652c 100644 --- a/sql-changelog/README.md +++ b/sql-changelog/README.md @@ -23,6 +23,7 @@ YYYYMMDD_描述.sql |------|------|------|------| | 2026-07-09 | DML | `20260709_新增督办状态字典.sql` | 新增 super_status 字典(未开始/督办中/已完成) | | 2026-07-09 | DML | `20260709_新增反馈任务状态字典.sql` | 新增 feedback_status 字典(未开始/进行中/已完成) | +| 2026-08-05 | DDL | `20260805_系统日志表新增操作人密级字段.sql` | sys_log 新增 user_security_level 列,记录操作人密级 | ## 使用方式 diff --git a/sql-changelog/ddl/20260805_系统日志表新增操作人密级字段.sql b/sql-changelog/ddl/20260805_系统日志表新增操作人密级字段.sql new file mode 100644 index 0000000..66d812d --- /dev/null +++ b/sql-changelog/ddl/20260805_系统日志表新增操作人密级字段.sql @@ -0,0 +1,6 @@ +-- 系统日志表新增操作人密级字段 +-- 记录操作日志/登录日志时,带上操作人密级,取值与 sys_user.user_security_level 一致 +-- 字典:user_security_level(3非密,4一般,5重要) +-- 变更日期:2026-08-05 +ALTER TABLE `sys_log` + ADD COLUMN `user_security_level` tinyint(1) NULL DEFAULT NULL COMMENT '操作人密级(3非密,4一般,5重要)' AFTER `client_type`;