package wallet import ( "time" "hyapp/services/wallet-service/internal/service/wallet/ports" giftusecase "hyapp/services/wallet-service/internal/service/wallet/usecase/gift" ) const walletBadgeGrantMetric = "wallet_badge_grant" // Service 承载钱包账务用例。 type Service struct { repository ports.Repository giftLedger *giftusecase.Service activity ports.ActivityBadgeClient googlePlay ports.GooglePlayClient mifaPay ports.MifaPayClient v5Pay ports.V5PayClient tronUSDT ports.TronUSDTClient externalRecharge ExternalRechargeConfig now func() time.Time } // New 创建钱包服务。 func New(repository ports.Repository, activity ...ports.ActivityBadgeClient) *Service { var activityClient ports.ActivityBadgeClient if len(activity) > 0 { activityClient = activity[0] } return &Service{ repository: repository, giftLedger: giftusecase.New(repository), activity: activityClient, now: time.Now, } } // SetGooglePlayClient 注入 Google Play Developer API 客户端;未配置时 confirm 返回依赖不可用。 func (s *Service) SetGooglePlayClient(client ports.GooglePlayClient) { s.googlePlay = client } // SetMifaPayClient 注入 MiFaPay 下单和验签客户端;未配置时 H5 MiFaPay 下单返回依赖不可用。 func (s *Service) SetMifaPayClient(client ports.MifaPayClient) { s.mifaPay = client } // SetV5PayClient 注入 V5Pay 下单、查询和验签客户端;未配置时 H5 V5Pay 下单返回依赖不可用。 func (s *Service) SetV5PayClient(client ports.V5PayClient) { s.v5Pay = client } // SetTronUSDTClient 注入 TRON TRC20 交易校验客户端;未配置时 USDT tx 提交只会保留待确认订单。 func (s *Service) SetTronUSDTClient(client ports.TronUSDTClient) { s.tronUSDT = client } // SetExternalRechargeConfig 保存 H5 外部充值的站内公共配置,不把密钥或地址散落到 handler。 func (s *Service) SetExternalRechargeConfig(config ExternalRechargeConfig) { s.externalRecharge = normalizeExternalRechargeConfig(config) }