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 page(AuditLogQuery query, long page, long size) { PageResult 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(), entity.getUsername(), entity.getAppCode(), entity.getClientType(), entity.getClientIp(), entity.getRequestId(), entity.getTraceId(), entity.getServiceName(), entity.getSuccess(), entity.getErrorCode(), entity.getErrorMessage(), entity.getOccurredAt(), entity.getCreatedAt()); } }