fix: 修复顺运宝采购完成状态与重复采购 (#169)
This commit is contained in:
+16
-6
@@ -959,6 +959,8 @@ const (
|
||||
SybStageMappingPending = "mapping_pending"
|
||||
SybStagePurchaseReady = "purchase_ready"
|
||||
SybStageTaskCreated = "task_created"
|
||||
SybStagePurchaseCompleted = "purchase_completed"
|
||||
SybStagePurchaseReview = "purchase_review"
|
||||
SybStagePurchaseBlocked = "purchase_blocked"
|
||||
)
|
||||
|
||||
@@ -980,6 +982,8 @@ func SybStageOptions() []SybStageOption {
|
||||
{Value: SybStageMappingPending, Text: "规格待匹配"},
|
||||
{Value: SybStagePurchaseReady, Text: "可创建采购任务"},
|
||||
{Value: SybStageTaskCreated, Text: "已创建采购任务"},
|
||||
{Value: SybStagePurchaseCompleted, Text: "采购完成"},
|
||||
{Value: SybStagePurchaseReview, Text: "采购待人工核对"},
|
||||
{Value: SybStagePurchaseBlocked, Text: "采购数据异常"},
|
||||
}
|
||||
}
|
||||
@@ -1004,6 +1008,12 @@ func SybStageLabel(stage string) string {
|
||||
|
||||
func sybStageFor(c repository.SybOrderContext) (stage, text, help, action string) {
|
||||
switch {
|
||||
case c.HasSucceededPurchaseTask:
|
||||
return SybStagePurchaseCompleted, "采购完成", "采购任务已成功完成,请到采集采购页面查看 PDD 订单编号和下单时间。", "查看采购结果"
|
||||
case c.HasManualReviewPurchaseTask:
|
||||
return SybStagePurchaseReview, "采购待人工核对", "任务可能已经下单,必须先核对订单,禁止重新创建采购任务。", "查看采购任务"
|
||||
case c.HasActiveTask:
|
||||
return SybStageTaskCreated, "已创建采购任务", "已有未结束的采购任务,请到采集采购页面查看。", "查看采购任务"
|
||||
case c.Order.SpecKey == "":
|
||||
return SybStageSpecMissing, "采购数据异常:顺运宝未提供规格", "缺少规格原文,不能匹配或创建采购任务。", "核对数据"
|
||||
case c.PddGoodsID == "" || c.PddCollectStatus == "":
|
||||
@@ -1020,8 +1030,6 @@ func sybStageFor(c repository.SybOrderContext) (stage, text, help, action string
|
||||
help += " 原因:" + c.PddCollectMsg
|
||||
}
|
||||
return SybStagePddFailed, "PDD 采集失败", help, "重新采集"
|
||||
case c.HasActiveTask:
|
||||
return SybStageTaskCreated, "已创建采购任务", "已有未结束的采购任务,请到采集采购页面查看。", "查看采购任务"
|
||||
case !mappingIsValid(c):
|
||||
return SybStageMappingPending, "规格待匹配", "PDD 数据已采集,下一步匹配采购规格。", "匹配规格"
|
||||
case c.Order.Quantity <= 0:
|
||||
@@ -1059,7 +1067,8 @@ func ListSybOrdersView(db *sql.DB, keyword, shop, stage string, page int) (*SybL
|
||||
stage = ParseSybStage(stage)
|
||||
if stage == SybStagePddCollecting || stage == SybStagePddCollectingStale ||
|
||||
stage == SybStageMappingPending || stage == SybStagePurchaseReady ||
|
||||
stage == SybStageTaskCreated || stage == SybStagePurchaseBlocked {
|
||||
stage == SybStageTaskCreated || stage == SybStagePurchaseCompleted ||
|
||||
stage == SybStagePurchaseReview || stage == SybStagePurchaseBlocked {
|
||||
return listAdvancedSybStage(db, keyword, shop, stage, page)
|
||||
}
|
||||
filter := repository.SybOrderFilter{Keyword: keyword, Shop: shop, Stage: stage}
|
||||
@@ -1096,8 +1105,8 @@ func ListSybOrdersView(db *sql.DB, keyword, shop, stage string, page int) (*SybL
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// listAdvancedSybStage 在 Service 解析最新 skus_json 后筛选映射相关阶段。
|
||||
// 这四个阶段不能只靠 SQL 判断:同一个 option key 是否仍存在,需要走唯一的
|
||||
// listAdvancedSybStage 在 Service 解析最新 skus_json 后筛选实时推导阶段。
|
||||
// 这些阶段不能只靠 SQL 判断:同一个 option key 是否仍存在,需要走唯一的
|
||||
// OptionKey 规范化逻辑。当前同步量是百到千级,先保证采购判断正确;普通列表
|
||||
// 和其余阶段仍在数据库分页。
|
||||
func listAdvancedSybStage(db *sql.DB, keyword, shop, stage string, page int) (*SybListResult, error) {
|
||||
@@ -1166,7 +1175,8 @@ func sybOrderViewFor(context repository.SybOrderContext) SybOrderView {
|
||||
}
|
||||
}
|
||||
}
|
||||
v.NeedsAttention = v.Stage != SybStagePddCollecting && v.Stage != SybStageTaskCreated
|
||||
v.NeedsAttention = v.Stage != SybStagePddCollecting && v.Stage != SybStageTaskCreated &&
|
||||
v.Stage != SybStagePurchaseCompleted
|
||||
if o.PriceTwdCent > 0 {
|
||||
v.PriceText = fmt.Sprintf("NT$%.2f", float64(o.PriceTwdCent)/100)
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user