- handle vendorSkuID is not numeric in updateOrderSkuOtherInfo
This commit is contained in:
@@ -205,53 +205,59 @@ func (c *OrderManager) updateOrderSkuOtherInfo(order *model.GoodsOrder, db orm.O
|
||||
|
||||
var sql string
|
||||
if globals.OrderUseNewTable || jxStoreID == globals.DebugStoreID {
|
||||
vendorSkuIDs := make([]int64, len(orderSkus))
|
||||
for k, v := range orderSkus {
|
||||
vendorSkuIDs[k] = utils.Str2Int64(v.VendorSkuID)
|
||||
vendorSkuIDs := make([]int64, 0)
|
||||
for _, v := range orderSkus {
|
||||
intVendorSkuID := utils.Str2Int64WithDefault(v.VendorSkuID, 0)
|
||||
if intVendorSkuID != 0 {
|
||||
vendorSkuIDs = append(vendorSkuIDs, intVendorSkuID)
|
||||
}
|
||||
}
|
||||
if order.VendorID == model.VendorIDELM { // todo 临时用
|
||||
sql = `
|
||||
if len(vendorSkuIDs) > 0 {
|
||||
if order.VendorID == model.VendorIDELM { // todo 临时用
|
||||
sql = `
|
||||
SELECT t1.sku_id vendor_sku_id, IF(t1.custom_sku_id = -1, 0, t1.custom_sku_id) sku_id, t2.unit_price, t3.weight
|
||||
FROM eb_sku_id_map t1
|
||||
LEFT JOIN store_sku_bind t2 ON t1.custom_sku_id = t2.sku_id AND t2.deleted_at = ? AND t2.store_id = ?
|
||||
LEFT JOIN sku t3 ON t1.custom_sku_id = t3.id AND t3.deleted_at = ?
|
||||
WHERE t1.sku_id IN (-1,` + dao.GenQuestionMarks(len(vendorSkuIDs)) + ")"
|
||||
} else {
|
||||
tableName := "t2"
|
||||
if model.MultiStoresVendorMap[order.VendorID] == 1 {
|
||||
tableName = "t1"
|
||||
}
|
||||
fieldPrefix := dao.ConvertDBFieldPrefix(model.VendorNames[order.VendorID])
|
||||
sql = `
|
||||
} else {
|
||||
tableName := "t2"
|
||||
if model.MultiStoresVendorMap[order.VendorID] == 1 {
|
||||
tableName = "t1"
|
||||
}
|
||||
fieldPrefix := dao.ConvertDBFieldPrefix(model.VendorNames[order.VendorID])
|
||||
sql = `
|
||||
SELECT %s.%s_id vendor_sku_id, t1.id sku_id, t2.unit_price, t1.weight
|
||||
FROM sku t1
|
||||
LEFT JOIN store_sku_bind t2 ON t1.id = t2.sku_id AND t2.deleted_at = ? AND t2.store_id = ?
|
||||
WHERE t1.deleted_at = ? AND %s.%s_id IN (-1, ` + dao.GenQuestionMarks(len(vendorSkuIDs)) + ")"
|
||||
sql = fmt.Sprintf(sql, tableName, fieldPrefix, tableName, fieldPrefix)
|
||||
}
|
||||
var skuInfos []*tStoreSkuBindAndVendorSkuID
|
||||
db2 := dao.WrapDB(db)
|
||||
if err = dao.GetRows(db2, &skuInfos, sql, utils.DefaultTimeValue, jxStoreID, utils.DefaultTimeValue, vendorSkuIDs); err != nil {
|
||||
globals.SugarLogger.Errorf("updateOrderSkuOtherInfo can not get sku info for orderID:%s, error:%v", order.VendorOrderID, err)
|
||||
return err
|
||||
}
|
||||
skumapper := make(map[int64]*tStoreSkuBindAndVendorSkuID)
|
||||
for _, v := range skuInfos {
|
||||
skumapper[v.VendorSkuID] = v
|
||||
}
|
||||
sql = fmt.Sprintf(sql, tableName, fieldPrefix, tableName, fieldPrefix)
|
||||
}
|
||||
var skuInfos []*tStoreSkuBindAndVendorSkuID
|
||||
db2 := dao.WrapDB(db)
|
||||
if err = dao.GetRows(db2, &skuInfos, sql, utils.DefaultTimeValue, jxStoreID, utils.DefaultTimeValue, vendorSkuIDs); err != nil {
|
||||
globals.SugarLogger.Errorf("updateOrderSkuOtherInfo can not get sku info for orderID:%s, error:%v", order.VendorOrderID, err)
|
||||
return err
|
||||
}
|
||||
skumapper := make(map[int64]*tStoreSkuBindAndVendorSkuID)
|
||||
for _, v := range skuInfos {
|
||||
skumapper[v.VendorSkuID] = v
|
||||
}
|
||||
|
||||
for _, v := range orderSkus {
|
||||
if v.VendorSkuID != "-70000" { // todo hard code
|
||||
skuBindInfo := skumapper[utils.Str2Int64(v.VendorSkuID)]
|
||||
if skuBindInfo == nil {
|
||||
globals.SugarLogger.Infof("updateOrderSkuOtherInfo [运营%s]%s订单sku找不到门店价格(或商品映射),orderID:%s, StoreID:%d, VendorSkuID:%s, sku:%v", opNum, model.VendorChineseNames[order.VendorID], order.VendorOrderID, jxStoreID, v.VendorSkuID, v)
|
||||
} else {
|
||||
v.JxSkuID = skuBindInfo.SkuID
|
||||
v.ShopPrice = int64(skuBindInfo.UnitPrice)
|
||||
v.Weight = skuBindInfo.Weight // 以本地信息中的WEIGHT为准
|
||||
order.ShopPrice += v.ShopPrice * int64(v.Count)
|
||||
if skuBindInfo.UnitPrice == 0 {
|
||||
globals.SugarLogger.Infof("updateOrderSkuOtherInfo [运营%s]%s订单sku门店价格为零(一般原因为没有门店价格信息),orderID:%s, StoreID:%d, SkuID:%d, sku:%v", opNum, model.VendorChineseNames[order.VendorID], order.VendorOrderID, jxStoreID, v.JxSkuID, v)
|
||||
for _, v := range orderSkus {
|
||||
intVendorSkuID := utils.Str2Int64WithDefault(v.VendorSkuID, 0)
|
||||
if intVendorSkuID != 0 && v.VendorSkuID != "-70000" { // todo hard code
|
||||
skuBindInfo := skumapper[intVendorSkuID]
|
||||
if skuBindInfo == nil {
|
||||
globals.SugarLogger.Infof("updateOrderSkuOtherInfo [运营%s]%s订单sku找不到门店价格(或商品映射),orderID:%s, StoreID:%d, VendorSkuID:%s, sku:%v", opNum, model.VendorChineseNames[order.VendorID], order.VendorOrderID, jxStoreID, v.VendorSkuID, v)
|
||||
} else {
|
||||
v.JxSkuID = skuBindInfo.SkuID
|
||||
v.ShopPrice = int64(skuBindInfo.UnitPrice)
|
||||
v.Weight = skuBindInfo.Weight // 以本地信息中的WEIGHT为准
|
||||
order.ShopPrice += v.ShopPrice * int64(v.Count)
|
||||
if skuBindInfo.UnitPrice == 0 {
|
||||
globals.SugarLogger.Infof("updateOrderSkuOtherInfo [运营%s]%s订单sku门店价格为零(一般原因为没有门店价格信息),orderID:%s, StoreID:%d, SkuID:%d, sku:%v", opNum, model.VendorChineseNames[order.VendorID], order.VendorOrderID, jxStoreID, v.JxSkuID, v)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user