package services import ( "goalfymax-admin/internal/models" "goalfymax-admin/internal/storage" "time" ) // AuditLogService 审计日志服务接口 type AuditLogService interface { Create(req *models.CreateAuditLogRequest) error GetByID(id uint) (*models.AuditLog, error) List(req *models.AuditLogListRequest) (*models.AuditLogListResponse, error) } type auditLogService struct { storage storage.AuditLogStorage } // NewAuditLogService 创建审计日志服务实例 func NewAuditLogService(storage storage.AuditLogStorage) AuditLogService { return &auditLogService{ storage: storage, } } // Create 创建审计日志 func (s *auditLogService) Create(req *models.CreateAuditLogRequest) error { log := &models.AuditLog{ OperationType: req.OperationType, OperationTime: time.Now(), OperatorID: req.OperatorID, OperatorEmail: req.OperatorEmail, TargetType: req.TargetType, TargetID: req.TargetID, TargetEmail: req.TargetEmail, OperationDetails: req.OperationDetails, IPAddress: req.IPAddress, UserAgent: req.UserAgent, Status: req.Status, ErrorMessage: req.ErrorMessage, } // 设置默认状态 if log.Status == "" { log.Status = models.AuditLogStatusSuccess } return s.storage.Create(log) } // GetByID 根据ID获取审计日志 func (s *auditLogService) GetByID(id uint) (*models.AuditLog, error) { return s.storage.GetByID(id) } // List 查询审计日志列表 func (s *auditLogService) List(req *models.AuditLogListRequest) (*models.AuditLogListResponse, error) { logs, total, err := s.storage.List(req) if err != nil { return nil, err } return &models.AuditLogListResponse{ List: logs, Total: total, Page: req.Page, Size: req.Size, }, nil }