OperationLogServiceImpl.java
package org.darkroomlibrary.service.impl;
import org.darkroomlibrary.mapper.OperationLogMapper;
import org.darkroomlibrary.web.response.ApiResponse;
import org.darkroomlibrary.web.response.PageResponse;
import org.darkroomlibrary.web.dto.query.OperationLogPageQuery;
import org.darkroomlibrary.domain.model.OperationLog;
import org.darkroomlibrary.service.OperationLogService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import jakarta.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
import java.util.UUID;
/**
* 操作日志服务实现
*/
@Service
@Slf4j
public class OperationLogServiceImpl implements OperationLogService {
@Resource
private OperationLogMapper operationLogMapper;
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void record(OperationLog operationLog) {
if (operationLog.getEventKey() == null || operationLog.getEventKey().isBlank()) {
operationLog.setEventKey(UUID.randomUUID().toString());
}
operationLog.setCreateTime(LocalDateTime.now());
if (operationLogMapper.insert(operationLog) != 1) {
throw new IllegalStateException("操作日志写入失败");
}
}
@Override
public ApiResponse<List<OperationLog>> query(OperationLogPageQuery dto) {
List<OperationLog> list = operationLogMapper.query(dto);
Integer total = operationLogMapper.queryCount(dto);
return PageResponse.success(list, total);
}
}