feat: 重构顺运宝规格主链路 (#88)
This commit is contained in:
@@ -8,6 +8,7 @@ import (
|
||||
|
||||
"cmautobuy/admin/model"
|
||||
"cmautobuy/admin/repository"
|
||||
"cmautobuy/admin/spec"
|
||||
)
|
||||
|
||||
// PddOptionChoice 是采集结果中的一个可购买规格组合。
|
||||
@@ -75,7 +76,7 @@ func findPddChoice(raw, key string) (*PddOptionChoice, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// SaveSybMapping 保存顺运宝明细对应蝦皮 SKU 到当前 PDD 商品的可复用映射。
|
||||
// SaveSybMapping 保存顺运宝商品规格到当前 PDD 商品的可复用映射。
|
||||
func SaveSybMapping(db *sql.DB, sybID, optionKey, operator string) error {
|
||||
tx, err := db.Begin()
|
||||
if err != nil {
|
||||
@@ -89,8 +90,12 @@ func SaveSybMapping(db *sql.DB, sybID, optionKey, operator string) error {
|
||||
if context == nil {
|
||||
return fmt.Errorf("顺运宝明细不存在")
|
||||
}
|
||||
if context.Order.ShopeeSKUID == "" {
|
||||
return fmt.Errorf("请先确认蝦皮规格")
|
||||
key, err := spec.SpecKey(context.Order.ProductSpec)
|
||||
if err != nil || context.Order.SpecKey == "" {
|
||||
return fmt.Errorf("顺运宝未提供有效规格,不能保存映射")
|
||||
}
|
||||
if key != context.Order.SpecKey {
|
||||
return fmt.Errorf("顺运宝规格身份键不一致,请联系维护者检查数据")
|
||||
}
|
||||
if context.PddGoodsID == "" || context.PddCollectStatus != string(model.CollectCollected) ||
|
||||
strings.TrimSpace(context.PddSkusJSON) == "" {
|
||||
@@ -103,11 +108,11 @@ func SaveSybMapping(db *sql.DB, sybID, optionKey, operator string) error {
|
||||
if choice == nil {
|
||||
return fmt.Errorf("所选 PDD 规格已不存在或不可购买,请刷新后重试")
|
||||
}
|
||||
if err := repository.UpsertSKUMapping(tx, model.SKUMapping{
|
||||
ShopeeSKUID: context.Order.ShopeeSKUID, PddGoodsID: context.PddGoodsID,
|
||||
if err := repository.UpsertSpecMapping(tx, model.SpecMapping{
|
||||
ShopeeGoodsID: context.Order.ShopeeGoodsID, SpecKey: key,
|
||||
SpecRaw: context.Order.ProductSpec, PddGoodsID: context.PddGoodsID,
|
||||
PddOptionKey: choice.Key, PddOptions: choice.OptionsJSON,
|
||||
GoodsID: context.Order.ShopeeGoodsID, MappedAt: model.NowISO(),
|
||||
MappedBy: strings.TrimSpace(operator),
|
||||
MappedAt: model.NowISO(), MappedBy: strings.TrimSpace(operator),
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -179,7 +184,7 @@ func CreatePurchaseTasks(db *sql.DB, actor *model.User, requests []PurchaseTaskR
|
||||
if err := repository.InsertPurchaseTask(tx, model.Task{
|
||||
TaskID: newPurchaseTaskID(), AssignedClient: clientID,
|
||||
SybID: context.Order.SybID, OrderNo: context.Order.OrderNo,
|
||||
GoodsID: context.Order.ShopeeGoodsID, ShopeeSKUID: context.Order.ShopeeSKUID,
|
||||
GoodsID: context.Order.ShopeeGoodsID,
|
||||
PddGoodsURL: context.PddGoodsURL, PddGoodsID: context.PddGoodsID,
|
||||
PddOptions: optionsJSON, Quantity: context.Order.Quantity,
|
||||
MaxPriceCent: request.MaxPriceCent,
|
||||
@@ -202,8 +207,8 @@ func validatePurchaseRequest(q repository.Execer, request PurchaseTaskRequest) (
|
||||
if context == nil {
|
||||
return "顺运宝明细不存在", nil, "", nil
|
||||
}
|
||||
if context.Order.ShopeeSKUID == "" {
|
||||
return "蝦皮规格未确认", context, "", nil
|
||||
if context.Order.SpecKey == "" {
|
||||
return "顺运宝未提供规格", context, "", nil
|
||||
}
|
||||
if context.PddGoodsID == "" || context.PddGoodsURL == "" {
|
||||
return "未关联 PDD 商品", context, "", nil
|
||||
|
||||
Reference in New Issue
Block a user