26 lines
975 B
Go
26 lines
975 B
Go
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
|
|
}
|