feat: 实现采购运行时规格解析 (#255)

This commit is contained in:
chengma
2026-08-17 17:20:07 +08:00
parent a699ec8132
commit de36cfd0b5
10 changed files with 1347 additions and 42 deletions
+10 -4
View File
@@ -306,20 +306,25 @@ func HasEverClaimed(q Execer, taskID, clientID string) (bool, error) {
// TaskInfo 是提交结果时需要知道的任务基本信息。
type TaskInfo struct {
TaskType model.TaskType
// Version 是 Client 领取任务时拿到的乐观版本号。
Version int64
// GoodsID 是关联的**蝦皮**商品编号。
GoodsID string
// PddGoodsID 是要采集/购买的**拼多多**商品编号。
// 采集结果落到 pdd_products 时用的是它,不是 GoodsID —— 被采集的是 PDD 商品。
PddGoodsID string
// PddOptions 是任务创建时固定的目标规格 JSON。
// 运行时规格解析必须逐项核对,不能接受 Client 临时改写目标规格。
PddOptions string
}
// GetTaskInfo 查任务的类型和关联商品。任务不存在时返回 (nil, nil)。
// GetTaskInfo 查任务的类型、版本和关联商品。任务不存在时返回 (nil, nil)。
func GetTaskInfo(q Execer, taskID string) (*TaskInfo, error) {
var info TaskInfo
var gid, pddGID sql.NullString
var gid, pddGID, pddOptions sql.NullString
err := q.QueryRow(
`SELECT task_type, goods_id, pdd_goods_id FROM tasks WHERE task_id = ?`,
taskID).Scan(&info.TaskType, &gid, &pddGID)
`SELECT task_type,version,goods_id,pdd_goods_id,pdd_options FROM tasks WHERE task_id = ?`,
taskID).Scan(&info.TaskType, &info.Version, &gid, &pddGID, &pddOptions)
if err == sql.ErrNoRows {
return nil, nil
}
@@ -328,6 +333,7 @@ func GetTaskInfo(q Execer, taskID string) (*TaskInfo, error) {
}
info.GoodsID = gid.String
info.PddGoodsID = pddGID.String
info.PddOptions = pddOptions.String
return &info, nil
}