fix(distribution): 分成改为分主站提价利润,分站自主提价溢价全额归卖方

- 文档:升级至 v0.7,固化号主保底、主站提价利润分账(35/40/25)与分站加价溢价独享逻辑
- 定价:修正货架兑换比例调价方向为调减比例提价(site_ratio = base_ratio - delta)
- 分账:分成基数剔除号主成本与分站加价,提价利润按规则切分,分站自主加价溢价 100% 归卖出方
- 前端:更新分销后台提价说明文案,提示调减比例提高售价且溢价归本站
This commit is contained in:
yml2213
2026-09-08 19:45:05 +08:00
parent d762b33f54
commit 4aab9e7e33
11 changed files with 176 additions and 132 deletions
@@ -326,7 +326,7 @@ func TestCreateOrderSnapshotsShelfMarkup(t *testing.T) {
t.Fatal(err)
}
if err := db.Create(&model.DistributionSiteAccount{
SiteID: site.ID, AccountID: account.ID, ListingID: listing.ID, DisplayStatus: "enabled", ShelfRatioDelta: 25,
SiteID: site.ID, AccountID: account.ID, ListingID: listing.ID, DisplayStatus: "enabled", ShelfRatioDelta: 20,
}).Error; err != nil {
t.Fatal(err)
}
@@ -344,10 +344,11 @@ func TestCreateOrderSnapshotsShelfMarkup(t *testing.T) {
if err != nil {
t.Fatalf("Create() error = %v", err)
}
if dto.RentAmountCent == nil || *dto.RentAmountCent != 8000 {
t.Fatalf("paid rent = %v, want 8000", dto.RentAmountCent)
// 100M 币,主站标价 100 元 (10000 分,比例 100);分站提价减 20 比例 (比例 80),分站实付售价 125 元 (12500 分)
if dto.RentAmountCent == nil || *dto.RentAmountCent != 12500 {
t.Fatalf("paid rent = %v, want 12500", dto.RentAmountCent)
}
if dto.BasePriceCent != 10000 || dto.ShelfMarkupCent != -2000 || dto.MarkupSiteID != site.ID || dto.ShelfRatioDelta != 25 {
if dto.BasePriceCent != 10000 || dto.ShelfMarkupCent != 2500 || dto.MarkupSiteID != site.ID || dto.ShelfRatioDelta != 20 {
t.Fatalf("ratio snapshot = base %d deltaCent %d site %d ratioDelta %v", dto.BasePriceCent, dto.ShelfMarkupCent, dto.MarkupSiteID, dto.ShelfRatioDelta)
}
@@ -355,6 +356,7 @@ func TestCreateOrderSnapshotsShelfMarkup(t *testing.T) {
if err := db.First(&saved, dto.ID).Error; err != nil {
t.Fatal(err)
}
// 号主本金保底 80 元 (8000 分),不受分站加价影响
if saved.OwnerRentAmountCent != 8000 {
t.Fatalf("owner rent = %d, want 8000", saved.OwnerRentAmountCent)
}
@@ -366,7 +368,7 @@ func TestCreateOrderSnapshotsShelfMarkup(t *testing.T) {
if err := db.First(&after, dto.ID).Error; err != nil {
t.Fatal(err)
}
if after.ShelfRatioDelta != 25 || after.RentAmountCent != 8000 {
if after.ShelfRatioDelta != 20 || after.RentAmountCent != 12500 {
t.Fatalf("historical order must keep ratio snapshot, got delta %v rent %d", after.ShelfRatioDelta, after.RentAmountCent)
}
}