package wallet import ( "context" "hyapp/pkg/appcode" "hyapp/pkg/xerr" "hyapp/services/wallet-service/internal/domain/ledger" "strings" ) // AdminCreditAsset 执行后台手动调账;amount 为正数入账、负数扣账,审计字段必须随交易一起落库。 func (s *Service) AdminCreditAsset(ctx context.Context, command ledger.AdminCreditAssetCommand) (ledger.AssetBalance, string, error) { if command.CommandID == "" || command.TargetUserID <= 0 || command.OperatorUserID <= 0 || command.Amount == 0 { return ledger.AssetBalance{}, "", xerr.New(xerr.InvalidArgument, "admin adjustment command is incomplete") } command.AssetType = strings.ToUpper(strings.TrimSpace(command.AssetType)) if !ledger.ValidAssetType(command.AssetType) { return ledger.AssetBalance{}, "", xerr.New(xerr.InvalidArgument, "asset_type is invalid") } if command.Reason == "" || command.EvidenceRef == "" { return ledger.AssetBalance{}, "", xerr.New(xerr.InvalidArgument, "reason and evidence_ref are required") } if s.repository == nil { return ledger.AssetBalance{}, "", xerr.New(xerr.Unavailable, "wallet repository is not configured") } command.AppCode = appcode.Normalize(command.AppCode) ctx = appcode.WithContext(ctx, command.AppCode) return s.repository.AdminCreditAsset(ctx, command) }