优化:优化模型类命名(为数据模型类添加 DO 后缀),并优化所有模型相关变量命名

This commit is contained in:
2023-01-30 21:00:30 +08:00
parent d7851bc811
commit 3075038067
27 changed files with 213 additions and 214 deletions

View File

@@ -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());
}
/**

View File

@@ -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> {}

View File

@@ -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;

View File

@@ -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);
/**
* 查看系统日志详情

View File

@@ -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());
}
}