feat: enhance operation log query functionality

- Add time range query (startTime, endTime)
- Add IP address query support
- Add method name query support
- Update OperationLogQuery with new fields
- Update OperationLogQueryCriteria with new query fields
- Update OperationLogHandler to support new query parameters

Closes #5
This commit is contained in:
张翔
2026-04-03 22:09:06 +08:00
parent cb59ed173b
commit b2577110fb
3 changed files with 101 additions and 0 deletions
@@ -3,6 +3,8 @@ package cn.novalon.manage.db.entity.query;
import cn.novalon.manage.sys.core.query.OperationLogQuery;
import cn.novalon.manage.db.dao.QueryField;
import java.time.LocalDateTime;
/**
* 操作日志查询条件对象
*
@@ -23,6 +25,18 @@ public class OperationLogQueryCriteria {
@QueryField(blurry = "username,operation,ip", type = QueryField.Type.INNER_LIKE)
private String keyword;
@QueryField(propName = "createdAt", type = QueryField.Type.GREATER_THAN)
private LocalDateTime startTime;
@QueryField(propName = "createdAt", type = QueryField.Type.LESS_THAN)
private LocalDateTime endTime;
@QueryField(propName = "ip", type = QueryField.Type.INNER_LIKE)
private String ip;
@QueryField(propName = "method", type = QueryField.Type.INNER_LIKE)
private String method;
public String getUsername() {
return username;
}
@@ -55,6 +69,38 @@ public class OperationLogQueryCriteria {
this.keyword = keyword;
}
public LocalDateTime getStartTime() {
return startTime;
}
public void setStartTime(LocalDateTime startTime) {
this.startTime = startTime;
}
public LocalDateTime getEndTime() {
return endTime;
}
public void setEndTime(LocalDateTime endTime) {
this.endTime = endTime;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
/**
* 从领域查询对象转换
*
@@ -68,5 +114,9 @@ public class OperationLogQueryCriteria {
this.operation = query.getOperation();
this.status = query.getStatus();
this.keyword = query.getKeyword();
this.startTime = query.getStartTime();
this.endTime = query.getEndTime();
this.ip = query.getIp();
this.method = query.getMethod();
}
}
@@ -1,5 +1,7 @@
package cn.novalon.manage.sys.core.query;
import java.time.LocalDateTime;
/**
* 操作日志查询对象
*
@@ -12,6 +14,10 @@ public class OperationLogQuery {
private String operation;
private String status;
private String keyword;
private LocalDateTime startTime;
private LocalDateTime endTime;
private String ip;
private String method;
public String getUsername() {
return username;
@@ -44,4 +50,36 @@ public class OperationLogQuery {
public void setKeyword(String keyword) {
this.keyword = keyword;
}
public LocalDateTime getStartTime() {
return startTime;
}
public void setStartTime(LocalDateTime startTime) {
this.startTime = startTime;
}
public LocalDateTime getEndTime() {
return endTime;
}
public void setEndTime(LocalDateTime endTime) {
this.endTime = endTime;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
}
@@ -56,6 +56,10 @@ public class OperationLogHandler {
String username = request.queryParam("username").orElse(null);
String operation = request.queryParam("operation").orElse(null);
String status = request.queryParam("status").orElse(null);
String startTimeStr = request.queryParam("startTime").orElse(null);
String endTimeStr = request.queryParam("endTime").orElse(null);
String ip = request.queryParam("ip").orElse(null);
String method = request.queryParam("method").orElse(null);
PageRequest pageRequest = new PageRequest();
pageRequest.setPage(page);
@@ -69,6 +73,15 @@ public class OperationLogHandler {
query.setOperation(operation);
query.setStatus(status);
query.setKeyword(keyword);
query.setIp(ip);
query.setMethod(method);
if (startTimeStr != null && !startTimeStr.isEmpty()) {
query.setStartTime(java.time.LocalDateTime.parse(startTimeStr));
}
if (endTimeStr != null && !endTimeStr.isEmpty()) {
query.setEndTime(java.time.LocalDateTime.parse(endTimeStr));
}
return logService.findByQueryWithPagination(query, pageRequest)
.flatMap(response -> ServerResponse.ok().bodyValue(response));