package system import ( "context" "management/internal/erpserver/model/dto" "management/internal/erpserver/model/system" "management/internal/erpserver/repository" ) type auditLogRepository struct { repo *repository.Repository } func NewAuditLogRepository(repo *repository.Repository) system.AuditLogRepository { return &auditLogRepository{ repo: repo, } } func (s *auditLogRepository) Create(ctx context.Context, obj *system.AuditLog) error { return s.repo.DB(ctx).Create(obj).Error } func (s *auditLogRepository) List(ctx context.Context, q dto.SearchDto) ([]*system.AuditLog, int64, error) { query := s.repo.DB(ctx). Model(&system.AuditLog{}). Where("created_at BETWEEN ? AND ?", q.SearchTimeBegin, q.SearchTimeEnd) if q.SearchEmail != "" { query = query.Where("email LIKE ?", "%"+q.SearchEmail+"%") } var count int64 err := query.Count(&count).Error if err != nil { return nil, 0, err } var logs []*system.AuditLog err = query. Order("id DESC"). Offset((q.Page - 1) * q.Rows). Limit(q.Rows). Find(&logs). Error if err != nil { return nil, 0, err } return logs, count, nil }