package ledger import ( "strings" ) // RechargeBill 是充值账单的只读投影;充值事实由 wallet_recharge_records 保存。 type RechargeBill struct { AppCode string TransactionID string CommandID string RechargeType string Status string ExternalRef string UserID int64 SellerUserID int64 SellerRegionID int64 TargetRegionID int64 PolicyID int64 PolicyVersion string CurrencyCode string CoinAmount int64 USDMinorAmount int64 ExchangeCoinAmount int64 ExchangeUSDMinorAmount int64 CreatedAtMS int64 } // ListRechargeBillsQuery 是后台查询所有充值渠道账单的筛选条件。 type ListRechargeBillsQuery struct { AppCode string UserID int64 SellerUserID int64 RegionID int64 RechargeType string Status string Keyword string StartAtMS int64 EndAtMS int64 Page int32 PageSize int32 } // WalletFeatureFlags 是 App 钱包入口的开关投影;首版由 wallet-service 固定返回,后续可迁移到配置表。 type WalletFeatureFlags struct { RechargeEnabled bool DiamondExchangeEnabled bool } // WalletOverview 是我的页和钱包首页共同使用的轻量摘要。 type WalletOverview struct { Balances []AssetBalance FeatureFlags WalletFeatureFlags } // WalletValueSummary 是我的页钱包卡片的最小余额投影。 type WalletValueSummary struct { CoinAmount int64 UpdatedAtMS int64 } // GiftWallResource 是礼物墙展示所需的资源快照字段,避免读取接口再依赖资源配置实时状态。 type GiftWallResource struct { AppCode string ResourceID int64 ResourceCode string ResourceType string Name string Status string Grantable bool GrantStrategy string WalletAssetType string WalletAssetAmount int64 UsageScopes []string AssetURL string PreviewURL string AnimationURL string MetadataJSON string SortOrder int32 CreatedAtMS int64 UpdatedAtMS int64 } // GiftWallItem 是当前用户收到礼物的按 gift_id 聚合投影。 type GiftWallItem struct { GiftID string GiftName string ResourceID int64 Resource GiftWallResource ResourceSnapshotJSON string GiftTypeCode string PresentationJSON string GiftCount int64 TotalValue int64 TotalCoinValue int64 TotalDiamondValue int64 // TotalGiftPoint 是历史礼物墙字段,新送礼不再累加,保留用于旧数据展示兼容。 TotalGiftPoint int64 TotalHeatValue int64 ChargeAssetType string LastPriceVersion string FirstReceivedAtMS int64 LastReceivedAtMS int64 SortOrder int32 } // UserGiftWall 汇总礼物墙首屏需要的全量统计和按礼物类型聚合列表。 type UserGiftWall struct { Items []GiftWallItem GiftKindCount int64 GiftTotalCount int64 TotalValue int64 TotalCoinValue int64 TotalDiamondValue int64 // TotalGiftPoint 是历史礼物墙汇总字段,新送礼不再累加,保留用于旧数据展示兼容。 TotalGiftPoint int64 TotalHeatValue int64 } // DiamondExchangeRule 是钻石兑换金币或余额的固定规则投影。 type DiamondExchangeRule struct { ExchangeType string FromAssetType string ToAssetType string FromAmount int64 ToAmount int64 Enabled bool } // WalletTransaction 是钱包流水页按用户分录查询的投影。 type WalletTransaction struct { EntryID int64 TransactionID string BizType string AssetType string AvailableDelta int64 FrozenDelta int64 AvailableAfter int64 FrozenAfter int64 CounterpartyUserID int64 RoomID string CreatedAtMS int64 } // ListWalletTransactionsQuery 描述 App 钱包流水分页条件。 type ListWalletTransactionsQuery struct { AppCode string UserID int64 AssetType string Page int32 PageSize int32 } // AssetBalance 是账户当前可用/冻结余额投影。 type AssetBalance struct { AppCode string UserID int64 AssetType string AvailableAmount int64 FrozenAmount int64 Version int64 UpdatedAtMs int64 } // AdminCreditAssetCommand 是后台手动调账的最小审计命令,Amount 为正数入账、负数扣账。 type AdminCreditAssetCommand struct { AppCode string CommandID string TargetUserID int64 AssetType string Amount int64 OperatorUserID int64 Reason string EvidenceRef string } // ValidAssetType 限定账本允许落账的资产类型,避免写入任意字符串资产。 func ValidAssetType(assetType string) bool { switch assetType { case AssetCoin, AssetCoinSellerCoin, AssetRobotCoin, AssetGiftPoint, AssetHostSalaryUSD, AssetAgencySalaryUSD, AssetBDSalaryUSD, AssetAdminSalaryUSD: return true default: return false } } // ValidSalaryAssetType 只允许身份工资美元钱包进入工资兑换和转币商链路,避免普通金币或币商库存被误扣。 func ValidSalaryAssetType(assetType string) bool { switch strings.ToUpper(strings.TrimSpace(assetType)) { case AssetHostSalaryUSD, AssetAgencySalaryUSD, AssetBDSalaryUSD, AssetAdminSalaryUSD: return true default: return false } }