From 87f97c42678890400526d2ed66485f338a25d9af Mon Sep 17 00:00:00 2001 From: gazebo Date: Tue, 21 Jan 2020 11:31:34 +0800 Subject: [PATCH] =?UTF-8?q?SyncActStoreSku2StoreSkuAct=E5=AF=B9=E4=BA=8EHi?= =?UTF-8?q?ntActID=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/act/act.go | 11 +++++++---- business/jxstore/cms/sync_store_sku.go | 10 ++++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/business/jxstore/act/act.go b/business/jxstore/act/act.go index a7b4fd0df..80f0cb29d 100644 --- a/business/jxstore/act/act.go +++ b/business/jxstore/act/act.go @@ -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 { diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 735140ea1..b17ea42e7 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -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)