diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 4b79eeceb..c9d019b30 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -499,6 +499,7 @@ func CopyStoreSkus(ctx *jxcontext.Context, fromStoreID, toStoreID int, copyMode panic(r) } }() + now := time.Now() if copyMode == CopyStoreSkuModeFresh || copyMode == CopyStoreSkuModeUpdate { sqlDelete := ` UPDATE store_sku_bind t1 @@ -518,8 +519,8 @@ func CopyStoreSkus(ctx *jxcontext.Context, fromStoreID, toStoreID int, copyMode utils.DefaultTimeValue, utils.DefaultTimeValue, utils.DefaultTimeValue, - time.Now(), - time.Now(), + now, + now, userName, model.StoreSkuBindStatusDeleted, model.SyncFlagNewMask, @@ -541,36 +542,81 @@ func CopyStoreSkus(ctx *jxcontext.Context, fromStoreID, toStoreID int, copyMode } } sql := ` + UPDATE store_sku_bind t1 + JOIN store_sku_bind t0 ON t0.store_id = ? AND t0.sku_id = t1.sku_id AND t0.deleted_at = ? + JOIN sku t2 ON t1.sku_id = t2.id AND t2.deleted_at = ? + JOIN sku_name t3 ON t2.name_id = t3.id AND t3.deleted_at = ? + JOIN sku_category t4 ON t3.category_id = t4.id AND t4.deleted_at = ? + SET t1.last_operator = ?, + t1.deleted_at = ?, + t1.sub_store_id = 0, + t1.price = t0.price * ? / 100, + t1.unit_price = t0.unit_price * ? / 100, + t1.status = t0.status, + t1.jd_sync_status = ?, + t1.elm_sync_status = ?, + t1.ebai_sync_status = ? + WHERE t1.store_id = ? AND (t1.deleted_at = ? OR t1.deleted_at = ?) + ` + sqlParams := []interface{}{ + fromStoreID, + utils.DefaultTimeValue, + utils.DefaultTimeValue, + utils.DefaultTimeValue, + utils.DefaultTimeValue, + userName, + utils.DefaultTimeValue, + pricePercentage, + pricePercentage, + model.SyncFlagNewMask, + model.SyncFlagNewMask, + model.SyncFlagNewMask, + toStoreID, + utils.DefaultTimeValue, + now, + } + sql += sqlCatAndSku + sqlParams = append(sqlParams, sqlCatAndSkuParams) + globals.SugarLogger.Debug(sql) + num, err = dao.ExecuteSQL(db, sql, sqlParams) + globals.SugarLogger.Debug(num) + if err != nil { + return 0, err + } + + sql = ` INSERT INTO store_sku_bind(created_at, updated_at, last_operator, deleted_at, store_id, sku_id, sub_store_id, price, unit_price, status, jd_sync_status, elm_sync_status, ebai_sync_status) - SELECT NOW(), NOW(), ?, ?, - ?, t1.sku_id, 0, t1.price * ? / 100, t1.unit_price * ? / 100, t1.status, ?, ?, ? + SELECT ?, ?, ?, ?, ?, + t1.sku_id, 0, t1.price * ? / 100, t1.unit_price * ? / 100, t1.status, ?, ?, ? FROM store_sku_bind t1 JOIN sku t2 ON t1.sku_id = t2.id AND t2.deleted_at = ? JOIN sku_name t3 ON t2.name_id = t3.id AND t3.deleted_at = ? JOIN sku_category t4 ON t3.category_id = t4.id AND t4.deleted_at = ? + LEFT JOIN store_sku_bind t0 ON t1.sku_id = t0.sku_id AND t0.store_id = ? AND t0.deleted_at = ? WHERE t1.store_id = ? AND t1.deleted_at = ? ` - sqlParams := []interface{}{ - userName, + sqlParams = []interface{}{ + now, now, userName, utils.DefaultTimeValue, toStoreID, + pricePercentage, + pricePercentage, + model.SyncFlagNewMask, + model.SyncFlagNewMask, + model.SyncFlagNewMask, + utils.DefaultTimeValue, + utils.DefaultTimeValue, utils.DefaultTimeValue, toStoreID, - pricePercentage, - pricePercentage, - model.SyncFlagNewMask, - model.SyncFlagNewMask, - model.SyncFlagNewMask, - utils.DefaultTimeValue, - utils.DefaultTimeValue, utils.DefaultTimeValue, fromStoreID, utils.DefaultTimeValue, } - sql += sqlCatAndSku + sql += sqlCatAndSku + " AND t0.id IS NULL" sqlParams = append(sqlParams, sqlCatAndSkuParams) num, err = dao.ExecuteSQL(db, sql, sqlParams) - if err == nil { - dao.Commit(db) + if err != nil { + return 0, err } + dao.Commit(db) return num, err }