diff --git a/business/partner/purchase/mtwm/order.go b/business/partner/purchase/mtwm/order.go index 54ca42174..f62298a42 100644 --- a/business/partner/purchase/mtwm/order.go +++ b/business/partner/purchase/mtwm/order.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "net/url" + "regexp" "time" "git.rosy.net.cn/baseapi/platformapi/mtwmapi" @@ -39,6 +40,10 @@ const ( callDeliveryDelayGap = 30 ) +var ( + specPat = regexp.MustCompile(`(\d+)(.+)`) +) + var ( VendorStatus2StatusMap = map[string]int{ mtwmapi.OrderStatusUserCommitted: model.OrderStatusUnknown, @@ -130,7 +135,6 @@ func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo for _, product := range detail { // product := product2.(map[string]interface{}) skuName := product["food_name"].(string) - _, _, _, specUnit, _, specQuality := jxutils.SplitSkuName(skuName) skuID := utils.Interface2String(product["sku_id"]) sku := &model.OrderSku{ VendorOrderID: order.VendorOrderID, @@ -139,7 +143,7 @@ func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo SkuID: int(utils.Str2Int64WithDefault(skuID, 0)), VendorSkuID: skuID, SkuName: skuName, - Weight: jxutils.FormatSkuWeight(specQuality, specUnit), // 订单信息里没有重量,只有名字里尝试找 + Weight: getSkuWeight(product), SalePrice: jxutils.StandardPrice2Int(utils.MustInterface2Float64(product["price"])), // PromotionType: int(utils.MustInterface2Int64(product["promotionType"])), } @@ -179,6 +183,18 @@ func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo return order } +func getSkuWeight(product map[string]interface{}) (weight int) { + searchResult := specPat.FindStringSubmatch(product["spec"].(string)) + if len(searchResult) == 3 { + weight = jxutils.FormatSkuWeight(float32(utils.Str2Float64WithDefault(searchResult[1], 0)), utils.TrimBlankChar(searchResult[2])) + } + if weight == 0 { + _, _, _, specUnit, _, specQuality := jxutils.SplitSkuName(product["food_name"].(string)) + weight = jxutils.FormatSkuWeight(specQuality, specUnit) + } + return weight +} + func (c *PurchaseHandler) onOrderMsg(msg *mtwmapi.CallbackMsg) (response *mtwmapi.CallbackResponse) { var err error if c.isAfsMsg(msg) {