222 lines
8.0 KiB
Go
222 lines
8.0 KiB
Go
package systemconfig
|
|
|
|
import "time"
|
|
|
|
type ConfigDTO struct {
|
|
ID uint64 `json:"id"`
|
|
Key string `json:"key"`
|
|
Value string `json:"value"`
|
|
Description string `json:"description"`
|
|
UpdatedBy *uint64 `json:"updated_by"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type UpdateRequest struct {
|
|
Value string `json:"value"`
|
|
Description string `json:"description"`
|
|
}
|
|
|
|
// BackupScheduleDTO 仅描述调度时间,不包含备份目录、OSS 地址或任何密钥。
|
|
type BackupScheduleDTO struct {
|
|
Enabled bool `json:"enabled"`
|
|
FullHour int `json:"full_hour"`
|
|
FullMinute int `json:"full_minute"`
|
|
BinlogIntervalMinutes int `json:"binlog_interval_minutes"`
|
|
}
|
|
|
|
type HomeAnnouncementsDTO struct {
|
|
Items []string `json:"items"`
|
|
}
|
|
|
|
type HomeConfigDTO struct {
|
|
Announcements []string `json:"announcements"`
|
|
Banners []HomeBannerItem `json:"banners"`
|
|
PublishOptions PublishOptionsDTO `json:"publish_options"`
|
|
AWRecycle AWRecycleConfig `json:"aw_recycle"`
|
|
CooperationFeedback CooperationFeedbackConfig `json:"cooperation_feedback"`
|
|
// HomeEntriesEnabled 首页业务入口总开关:关闭后 PC/移动端同时隐藏回收与合作入口。
|
|
HomeEntriesEnabled bool `json:"home_entries_enabled"`
|
|
}
|
|
|
|
// AWRecycleConfig 首页「AW炫彩回收」入口:点击展示可配置图片。
|
|
type AWRecycleConfig struct {
|
|
Title string `json:"title"`
|
|
Subtitle string `json:"subtitle"`
|
|
ImageURL string `json:"image_url"`
|
|
Enabled bool `json:"enabled"`
|
|
}
|
|
|
|
// CooperationFeedbackConfig 首页「合作与反馈」入口:点击展示可配置图片。
|
|
type CooperationFeedbackConfig struct {
|
|
Title string `json:"title"`
|
|
Subtitle string `json:"subtitle"`
|
|
ImageURL string `json:"image_url"`
|
|
Enabled bool `json:"enabled"`
|
|
}
|
|
|
|
type OrderAgreementsDTO struct {
|
|
VirtualAssetPurchase AgreementContentDTO `json:"virtual_asset_purchase"`
|
|
RenterAgreement AgreementContentDTO `json:"renter_agreement"`
|
|
}
|
|
|
|
type ListingPublishAgreementsDTO struct {
|
|
VirtualAssetSale AgreementContentDTO `json:"virtual_asset_sale"`
|
|
SellerAgreement AgreementContentDTO `json:"seller_agreement"`
|
|
}
|
|
|
|
type PostRentalNoticeDTO struct {
|
|
Title string `json:"title"`
|
|
Content string `json:"content"`
|
|
}
|
|
|
|
type AgreementContentDTO struct {
|
|
Title string `json:"title"`
|
|
Content string `json:"content"`
|
|
}
|
|
|
|
// HomeBannerItem 首页轮播项:文案 + PC/移动两端视觉配置(图片、整图点击、热区)。
|
|
type HomeBannerItem struct {
|
|
Eyebrow string `json:"eyebrow"`
|
|
Title string `json:"title"`
|
|
Badge string `json:"badge"`
|
|
Pill string `json:"pill"`
|
|
Tone string `json:"tone"`
|
|
Enabled *bool `json:"enabled,omitempty"`
|
|
// ImageURL 早期扁平结构的图片字段,仅用于兼容读取:归一化时并入 PC/移动两端。
|
|
ImageURL string `json:"image_url,omitempty"`
|
|
PC HomeBannerVisual `json:"pc"`
|
|
Mobile HomeBannerVisual `json:"mobile"`
|
|
}
|
|
|
|
// HomeBannerVisual 单端展示配置:图片 + 整图点击行为 + 热区。
|
|
type HomeBannerVisual struct {
|
|
ImageURL string `json:"image_url,omitempty"`
|
|
Alt string `json:"alt,omitempty"`
|
|
Action HomeBannerAction `json:"action"`
|
|
Hotspots []HomeBannerHotspot `json:"hotspots,omitempty"`
|
|
}
|
|
|
|
// HomeBannerAction 点击行为:none(不跳转)/ route(站内路径)/ link(外部链接)/ preview(查看大图)。
|
|
type HomeBannerAction struct {
|
|
Type string `json:"type"`
|
|
Target string `json:"target"`
|
|
OpenNewTab bool `json:"open_new_tab"`
|
|
}
|
|
|
|
// HomeBannerHotspot 热区:相对图片的百分比坐标(0-100),与出图分辨率解耦。
|
|
type HomeBannerHotspot struct {
|
|
ID string `json:"id"`
|
|
Label string `json:"label"`
|
|
X float64 `json:"x"`
|
|
Y float64 `json:"y"`
|
|
Width float64 `json:"width"`
|
|
Height float64 `json:"height"`
|
|
// ImageURL 热区按钮图(透明 PNG),留空则前台用半透明高亮框提示可点击。
|
|
ImageURL string `json:"image_url,omitempty"`
|
|
// HoverScale 悬浮放大倍数:1 表示不放大,建议 1.04-1.08。
|
|
HoverScale float64 `json:"hover_scale,omitempty"`
|
|
Action HomeBannerAction `json:"action"`
|
|
}
|
|
|
|
type PublishOptionsDTO struct {
|
|
// SchemaVersion 发布选项结构版本;缺省 0 代表未版本化的历史配置。
|
|
SchemaVersion int `json:"schema_version,omitempty"`
|
|
NextSeasonPassEnabled bool `json:"next_season_pass_enabled"`
|
|
ServerOptions []string `json:"server_options"`
|
|
FaceOptions []string `json:"face_options"`
|
|
RankOptions []string `json:"rank_options"`
|
|
InsuranceOptions []string `json:"insurance_options"`
|
|
LevelOptions []string `json:"level_options"`
|
|
LoginMethodOptions []string `json:"login_method_options"`
|
|
RegionOptions []string `json:"region_options"`
|
|
SkinGroups []PublishOptionGroup `json:"skin_groups"`
|
|
QuantityItems []PublishQuantityItem `json:"quantity_items"`
|
|
ScreenshotSlots []PublishScreenshotSlot `json:"screenshot_slots"`
|
|
BanRecordOptions []string `json:"ban_record_options"`
|
|
BanEvidenceOptions []string `json:"ban_evidence_options"`
|
|
FireLevelMin int `json:"fire_level_min"`
|
|
PriceConfig PublishPriceConfig `json:"price_config"`
|
|
DepositRecommend PublishDepositRecommend `json:"deposit_recommend_config"`
|
|
RatioConfig PublishRatioConfig `json:"ratio_config"`
|
|
}
|
|
|
|
type PublishOptionGroup struct {
|
|
Key string `json:"key"`
|
|
Title string `json:"title"`
|
|
Options []string `json:"options"`
|
|
}
|
|
|
|
type PublishQuantityItem struct {
|
|
Key string `json:"key"`
|
|
Label string `json:"label"`
|
|
Price string `json:"price"`
|
|
Placeholder string `json:"placeholder,omitempty"`
|
|
}
|
|
|
|
type PublishScreenshotSlot struct {
|
|
Key string `json:"key"`
|
|
Label string `json:"label"`
|
|
Required bool `json:"required"`
|
|
Hint string `json:"hint"`
|
|
}
|
|
|
|
type PublishPriceConfig struct {
|
|
DepositPlaceholder string `json:"deposit_placeholder"`
|
|
DepositHint string `json:"deposit_hint"`
|
|
PricePlaceholder string `json:"price_placeholder"`
|
|
RatioDescription string `json:"ratio_description"`
|
|
}
|
|
|
|
type PublishDepositRecommend struct {
|
|
BaseAmount float64 `json:"base_amount"`
|
|
SkinGroupRules []PublishDepositSkinGroupRule `json:"skin_group_rules"`
|
|
}
|
|
|
|
type PublishDepositSkinGroupRule struct {
|
|
GroupKey string `json:"group_key"`
|
|
Label string `json:"label"`
|
|
AmountPerItem float64 `json:"amount_per_item"`
|
|
}
|
|
|
|
type PublishRatioConfig struct {
|
|
InsuranceBaseRatios []PublishInsuranceBaseRatio `json:"insurance_base_ratios"`
|
|
ConfigItems []PublishRatioConfigItem `json:"config_items"`
|
|
CoinCorrections []PublishCoinCorrection `json:"coin_corrections"`
|
|
}
|
|
|
|
type PublishInsuranceBaseRatio struct {
|
|
Insurance string `json:"insurance"`
|
|
Ratio float64 `json:"ratio"`
|
|
}
|
|
|
|
type PublishRatioConfigItem struct {
|
|
Key string `json:"key"`
|
|
Label string `json:"label"`
|
|
Kind string `json:"kind"`
|
|
GroupKey string `json:"group_key,omitempty"`
|
|
MissingPenalty float64 `json:"missing_penalty"`
|
|
}
|
|
|
|
type PublishCoinCorrection struct {
|
|
ThresholdM float64 `json:"threshold_m"`
|
|
Correction float64 `json:"correction"`
|
|
}
|
|
|
|
type PublishSalePriceConfig struct {
|
|
FixedMarkupRules []PublishSaleFixedMarkupRule `json:"fixed_markup_rules"`
|
|
RatioAdjustmentRules []PublishSaleRatioAdjustmentRule `json:"ratio_adjustment_rules"`
|
|
}
|
|
|
|
type PublishSaleFixedMarkupRule struct {
|
|
MinM float64 `json:"min_m"`
|
|
MaxM float64 `json:"max_m"`
|
|
MarkupAmount float64 `json:"markup_amount"`
|
|
}
|
|
|
|
type PublishSaleRatioAdjustmentRule struct {
|
|
MinM float64 `json:"min_m"`
|
|
MaxM float64 `json:"max_m,omitempty"`
|
|
RatioSubtract float64 `json:"ratio_subtract"`
|
|
}
|