2026-08-05 14:20:04 +08:00
|
|
|
package com.baiyue.audit.service;
|
|
|
|
|
|
|
|
|
|
import com.baiyue.audit.dto.AuditLogQuery;
|
|
|
|
|
import com.baiyue.audit.dto.AuditLogResponses;
|
|
|
|
|
import com.baiyue.audit.entity.AuditLogEntity;
|
|
|
|
|
import com.baiyue.audit.repository.AuditEventRepository;
|
|
|
|
|
import com.baiyue.common.core.api.PageResult;
|
|
|
|
|
import com.baiyue.common.core.api.ResultCode;
|
|
|
|
|
import com.baiyue.common.core.exception.BizException;
|
|
|
|
|
import jakarta.annotation.Resource;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
/** 平台统一操作日志查询服务。 */
|
|
|
|
|
@Service
|
|
|
|
|
public class AuditLogQueryService {
|
|
|
|
|
@Resource
|
|
|
|
|
private AuditEventRepository repository;
|
|
|
|
|
|
|
|
|
|
public PageResult<AuditLogResponses.ListItem> page(AuditLogQuery query, long page, long size) {
|
|
|
|
|
PageResult<AuditLogEntity> source = repository.page(query, page, size);
|
|
|
|
|
return new PageResult<>(source.records().stream().map(this::toListItem).toList(),
|
|
|
|
|
source.page(), source.size(), source.total(), source.pages());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public AuditLogResponses.Detail detail(Long id) {
|
|
|
|
|
AuditLogEntity entity = repository.findById(id);
|
|
|
|
|
if (entity == null) {
|
|
|
|
|
throw new BizException(ResultCode.NOT_FOUND, "操作日志不存在");
|
|
|
|
|
}
|
|
|
|
|
return new AuditLogResponses.Detail(
|
|
|
|
|
entity.getId(), entity.getEventId(), entity.getEventType(), entity.getResourceType(), entity.getResourceId(),
|
|
|
|
|
entity.getDescription(), entity.getRequestId(), entity.getTraceId(), entity.getTenantId(),
|
|
|
|
|
entity.getOperatorTenantId(), entity.getUserId(), entity.getUsername(), entity.getAppCode(),
|
|
|
|
|
entity.getClientType(), entity.getHttpMethod(), entity.getRequestUri(), entity.getClientIp(),
|
|
|
|
|
entity.getDurationMs(), entity.getSuccess(), entity.getErrorCode(), entity.getErrorMessage(),
|
|
|
|
|
entity.getBeforeData(), entity.getAfterData(), entity.getServiceName(), entity.getOccurredAt(),
|
|
|
|
|
entity.getCreatedAt());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private AuditLogResponses.ListItem toListItem(AuditLogEntity entity) {
|
|
|
|
|
return new AuditLogResponses.ListItem(
|
|
|
|
|
entity.getId(), entity.getEventId(), entity.getEventType(), entity.getResourceType(), entity.getResourceId(),
|
|
|
|
|
entity.getDescription(), entity.getTenantId(), entity.getOperatorTenantId(), entity.getUserId(),
|
2026-08-14 16:06:27 +08:00
|
|
|
entity.getUsername(), entity.getAppCode(), entity.getClientType(), entity.getClientIp(), entity.getRequestId(),
|
2026-08-05 14:20:04 +08:00
|
|
|
entity.getTraceId(), entity.getServiceName(), entity.getSuccess(), entity.getErrorCode(),
|
|
|
|
|
entity.getErrorMessage(), entity.getOccurredAt(), entity.getCreatedAt());
|
|
|
|
|
}
|
|
|
|
|
}
|