package distribution import "time" type SiteDTO struct { ID uint64 `json:"id"` SiteCode string `json:"site_code"` SiteName string `json:"site_name"` Domain string `json:"domain"` Status string `json:"status"` DisplayAccountEnabled bool `json:"display_account_enabled"` DefaultSupportGroupID *uint64 `json:"default_support_group_id,omitempty"` TaxEnabled bool `json:"tax_enabled"` TaxRateBPS int64 `json:"tax_rate_bps"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type CreateSiteRequest struct { SiteCode string `json:"site_code" binding:"required,max=64"` SiteName string `json:"site_name" binding:"required,max=128"` Domain string `json:"domain" binding:"required,max=255"` DisplayAccountEnabled *bool `json:"display_account_enabled"` DefaultSupportGroupID *uint64 `json:"default_support_group_id"` TaxEnabled *bool `json:"tax_enabled"` TaxRateBPS *int64 `json:"tax_rate_bps"` } type UpdateSiteRequest struct { SiteName *string `json:"site_name"` Domain *string `json:"domain"` Status *string `json:"status"` DisplayAccountEnabled *bool `json:"display_account_enabled"` DefaultSupportGroupID *uint64 `json:"default_support_group_id"` TaxEnabled *bool `json:"tax_enabled"` TaxRateBPS *int64 `json:"tax_rate_bps"` } type RuleDTO struct { ID uint64 `json:"id"` SiteID *uint64 `json:"site_id,omitempty"` Mode string `json:"mode"` Version int `json:"version"` Status string `json:"status"` PlatformReceiveRatio float64 `json:"platform_receive_ratio"` PlatformSellRatio float64 `json:"platform_sell_ratio"` DistributorReceiveRatio float64 `json:"distributor_receive_ratio"` DistributorSellRatio float64 `json:"distributor_sell_ratio"` DistributorARatio float64 `json:"distributor_a_ratio"` DistributorBRatio float64 `json:"distributor_b_ratio"` ServiceFeeValue float64 `json:"service_fee_value"` ServiceFeeUnit string `json:"service_fee_unit"` PaymentFeeBPS int64 `json:"payment_fee_bps"` TaxEnabled bool `json:"tax_enabled"` TaxRateBPS int64 `json:"tax_rate_bps"` EffectiveFrom time.Time `json:"effective_from"` EffectiveTo *time.Time `json:"effective_to,omitempty"` CreatedBy *uint64 `json:"created_by,omitempty"` CreatedAt time.Time `json:"created_at"` } type CreateRuleRequest struct { SiteID *uint64 `json:"site_id"` Mode string `json:"mode" binding:"required"` PlatformReceiveRatio float64 `json:"platform_receive_ratio"` PlatformSellRatio float64 `json:"platform_sell_ratio"` DistributorReceiveRatio float64 `json:"distributor_receive_ratio"` DistributorSellRatio float64 `json:"distributor_sell_ratio"` DistributorARatio float64 `json:"distributor_a_ratio"` DistributorBRatio float64 `json:"distributor_b_ratio"` ServiceFeeValue float64 `json:"service_fee_value"` ServiceFeeUnit string `json:"service_fee_unit" binding:"required"` PaymentFeeBPS int64 `json:"payment_fee_bps"` TaxEnabled bool `json:"tax_enabled"` TaxRateBPS int64 `json:"tax_rate_bps"` EffectiveFrom time.Time `json:"effective_from"` } type UpdateRuleStatusRequest struct { Status string `json:"status" binding:"required,oneof=draft active disabled"` } type DistributionOrderDTO struct { OrderID uint64 `json:"order_id"` OrderNo string `json:"order_no"` SiteID uint64 `json:"site_id"` ListingID uint64 `json:"listing_id"` AccountID uint64 `json:"account_id"` OwnerID uint64 `json:"owner_id"` RenterID uint64 `json:"renter_id"` Status string `json:"status"` HandoffStatus string `json:"handoff_status"` RefundStatus string `json:"refund_status"` SettlementStatus string `json:"settlement_status"` DistributionMode string `json:"distribution_mode"` GrossPaidAmountCent int64 `json:"gross_paid_amount_cent"` RefundAmountCent int64 `json:"refund_amount_cent"` NetPaidAmountCent int64 `json:"net_paid_amount_cent"` PaymentFeeCent int64 `json:"payment_fee_cent"` ServiceFeeCent int64 `json:"service_fee_cent"` MarkupAmountCent int64 `json:"markup_amount_cent"` TaxAmountCent int64 `json:"tax_amount_cent"` SplitBaseAmountCent int64 `json:"split_base_amount_cent"` RoundingAdjustmentCent int64 `json:"rounding_adjustment_cent"` CreatedAt time.Time `json:"created_at"` } type DistributionOrderListQuery struct { SiteID uint64 Kind string Status string Page int Size int } type DistributionOrderPage struct { Items []DistributionOrderDTO `json:"items"` Total int64 `json:"total"` Page int `json:"page"` PageSize int `json:"page_size"` } type AccountDisplayDTO struct { ID uint64 `json:"id"` SiteID uint64 `json:"site_id"` AccountID uint64 `json:"account_id"` ListingID uint64 `json:"listing_id"` DisplayStatus string `json:"display_status"` ListingNo string `json:"listing_no,omitempty"` Title string `json:"title,omitempty"` GameName string `json:"game_name,omitempty"` ServerRegion string `json:"server_region,omitempty"` LoginPlatform string `json:"login_platform,omitempty"` RankLevel string `json:"rank_level,omitempty"` HafCoinAmount int64 `json:"haf_coin_amount,omitempty"` PriceCent int64 `json:"price_cent,omitempty"` DepositAmountCent int64 `json:"deposit_amount_cent,omitempty"` ListingStatus string `json:"listing_status,omitempty"` InTransaction bool `json:"in_transaction,omitempty"` } type SyncSiteAccountsResult struct { SyncedCount int64 `json:"synced_count"` SkippedCount int64 `json:"skipped_count"` TotalActive int64 `json:"total_active"` } type PublicDistributionListingDTO struct { ListingID uint64 `json:"listing_id"` ListingNo string `json:"listing_no"` AccountID uint64 `json:"account_id"` Title string `json:"title"` GameName string `json:"game_name"` ServerRegion string `json:"server_region"` LoginPlatform string `json:"login_platform"` RankLevel string `json:"rank_level"` HafCoinAmount int64 `json:"haf_coin_amount"` PriceCent int64 `json:"price_cent"` DepositAmountCent int64 `json:"deposit_amount_cent"` InTransaction bool `json:"in_transaction"` SiteCode string `json:"site_code"` SiteName string `json:"site_name"` } type PublicDistributionListingsResult struct { Items []PublicDistributionListingDTO `json:"items"` Total int64 `json:"total"` Page int `json:"page"` PageSize int `json:"page_size"` } type PublicSiteInfoDTO struct { SiteCode string `json:"site_code"` SiteName string `json:"site_name"` Domain string `json:"domain"` Status string `json:"status"` DisplayAccountEnabled bool `json:"display_account_enabled"` DefaultSupportGroupID *uint64 `json:"default_support_group_id,omitempty"` } type UpdateAccountDisplayRequest struct { DisplayStatus string `json:"display_status" binding:"required,oneof=enabled disabled sold offline"` } type PaymentChannelDTO struct { ID uint64 `json:"id"` SiteID uint64 `json:"site_id"` ConfigID uint64 `json:"config_id"` Priority int `json:"priority"` Status string `json:"status"` } type BindPaymentChannelRequest struct { ConfigID uint64 `json:"config_id" binding:"required"` Priority int `json:"priority"` } type SettlementBatchDTO struct { ID uint64 `json:"id"` SiteID uint64 `json:"site_id"` BatchNo string `json:"batch_no"` PeriodStart time.Time `json:"period_start"` PeriodEnd time.Time `json:"period_end"` TotalAmountCent int64 `json:"total_amount_cent"` Status string `json:"status"` } type CreateSettlementBatchRequest struct { SiteID uint64 `json:"site_id" binding:"required"` PeriodStart time.Time `json:"period_start" binding:"required"` PeriodEnd time.Time `json:"period_end" binding:"required"` } type SnapshotPartyRequest struct { PartyRole string `json:"party_role" binding:"required"` PartyType string `json:"party_type" binding:"required"` PartyID uint64 `json:"party_id"` Ratio float64 `json:"ratio"` IncomeAmountCent int64 `json:"income_amount_cent"` CostAmountCent int64 `json:"cost_amount_cent"` } type CreateFinancialSnapshotRequest struct { SiteID uint64 `json:"site_id" binding:"required"` RuleVersionID uint64 `json:"rule_version_id" binding:"required"` GrossPaidAmountCent int64 `json:"gross_paid_amount_cent"` RefundAmountCent int64 `json:"refund_amount_cent"` MarkupAmountCent int64 `json:"markup_amount_cent"` Parties []SnapshotPartyRequest `json:"parties"` } type SettlementItemDTO struct { ID uint64 `json:"id"` OrderID uint64 `json:"order_id"` PartyRole string `json:"party_role"` AmountCent int64 `json:"amount_cent"` Status string `json:"status"` } type DistributionLoginRequest struct { Username string `json:"username" binding:"required"` Password string `json:"password" binding:"required"` } type DistributionLoginResponse struct { Token string `json:"token"` RefreshToken string `json:"refresh_token"` Member DistributionCurrentMemberDTO `json:"member"` } type DistributionCurrentMemberDTO struct { AdminID uint64 `json:"admin_id"` Username string `json:"username"` Nickname string `json:"nickname"` IsSuperadmin bool `json:"is_superadmin"` SiteID *uint64 `json:"site_id,omitempty"` SiteCode string `json:"site_code,omitempty"` SiteName string `json:"site_name,omitempty"` Domain string `json:"domain,omitempty"` MemberType string `json:"member_type,omitempty"` } type OnboardSiteRequest struct { SiteCode string `json:"site_code" binding:"required,max=64"` SiteName string `json:"site_name" binding:"required,max=128"` Domain string `json:"domain" binding:"required,max=255"` DisplayAccountEnabled *bool `json:"display_account_enabled"` TaxEnabled *bool `json:"tax_enabled"` TaxRateBPS *int64 `json:"tax_rate_bps"` AdminUsername string `json:"admin_username" binding:"required,min=3,max=64"` AdminPassword string `json:"admin_password" binding:"required,min=6,max=64"` AdminNickname string `json:"admin_nickname"` MemberType string `json:"member_type" binding:"omitempty,oneof=operator finance customer_service"` DistributorReceiveRatio float64 `json:"distributor_receive_ratio"` PlatformSellRatio float64 `json:"platform_sell_ratio"` ServiceFeeValue float64 `json:"service_fee_value"` } type OnboardSiteResponse struct { Site SiteDTO `json:"site"` Rule RuleDTO `json:"rule"` Member DistributionCurrentMemberDTO `json:"member"` }