- 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
|
||||
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 = ?
|
||||
WHERE t1.name_id = ? AND t1.deleted_at = ?`
|
||||
WHERE t1.name_id = ? AND t1.deleted_at = ?
|
||||
FOR UPDATE`
|
||||
sqlParams := []interface{}{
|
||||
storeID,
|
||||
utils.DefaultTimeValue,
|
||||
@@ -585,38 +586,52 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, storeIDs []int, skuBind
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
needUpdate := false
|
||||
// 用了SELECT FOR UPDATE后,只更新修改字段是没有必要的,暂时保留
|
||||
updateFieldMap := make(map[string]int)
|
||||
if skuBindInfo.IsFocus == 1 {
|
||||
skuBind.Status = model.StoreSkuBindStatusDontSale // 缺省不可售?
|
||||
skuBind.DeletedAt = utils.DefaultTimeValue
|
||||
skuBind.UnitPrice = unitPrice
|
||||
skuBind.Price = jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit, v.SkuNameUnit)
|
||||
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 {
|
||||
skuBind.Status = tmpStatus
|
||||
setStoreSkuBindStatus(skuBind, model.SyncFlagSaleMask)
|
||||
needUpdate = true
|
||||
updateFieldMap[model.FieldStatus] = 1
|
||||
}
|
||||
if skuBindInfo.UnitPrice != 0 { // 这里是否需要加此条件限制
|
||||
skuBind.UnitPrice = unitPrice
|
||||
skuBind.Price = jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit, v.SkuNameUnit)
|
||||
setStoreSkuBindStatus(skuBind, model.SyncFlagPriceMask)
|
||||
needUpdate = true
|
||||
updateFieldMap["UnitPrice"] = 1
|
||||
updateFieldMap["Price"] = 1
|
||||
}
|
||||
if inSkuBind != nil && inSkuBind.EbaiID != 0 {
|
||||
skuBind.EbaiID = inSkuBind.EbaiID
|
||||
needUpdate = true
|
||||
}
|
||||
if inSkuBind != nil && inSkuBind.ElmID != 0 {
|
||||
skuBind.ElmID = inSkuBind.ElmID
|
||||
needUpdate = true
|
||||
}
|
||||
if needUpdate {
|
||||
// todo 这里应该是不需处理这个信息的吧?
|
||||
// if inSkuBind != nil && inSkuBind.EbaiID != 0 {
|
||||
// skuBind.EbaiID = inSkuBind.EbaiID
|
||||
// updateFieldMap["EbaiID"] = 1
|
||||
// }
|
||||
// if inSkuBind != nil && inSkuBind.ElmID != 0 {
|
||||
// skuBind.ElmID = inSkuBind.ElmID
|
||||
// updateFieldMap["ElmID"] = 1
|
||||
// }
|
||||
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)
|
||||
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)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user