SyncActStoreSku2StoreSkuAct对于HintActID的处理

This commit is contained in:
gazebo
2020-01-21 11:31:34 +08:00
parent c6dbd53320
commit 87f97c4267
2 changed files with 15 additions and 6 deletions

View File

@@ -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 {

View File

@@ -1132,11 +1132,17 @@ func SyncStoreSkuBindAct(ctx *jxcontext.Context, parentTask tasksch.ITask, isCre
}
}
task := tasksch.NewParallelTask("处理门店商品绑定活动", nil, ctx,
var taskName string
if isCreate {
taskName = "创建门店绑定活动"
} else {
taskName = "取消门店绑定活动"
}
task := tasksch.NewParallelTask(taskName, nil, ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
storeID := batchItemList[0].(int)
vendorIDs := jxutils.IntMap2List(storeVendorMap[storeID])
subTask := tasksch.NewParallelTask(fmt.Sprintf("处理门店商品绑定活动门店:%d", storeID), nil, ctx,
subTask := tasksch.NewParallelTask(fmt.Sprintf("%s门店:%d", taskName, storeID), nil, ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
vendorID := batchItemList[0].(int)
storeDetail, err := dao.GetStoreDetail(db, storeID, vendorID)