89 lines
2.4 KiB
Go
89 lines
2.4 KiB
Go
package registrationreward
|
||
|
||
const (
|
||
RewardTypeCoin = "coin"
|
||
RewardTypeResourceGroup = "resource_group"
|
||
|
||
StatusPending = "pending"
|
||
StatusGranted = "granted"
|
||
StatusFailed = "failed"
|
||
|
||
ReasonEligible = "eligible"
|
||
ReasonNotConfigured = "not_configured"
|
||
ReasonDisabled = "disabled"
|
||
ReasonInvalidConfig = "invalid_config"
|
||
ReasonAlreadyClaimed = "already_claimed"
|
||
ReasonDailyLimitReached = "daily_limit_reached"
|
||
)
|
||
|
||
// Config 是注册奖励配置的 owner-side 快照;daily_limit=0 表达 UTC 当天不限份数。
|
||
type Config struct {
|
||
AppCode string
|
||
Enabled bool
|
||
RewardType string
|
||
CoinAmount int64
|
||
ResourceGroupID int64
|
||
DailyLimit int64
|
||
UpdatedByAdminID int64
|
||
CreatedAtMS int64
|
||
UpdatedAtMS int64
|
||
}
|
||
|
||
// Claim 是注册奖励领取事实;每个 app_code + user_id 只允许一个有效事实。
|
||
type Claim struct {
|
||
ClaimID string
|
||
CommandID string
|
||
UserID int64
|
||
RewardDay string
|
||
RewardType string
|
||
CoinAmount int64
|
||
ResourceGroupID int64
|
||
Status string
|
||
WalletCommandID string
|
||
WalletTransactionID string
|
||
ResourceGrantID string
|
||
FailureReason string
|
||
ClaimedAtMS int64
|
||
CreatedAtMS int64
|
||
UpdatedAtMS int64
|
||
}
|
||
|
||
// Eligibility 是 App 查询使用的稳定结果;reason 让客户端能区分未配置、关闭、已领取和当日超额。
|
||
type Eligibility struct {
|
||
CanReceive bool
|
||
Reason string
|
||
Enabled bool
|
||
RewardType string
|
||
CoinAmount int64
|
||
ResourceGroupID int64
|
||
DailyLimit int64
|
||
DailyUsed int64
|
||
DailyRemaining int64
|
||
RewardDay string
|
||
ServerTimeMS int64
|
||
}
|
||
|
||
// IssueCommand 是 user-service 注册完成后传入的幂等命令。
|
||
type IssueCommand struct {
|
||
UserID int64
|
||
CommandID string
|
||
}
|
||
|
||
// PrepareResult 表达 activity 事务是否已经成功预留每日份数并创建/复用 pending claim。
|
||
type PrepareResult struct {
|
||
Claim Claim
|
||
Prepared bool
|
||
AlreadyGranted bool
|
||
Reason string
|
||
}
|
||
|
||
// ClaimQuery 是后台领取记录分页查询条件;用户搜索由 admin-server 先解析成 user_id,领取时间筛选按 claimed_at_ms 优先、created_at_ms 兜底的页面展示口径执行。
|
||
type ClaimQuery struct {
|
||
Status string
|
||
UserID int64
|
||
ClaimedStartMS int64
|
||
ClaimedEndMS int64
|
||
Page int32
|
||
PageSize int32
|
||
}
|