- 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,
|
||||
}
|
||||
if err = dao.GetRows(db, &allBinds, sql, sqlParams...); err == nil {
|
||||
// globals.SugarLogger.Debug(utils.Format4Output(allBinds, false))
|
||||
inSkuBinsMap := make(map[int]*StoreSkuBindSkuInfo, len(inSkuBinds))
|
||||
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
|
||||
if len(allBinds) > 0 {
|
||||
// globals.SugarLogger.Debug(utils.Format4Output(allBinds, false))
|
||||
inSkuBinsMap := make(map[int]*StoreSkuBindSkuInfo, len(inSkuBinds))
|
||||
for _, v := range inSkuBinds {
|
||||
inSkuBinsMap[v.SkuID] = v
|
||||
}
|
||||
}
|
||||
for _, v := range allBinds {
|
||||
var num int64
|
||||
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
|
||||
}
|
||||
unitPrice := 0
|
||||
if skuBindInfo.UnitPrice != 0 {
|
||||
unitPrice = skuBindInfo.UnitPrice
|
||||
} 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
|
||||
unitPrice = allBinds[0].UnitPrice
|
||||
if unitPrice == 0 {
|
||||
unitPrice = allBinds[0].SkuNamePrice
|
||||
}
|
||||
}
|
||||
for _, v := range allBinds {
|
||||
var num int64
|
||||
inSkuBind := inSkuBinsMap[v.RealSkuID]
|
||||
// globals.SugarLogger.Debug(utils.Format4Output(inSkuBind, false))
|
||||
var skuBind *model.StoreSkuBind
|
||||
if v.ID == 0 {
|
||||
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 {
|
||||
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 {
|
||||
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 {
|
||||
needSyncIDMap[skuBind.SkuID] = 1
|
||||
if skuBind != nil && num == 1 {
|
||||
needSyncIDMap[skuBind.SkuID] = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user