71 lines
1.7 KiB
Go
71 lines
1.7 KiB
Go
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
|
|
}
|