package resource type UserResourceEntitlement struct { AppCode string EntitlementID string UserID int64 ResourceID int64 Resource Resource Status string Quantity int64 RemainingQuantity int64 EffectiveAtMS int64 ExpiresAtMS int64 SourceGrantID string SourceSnapshotID string ResourceSnapshotHash string ResourceSnapshotJSON string GiftSnapshotHash string GiftSnapshotJSON string PinnedGiftConfigs []GiftConfig CreatedAtMS int64 UpdatedAtMS int64 Equipped bool } type ListUserResourcesQuery struct { AppCode string UserID int64 ResourceType string ActiveOnly bool } type RevokeUserResourceCommand struct { RequestID string AppCode string UserID int64 EntitlementID string Reason string OperatorUserID int64 } type EquipUserResourceCommand struct { // RequestID 在通用背包命中 VIP 体验卡时作为专用状态机的 outbox 幂等事件键; // 普通装扮仍不把 request_id 当业务幂等键。 RequestID string AppCode string UserID int64 ResourceID int64 EntitlementID string } type UnequipUserResourceCommand struct { // RequestID 仅在 vip_trial_card 委托专用卸下流程时用于发布完整 VIP 状态变更事件。 RequestID string AppCode string UserID int64 ResourceType string } type UnequipUserResourceResult struct { ResourceType string Unequipped bool UpdatedAtMS int64 } type BatchGetUserEquippedResourcesQuery struct { AppCode string UserIDs []int64 ResourceTypes []string } type UserEquippedResources struct { UserID int64 Resources []UserResourceEntitlement }