From 04135f7044c5f7d657e11dcbd714ab7e1382dad7 Mon Sep 17 00:00:00 2001 From: caozehui <2427765068@qq.com> Date: Wed, 12 Feb 2025 14:44:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A5=E5=BF=97=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/PqIcdPathServiceImpl.java | 4 ++ .../type/service/impl/DevTypeServiceImpl.java | 4 ++ .../com/njcn/gather/EntranceApplication.java | 2 + system/pom.xml | 6 -- .../auth/controller/AuthController.java | 14 +++++ .../njcn/gather/system/log/aop/LogAdvice.java | 56 ++++++++++++------- .../system/log/pojo/enums/LogLevelEnum.java | 28 ++++++++++ .../log/pojo/enums/LogOperationTypeEnum.java | 18 ++++++ .../log/pojo/enums/LogResponseEnum.java | 21 +++++++ .../system/log/pojo/param/SysLogParam.java | 3 +- .../system/log/pojo/po/SysLogAudit.java | 7 +++ .../log/service/ISysLogAuditService.java | 17 ++++++ .../service/impl/SysLogAuditServiceImpl.java | 45 +++++++++++++-- 13 files changed, 191 insertions(+), 34 deletions(-) create mode 100644 system/src/main/java/com/njcn/gather/system/log/pojo/enums/LogLevelEnum.java create mode 100644 system/src/main/java/com/njcn/gather/system/log/pojo/enums/LogOperationTypeEnum.java create mode 100644 system/src/main/java/com/njcn/gather/system/log/pojo/enums/LogResponseEnum.java diff --git a/detection/src/main/java/com/njcn/gather/icd/service/impl/PqIcdPathServiceImpl.java b/detection/src/main/java/com/njcn/gather/icd/service/impl/PqIcdPathServiceImpl.java index c25914cc..10a253e9 100644 --- a/detection/src/main/java/com/njcn/gather/icd/service/impl/PqIcdPathServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/icd/service/impl/PqIcdPathServiceImpl.java @@ -17,6 +17,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -45,6 +46,7 @@ public class PqIcdPathServiceImpl extends ServiceImpl ids) { return this.lambdaUpdate().in(PqIcdPath::getId, ids).set(PqIcdPath::getState, DataStateEnum.DELETED.getCode()).update(); } diff --git a/detection/src/main/java/com/njcn/gather/type/service/impl/DevTypeServiceImpl.java b/detection/src/main/java/com/njcn/gather/type/service/impl/DevTypeServiceImpl.java index 6ef14a8d..31a9f7f2 100644 --- a/detection/src/main/java/com/njcn/gather/type/service/impl/DevTypeServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/type/service/impl/DevTypeServiceImpl.java @@ -14,6 +14,7 @@ import com.njcn.gather.type.pojo.po.DevType; import com.njcn.gather.type.service.IDevTypeService; import com.njcn.web.factory.PageFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -62,6 +63,7 @@ public class DevTypeServiceImpl extends ServiceImpl impl } @Override + @Transactional(rollbackFor = {Exception.class}) public boolean addDevType(DevTypeParam addParam) { this.checkRepeat(addParam, false); DevType devType = new DevType(); @@ -71,6 +73,7 @@ public class DevTypeServiceImpl extends ServiceImpl impl } @Override + @Transactional(rollbackFor = {Exception.class}) public boolean updateDevType(DevTypeParam.UpdateParam updateParam) { this.checkRepeat(updateParam, true); DevType devType = new DevType(); @@ -79,6 +82,7 @@ public class DevTypeServiceImpl extends ServiceImpl impl } @Override + @Transactional(rollbackFor = {Exception.class}) public boolean deleteDevType(List ids) { return this.lambdaUpdate().in(DevType::getId, ids).set(DevType::getState, DataStateEnum.DELETED.getCode()).update(); } diff --git a/entrance/src/main/java/com/njcn/gather/EntranceApplication.java b/entrance/src/main/java/com/njcn/gather/EntranceApplication.java index 5e43f8f5..ea7ca1ba 100644 --- a/entrance/src/main/java/com/njcn/gather/EntranceApplication.java +++ b/entrance/src/main/java/com/njcn/gather/EntranceApplication.java @@ -4,11 +4,13 @@ import lombok.extern.slf4j.Slf4j; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.EnableAspectJAutoProxy; @Slf4j @MapperScan("com.njcn.**.mapper") @SpringBootApplication(scanBasePackages = "com.njcn") +//@EnableAspectJAutoProxy public class EntranceApplication { public static void main(String[] args) { diff --git a/system/pom.xml b/system/pom.xml index e9df93ef..2ab74526 100644 --- a/system/pom.xml +++ b/system/pom.xml @@ -33,12 +33,6 @@ user 1.0.0 - - org.aspectj - aspectjweaver - 1.9.6 - compile - com.alibaba fastjson diff --git a/system/src/main/java/com/njcn/gather/system/auth/controller/AuthController.java b/system/src/main/java/com/njcn/gather/system/auth/controller/AuthController.java index f4a4a47d..2c48f8bd 100644 --- a/system/src/main/java/com/njcn/gather/system/auth/controller/AuthController.java +++ b/system/src/main/java/com/njcn/gather/system/auth/controller/AuthController.java @@ -14,12 +14,16 @@ import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.JwtUtil; import com.njcn.common.utils.LogUtil; import com.njcn.gather.system.auth.pojo.Token; +import com.njcn.gather.system.log.pojo.enums.LogOperationTypeEnum; +import com.njcn.gather.system.log.pojo.po.SysLogAudit; +import com.njcn.gather.system.log.service.ISysLogAuditService; import com.njcn.gather.user.pojo.constant.UserValidMessage; import com.njcn.gather.user.user.pojo.param.SysUserParam; import com.njcn.gather.user.user.pojo.po.SysUser; import com.njcn.gather.user.user.service.ISysUserService; import com.njcn.web.controller.BaseController; import com.njcn.web.utils.HttpResultUtil; +import com.njcn.web.utils.HttpServletUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -28,6 +32,8 @@ import org.apache.logging.log4j.util.Strings; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.HashMap; import java.util.Map; @@ -40,6 +46,7 @@ import java.util.Map; public class AuthController extends BaseController { private final ISysUserService sysUserService; + private final ISysLogAuditService sysLogAuditService; // @RequestMapping("/login") // public HttpResult login() { @@ -86,6 +93,7 @@ public class AuthController extends BaseController { customCacheUtil.putWithExpireTime(accessToken, JSON.toJSONString(user), DateUnit.DAY.getMillis() * 2); customCacheUtil.putWithExpireTime(refreshToken, JSON.toJSONString(user), (DateUnit.DAY.getMillis() * 4)); + sysLogAuditService.saveAuthLog(user.getName(), 1); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, token, methodDescribe); } } @@ -105,6 +113,10 @@ public class AuthController extends BaseController { customCacheUtil.remove(accessToken); customCacheUtil.remove(refreshToken); + Map map = JwtUtil.parseToken(accessToken); + SysUser user = sysUserService.getById((String) map.get(SecurityConstants.USER_ID)); + sysLogAuditService.saveAuthLog(user.getName(), 2); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); } return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe); @@ -140,4 +152,6 @@ public class AuthController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe); } } + + } diff --git a/system/src/main/java/com/njcn/gather/system/log/aop/LogAdvice.java b/system/src/main/java/com/njcn/gather/system/log/aop/LogAdvice.java index cbc5e1cd..ec12c6d8 100644 --- a/system/src/main/java/com/njcn/gather/system/log/aop/LogAdvice.java +++ b/system/src/main/java/com/njcn/gather/system/log/aop/LogAdvice.java @@ -1,5 +1,6 @@ package com.njcn.gather.system.log.aop; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; import com.alibaba.fastjson.JSONObject; @@ -7,14 +8,19 @@ import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.njcn.common.bean.CustomCacheUtil; import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.constant.SecurityConstants; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.common.utils.JwtUtil; import com.njcn.db.mybatisplus.constant.UserConstant; +import com.njcn.gather.system.log.pojo.enums.LogLevelEnum; +import com.njcn.gather.system.log.pojo.enums.LogOperationTypeEnum; +import com.njcn.gather.system.log.pojo.enums.LogResponseEnum; import com.njcn.gather.system.log.pojo.po.SysLogAudit; import com.njcn.gather.system.log.service.ISysLogAuditService; import com.njcn.gather.user.user.pojo.po.SysUser; +import com.njcn.gather.user.user.service.ISysUserService; import com.njcn.web.utils.HttpServletUtil; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; import org.apache.logging.log4j.util.Strings; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; @@ -27,6 +33,9 @@ import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletRequest; import java.lang.reflect.Method; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Map; import java.util.concurrent.*; /** @@ -36,15 +45,16 @@ import java.util.concurrent.*; @Aspect @Component -@Slf4j @RequiredArgsConstructor public class LogAdvice implements ApplicationListener { private final ISysLogAuditService sysLogAuditService; + private final ISysUserService sysUserService; private BlockingQueue logQueue = new LinkedBlockingDeque<>(); - @Pointcut(value = "execution(* com.njcn.gather..controller.*(..))") + // @Pointcut(value = "execution(* com.njcn.gather..controller.*(..))") + @Pointcut(value = "execution(* com.njcn.gather..controller.*.*(..)) && !execution(* com.njcn.gather..controller.AuthController.*(..))") public void logPointcut() { } @@ -55,49 +65,52 @@ public class LogAdvice implements ApplicationListener { String authorization = request.getHeader(SecurityConstants.AUTHORIZATION_KEY); if (StrUtil.isNotBlank(authorization)) { String tokenStr = authorization.replace(SecurityConstants.AUTHORIZATION_PREFIX, Strings.EMPTY); - CustomCacheUtil customCacheUtil = SpringUtil.getBean(CustomCacheUtil.CACHE_NAME); - String userjson = customCacheUtil.get(tokenStr, false); - SysUser user = JSONObject.parseObject(userjson, SysUser.class); - username = user.getName(); - } +// CustomCacheUtil customCacheUtil = SpringUtil.getBean(CustomCacheUtil.CACHE_NAME); +// String userjson = customCacheUtil.get(tokenStr, false); +// SysUser user = JSONObject.parseObject(userjson, SysUser.class); +// username = user.getName(); -// String operationType = ""; -// String operateResult = "成功"; -// Integer level = 0; -// Integer warn = 0; + Map map = JwtUtil.parseToken(tokenStr); + SysUser user = sysUserService.getById((String) map.get(SecurityConstants.USER_ID)); + if(ObjectUtil.isNotNull(user)){ + username = user.getName(); + } + } Object result = null; try { result = joinPoint.proceed(); - addLogToQueue(joinPoint, "".equals(username) ? UserConstant.UNKNOWN_USER_ID : username, "操作日志", "成功", 0, 0); + addLogToQueue(joinPoint, "".equals(username) ? UserConstant.UNKNOWN_USER_ID : username, LogOperationTypeEnum.OPERATE.getMsg(), 1, LogLevelEnum.INFO.getCode(), 0); } catch (Throwable e) { - addLogToQueue(joinPoint, "".equals(username) ? UserConstant.UNKNOWN_USER_ID : username, "告警日志", "失败", 1, 1); + addLogToQueue(joinPoint, "".equals(username) ? UserConstant.UNKNOWN_USER_ID : username, LogOperationTypeEnum.OPERATE.getMsg(), 0, LogLevelEnum.ERROR.getCode(), 1); throw e; } return result; } - private void addLogToQueue(ProceedingJoinPoint joinPoint, String username, String operationType, String result, Integer level, Integer warn) { + private void addLogToQueue(ProceedingJoinPoint joinPoint, String username, String operationType, Integer result, Integer level, Integer warn) { SysLogAudit sysLogAudit = new SysLogAudit(); - sysLogAudit.setCreateBy(username); sysLogAudit.setOperateType(operationType); sysLogAudit.setLevel(level); - sysLogAudit.setWarn(warn); + sysLogAudit.setWarn(warn); //0-未告警,1-告警 + sysLogAudit.setCreateBy(username); HttpServletRequest request = HttpServletUtil.getRequest(); sysLogAudit.setIp(request.getRemoteAddr()); MethodSignature signature = (MethodSignature) joinPoint.getSignature(); Method method = signature.getMethod(); - ApiOperation apiOperation = method.getAnnotation(ApiOperation.class); OperateInfo operateInfo = method.getAnnotation(OperateInfo.class); + ApiOperation apiOperation = method.getAnnotation(ApiOperation.class); + String resultStr = (result == 1 ? "成功" : "失败"); if (operateInfo != null) { //注解上的操作类型 - sysLogAudit.setResult(operateInfo.operateType() + result); + sysLogAudit.setResult(operateInfo.operateType() + resultStr); } if (apiOperation != null) { //注解上的描述 - sysLogAudit.setRemark(apiOperation.value()); + String now = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + sysLogAudit.setRemark(username + "用户:" + now + " " + apiOperation.value() + " " + resultStr); } //Object[] args = joinPoint.getArgs(); logQueue.add(sysLogAudit); @@ -116,10 +129,11 @@ public class LogAdvice implements ApplicationListener { try { SysLogAudit log = logQueue.poll(5, TimeUnit.MILLISECONDS); if (log != null) { + log.setSort(sysLogAuditService.getMaxSort() + 1); sysLogAuditService.save(log); } } catch (Exception e) { - log.error("insert operation log to db error", e); + throw new BusinessException(LogResponseEnum.LOG_RECORD_FAILED); } } } diff --git a/system/src/main/java/com/njcn/gather/system/log/pojo/enums/LogLevelEnum.java b/system/src/main/java/com/njcn/gather/system/log/pojo/enums/LogLevelEnum.java new file mode 100644 index 00000000..f67a9e7a --- /dev/null +++ b/system/src/main/java/com/njcn/gather/system/log/pojo/enums/LogLevelEnum.java @@ -0,0 +1,28 @@ +package com.njcn.gather.system.log.pojo.enums; + +import lombok.Getter; + +/** + * @author caozehui + * @data 2025-02-12 + */ +@Getter +public enum LogLevelEnum { + DEBUG(1, "DEBUG"), + INFO(2, "INFO"), + WARN(3, "WARN"), + ERROR(4, "ERROR"), + FATAL(5, "FATAL"); + + private final int code; + private final String msg; + + LogLevelEnum(int code, String msg) { + this.code = code; + this.msg = msg; + } + + public static LogLevelEnum getEnum(int code) { + return LogLevelEnum.values()[code - 1]; + } +} diff --git a/system/src/main/java/com/njcn/gather/system/log/pojo/enums/LogOperationTypeEnum.java b/system/src/main/java/com/njcn/gather/system/log/pojo/enums/LogOperationTypeEnum.java new file mode 100644 index 00000000..f6797d7c --- /dev/null +++ b/system/src/main/java/com/njcn/gather/system/log/pojo/enums/LogOperationTypeEnum.java @@ -0,0 +1,18 @@ +package com.njcn.gather.system.log.pojo.enums; + +import lombok.Getter; + +/** + * @author caozehui + * @data 2025-02-12 + */ +@Getter +public enum LogOperationTypeEnum { + OPERATE("操作日志"), + WARNING("告警日志"); + + private String msg; + LogOperationTypeEnum(String msg) { + this.msg = msg; + } +} diff --git a/system/src/main/java/com/njcn/gather/system/log/pojo/enums/LogResponseEnum.java b/system/src/main/java/com/njcn/gather/system/log/pojo/enums/LogResponseEnum.java new file mode 100644 index 00000000..f22e59ff --- /dev/null +++ b/system/src/main/java/com/njcn/gather/system/log/pojo/enums/LogResponseEnum.java @@ -0,0 +1,21 @@ +package com.njcn.gather.system.log.pojo.enums; + +import lombok.Getter; + +/** + * @author caozehui + * @data 2025-02-12 + */ +@Getter +public enum LogResponseEnum { + + LOG_RECORD_FAILED("A006001", "日志记录失败"); + + private final String code; + private final String message; + + LogResponseEnum(String code, String message) { + this.message = message; + this.code = code; + } +} diff --git a/system/src/main/java/com/njcn/gather/system/log/pojo/param/SysLogParam.java b/system/src/main/java/com/njcn/gather/system/log/pojo/param/SysLogParam.java index 744b5e8a..bd728796 100644 --- a/system/src/main/java/com/njcn/gather/system/log/pojo/param/SysLogParam.java +++ b/system/src/main/java/com/njcn/gather/system/log/pojo/param/SysLogParam.java @@ -19,11 +19,10 @@ public class SysLogParam { @Data @EqualsAndHashCode(callSuper = true) public static class QueryParam extends BaseParam { - @ApiModelProperty("操作类型") + @ApiModelProperty("日志类型") private String operateType; @ApiModelProperty("操作用户") - @Pattern(regexp = PatternRegex.SYSTEM_ID, message = SystemValidMessage.USER_ID_FORMAT_ERROR) private String createBy; } } diff --git a/system/src/main/java/com/njcn/gather/system/log/pojo/po/SysLogAudit.java b/system/src/main/java/com/njcn/gather/system/log/pojo/po/SysLogAudit.java index bcb4ee3c..8f757ead 100644 --- a/system/src/main/java/com/njcn/gather/system/log/pojo/po/SysLogAudit.java +++ b/system/src/main/java/com/njcn/gather/system/log/pojo/po/SysLogAudit.java @@ -11,6 +11,7 @@ import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import lombok.Data; import java.io.Serializable; +import java.math.BigInteger; import java.time.LocalDateTime; /** @@ -62,6 +63,12 @@ public class SysLogAudit implements Serializable { @TableField(fill = FieldFill.INSERT) private String createBy; + /** + * 排序 + */ + + private Integer sort; + /** * 创建时间 */ diff --git a/system/src/main/java/com/njcn/gather/system/log/service/ISysLogAuditService.java b/system/src/main/java/com/njcn/gather/system/log/service/ISysLogAuditService.java index ebe6bfdb..b0aa151e 100644 --- a/system/src/main/java/com/njcn/gather/system/log/service/ISysLogAuditService.java +++ b/system/src/main/java/com/njcn/gather/system/log/service/ISysLogAuditService.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.njcn.gather.system.log.pojo.param.SysLogParam; import com.njcn.gather.system.log.pojo.po.SysLogAudit; import com.njcn.gather.system.log.pojo.vo.SysLogVO; +import io.swagger.models.auth.In; import org.aspectj.lang.JoinPoint; /** @@ -23,6 +24,7 @@ public interface ISysLogAuditService extends IService { /** * 导出审计日志数据 + * * @param param 查询参数 */ void exportSysLogAuditData(SysLogParam.QueryParam param); @@ -34,4 +36,19 @@ public interface ISysLogAuditService extends IService { * @return 成功返回true,失败返回false */ //boolean addSysLogAudit(SysLogParam sysLogParam); + + /** + * 保存登录、注销日志 + * + * @param username 用户名 + * @param type 1登录,2注销 + */ + void saveAuthLog(String username, Integer type); + + /** + * 获取最大的排序值 + * + * @return + */ + Integer getMaxSort(); } diff --git a/system/src/main/java/com/njcn/gather/system/log/service/impl/SysLogAuditServiceImpl.java b/system/src/main/java/com/njcn/gather/system/log/service/impl/SysLogAuditServiceImpl.java index 820db266..7c5018f3 100644 --- a/system/src/main/java/com/njcn/gather/system/log/service/impl/SysLogAuditServiceImpl.java +++ b/system/src/main/java/com/njcn/gather/system/log/service/impl/SysLogAuditServiceImpl.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.gather.system.log.mapper.SysLogAuditMapper; +import com.njcn.gather.system.log.pojo.enums.LogLevelEnum; +import com.njcn.gather.system.log.pojo.enums.LogOperationTypeEnum; import com.njcn.gather.system.log.pojo.param.SysLogParam; import com.njcn.gather.system.log.pojo.po.SysLogAudit; import com.njcn.gather.system.log.service.ISysLogAuditService; @@ -13,12 +15,16 @@ import com.njcn.gather.system.log.util.CSVUtil; import com.njcn.gather.user.user.pojo.po.SysUser; import com.njcn.gather.user.user.service.ISysUserService; import com.njcn.web.factory.PageFactory; +import com.njcn.web.utils.HttpServletUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -40,11 +46,11 @@ public class SysLogAuditServiceImpl extends ServiceImpl listSysLogAudit(SysLogParam.QueryParam param) { QueryWrapper queryWrapper = new QueryWrapper<>(); if (ObjectUtil.isNotNull(param)) { - queryWrapper.eq(StrUtil.isNotBlank(param.getOperateType()), "sys_log_audit.Operate_Type", param.getOperateType()) - .eq(StrUtil.isNotBlank(param.getCreateBy()), "sys_log_audit.Create_By", param.getCreateBy()) + queryWrapper.like(StrUtil.isNotBlank(param.getOperateType()), "sys_log_audit.Operate_Type", param.getOperateType()) + .like(StrUtil.isNotBlank(param.getCreateBy()), "sys_log_audit.Create_By", param.getCreateBy()) .between(StrUtil.isAllNotBlank(param.getSearchBeginTime(), param.getSearchEndTime()), "sys_log_audit.Create_Time", param.getSearchBeginTime(), param.getSearchEndTime()); } - queryWrapper.orderByDesc("sys_log_audit.Create_Time"); + queryWrapper.orderByDesc("sys_log_audit.Sort"); return this.page(new Page<>(PageFactory.getPageNum(param), PageFactory.getPageSize(param)), queryWrapper); } @@ -64,7 +70,7 @@ public class SysLogAuditServiceImpl extends ServiceImpl