131 lines
3.3 KiB
Go
131 lines
3.3 KiB
Go
package cumulativerecharge
|
||
|
||
const (
|
||
TierStatusActive = "active"
|
||
TierStatusInactive = "inactive"
|
||
|
||
GrantStatusPending = "pending"
|
||
GrantStatusGranted = "granted"
|
||
GrantStatusFailed = "failed"
|
||
|
||
ReasonEligible = "eligible"
|
||
ReasonNotConfigured = "not_configured"
|
||
ReasonDisabled = "disabled"
|
||
ReasonNoQualifyingValue = "no_qualifying_value"
|
||
ReasonAlreadyConsumed = "already_consumed"
|
||
ReasonNoTierMatched = "no_tier_matched"
|
||
ReasonPendingReward = "pending_reward"
|
||
|
||
RechargeEventWalletRecorded = "WalletRechargeRecorded"
|
||
RechargeTypeCoinSeller = "coin_seller_transfer"
|
||
)
|
||
|
||
// Tier 是累充奖励的 USD 档位,金额统一用美分保存,避免后台小数金额和发放判断出现精度漂移。
|
||
type Tier struct {
|
||
TierID int64
|
||
TierCode string
|
||
TierName string
|
||
ThresholdUSDMinor int64
|
||
ResourceGroupID int64
|
||
Status string
|
||
SortOrder int32
|
||
CreatedAtMS int64
|
||
UpdatedAtMS int64
|
||
}
|
||
|
||
// Config 是当前 App 的累充奖励配置;activity-service 保存档位快照并负责后续充值事件判定。
|
||
type Config struct {
|
||
AppCode string
|
||
Enabled bool
|
||
Tiers []Tier
|
||
UpdatedByAdminID int64
|
||
CreatedAtMS int64
|
||
UpdatedAtMS int64
|
||
}
|
||
|
||
// Progress 是用户在一个 UTC 自然周内的累充累计投影。
|
||
type Progress struct {
|
||
AppCode string
|
||
CycleKey string
|
||
UserID int64
|
||
TotalUSDMinor int64
|
||
TotalCoinAmount int64
|
||
FirstRechargedAtMS int64
|
||
LastRechargedAtMS int64
|
||
UpdatedAtMS int64
|
||
}
|
||
|
||
// Grant 是用户命中某个累充档位后的资源组发放事实;event 字段用于 MQ 重试复用原命令。
|
||
type Grant struct {
|
||
GrantID string
|
||
AppCode string
|
||
CycleKey string
|
||
UserID int64
|
||
EventID string
|
||
TransactionID string
|
||
CommandID string
|
||
TierID int64
|
||
TierCode string
|
||
ThresholdUSDMinor int64
|
||
ResourceGroupID int64
|
||
ReachedUSDMinor int64
|
||
QualifyingUSDMinor int64
|
||
RechargeCoinAmount int64
|
||
RechargeType string
|
||
Status string
|
||
WalletCommandID string
|
||
WalletGrantID string
|
||
FailureReason string
|
||
GrantedAtMS int64
|
||
CreatedAtMS int64
|
||
UpdatedAtMS int64
|
||
}
|
||
|
||
// RechargeEvent 是 wallet_outbox 里进入累充奖励的成功充值事实。
|
||
type RechargeEvent struct {
|
||
AppCode string
|
||
EventID string
|
||
EventType string
|
||
TransactionID string
|
||
CommandID string
|
||
UserID int64
|
||
RechargeCoinAmount int64
|
||
RechargeSequence int64
|
||
RechargeType string
|
||
QualifyingUSDMinor int64
|
||
PayloadJSON string
|
||
OccurredAtMS int64
|
||
}
|
||
|
||
// Cycle 表达 UTC 自然周周期边界。
|
||
type Cycle struct {
|
||
Key string
|
||
StartMS int64
|
||
EndMS int64
|
||
}
|
||
|
||
// StatusResult 是 App H5 页面读取的完整累充状态。
|
||
type StatusResult struct {
|
||
Config Config
|
||
Progress Progress
|
||
Grants []Grant
|
||
Cycle Cycle
|
||
ServerTimeMS int64
|
||
}
|
||
|
||
// PrepareResult 表达一次充值事实在 MySQL 事务内是否产生了需要执行的发放命令。
|
||
type PrepareResult struct {
|
||
Grants []Grant
|
||
Consumed bool
|
||
Reason string
|
||
}
|
||
|
||
// GrantQuery 是后台发放记录分页查询条件。
|
||
type GrantQuery struct {
|
||
Status string
|
||
UserID int64
|
||
CycleKey string
|
||
Page int32
|
||
PageSize int32
|
||
}
|