- SELECT FOR UPDATE 4 updateStoresSkusWithoutSync
This commit is contained in:
@@ -518,7 +518,8 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, storeIDs []int, skuBind
|
|||||||
FROM sku t1
|
FROM sku t1
|
||||||
LEFT JOIN store_sku_bind t2 ON t2.sku_id = t1.id AND store_id = ? AND t2.deleted_at = ?
|
LEFT JOIN store_sku_bind t2 ON t2.sku_id = t1.id AND store_id = ? AND t2.deleted_at = ?
|
||||||
JOIN sku_name t3 ON t1.name_id = t3.id AND t3.deleted_at = ?
|
JOIN sku_name t3 ON t1.name_id = t3.id AND t3.deleted_at = ?
|
||||||
WHERE t1.name_id = ? AND t1.deleted_at = ?`
|
WHERE t1.name_id = ? AND t1.deleted_at = ?
|
||||||
|
FOR UPDATE`
|
||||||
sqlParams := []interface{}{
|
sqlParams := []interface{}{
|
||||||
storeID,
|
storeID,
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
@@ -585,38 +586,52 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, storeIDs []int, skuBind
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
needUpdate := false
|
// 用了SELECT FOR UPDATE后,只更新修改字段是没有必要的,暂时保留
|
||||||
|
updateFieldMap := make(map[string]int)
|
||||||
if skuBindInfo.IsFocus == 1 {
|
if skuBindInfo.IsFocus == 1 {
|
||||||
skuBind.Status = model.StoreSkuBindStatusDontSale // 缺省不可售?
|
skuBind.Status = model.StoreSkuBindStatusDontSale // 缺省不可售?
|
||||||
skuBind.DeletedAt = utils.DefaultTimeValue
|
skuBind.DeletedAt = utils.DefaultTimeValue
|
||||||
skuBind.UnitPrice = unitPrice
|
skuBind.UnitPrice = unitPrice
|
||||||
skuBind.Price = jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit, v.SkuNameUnit)
|
skuBind.Price = jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit, v.SkuNameUnit)
|
||||||
setStoreSkuBindStatus(skuBind, model.SyncFlagPriceMask|model.SyncFlagSaleMask)
|
setStoreSkuBindStatus(skuBind, model.SyncFlagPriceMask|model.SyncFlagSaleMask)
|
||||||
needUpdate = true
|
updateFieldMap[model.FieldStatus] = 1
|
||||||
|
updateFieldMap[model.FieldDeletedAt] = 1
|
||||||
|
updateFieldMap["UnitPrice"] = 1
|
||||||
|
updateFieldMap["Price"] = 1
|
||||||
}
|
}
|
||||||
if tmpStatus := getSkuSaleStatus(inSkuBind, skuBindInfo); tmpStatus != model.StoreSkuBindStatusNA {
|
if tmpStatus := getSkuSaleStatus(inSkuBind, skuBindInfo); tmpStatus != model.StoreSkuBindStatusNA {
|
||||||
skuBind.Status = tmpStatus
|
skuBind.Status = tmpStatus
|
||||||
setStoreSkuBindStatus(skuBind, model.SyncFlagSaleMask)
|
setStoreSkuBindStatus(skuBind, model.SyncFlagSaleMask)
|
||||||
needUpdate = true
|
updateFieldMap[model.FieldStatus] = 1
|
||||||
}
|
}
|
||||||
if skuBindInfo.UnitPrice != 0 { // 这里是否需要加此条件限制
|
if skuBindInfo.UnitPrice != 0 { // 这里是否需要加此条件限制
|
||||||
skuBind.UnitPrice = unitPrice
|
skuBind.UnitPrice = unitPrice
|
||||||
skuBind.Price = jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit, v.SkuNameUnit)
|
skuBind.Price = jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit, v.SkuNameUnit)
|
||||||
setStoreSkuBindStatus(skuBind, model.SyncFlagPriceMask)
|
setStoreSkuBindStatus(skuBind, model.SyncFlagPriceMask)
|
||||||
needUpdate = true
|
updateFieldMap["UnitPrice"] = 1
|
||||||
|
updateFieldMap["Price"] = 1
|
||||||
}
|
}
|
||||||
if inSkuBind != nil && inSkuBind.EbaiID != 0 {
|
// todo 这里应该是不需处理这个信息的吧?
|
||||||
skuBind.EbaiID = inSkuBind.EbaiID
|
// if inSkuBind != nil && inSkuBind.EbaiID != 0 {
|
||||||
needUpdate = true
|
// skuBind.EbaiID = inSkuBind.EbaiID
|
||||||
}
|
// updateFieldMap["EbaiID"] = 1
|
||||||
if inSkuBind != nil && inSkuBind.ElmID != 0 {
|
// }
|
||||||
skuBind.ElmID = inSkuBind.ElmID
|
// if inSkuBind != nil && inSkuBind.ElmID != 0 {
|
||||||
needUpdate = true
|
// skuBind.ElmID = inSkuBind.ElmID
|
||||||
}
|
// updateFieldMap["ElmID"] = 1
|
||||||
if needUpdate {
|
// }
|
||||||
|
if len(updateFieldMap) > 0 {
|
||||||
|
updateFieldMap[model.FieldJdSyncStatus] = 1
|
||||||
|
updateFieldMap[model.FieldElmSyncStatus] = 1
|
||||||
|
updateFieldMap[model.FieldEbaiSyncStatus] = 1
|
||||||
|
updateFieldMap[model.FieldMtwmSyncStatus] = 1
|
||||||
|
updateFieldMap[model.FieldWscSyncStatus] = 1
|
||||||
|
updateFieldMap[model.FieldUpdatedAt] = 1
|
||||||
|
updateFieldMap[model.FieldLastOperator] = 1
|
||||||
|
|
||||||
setStoreSkuBindStatus(skuBind, model.SyncFlagModifiedMask)
|
setStoreSkuBindStatus(skuBind, model.SyncFlagModifiedMask)
|
||||||
dao.WrapUpdateULEntity(skuBind, userName)
|
dao.WrapUpdateULEntity(skuBind, userName)
|
||||||
if num, err = dao.UpdateEntity(db, skuBind); err != nil {
|
if num, err = dao.UpdateEntity(db, skuBind /*, utils.Map2KeySlice(updateFieldMap)...*/); err != nil {
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user