diff --git a/business/partner/purchase/jdshop/callback.go b/business/partner/purchase/jdshop/callback.go index 11ddb3581..7abeaaa8f 100644 --- a/business/partner/purchase/jdshop/callback.go +++ b/business/partner/purchase/jdshop/callback.go @@ -118,7 +118,6 @@ func result2Orders(msg *jdshopapi.CallBackResult) (order *model.GoodsOrder, err order.ConsigneeLat = jxutils.StandardCoordinate2Int(lat) order.CoordinateType = model.CoordinateTypeMars } - var skuIDs []int for _, v := range msg.ItemInfoList { sku := &model.OrderSku{ VendorID: model.VendorIDJDShop, @@ -136,7 +135,6 @@ func result2Orders(msg *jdshopapi.CallBackResult) (order *model.GoodsOrder, err _, _, _, specUnit, _, specQuality := jxutils.SplitSkuName(v.SkuName) sku.Weight = jxutils.FormatSkuWeight(specQuality, specUnit) order.Skus = append(order.Skus, sku) - skuIDs = append(skuIDs, sku.SkuID) } storeList, err := common.GetStoreListByLocation(jxcontext.AdminCtx, jxutils.IntCoordinate2Standard(order.ConsigneeLng), jxutils.IntCoordinate2Standard(order.ConsigneeLat), 3000, false, true) if err != nil { @@ -158,27 +156,38 @@ func result2Orders(msg *jdshopapi.CallBackResult) (order *model.GoodsOrder, err order.EarningType = model.EarningTypeQuote } } - if order.EarningType == model.EarningTypeQuote { - var shopPriceSum int - storeSkuList, _ := dao.GetStoresSkusInfo(dao.GetDB(), []int{order.StoreID}, skuIDs) - for _, storeSku := range storeSkuList { - shopPriceSum += storeSku.Price + var ( + shopPriceSum int + saleNormalSum int + ) + for _, sku := range order.Skus { + storeSkuList, _ := dao.GetStoresSkusInfo(dao.GetDB(), []int{order.StoreID}, []int{sku.SkuID}) + if len(storeSkuList) > 0 && storeSkuList[0].Status == model.StoreSkuBindStatusNormal { + saleNormalSum += 1 + shopPriceSum += storeSkuList[0].Price } - if shopPriceSum+700 > int(order.TotalShopMoney) { - order.StoreID = 102919 - order.JxStoreID = 102919 - order.StoreName = "商城模板(成都发货)" - order.VendorStoreID = model.JdShopMainVendorStoreID - order.DeliveryFlag = model.OrderDeliveryFlagMaskScheduleDisabled + } + //可售数小于一半就不行 + if math.Mod(float64(len(order.Skus)), float64(2)) == 0 { + if saleNormalSum < len(order.Skus)/2 { + buildOrderTo102919(order) + } else { + if order.EarningType == model.EarningTypeQuote && shopPriceSum+700 > int(order.TotalShopMoney) { + buildOrderTo102919(order) + } + } + } else { + if saleNormalSum <= len(order.Skus)/2 { + buildOrderTo102919(order) + } else { + if order.EarningType == model.EarningTypeQuote && shopPriceSum+700 > int(order.TotalShopMoney) { + buildOrderTo102919(order) + } } } } } else { - order.StoreID = 102919 - order.JxStoreID = 102919 - order.StoreName = "商城模板(成都发货)" - order.VendorStoreID = model.JdShopMainVendorStoreID - order.DeliveryFlag = model.OrderDeliveryFlagMaskScheduleDisabled + buildOrderTo102919(order) } storeMaps, _ := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDJDShop}, []int{order.StoreID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "") if len(storeMaps) > 0 { @@ -198,18 +207,24 @@ func result2Orders(msg *jdshopapi.CallBackResult) (order *model.GoodsOrder, err globals.SugarLogger.Debugf("暂不支持的京东商城订单类型!type: %v", msg.OrderState) return nil, err } - if msg.IDSopShipmenttype == jdshopapi.IdSopShipmenttypeTC { if time, err := api.JdShopAPI.GetOrderExtInfoByOrderId(order.VendorOrderID2); err == nil { order.BusinessType = model.BusinessTypeDingshida order.ExpectedDeliveredTime = utils.Str2Time(time) } } - setJdsOrderSeq(order) return order, err } +func buildOrderTo102919(order *model.GoodsOrder) { + order.StoreID = 102919 + order.JxStoreID = 102919 + order.StoreName = "商城模板(成都发货)" + order.VendorStoreID = model.JdShopMainVendorStoreID + order.DeliveryFlag = model.OrderDeliveryFlagMaskScheduleDisabled +} + func setJdsOrderSeq(order *model.GoodsOrder) (err error) { type tCount struct { Count int `json:"count"`