feat(distribution): 支持分销上传来源追踪、主站审核展示与收售结算模式自动判定
This commit is contained in:
@@ -820,3 +820,71 @@ func TestUpdateScreenshots(t *testing.T) {
|
||||
t.Fatalf("unexpected coin screenshots: %#v", coinList)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCreateListingWithDistributionSiteCode(t *testing.T) {
|
||||
db := database.NewTestDB()
|
||||
if err := database.MigrateListingLifecycleTestSchema(db); err != nil {
|
||||
t.Fatalf("migrate err: %v", err)
|
||||
}
|
||||
repo := NewRepository(db, nil)
|
||||
|
||||
user := model.User{Phone: "18800000001", Nickname: "分销卖家", RealnameStatus: "verified", Status: "active"}
|
||||
db.Create(&user)
|
||||
|
||||
site := model.DistributionSite{
|
||||
SiteCode: "dist_test_1",
|
||||
SiteName: "测试分销商1",
|
||||
Domain: "d1.com",
|
||||
Status: "active",
|
||||
DisplayAccountEnabled: true,
|
||||
}
|
||||
db.Create(&site)
|
||||
|
||||
req := CreateRequest{
|
||||
Title: "分销上架商品",
|
||||
ServerRegion: "QQ",
|
||||
LoginPlatform: "PC",
|
||||
PriceCent: 8800,
|
||||
}
|
||||
|
||||
dto, err := repo.Create(context.Background(), user.ID, req, true, 0, "dist_test_1")
|
||||
if err != nil {
|
||||
t.Fatalf("repo.Create failed: %v", err)
|
||||
}
|
||||
|
||||
if dto.DistributionSiteID == nil || *dto.DistributionSiteID != site.ID {
|
||||
t.Fatalf("expected DistributionSiteID=%d, got %v", site.ID, dto.DistributionSiteID)
|
||||
}
|
||||
if dto.DistributionSiteCode != "dist_test_1" {
|
||||
t.Fatalf("expected dist_test_1, got %s", dto.DistributionSiteCode)
|
||||
}
|
||||
if dto.DistributionSiteName != "测试分销商1" {
|
||||
t.Fatalf("expected 测试分销商1, got %s", dto.DistributionSiteName)
|
||||
}
|
||||
expectedSource := "分销站 - 测试分销商1 (dist_test_1)"
|
||||
if dto.SourceChannel != expectedSource {
|
||||
t.Fatalf("expected %s, got %s", expectedSource, dto.SourceChannel)
|
||||
}
|
||||
|
||||
// 验证 distribution_site_accounts 自动创建并启用
|
||||
var dsa model.DistributionSiteAccount
|
||||
if err := db.Where("site_id = ? AND listing_id = ?", site.ID, dto.ID).First(&dsa).Error; err != nil {
|
||||
t.Fatalf("failed to find distribution_site_account: %v", err)
|
||||
}
|
||||
if dsa.DisplayStatus != "enabled" {
|
||||
t.Fatalf("expected enabled, got %s", dsa.DisplayStatus)
|
||||
}
|
||||
|
||||
// 验证审核工作台列表展示分销站来源
|
||||
pending, err := repo.ListPendingReview(context.Background())
|
||||
if err != nil {
|
||||
t.Fatalf("ListPendingReview failed: %v", err)
|
||||
}
|
||||
if len(pending) != 1 {
|
||||
t.Fatalf("expected 1 pending item, got len=%d", len(pending))
|
||||
}
|
||||
if pending[0].SourceChannel != expectedSource {
|
||||
t.Fatalf("expected pending SourceChannel=%s, got %s", expectedSource, pending[0].SourceChannel)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user