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 := ` sql := `
UPDATE store_sku_act t1 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_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_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 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.act_percentage = IF(t2.sync_status & ? = 0 AND t3.deleted_at = ?, t3.price_percentage, 0),
t1.sync_status = ?,
t1.updated_at = NOW(), t1.updated_at = NOW(),
t1.last_operator = ?, t1.last_operator = ?,
t1.hint_act_id = t2.act_id 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{}{ sqlParams := []interface{}{
act.ID, act.ID,
model.SyncFlagDeletedMask, utils.DefaultTimeValue, model.SyncFlagModifiedMask,
model.SyncFlagDeletedMask, utils.DefaultTimeValue, model.SyncFlagDeletedMask, utils.DefaultTimeValue,
model.SyncFlagModifiedMask,
ctx.GetUserName(), ctx.GetUserName(),
act.VendorID, model.SyncFlagDeletedMask, utils.DefaultTimeValue, act.VendorID, model.SyncFlagNewMask,
} }
_, err = dao.ExecuteSQL(dao.GetDB(), sql, sqlParams...) _, err = dao.ExecuteSQL(dao.GetDB(), sql, sqlParams...)
if err != nil { 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) { func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
storeID := batchItemList[0].(int) storeID := batchItemList[0].(int)
vendorIDs := jxutils.IntMap2List(storeVendorMap[storeID]) 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) { func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
vendorID := batchItemList[0].(int) vendorID := batchItemList[0].(int)
storeDetail, err := dao.GetStoreDetail(db, storeID, vendorID) storeDetail, err := dao.GetStoreDetail(db, storeID, vendorID)