package repository import "fmt" // ReplaceBackfilledPDDAvailability 只替换规格 JSON 和更新时间。 // collect_status、价格、关联及采集时间由新 JSON 和原行乐观锁共同保护,不在此处改写。 func ReplaceBackfilledPDDAvailability(q Execer, target PDDPriceBackfillTarget, newSKUsJSON, updatedAt string) (bool, error) { result, err := q.Exec(` UPDATE pdd_products SET skus_json = ?, updated_at = ? WHERE goods_id = ? AND deleted_at IS NULL AND COALESCE(skus_json, '') = ? AND collect_status = ? AND updated_at = ?`, newSKUsJSON, updatedAt, target.GoodsID, target.SKUsJSON, target.CollectStatus, target.UpdatedAt) if err != nil { return false, fmt.Errorf("确认 PDD 商品 %s 的可售状态失败: %w", target.GoodsID, err) } rows, err := result.RowsAffected() if err != nil { return false, fmt.Errorf("读取 PDD 商品 %s 的可售确认结果失败: %w", target.GoodsID, err) } return rows == 1, nil }