fix(distribution): 修正商品归属回填、禁止全站灌货并拒绝无效站点头
用货架写入时间与上传来源回滚误标产地,不再依赖绝对时间戳;同步仅收本站上传与显式勾选。
This commit is contained in:
@@ -22,6 +22,22 @@ func (r *Repository) Create(ctx context.Context, ownerID uint64, req CreateReque
|
||||
if err := r.ensureCreateCooldown(tx, ownerID, publishCooldown, now); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var site model.DistributionSite
|
||||
var siteID *uint64
|
||||
originChannel := ""
|
||||
if len(siteCode) > 0 && strings.TrimSpace(siteCode[0]) != "" {
|
||||
trimmedSiteCode := strings.TrimSpace(siteCode[0])
|
||||
if err := tx.Where("site_code = ? AND status = 'active'", trimmedSiteCode).First(&site).Error; err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return ErrDistributionSiteInvalid
|
||||
}
|
||||
return err
|
||||
}
|
||||
siteID = &site.ID
|
||||
originChannel = site.SiteCode
|
||||
}
|
||||
|
||||
listingNo, err := r.nextListingNo(tx, now)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -35,6 +51,7 @@ func (r *Repository) Create(ctx context.Context, ownerID uint64, req CreateReque
|
||||
return err
|
||||
}
|
||||
listingStatus, reviewStatus, publishedAt := initialPublishState(reviewRequired)
|
||||
|
||||
account := model.GameAccount{
|
||||
OwnerID: ownerID,
|
||||
GameName: "delta_force",
|
||||
@@ -52,15 +69,6 @@ func (r *Repository) Create(ctx context.Context, ownerID uint64, req CreateReque
|
||||
return err
|
||||
}
|
||||
|
||||
var site model.DistributionSite
|
||||
var siteID *uint64
|
||||
if len(siteCode) > 0 && strings.TrimSpace(siteCode[0]) != "" {
|
||||
trimmedSiteCode := strings.TrimSpace(siteCode[0])
|
||||
if err := tx.Where("site_code = ? AND status = 'active'", trimmedSiteCode).First(&site).Error; err == nil {
|
||||
siteID = &site.ID
|
||||
}
|
||||
}
|
||||
|
||||
priceCent := normalizedListingPriceCent(req)
|
||||
listing := model.RentalListing{
|
||||
ListingNo: listingNo,
|
||||
@@ -72,6 +80,7 @@ func (r *Repository) Create(ctx context.Context, ownerID uint64, req CreateReque
|
||||
ReviewStatus: reviewStatus,
|
||||
PublishedAt: publishedAt,
|
||||
DistributionSiteID: siteID,
|
||||
SourceChannel: originChannel,
|
||||
}
|
||||
if err := tx.Create(&listing).Error; err != nil {
|
||||
return err
|
||||
@@ -203,6 +212,7 @@ func (r *Repository) CreateFromExternalUpload(ctx context.Context, upload extern
|
||||
HandoffMode: "platform",
|
||||
SettlementMode: "platform_managed",
|
||||
ManagedAdminID: &admin.ID,
|
||||
SourceChannel: upload.SourceChannel,
|
||||
}
|
||||
if err := tx.Create(&listing).Error; err != nil {
|
||||
return err
|
||||
|
||||
Reference in New Issue
Block a user