package package_series import ( "context" "gorm.io/gorm" "github.com/break/junhong_cmp_fiber/internal/infrastructure/audit" "github.com/break/junhong_cmp_fiber/internal/model" "github.com/break/junhong_cmp_fiber/pkg/constants" "github.com/break/junhong_cmp_fiber/pkg/errors" ) // SetAccessAudit 注入套餐系列统一审计 Writer。 func (s *Service) SetAccessAudit(db *gorm.DB, writer *audit.Writer) { s.db = db s.auditWriter = writer } func (s *Service) appendAudit(ctx context.Context, tx *gorm.DB, actionCode, summary string, series *model.PackageSeries, beforeData, afterData map[string]any) error { if s.auditWriter == nil || s.db == nil { return errors.New(errors.CodeInvalidStatus, "套餐系列统一审计接缝未配置") } return s.auditWriter.Append(ctx, tx, audit.AppendInput{ ActionCode: actionCode, Summary: summary, ScopeType: constants.AuditScopePlatform, Result: constants.AuditResultSuccess, Resources: []audit.ResourceInput{audit.PackageSeriesResource( series, constants.AuditResourceRelationPrimary, constants.AuditResourceRolePackageSeriesTarget, beforeData, afterData, )}, }) } func (s *Service) recordAuditFailure(ctx context.Context, actionCode, summary string, series *model.PackageSeries, beforeData map[string]any, businessErr error) { if series == nil { return } s.auditWriter.RecordFailure(ctx, s.db, audit.AppendInput{ ActionCode: actionCode, Summary: summary, ScopeType: constants.AuditScopePlatform, Resources: []audit.ResourceInput{audit.PackageSeriesResource( series, constants.AuditResourceRelationPrimary, constants.AuditResourceRolePackageSeriesTarget, beforeData, nil, )}, }, businessErr) } func packageSeriesData(series *model.PackageSeries) map[string]any { if series == nil { return nil } return map[string]any{ "series_name": series.SeriesName, "description": series.Description, "status": series.Status, "enable_one_time_commission": series.EnableOneTimeCommission, "one_time_commission_config": series.OneTimeCommissionConfigJSON, } }