- handle len(allBinds) == 0 in updateStoresSkusWithoutSync
This commit is contained in:
@@ -522,98 +522,100 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, storeIDs []int, skuBind
|
|||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
}
|
}
|
||||||
if err = dao.GetRows(db, &allBinds, sql, sqlParams...); err == nil {
|
if err = dao.GetRows(db, &allBinds, sql, sqlParams...); err == nil {
|
||||||
// globals.SugarLogger.Debug(utils.Format4Output(allBinds, false))
|
if len(allBinds) > 0 {
|
||||||
inSkuBinsMap := make(map[int]*StoreSkuBindSkuInfo, len(inSkuBinds))
|
// globals.SugarLogger.Debug(utils.Format4Output(allBinds, false))
|
||||||
for _, v := range inSkuBinds {
|
inSkuBinsMap := make(map[int]*StoreSkuBindSkuInfo, len(inSkuBinds))
|
||||||
inSkuBinsMap[v.SkuID] = v
|
for _, v := range inSkuBinds {
|
||||||
}
|
inSkuBinsMap[v.SkuID] = v
|
||||||
unitPrice := 0
|
|
||||||
if skuBindInfo.UnitPrice != 0 {
|
|
||||||
unitPrice = skuBindInfo.UnitPrice
|
|
||||||
} else {
|
|
||||||
unitPrice = allBinds[0].UnitPrice
|
|
||||||
if unitPrice == 0 {
|
|
||||||
unitPrice = allBinds[0].SkuNamePrice
|
|
||||||
}
|
}
|
||||||
}
|
unitPrice := 0
|
||||||
for _, v := range allBinds {
|
if skuBindInfo.UnitPrice != 0 {
|
||||||
var num int64
|
unitPrice = skuBindInfo.UnitPrice
|
||||||
inSkuBind := inSkuBinsMap[v.RealSkuID]
|
|
||||||
// globals.SugarLogger.Debug(utils.Format4Output(inSkuBind, false))
|
|
||||||
var skuBind *model.StoreSkuBind
|
|
||||||
if v.ID == 0 {
|
|
||||||
if skuBindInfo.IsFocus == 1 {
|
|
||||||
skuBind = &model.StoreSkuBind{
|
|
||||||
StoreID: storeID,
|
|
||||||
SkuID: v.RealSkuID,
|
|
||||||
SubStoreID: skuBindInfo.SubStoreID, // todo 这个应该从用户信息中自动获得
|
|
||||||
UnitPrice: unitPrice,
|
|
||||||
Price: jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit, v.SkuNameUnit),
|
|
||||||
Status: model.StoreSkuBindStatusDontSale, // 缺省不可售?
|
|
||||||
}
|
|
||||||
if tmpStatus := getSkuSaleStatus(inSkuBind, skuBindInfo); tmpStatus != model.StoreSkuBindStatusNA {
|
|
||||||
skuBind.Status = tmpStatus
|
|
||||||
}
|
|
||||||
setStoreSkuBindStatus(skuBind, model.SyncFlagNewMask)
|
|
||||||
dao.WrapAddIDCULDEntity(skuBind, userName)
|
|
||||||
globals.SugarLogger.Debug(utils.Format4Output(skuBind, false))
|
|
||||||
if err = dao.CreateEntity(db, skuBind); err != nil {
|
|
||||||
dao.Rollback(db)
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
num = 1
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
skuBind = &v.StoreSkuBind
|
unitPrice = allBinds[0].UnitPrice
|
||||||
|
if unitPrice == 0 {
|
||||||
if skuBindInfo.IsFocus == -1 {
|
unitPrice = allBinds[0].SkuNamePrice
|
||||||
if num, err = dao.DeleteEntityLogically(db, skuBind, map[string]interface{}{
|
}
|
||||||
model.FieldStatus: model.StoreSkuBindStatusDeleted,
|
}
|
||||||
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
for _, v := range allBinds {
|
||||||
model.FieldElmSyncStatus: model.SyncFlagDeletedMask,
|
var num int64
|
||||||
model.FieldEbaiSyncStatus: model.SyncFlagDeletedMask,
|
inSkuBind := inSkuBinsMap[v.RealSkuID]
|
||||||
}, userName, nil); err != nil {
|
// globals.SugarLogger.Debug(utils.Format4Output(inSkuBind, false))
|
||||||
dao.Rollback(db)
|
var skuBind *model.StoreSkuBind
|
||||||
return nil, err
|
if v.ID == 0 {
|
||||||
}
|
|
||||||
} else {
|
|
||||||
needUpdate := false
|
|
||||||
if skuBindInfo.IsFocus == 1 {
|
if skuBindInfo.IsFocus == 1 {
|
||||||
skuBind.Status = model.StoreSkuBindStatusDontSale // 缺省不可售?
|
skuBind = &model.StoreSkuBind{
|
||||||
skuBind.DeletedAt = utils.DefaultTimeValue
|
StoreID: storeID,
|
||||||
needUpdate = true
|
SkuID: v.RealSkuID,
|
||||||
}
|
SubStoreID: skuBindInfo.SubStoreID, // todo 这个应该从用户信息中自动获得
|
||||||
if tmpStatus := getSkuSaleStatus(inSkuBind, skuBindInfo); tmpStatus != model.StoreSkuBindStatusNA {
|
UnitPrice: unitPrice,
|
||||||
skuBind.Status = tmpStatus
|
Price: jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit, v.SkuNameUnit),
|
||||||
setStoreSkuBindStatus(skuBind, model.SyncFlagSaleMask)
|
Status: model.StoreSkuBindStatusDontSale, // 缺省不可售?
|
||||||
needUpdate = true
|
}
|
||||||
}
|
if tmpStatus := getSkuSaleStatus(inSkuBind, skuBindInfo); tmpStatus != model.StoreSkuBindStatusNA {
|
||||||
if skuBindInfo.UnitPrice != 0 { // 这里是否需要加此条件限制
|
skuBind.Status = tmpStatus
|
||||||
skuBind.UnitPrice = unitPrice
|
}
|
||||||
skuBind.Price = jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit, v.SkuNameUnit)
|
setStoreSkuBindStatus(skuBind, model.SyncFlagNewMask)
|
||||||
setStoreSkuBindStatus(skuBind, model.SyncFlagPriceMask)
|
dao.WrapAddIDCULDEntity(skuBind, userName)
|
||||||
needUpdate = true
|
globals.SugarLogger.Debug(utils.Format4Output(skuBind, false))
|
||||||
}
|
if err = dao.CreateEntity(db, skuBind); err != nil {
|
||||||
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 {
|
|
||||||
setStoreSkuBindStatus(skuBind, model.SyncFlagModifiedMask)
|
|
||||||
dao.WrapUpdateULEntity(skuBind, userName)
|
|
||||||
if num, err = dao.UpdateEntity(db, skuBind); err != nil {
|
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
num = 1
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
skuBind = &v.StoreSkuBind
|
||||||
|
|
||||||
|
if skuBindInfo.IsFocus == -1 {
|
||||||
|
if num, err = dao.DeleteEntityLogically(db, skuBind, map[string]interface{}{
|
||||||
|
model.FieldStatus: model.StoreSkuBindStatusDeleted,
|
||||||
|
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
||||||
|
model.FieldElmSyncStatus: model.SyncFlagDeletedMask,
|
||||||
|
model.FieldEbaiSyncStatus: model.SyncFlagDeletedMask,
|
||||||
|
}, userName, nil); err != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
needUpdate := false
|
||||||
|
if skuBindInfo.IsFocus == 1 {
|
||||||
|
skuBind.Status = model.StoreSkuBindStatusDontSale // 缺省不可售?
|
||||||
|
skuBind.DeletedAt = utils.DefaultTimeValue
|
||||||
|
needUpdate = true
|
||||||
|
}
|
||||||
|
if tmpStatus := getSkuSaleStatus(inSkuBind, skuBindInfo); tmpStatus != model.StoreSkuBindStatusNA {
|
||||||
|
skuBind.Status = tmpStatus
|
||||||
|
setStoreSkuBindStatus(skuBind, model.SyncFlagSaleMask)
|
||||||
|
needUpdate = true
|
||||||
|
}
|
||||||
|
if skuBindInfo.UnitPrice != 0 { // 这里是否需要加此条件限制
|
||||||
|
skuBind.UnitPrice = unitPrice
|
||||||
|
skuBind.Price = jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit, v.SkuNameUnit)
|
||||||
|
setStoreSkuBindStatus(skuBind, model.SyncFlagPriceMask)
|
||||||
|
needUpdate = true
|
||||||
|
}
|
||||||
|
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 {
|
||||||
|
setStoreSkuBindStatus(skuBind, model.SyncFlagModifiedMask)
|
||||||
|
dao.WrapUpdateULEntity(skuBind, userName)
|
||||||
|
if num, err = dao.UpdateEntity(db, skuBind); err != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
if skuBind != nil && num == 1 {
|
||||||
if skuBind != nil && num == 1 {
|
needSyncIDMap[skuBind.SkuID] = 1
|
||||||
needSyncIDMap[skuBind.SkuID] = 1
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user