feat: 支持蝦皮批量创建 PDD 采集任务 (#185)
This commit is contained in:
@@ -112,6 +112,43 @@ func CreateShopeePddCollectTaskForUser(db *sql.DB, actor *model.User, shopeeGood
|
||||
return CreatePddCollectTasksForUser(db, actor, []string{product.PddGoodsID}, "")
|
||||
}
|
||||
|
||||
// CreateShopeePddCollectTasksForUser 把勾选的蝦皮商品转换成当前 PDD 商品后批量建采集任务。
|
||||
// 蝦皮与 PDD 可以多对一,因此交给统一 PDD 服务前先按 PDD goods_id 去重;
|
||||
// 商品不存在和未关联按原因跳过,其余状态、防重和客户端权限仍由统一服务处理。
|
||||
func CreateShopeePddCollectTasksForUser(db *sql.DB, actor *model.User, shopeeGoodsIDs []string, clientID string) (CollectTaskResult, error) {
|
||||
shopeeGoodsIDs = dedupe(shopeeGoodsIDs)
|
||||
if len(shopeeGoodsIDs) == 0 {
|
||||
return CollectTaskResult{}, invalidInput("没有选择蝦皮商品")
|
||||
}
|
||||
links, err := repository.ListShopeePddLinksByGoodsIDs(db, shopeeGoodsIDs)
|
||||
if err != nil {
|
||||
return CollectTaskResult{}, err
|
||||
}
|
||||
|
||||
var skipped CollectTaskResult
|
||||
pddGoodsIDs := make([]string, 0, len(shopeeGoodsIDs))
|
||||
for _, shopeeGoodsID := range shopeeGoodsIDs {
|
||||
pddGoodsID, exists := links[shopeeGoodsID]
|
||||
if !exists {
|
||||
skipped.SkippedShopeeMissing++
|
||||
continue
|
||||
}
|
||||
if strings.TrimSpace(pddGoodsID) == "" {
|
||||
skipped.SkippedUnlinked++
|
||||
continue
|
||||
}
|
||||
pddGoodsIDs = append(pddGoodsIDs, pddGoodsID)
|
||||
}
|
||||
|
||||
result, err := CreatePddCollectTasksForUser(db, actor, dedupe(pddGoodsIDs), clientID)
|
||||
if err != nil {
|
||||
return CollectTaskResult{}, err
|
||||
}
|
||||
result.SkippedShopeeMissing = skipped.SkippedShopeeMissing
|
||||
result.SkippedUnlinked = skipped.SkippedUnlinked
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// AssociateSybPdd 从顺运宝明细解析出可信的蝦皮商品,再复用统一关联逻辑。
|
||||
func AssociateSybPdd(db *sql.DB, sybID, rawURL string, confirmReplace bool) (string, error) {
|
||||
context, err := repository.GetSybOrderContext(db, strings.TrimSpace(sybID))
|
||||
|
||||
Reference in New Issue
Block a user