mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-10-31 22:57:17 +08:00 
			
		
		
		
	优化:优化模型类命名(为数据模型类添加 DO 后缀),并优化所有模型相关变量命名
This commit is contained in:
		| @@ -53,7 +53,7 @@ import top.charles7c.cnadmin.common.util.holder.LogContextHolder; | ||||
| import top.charles7c.cnadmin.monitor.annotation.Log; | ||||
| import top.charles7c.cnadmin.monitor.config.properties.LogProperties; | ||||
| import top.charles7c.cnadmin.monitor.enums.LogStatusEnum; | ||||
| import top.charles7c.cnadmin.monitor.model.entity.SysLog; | ||||
| import top.charles7c.cnadmin.monitor.model.entity.LogDO; | ||||
|  | ||||
| /** | ||||
|  * 系统日志拦截器 | ||||
| @@ -83,20 +83,20 @@ public class LogInterceptor implements HandlerInterceptor { | ||||
|     public void afterCompletion(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response, | ||||
|         @NonNull Object handler, Exception e) { | ||||
|         // 记录请求耗时及异常信息 | ||||
|         SysLog sysLog = this.logElapsedTimeAndException(); | ||||
|         if (sysLog == null) { | ||||
|         LogDO logDO = this.logElapsedTimeAndException(); | ||||
|         if (logDO == null) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         // 记录日志描述 | ||||
|         this.logDescription(sysLog, handler); | ||||
|         this.logDescription(logDO, handler); | ||||
|         // 记录请求信息 | ||||
|         this.logRequest(sysLog, request); | ||||
|         this.logRequest(logDO, request); | ||||
|         // 记录响应信息 | ||||
|         this.logResponse(sysLog, response); | ||||
|         this.logResponse(logDO, response); | ||||
|  | ||||
|         // 保存系统日志 | ||||
|         SpringUtil.getApplicationContext().publishEvent(sysLog); | ||||
|         SpringUtil.getApplicationContext().publishEvent(logDO); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -114,28 +114,28 @@ public class LogInterceptor implements HandlerInterceptor { | ||||
|      * | ||||
|      * @return 系统日志信息 | ||||
|      */ | ||||
|     private SysLog logElapsedTimeAndException() { | ||||
|     private LogDO logElapsedTimeAndException() { | ||||
|         LogContext logContext = LogContextHolder.get(); | ||||
|         if (logContext != null) { | ||||
|             LogContextHolder.remove(); | ||||
|             SysLog sysLog = new SysLog(); | ||||
|             sysLog.setCreateTime(logContext.getCreateTime()); | ||||
|             sysLog.setElapsedTime(System.currentTimeMillis() - LocalDateTimeUtil.toEpochMilli(sysLog.getCreateTime())); | ||||
|             sysLog.setStatus(LogStatusEnum.SUCCESS); | ||||
|             LogDO logDO = new LogDO(); | ||||
|             logDO.setCreateTime(logContext.getCreateTime()); | ||||
|             logDO.setElapsedTime(System.currentTimeMillis() - LocalDateTimeUtil.toEpochMilli(logDO.getCreateTime())); | ||||
|             logDO.setStatus(LogStatusEnum.SUCCESS); | ||||
|  | ||||
|             // 记录错误信息(非未知异常不记录异常详情,只记录错误信息) | ||||
|             String errorMsg = logContext.getErrorMsg(); | ||||
|             if (StrUtil.isNotBlank(errorMsg)) { | ||||
|                 sysLog.setStatus(LogStatusEnum.FAILURE); | ||||
|                 sysLog.setErrorMsg(errorMsg); | ||||
|                 logDO.setStatus(LogStatusEnum.FAILURE); | ||||
|                 logDO.setErrorMsg(errorMsg); | ||||
|             } | ||||
|             // 记录异常详情 | ||||
|             Exception exception = logContext.getException(); | ||||
|             if (exception != null) { | ||||
|                 sysLog.setStatus(LogStatusEnum.FAILURE); | ||||
|                 sysLog.setExceptionDetail(ExceptionUtil.stacktraceToString(exception, -1)); | ||||
|                 logDO.setStatus(LogStatusEnum.FAILURE); | ||||
|                 logDO.setExceptionDetail(ExceptionUtil.stacktraceToString(exception, -1)); | ||||
|             } | ||||
|             return sysLog; | ||||
|             return logDO; | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
| @@ -143,69 +143,69 @@ public class LogInterceptor implements HandlerInterceptor { | ||||
|     /** | ||||
|      * 记录日志描述 | ||||
|      * | ||||
|      * @param sysLog | ||||
|      * @param logDO | ||||
|      *            系统日志信息 | ||||
|      * @param handler | ||||
|      *            处理器 | ||||
|      */ | ||||
|     private void logDescription(SysLog sysLog, Object handler) { | ||||
|     private void logDescription(LogDO logDO, Object handler) { | ||||
|         HandlerMethod handlerMethod = (HandlerMethod)handler; | ||||
|         Operation methodOperation = AnnotationUtils.findAnnotation(handlerMethod.getMethod(), Operation.class); | ||||
|         Log methodLog = AnnotationUtils.findAnnotation(handlerMethod.getMethod(), Log.class); | ||||
|  | ||||
|         if (methodOperation != null) { | ||||
|             sysLog.setDescription( | ||||
|             logDO.setDescription( | ||||
|                 StrUtil.isNotBlank(methodOperation.summary()) ? methodOperation.summary() : "请在该接口方法上指定日志描述"); | ||||
|         } | ||||
|         // 例如:@Log("获取验证码") -> 获取验证码 | ||||
|         if (methodLog != null && StrUtil.isNotBlank(methodLog.value())) { | ||||
|             sysLog.setDescription(methodLog.value()); | ||||
|             logDO.setDescription(methodLog.value()); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 记录请求信息 | ||||
|      * | ||||
|      * @param sysLog | ||||
|      * @param logDO | ||||
|      *            系统日志信息 | ||||
|      * @param request | ||||
|      *            请求对象 | ||||
|      */ | ||||
|     private void logRequest(SysLog sysLog, HttpServletRequest request) { | ||||
|         sysLog.setRequestUrl(StrUtil.isBlank(request.getQueryString()) ? request.getRequestURL().toString() | ||||
|     private void logRequest(LogDO logDO, HttpServletRequest request) { | ||||
|         logDO.setRequestUrl(StrUtil.isBlank(request.getQueryString()) ? request.getRequestURL().toString() | ||||
|             : request.getRequestURL().append("?").append(request.getQueryString()).toString()); | ||||
|         sysLog.setRequestMethod(request.getMethod()); | ||||
|         sysLog.setRequestHeaders(this.desensitize(ServletUtil.getHeaderMap(request))); | ||||
|         logDO.setRequestMethod(request.getMethod()); | ||||
|         logDO.setRequestHeaders(this.desensitize(ServletUtil.getHeaderMap(request))); | ||||
|         String requestBody = this.getRequestBody(request); | ||||
|         if (StrUtil.isNotBlank(requestBody)) { | ||||
|             sysLog.setRequestBody(this.desensitize( | ||||
|             logDO.setRequestBody(this.desensitize( | ||||
|                 JSONUtil.isTypeJSON(requestBody) ? JSONUtil.parseObj(requestBody) : ServletUtil.getParamMap(request))); | ||||
|         } | ||||
|         sysLog.setClientIp(ServletUtil.getClientIP(request)); | ||||
|         sysLog.setLocation(IpUtils.getCityInfo(sysLog.getClientIp())); | ||||
|         sysLog.setBrowser(ServletUtils.getBrowser(request)); | ||||
|         sysLog.setCreateUser(sysLog.getCreateUser() == null ? LoginHelper.getUserId() : sysLog.getCreateUser()); | ||||
|         logDO.setClientIp(ServletUtil.getClientIP(request)); | ||||
|         logDO.setLocation(IpUtils.getCityInfo(logDO.getClientIp())); | ||||
|         logDO.setBrowser(ServletUtils.getBrowser(request)); | ||||
|         logDO.setCreateUser(logDO.getCreateUser() == null ? LoginHelper.getUserId() : logDO.getCreateUser()); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 记录响应信息 | ||||
|      * | ||||
|      * @param sysLog | ||||
|      * @param logDO | ||||
|      *            系统日志信息 | ||||
|      * @param response | ||||
|      *            响应对象 | ||||
|      */ | ||||
|     private void logResponse(SysLog sysLog, HttpServletResponse response) { | ||||
|     private void logResponse(LogDO logDO, HttpServletResponse response) { | ||||
|         int status = response.getStatus(); | ||||
|         sysLog.setStatusCode(status); | ||||
|         sysLog.setResponseHeaders(this.desensitize(ServletUtil.getHeadersMap(response))); | ||||
|         logDO.setStatusCode(status); | ||||
|         logDO.setResponseHeaders(this.desensitize(ServletUtil.getHeadersMap(response))); | ||||
|         // 响应体(不记录非 JSON 响应数据) | ||||
|         String responseBody = this.getResponseBody(response); | ||||
|         if (StrUtil.isNotBlank(responseBody) && JSONUtil.isTypeJSON(responseBody)) { | ||||
|             sysLog.setResponseBody(responseBody); | ||||
|             logDO.setResponseBody(responseBody); | ||||
|         } | ||||
|         // 操作失败:>= 400 | ||||
|         sysLog.setStatus(status >= HttpStatus.HTTP_BAD_REQUEST ? LogStatusEnum.FAILURE : sysLog.getStatus()); | ||||
|         logDO.setStatus(status >= HttpStatus.HTTP_BAD_REQUEST ? LogStatusEnum.FAILURE : logDO.getStatus()); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|   | ||||
| @@ -18,7 +18,7 @@ package top.charles7c.cnadmin.monitor.mapper; | ||||
|  | ||||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||||
|  | ||||
| import top.charles7c.cnadmin.monitor.model.entity.SysLog; | ||||
| import top.charles7c.cnadmin.monitor.model.entity.LogDO; | ||||
|  | ||||
| /** | ||||
|  * 系统日志 Mapper | ||||
| @@ -26,4 +26,4 @@ import top.charles7c.cnadmin.monitor.model.entity.SysLog; | ||||
|  * @author Charles7c | ||||
|  * @since 2022/12/22 21:47 | ||||
|  */ | ||||
| public interface LogMapper extends BaseMapper<SysLog> {} | ||||
| public interface LogMapper extends BaseMapper<LogDO> {} | ||||
|   | ||||
| @@ -34,7 +34,7 @@ import top.charles7c.cnadmin.monitor.enums.LogStatusEnum; | ||||
|  */ | ||||
| @Data | ||||
| @TableName("sys_log") | ||||
| public class SysLog implements Serializable { | ||||
| public class LogDO implements Serializable { | ||||
| 
 | ||||
|     private static final long serialVersionUID = 1L; | ||||
| 
 | ||||
| @@ -17,7 +17,7 @@ | ||||
| package top.charles7c.cnadmin.monitor.service; | ||||
|  | ||||
| import top.charles7c.cnadmin.common.model.query.PageQuery; | ||||
| import top.charles7c.cnadmin.common.model.vo.PageInfo; | ||||
| import top.charles7c.cnadmin.common.model.vo.PageDataVO; | ||||
| import top.charles7c.cnadmin.monitor.model.query.LoginLogQuery; | ||||
| import top.charles7c.cnadmin.monitor.model.query.OperationLogQuery; | ||||
| import top.charles7c.cnadmin.monitor.model.query.SystemLogQuery; | ||||
| @@ -43,7 +43,7 @@ public interface LogService { | ||||
|      *            分页查询条件 | ||||
|      * @return 操作日志分页信息 | ||||
|      */ | ||||
|     PageInfo<OperationLogVO> list(OperationLogQuery query, PageQuery pageQuery); | ||||
|     PageDataVO<OperationLogVO> list(OperationLogQuery query, PageQuery pageQuery); | ||||
|  | ||||
|     /** | ||||
|      * 分页查询登录日志列表 | ||||
| @@ -54,7 +54,7 @@ public interface LogService { | ||||
|      *            分页查询条件 | ||||
|      * @return 登录日志分页信息 | ||||
|      */ | ||||
|     PageInfo<LoginLogVO> list(LoginLogQuery query, PageQuery pageQuery); | ||||
|     PageDataVO<LoginLogVO> list(LoginLogQuery query, PageQuery pageQuery); | ||||
|  | ||||
|     /** | ||||
|      * 分页查询系统日志列表 | ||||
| @@ -65,7 +65,7 @@ public interface LogService { | ||||
|      *            分页查询条件 | ||||
|      * @return 系统日志分页信息 | ||||
|      */ | ||||
|     PageInfo<SystemLogVO> list(SystemLogQuery query, PageQuery pageQuery); | ||||
|     PageDataVO<SystemLogVO> list(SystemLogQuery query, PageQuery pageQuery); | ||||
|  | ||||
|     /** | ||||
|      * 查看系统日志详情 | ||||
|   | ||||
| @@ -34,13 +34,13 @@ import cn.hutool.core.bean.BeanUtil; | ||||
| import cn.hutool.core.util.StrUtil; | ||||
|  | ||||
| import top.charles7c.cnadmin.common.model.query.PageQuery; | ||||
| import top.charles7c.cnadmin.common.model.vo.PageInfo; | ||||
| import top.charles7c.cnadmin.common.model.vo.PageDataVO; | ||||
| import top.charles7c.cnadmin.common.util.ExceptionUtils; | ||||
| import top.charles7c.cnadmin.common.util.ReflectUtils; | ||||
| import top.charles7c.cnadmin.common.util.helper.QueryHelper; | ||||
| import top.charles7c.cnadmin.common.util.validate.CheckUtils; | ||||
| import top.charles7c.cnadmin.monitor.mapper.LogMapper; | ||||
| import top.charles7c.cnadmin.monitor.model.entity.SysLog; | ||||
| import top.charles7c.cnadmin.monitor.model.entity.LogDO; | ||||
| import top.charles7c.cnadmin.monitor.model.query.LoginLogQuery; | ||||
| import top.charles7c.cnadmin.monitor.model.query.OperationLogQuery; | ||||
| import top.charles7c.cnadmin.monitor.model.query.SystemLogQuery; | ||||
| @@ -64,13 +64,13 @@ public class LogServiceImpl implements LogService { | ||||
|  | ||||
|     @Async | ||||
|     @EventListener | ||||
|     public void save(SysLog sysLog) { | ||||
|         logMapper.insert(sysLog); | ||||
|     public void save(LogDO logDO) { | ||||
|         logMapper.insert(logDO); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public PageInfo<OperationLogVO> list(OperationLogQuery query, PageQuery pageQuery) { | ||||
|         QueryWrapper<SysLog> queryWrapper = QueryHelper.build(query); | ||||
|     public PageDataVO<OperationLogVO> list(OperationLogQuery query, PageQuery pageQuery) { | ||||
|         QueryWrapper<LogDO> queryWrapper = QueryHelper.build(query); | ||||
|  | ||||
|         // 限定查询信息 | ||||
|         String[] fieldsName = ReflectUtils.getNonStaticFieldsName(OperationLogVO.class); | ||||
| @@ -79,24 +79,24 @@ public class LogServiceImpl implements LogService { | ||||
|         queryWrapper.select(columns); | ||||
|  | ||||
|         // 分页查询 | ||||
|         IPage<SysLog> page = logMapper.selectPage(pageQuery.toPage(), queryWrapper); | ||||
|         PageInfo<OperationLogVO> pageInfo = PageInfo.build(page, OperationLogVO.class); | ||||
|         IPage<LogDO> page = logMapper.selectPage(pageQuery.toPage(), queryWrapper); | ||||
|         PageDataVO<OperationLogVO> pageDataVO = PageDataVO.build(page, OperationLogVO.class); | ||||
|  | ||||
|         // 填充数据(如果是查询个人操作日志,只查询一次用户信息即可) | ||||
|         if (query.getUid() != null) { | ||||
|             String nickname = ExceptionUtils.exToNull(() -> userService.getById(query.getUid()).getNickname()); | ||||
|             pageInfo.getList().forEach(o -> o.setCreateUserString(nickname)); | ||||
|             pageDataVO.getList().forEach(o -> o.setCreateUserString(nickname)); | ||||
|         } else { | ||||
|             pageInfo.getList().forEach(this::fill); | ||||
|             pageDataVO.getList().forEach(this::fill); | ||||
|         } | ||||
|         return pageInfo; | ||||
|         return pageDataVO; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public PageInfo<LoginLogVO> list(LoginLogQuery query, PageQuery pageQuery) { | ||||
|         QueryWrapper<SysLog> queryWrapper = QueryHelper.build(query); | ||||
|     public PageDataVO<LoginLogVO> list(LoginLogQuery query, PageQuery pageQuery) { | ||||
|         QueryWrapper<LogDO> queryWrapper = QueryHelper.build(query); | ||||
|         queryWrapper.lambda() | ||||
|             .and(qw -> qw.like(SysLog::getRequestUrl, "/auth/login").or().like(SysLog::getRequestUrl, "/auth/logout")); | ||||
|             .and(qw -> qw.like(LogDO::getRequestUrl, "/auth/login").or().like(LogDO::getRequestUrl, "/auth/logout")); | ||||
|  | ||||
|         // 限定查询信息 | ||||
|         String[] fieldsName = ReflectUtils.getNonStaticFieldsName(LoginLogVO.class); | ||||
| @@ -105,17 +105,17 @@ public class LogServiceImpl implements LogService { | ||||
|         queryWrapper.select(columns); | ||||
|  | ||||
|         // 分页查询 | ||||
|         IPage<SysLog> page = logMapper.selectPage(pageQuery.toPage(), queryWrapper); | ||||
|         PageInfo<LoginLogVO> pageInfo = PageInfo.build(page, LoginLogVO.class); | ||||
|         IPage<LogDO> page = logMapper.selectPage(pageQuery.toPage(), queryWrapper); | ||||
|         PageDataVO<LoginLogVO> pageDataVO = PageDataVO.build(page, LoginLogVO.class); | ||||
|  | ||||
|         // 填充数据 | ||||
|         pageInfo.getList().forEach(this::fill); | ||||
|         return pageInfo; | ||||
|         pageDataVO.getList().forEach(this::fill); | ||||
|         return pageDataVO; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public PageInfo<SystemLogVO> list(SystemLogQuery query, PageQuery pageQuery) { | ||||
|         QueryWrapper<SysLog> queryWrapper = QueryHelper.build(query); | ||||
|     public PageDataVO<SystemLogVO> list(SystemLogQuery query, PageQuery pageQuery) { | ||||
|         QueryWrapper<LogDO> queryWrapper = QueryHelper.build(query); | ||||
|  | ||||
|         // 限定查询信息 | ||||
|         String[] fieldsName = ReflectUtils.getNonStaticFieldsName(SystemLogVO.class); | ||||
| @@ -124,35 +124,36 @@ public class LogServiceImpl implements LogService { | ||||
|         queryWrapper.select(columns); | ||||
|  | ||||
|         // 分页查询 | ||||
|         IPage<SysLog> page = logMapper.selectPage(pageQuery.toPage(), queryWrapper); | ||||
|         PageInfo<SystemLogVO> pageInfo = PageInfo.build(page, SystemLogVO.class); | ||||
|         IPage<LogDO> page = logMapper.selectPage(pageQuery.toPage(), queryWrapper); | ||||
|         PageDataVO<SystemLogVO> pageDataVO = PageDataVO.build(page, SystemLogVO.class); | ||||
|  | ||||
|         // 填充数据 | ||||
|         pageInfo.getList().forEach(this::fill); | ||||
|         return pageInfo; | ||||
|         pageDataVO.getList().forEach(this::fill); | ||||
|         return pageDataVO; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public SystemLogDetailVO detail(Long logId) { | ||||
|         SysLog sysLog = logMapper.selectById(logId); | ||||
|         CheckUtils.throwIfNull(sysLog, String.format("ID为 [%s] 的日志已不存在", logId)); | ||||
|         LogDO logDO = logMapper.selectById(logId); | ||||
|         CheckUtils.throwIfNull(logDO, String.format("ID为 [%s] 的日志已不存在", logId)); | ||||
|  | ||||
|         SystemLogDetailVO detailVO = BeanUtil.copyProperties(sysLog, SystemLogDetailVO.class); | ||||
|         this.fill(detailVO); | ||||
|         return detailVO; | ||||
|         SystemLogDetailVO systemLogDetailVO = BeanUtil.copyProperties(logDO, SystemLogDetailVO.class); | ||||
|         this.fill(systemLogDetailVO); | ||||
|         return systemLogDetailVO; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 填充数据 | ||||
|      * | ||||
|      * @param vo | ||||
|      *            VO | ||||
|      * @param logVO | ||||
|      *            日志信息 | ||||
|      */ | ||||
|     private void fill(LogVO vo) { | ||||
|         Long createUser = vo.getCreateUser(); | ||||
|     private void fill(LogVO logVO) { | ||||
|         Long createUser = logVO.getCreateUser(); | ||||
|         if (createUser == null) { | ||||
|             return; | ||||
|         } | ||||
|         vo.setCreateUserString(ExceptionUtils.exToNull(() -> userService.getById(vo.getCreateUser())).getNickname()); | ||||
|         logVO.setCreateUserString( | ||||
|             ExceptionUtils.exToNull(() -> userService.getById(logVO.getCreateUser())).getNickname()); | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user