From e56eb69b094d4e4bbf2f8d4a222a5a5b5fc7ac19 Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 17 Oct 2018 16:53:01 +0800 Subject: [PATCH] - orderUseNewTable almost ok. --- business/jxcallback/orderman/order.go | 2 -- .../scheduler/basesch/basesch_ext.go | 2 +- .../jxcallback/scheduler/defsch/defsch.go | 34 ++++++++++++++++++ business/model/dao/dao_bz.go | 36 ++++++++++++++++--- business/partner/delivery/mtps/waybill.go | 12 +++++++ globals/globals.go | 5 +-- 6 files changed, 81 insertions(+), 10 deletions(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 88148166c..81b9e1a7d 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -231,8 +231,6 @@ func (c *OrderManager) updateOrderSkuOtherInfo(order *model.GoodsOrder, db orm.O for _, v := range skuInfos { skumapper[v.VendorSkuID] = v } - globals.SugarLogger.Debug(sql) - globals.SugarLogger.Debug(utils.Format4Output(skumapper, false)) for _, v := range orderSkus { if v.VendorSkuID != "-70000" { // todo hard code diff --git a/business/jxcallback/scheduler/basesch/basesch_ext.go b/business/jxcallback/scheduler/basesch/basesch_ext.go index a2629dcac..042e5729c 100644 --- a/business/jxcallback/scheduler/basesch/basesch_ext.go +++ b/business/jxcallback/scheduler/basesch/basesch_ext.go @@ -72,7 +72,7 @@ func (c *BaseScheduler) PickupGoodsAndUpdateStatus(vendorOrderID string, vendorI func getStoreDeliveryType(order *model.GoodsOrder) (deliveryType int) { if globals.OrderUseNewTable { deliveryType = scheduler.StoreDeliveryTypeByPlatform // 缺省值 - if storeMap := dao.GetStoreMapByStoreID(nil, jxutils.GetJxStoreIDFromOrder(order), order.VendorID); storeMap != nil { + if storeMap, _ := dao.GetStoreMapByStoreID(nil, jxutils.GetJxStoreIDFromOrder(order), order.VendorID); storeMap != nil { deliveryType = int(storeMap.DeliveryType) } return deliveryType diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index bd22503b9..8ea88c29c 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -12,6 +12,7 @@ import ( "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/weixinmsg" "git.rosy.net.cn/jx-callback/business/model" + "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/model/legacymodel" "git.rosy.net.cn/jx-callback/business/model/legacymodel2" "git.rosy.net.cn/jx-callback/business/partner" @@ -99,6 +100,39 @@ func (s *WatchOrderInfo) SetOrder(order *model.GoodsOrder) (retVal *model.GoodsO } func (s *WatchOrderInfo) updateOrderStoreFeature(order *model.GoodsOrder) (err error) { + globals.SugarLogger.Debugf("updateOrderStoreFeature orderID:%s", order.VendorOrderID) + if globals.OrderUseNewTable { + jxStoreID := jxutils.GetJxStoreIDFromOrder(order) + if jxStoreID > 0 { + db := dao.GetDB() + storeMap, err2 := dao.GetStoreMapByStoreID(db, jxStoreID, order.VendorID) + if err = err2; err != nil { + return err + } + s.autoPickupTimeoutMinute = int(storeMap.AutoPickup) + s.storeDeliveryType = int(storeMap.DeliveryType) + if s.storeDeliveryType == scheduler.StoreDeliveryTypeByStore { + order.DeliveryFlag |= model.OrderDeliveryFlagMaskPurcahseDisabled + } + isNeedSchedule := s.storeDeliveryType == scheduler.StoreDeliveryTypeByStore || storeMap.DeliveryCompetition != 0 + if isNeedSchedule { + vendorList, err2 := dao.GetStoreCouriersByStoreID(db, jxStoreID, -1) + if err = err2; err != nil { + return err + } + for _, v := range vendorList { + s.supported3rdCarriers = append(s.supported3rdCarriers, v.VendorID) + } + if len(s.supported3rdCarriers) == 0 { + isNeedSchedule = false + } + } + if !isNeedSchedule { + order.DeliveryFlag |= model.OrderDeliveryFlagMaskScheduleDisabled + } + } + return err + } storefeature := &legacymodel2.Jxstorefeature{ Id: jxutils.GetJxStoreIDFromOrder(order), } diff --git a/business/model/dao/dao_bz.go b/business/model/dao/dao_bz.go index 0814d53c8..da84631af 100644 --- a/business/model/dao/dao_bz.go +++ b/business/model/dao/dao_bz.go @@ -139,7 +139,7 @@ func AddStoreCategoryMap(db *DaoDB, storeID, categoryID int, vendorID int, vendo return err } -func GetStoreMapByStoreID(db *DaoDB, storeID, vendorID int) (storeMap *model.StoreMap) { +func GetStoreMapByStoreID(db *DaoDB, storeID, vendorID int) (storeMap *model.StoreMap, err error) { if db == nil { db = GetDB() } @@ -148,9 +148,35 @@ func GetStoreMapByStoreID(db *DaoDB, storeID, vendorID int) (storeMap *model.Sto VendorID: vendorID, } storeMap.DeletedAt = utils.DefaultTimeValue - if err := GetEntity(db, storeMap, model.FieldStoreID, model.FieldVendorID, model.FieldDeletedAt); err != nil { - globals.SugarLogger.Warnf("getStoreDeliveryType read storefeature failed with error:%v", err) - return nil + if err = GetEntity(db, storeMap, model.FieldStoreID, model.FieldVendorID, model.FieldDeletedAt); err != nil { + globals.SugarLogger.Warnf("GetStoreMapByStoreID storeID:%d, vendorID:%d read storefeature failed with error:%v", storeID, vendorID, err) + return nil, err } - return storeMap + return storeMap, nil +} + +func GetStoreCouriersByStoreID(db *DaoDB, storeID, vendorID int) (storeMaps []*model.StoreMap, err error) { + if db == nil { + db = GetDB() + } + if err = utils.CallFuncLogError(func() error { + sql := ` + SELECT * + FROM store_courier_map + WHERE store_id = ? AND status = ? AND deleted_at = ? + ` + sqlParams := []interface{}{ + storeID, + model.StoreStatusOpened, + utils.DefaultTimeValue, + } + if vendorID != -1 { + sql += " AND vendor_id = ?" + sqlParams = append(sqlParams, vendorID) + } + return GetRows(db, &storeMaps, sql, sqlParams...) + }, "GetStoreCouriersByStoreID storeID:%d, vendorID:%d", storeID, vendorID); err != nil { + return nil, err + } + return storeMaps, nil } diff --git a/business/partner/delivery/mtps/waybill.go b/business/partner/delivery/mtps/waybill.go index 739cae8ca..298256e76 100644 --- a/business/partner/delivery/mtps/waybill.go +++ b/business/partner/delivery/mtps/waybill.go @@ -294,6 +294,18 @@ func (c *DeliveryHandler) getDeliveryID(order *model.GoodsOrder, db orm.Ormer) ( } func (c *DeliveryHandler) getMTPSShopID(order *model.GoodsOrder, db orm.Ormer) (retVal string, err error) { + if globals.OrderUseNewTable { + db2 := dao.WrapDB(db) + storeCourierList, err2 := dao.GetStoreCouriersByStoreID(db2, jxutils.GetJxStoreIDFromOrder(order), model.VendorIDMTPS) + if err = err2; err != nil { + return "", err + } + retVal = storeCourierList[0].VendorStoreID + if beego.BConfig.RunMode == "dev" { + retVal = "test_0001" + } + return retVal, nil + } sql := "SELECT zs_store_id FROM jx_to_zs_store_map WHERE jx_store_id = ?" var lists []orm.ParamsList JxStoreID := jxutils.GetJxStoreIDFromOrder(order) diff --git a/globals/globals.go b/globals/globals.go index 351e87321..0661dfe80 100644 --- a/globals/globals.go +++ b/globals/globals.go @@ -56,7 +56,8 @@ func Init() { EnableStore = beego.AppConfig.DefaultBool("enableStore", false) EnableStoreWrite = beego.AppConfig.DefaultBool("enableStoreWrite", false) - OrderUseNewTable = beego.AppConfig.DefaultBool("orderUseNewTable", false) - + if EnableStore { + OrderUseNewTable = beego.AppConfig.DefaultBool("orderUseNewTable", false) + } QiniuBucket = beego.AppConfig.String("qiniuBucket") }