SyncActStoreSku2StoreSkuAct对于HintActID的处理
This commit is contained in:
@@ -1166,24 +1166,27 @@ func SyncActStoreSku2StoreSkuAct(ctx *jxcontext.Context, db *dao.DaoDB, parentTa
|
||||
}
|
||||
}()
|
||||
|
||||
// 创建时,会直接覆盖,后续修改时,会判断是否是相同的act_id
|
||||
// MySql的SET语句,顺序是有关系的,如果当前SET语句中有判断,且依赖于前一条SET过的字段,是用的是SET后的值的
|
||||
sql := `
|
||||
UPDATE store_sku_act t1
|
||||
JOIN act_store_sku_map t2 ON t2.store_id = t1.store_id AND t2.sku_id = t1.sku_id AND t2.vendor_id = t1.vendor_id AND t2.act_id = ? AND t2.sync_status <> 0
|
||||
JOIN act_store_sku t3 ON t3.store_id = t1.store_id AND t3.sku_id = t1.sku_id AND t3.act_id = t2.act_id
|
||||
JOIN act_map t4 ON t4.act_id = t2.act_id AND t4.vendor_id = t2.vendor_id
|
||||
SET
|
||||
t1.sync_status = IF(t1.act_percentage = IF(t2.sync_status & ? = 0 AND t3.deleted_at = ?, t3.price_percentage, 0), 0, ?),
|
||||
t1.act_percentage = IF(t2.sync_status & ? = 0 AND t3.deleted_at = ?, t3.price_percentage, 0),
|
||||
t1.sync_status = ?,
|
||||
t1.updated_at = NOW(),
|
||||
t1.last_operator = ?,
|
||||
t1.hint_act_id = t2.act_id
|
||||
WHERE t1.vendor_id = ? AND t1.act_percentage <> IF(t2.sync_status & ? = 0 AND t3.deleted_at = ?, t3.price_percentage, 0)
|
||||
WHERE t1.vendor_id = ? AND (t4.sync_status & ? <> 0 OR t1.hint_act_id = t2.act_id)
|
||||
`
|
||||
sqlParams := []interface{}{
|
||||
act.ID,
|
||||
model.SyncFlagDeletedMask, utils.DefaultTimeValue, model.SyncFlagModifiedMask,
|
||||
model.SyncFlagDeletedMask, utils.DefaultTimeValue,
|
||||
model.SyncFlagModifiedMask,
|
||||
ctx.GetUserName(),
|
||||
act.VendorID, model.SyncFlagDeletedMask, utils.DefaultTimeValue,
|
||||
act.VendorID, model.SyncFlagNewMask,
|
||||
}
|
||||
_, err = dao.ExecuteSQL(dao.GetDB(), sql, sqlParams...)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user