package wallet import ( "context" "hyapp/pkg/xerr" "hyapp/services/wallet-service/internal/domain/ledger" ) // DebitGift 校验送礼扣费命令,并交给 repository 做原子落账和幂等。 func (s *Service) DebitGift(ctx context.Context, command ledger.DebitGiftCommand) (ledger.Receipt, error) { if s == nil || s.giftLedger == nil { return ledger.Receipt{}, xerr.New(xerr.Unavailable, "wallet repository is not configured") } return s.giftLedger.DebitGift(ctx, command) } // DebitDirectGift 校验私聊送礼扣费命令,并标记为 direct gift 账务场景后复用同一条落账链路。 func (s *Service) DebitDirectGift(ctx context.Context, command ledger.DebitGiftCommand) (ledger.Receipt, error) { if s == nil || s.giftLedger == nil { return ledger.Receipt{}, xerr.New(xerr.Unavailable, "wallet repository is not configured") } command.DirectGift = true return s.giftLedger.DebitGift(ctx, command) } // DebitRobotGift 校验机器人房间专用送礼扣费命令,并强制使用 ROBOT_COIN 账务语义。 func (s *Service) DebitRobotGift(ctx context.Context, command ledger.DebitGiftCommand) (ledger.Receipt, error) { if s == nil || s.giftLedger == nil { return ledger.Receipt{}, xerr.New(xerr.Unavailable, "wallet repository is not configured") } return s.giftLedger.DebitRobotGift(ctx, command) } // BatchDebitGift 校验多目标送礼扣费命令,并要求 repository 在同一事务中完成全部目标结算。 func (s *Service) BatchDebitGift(ctx context.Context, command ledger.BatchDebitGiftCommand) (ledger.BatchGiftReceipt, error) { if s == nil || s.giftLedger == nil { return ledger.BatchGiftReceipt{}, xerr.New(xerr.Unavailable, "wallet repository is not configured") } return s.giftLedger.BatchDebitGift(ctx, command) }