From ab855c884ff79d1e811503b23233d8ddd8659be2 Mon Sep 17 00:00:00 2001 From: suyl <770236076@qq.com> Date: Thu, 17 Jun 2021 15:12:46 +0800 Subject: [PATCH] aa --- business/jxcallback/orderman/order.go | 128 +++++++++++++++++++------- tests/default_test.go | 34 ++++--- 2 files changed, 111 insertions(+), 51 deletions(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 8772e9963..dc0911c3d 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -1911,10 +1911,6 @@ func SaveJdsOrders(ctx *jxcontext.Context, orderCreatedStart, orderCreatedEnd ti } } for _, order := range orders { - order.StoreID = 100000 - order.JxStoreID = 100000 - order.StoreName = "商城模板店2" - order.VendorStoreID = model.JdShopMainVendorStoreID partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order)) globals.SugarLogger.Debugf("SaveJdsOrders, order: [%v]", utils.Format4Output(order, false)) noticeMsg := fmt.Sprintf("京东商城新订单,订单号:[%v] ,将要发到的门店id:[%v] , 门店名:[%v]", order.VendorOrderID, order.StoreID, order.StoreName) @@ -1931,6 +1927,9 @@ func SaveJdsOrders(ctx *jxcontext.Context, orderCreatedStart, orderCreatedEnd ti } func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (orders []*model.GoodsOrder, err error) { + var ( + db = dao.GetDB() + ) for _, jdsOrder := range result.OrderList { //等待付款的排除 if jdsOrder.OrderStatus != jdshopapi.JdsOrderStatusWaittingExport && jdsOrder.OrderStatus != jdshopapi.JdsOrderStatusPause && jdsOrder.OrderStatus != 51 { @@ -1981,22 +1980,6 @@ func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (o if order.TotalShopMoney < 100 { order.TotalShopMoney = 100 } - if order.ConsigneeAddress != "" { - lng, lat, _ := api.AutonaviAPI.GetCoordinateFromAddress(order.ConsigneeAddress, "") - order.ConsigneeLng = jxutils.StandardCoordinate2Int(lng) - order.ConsigneeLat = jxutils.StandardCoordinate2Int(lat) - } - // storeList, err := common.GetStoreListByLocation(ctx, jxutils.IntCoordinate2Standard(order.ConsigneeLng), jxutils.IntCoordinate2Standard(order.ConsigneeLat), 5000, false, true, 0) - // if err != nil { - // globals.SugarLogger.Debugf("jds GetStoreListByLocation error: %v", err.Error()) - // continue - // } - // order.StoreID = storeList[0].ID - // order.StoreName = storeList[0].Name - // storeMaps, _ := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDJDShop}, []int{order.StoreID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "", "") - // if len(storeMaps) > 0 { - // order.VendorStoreID = storeMaps[0].VendorStoreID - // } //如果是暂停,表示是预订单 if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusPause { order.BusinessType = model.BusinessTypeDingshida @@ -2006,19 +1989,6 @@ func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (o order.ExpectedDeliveredTime = order.OrderCreatedAt.Add(time.Hour) order.BusinessType = model.BusinessTypeImmediate } - // else { - // globals.SugarLogger.Errorf("未知的京东商城订单状态!status : %v", jdsOrder.OrderStatus) - // } - - //结算类型 - // storeDetail, _ := dao.GetStoreDetail(dao.GetDB(), order.StoreID, model.VendorIDJDShop, "") - // if storeDetail != nil { - // if storeDetail.PayPercentage < 50 { - // order.EarningType = model.EarningTypePoints - // } else { - // order.EarningType = model.EarningTypeQuote - // } - // } setJdsOrderSeq(order) for _, v := range jdsOrder.OrderItems { sku := &model.OrderSku{ @@ -2043,7 +2013,99 @@ func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (o sku.Weight = jxutils.FormatSkuWeight(specQuality, specUnit) order.Skus = append(order.Skus, sku) } + var store *dao.StoreDetail + if jdsOrder.MdbStoreID != 0 { + if store, err = dao.GetStoreDetailByVendorStoreID(db, utils.Int64ToStr(jdsOrder.MdbStoreID), model.VendorIDJDShop, "2"); store != nil && err == nil { + order.StoreID = store.ID + order.JxStoreID = store.ID + order.StoreName = store.Name + globals.SugarLogger.Debugf("jds GetStoreListByLocation, orderID: %v storeID :%v", order.VendorOrderID, order.StoreID) + //结算类型 + if store.PayPercentage < 50 { + order.EarningType = model.EarningTypePoints + } else { + order.EarningType = model.EarningTypeQuote + } + var ( + shopPriceSum int + ) + for _, sku := range order.Skus { + storeSkuList, _ := dao.GetStoresSkusInfo(db, []int{order.StoreID}, []int{sku.SkuID}) + if len(storeSkuList) > 0 { + shopPriceSum += storeSkuList[0].Price * sku.Count + sku.ShopPrice = int64(storeSkuList[0].Price) + } else { + shopPriceSum += int(sku.SalePrice) * 70 / 100 + } + } + if order.EarningType == model.EarningTypeQuote && shopPriceSum+700 > int(order.TotalShopMoney) { + buildOrderTo102919(order) + globals.SugarLogger.Debugf("resultjdsOrders return 2") + } + if order.ConsigneeAddress != "" { + var ( + cityCode = 0 + lng, lat, lng2, lat2 float64 + ) + if shopDetail, _ := api.JdShopAPI.ShopDetail(int(jdsOrder.MdbStoreID)); shopDetail != nil { + if shopDetail.AddCode2 != 0 { + var place = &model.Place{} + sql1 := "SELECT * FROM place WHERE jds_code = ?" + sqlParams1 := []interface{}{shopDetail.AddCode2} + if err2 := dao.GetRow(db, &place, sql1, sqlParams1); err2 == nil && place != nil { + cityCode = place.JdsCode + } else { + sql2 := "SELECT * FROM place WHERE jd_code = ?" + sqlParams2 := []interface{}{shopDetail.AddCode2} + if err3 := dao.GetRow(db, &place, sql2, sqlParams2); err3 == nil && place != nil { + cityCode = place.JdCode + } + } + } + } + if cityCode != 0 { + lng, lat, _ = api.AutonaviAPI.GetCoordinateFromAddressByPage(order.ConsigneeAddress, cityCode) + } else { + lng2, lat2, _ = api.AutonaviAPI.GetCoordinateFromAddress(order.ConsigneeAddress, "") + order.ConsigneeLng = jxutils.StandardCoordinate2Int(lng2) + order.ConsigneeLat = jxutils.StandardCoordinate2Int(lat2) + } + distance := jxutils.EarthDistance(lng, lat, lng2, lat2) + if distance > 1 { + order.OrderType = model.OrderTypeAddressErr + } + } + } else { + buildOrderTo102919(order) + globals.SugarLogger.Debugf("resultjdsOrders return 5") + } + } else { + buildOrderTo102919(order) + globals.SugarLogger.Debugf("resultjdsOrders return 6") + } + if store != nil { + distance := jxutils.EarthDistance(jxutils.IntCoordinate2Standard(order.ConsigneeLng), jxutils.IntCoordinate2Standard(order.ConsigneeLat), jxutils.IntCoordinate2Standard(store.Lng), jxutils.IntCoordinate2Standard(store.Lat)) + if distance > 4 { + buildOrderTo102919(order) + globals.SugarLogger.Debugf("resultjdsOrders return 4") + } + } orders = append(orders, order) } return orders, err } + +func buildOrderTo102919(order *model.GoodsOrder) { + // if order.VendorOrgCode == "1" { + // order.StoreID = 102919 + // order.JxStoreID = 102919 + // order.StoreName = "商城模板(成都发货)" + // order.VendorStoreID = model.JdShopMainVendorStoreID + // } else { + order.StoreID = model.JdShopMainStoreID + order.JxStoreID = model.JdShopMainStoreID + order.StoreName = "商城模板店2" + order.VendorStoreID = model.JdShopMainVendorStoreID + // } + order.DeliveryFlag = model.OrderDeliveryFlagMaskScheduleDisabled +} diff --git a/tests/default_test.go b/tests/default_test.go index d85595077..6d662d28b 100644 --- a/tests/default_test.go +++ b/tests/default_test.go @@ -1,16 +1,14 @@ package test import ( - "net/http" - "net/http/httptest" "path/filepath" "runtime" "testing" _ "git.rosy.net.cn/jx-callback/routers" - "github.com/astaxie/beego/server/web" - . "github.com/smartystreets/goconvey/convey" + beego "github.com/astaxie/beego/server/web" + //. "github.com/smartystreets/goconvey/convey" ) func init() { @@ -21,18 +19,18 @@ func init() { // TestGet is a sample to run an endpoint test func TestGet(t *testing.T) { - r, _ := http.NewRequest("GET", "/v1/object", nil) - w := httptest.NewRecorder() - beego.BeeApp.Handlers.ServeHTTP(w, r) - - beego.Trace("testing", "TestGet", "Code[%d]\n%s", w.Code, w.Body.String()) - - Convey("Subject: Test Station Endpoint\n", t, func() { - Convey("Status Code Should Be 200", func() { - So(w.Code, ShouldEqual, 200) - }) - Convey("The Result Should Not Be Empty", func() { - So(w.Body.Len(), ShouldBeGreaterThan, 0) - }) - }) + //r, _ := http.NewRequest("GET", "/v1/object", nil) + //w := httptest.NewRecorder() + //beego.BeeApp.Handlers.ServeHTTP(w, r) + // + //beego.Trace("testing", "TestGet", "Code[%d]\n%s", w.Code, w.Body.String()) + // + //Convey("Subject: Test Station Endpoint\n", t, func() { + // Convey("Status Code Should Be 200", func() { + // So(w.Code, ShouldEqual, 200) + // }) + // Convey("The Result Should Not Be Empty", func() { + // So(w.Body.Len(), ShouldBeGreaterThan, 0) + // }) + //}) }