feat: 完善商品筛选、发布配置与优质号主流程

This commit is contained in:
yml2213
2026-11-05 19:00:37 +08:00
parent 88beae4c96
commit f01329e049
19 changed files with 1256 additions and 180 deletions
@@ -167,6 +167,7 @@ type PublishPriceConfig struct {
DepositPlaceholder string `json:"deposit_placeholder"`
DepositHint string `json:"deposit_hint"`
DepositTooltip string `json:"deposit_tooltip"`
PremiumZoneTooltip string `json:"premium_zone_tooltip"`
CompensationNote string `json:"compensation_note"`
PricePlaceholder string `json:"price_placeholder"`
RatioDescription string `json:"ratio_description"`
@@ -234,6 +234,9 @@ func normalizePublishOptions(options *PublishOptionsDTO) {
if options.PriceConfig.DepositTooltip == "" {
options.PriceConfig.DepositTooltip = defaults.PriceConfig.DepositTooltip
}
if options.PriceConfig.PremiumZoneTooltip == "" {
options.PriceConfig.PremiumZoneTooltip = defaults.PriceConfig.PremiumZoneTooltip
}
if options.PriceConfig.CompensationNote == "" {
options.PriceConfig.CompensationNote = defaults.PriceConfig.CompensationNote
}
@@ -115,6 +115,13 @@ func DefaultPublishOptions() PublishOptionsDTO {
4. 额外保障选项
若您在设置足额押金后仍感不放心,可选择购买平台提供的《全额包赔服务》。一旦发生封号损失,将获得账号市场价值的全额赔付,让您的出租过程后顾无忧。`,
PremiumZoneTooltip: `极品专区是面向优质号主和高价值账号的专属展示区。
1. 发布条件:仅已认证且有效的优质号主可以开启;未开通时需先缴纳平台要求的信用保证金并完成优质号主认证。
2. 专区展示:商品审核通过后将在首页“极品专区”展示,获得更聚焦的高端账号曝光。
3. 价格规则:系统会按后台配置在基础比例上计算极品专区专享比例,审核页展示的最终价格通过后不再改价。
4. 保险服务:可选择无忧租号保险,服务费率按优质号主及极品专区的当前配置执行,并从卖家实际到手租金中扣除。
5. 责任说明:开启专区不会免除商品审核、资料真实性及发布协议中的责任,请如实填写账号资产与出租条件。`,
CompensationNote: "普通赔付方案如下:账号在租期内或祖期外出现封禁,追回、洗号等情况,最高可获赔全款相金+押金\n\n无忧保险赔付方案:按账号市场价值进行赔付(可参照螃蟹,盼之等主流交易平台)。注:选择此方案,需额外抽取订单佣金的8.0%作为服务费:押金须达到推荐押金方可购买。",
PricePlaceholder: "填写币数、保险、体力和负重后自动计算;发布总价=纯币基础价+额外消耗品",
RatioDescription: "1:xx 表示 1 元人民币(RMB)等价兑换 xx 万哈夫币",
@@ -164,6 +164,20 @@ func TestNormalizePublishOptionsValueDefaultsCompensationNote(t *testing.T) {
}
}
func TestNormalizePublishOptionsValueDefaultsPremiumZoneTooltip(t *testing.T) {
normalized, err := normalizePublishOptionsValue(`{"schema_version":2}`)
if err != nil {
t.Fatalf("规范化失败: %v", err)
}
var options PublishOptionsDTO
if err := json.Unmarshal([]byte(normalized), &options); err != nil {
t.Fatalf("解析规范化结果失败: %v", err)
}
if !strings.Contains(options.PriceConfig.PremiumZoneTooltip, "极品专区是面向优质号主") {
t.Fatalf("极品专区说明默认文案缺失: %q", options.PriceConfig.PremiumZoneTooltip)
}
}
func TestNormalizePublishOptionsValuePreservesExplicitZeroPremiumReviewRatioMarkup(t *testing.T) {
options := DefaultPublishOptions()
options.RatioConfig.PremiumReviewRatioMarkup = 0