From 5498ea40692c84c06234ee4bb77b0889b5e3ba1a Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 31 Jul 2019 09:44:30 +0800 Subject: [PATCH 1/3] =?UTF-8?q?-=20ActStoreSku2=E4=B8=AD=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?VendorPrice?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/act.go | 7 ++++--- business/model/dao/act.go | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/business/model/act.go b/business/model/act.go index a7acd1713..7ec305027 100644 --- a/business/model/act.go +++ b/business/model/act.go @@ -159,8 +159,8 @@ type ActStoreSkuMap struct { VendorActID string `orm:"column(vendor_act_id);size(48)" json:"vendorActID"` SyncStatus int8 `orm:"default(2)" json:"syncStatus"` - VendorPrice int64 `json:"vendorPrice"` // 创建活动时的平台价格 - ActualActPrice int64 `orm:"" json:"actualActPrice"` // 单品级活动用,创建活动时商品的活动价格 + VendorPrice int64 `json:"vendorPrice"` // 创建活动时的平台价格 + ActualActPrice int64 `json:"actualActPrice"` // 单品级活动用,创建活动时商品的活动价格 } func (*ActStoreSkuMap) TableUnique() [][]string { @@ -184,7 +184,8 @@ type ActStoreSku2 struct { VendorActID string `orm:"column(vendor_act_id);size(48)" json:"vendorActID"` SyncStatus int8 `orm:"default(2)" json:"syncStatus"` - ActualActPrice int64 `orm:"" json:"actualActPrice"` // 单品级活动用,创建活动时商品的活动价格 + VendorPrice int64 `json:"vendorPrice"` // 创建活动时的平台价格 + ActualActPrice int64 `json:"actualActPrice"` // 单品级活动用,创建活动时商品的活动价格 VendorStoreID string `orm:"column(vendor_store_id)" json:"vendorStoreID"` StoreName string `json:"storeName"` diff --git a/business/model/dao/act.go b/business/model/dao/act.go index 4dcebb88c..f66bfe739 100644 --- a/business/model/dao/act.go +++ b/business/model/dao/act.go @@ -77,7 +77,7 @@ func GetActStoreSkuVendorInfo(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs } sql := fmt.Sprintf(` SELECT t1.*, - t2.id map_id, t2.vendor_id, t2.vendor_act_id, t2.sync_status, t2.actual_act_price, + t2.id map_id, t2.vendor_id, t2.vendor_act_id, t2.sync_status, t2.actual_act_price, t2.vendor_price, t3.vendor_store_id, CASE t2.vendor_id WHEN 0 THEN From 3f90b2d74e43211d655622c48dd9b7eb1ee4ff0a Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 31 Jul 2019 10:26:23 +0800 Subject: [PATCH 2/3] =?UTF-8?q?-=20=E6=96=B0=E5=90=8C=E6=AD=A5=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E5=A6=82=E6=9E=9C=E5=88=9B=E5=BB=BA=E5=95=86?= =?UTF-8?q?=E5=93=81=E6=97=B6=E5=B7=B2=E7=BB=8F=E5=AD=98=E5=9C=A8=EF=BC=8C?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sync_store_sku.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index fd172c8b9..78b0b6320 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -369,6 +369,9 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, isFull bo }); err2 == nil && len(skuNameList) > 0 { batchedStoreSkuList[0].VendorNameID = skuNameList[0].VendorNameID batchedStoreSkuList[0].VendorSkuID = skuNameList[0].SkuList[0].VendorSkuID + + // 如果创建商品时已经存在,需要更新 + updateList = append(updateList, calVendorPrice4StoreSku(batchedStoreSkuList[0], storeDetail.PricePercentagePackObj, int(storeDetail.PricePercentage))) err = nil } } From 59b14d0a76c794b2da0d142ce1d02ee9ac799598 Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 31 Jul 2019 10:59:47 +0800 Subject: [PATCH 3/3] =?UTF-8?q?!=20=E4=BF=AE=E6=94=B9=E4=B8=89=E6=96=B9?= =?UTF-8?q?=E8=BF=90=E5=8D=95=E5=88=9B=E5=BB=BA=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=B9=B3=E5=8F=B0=E9=85=8D=E9=80=81=E5=B0=8F?= =?UTF-8?q?=E8=B4=B9handleWaybillTip?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jxcallback/scheduler/defsch/defsch.go | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 28cf3ccff..ad14b3e23 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -69,7 +69,8 @@ type WatchOrderInfo struct { timer *time.Timer timerTime time.Time - retryCount int // 失败后尝试的次数,调试阶段可能出现死循化,阻止这种情况发生 + retryCount int // 失败后尝试的次数,调试阶段可能出现死循化,阻止这种情况发生 + isNeedCreate3rdWaybill bool } type StatusActionConfig struct { @@ -336,12 +337,13 @@ func (s *DefScheduler) OnOrderStatusChanged(order *model.GoodsOrder, status *mod s.orderMap.Delete(jxutils.GetUniversalOrderIDFromOrderStatus(status)) } } - // if savedOrderInfo.order.Status == model.OrderStatusFinishedPickup { - // order := savedOrderInfo.order - // utils.AfterFuncWithRecover(minAddWaybillTipMinute*time.Minute, func() { - // s.handleWaybillTip(order) - // }) - // } + if savedOrderInfo.order.Status == model.OrderStatusFinishedPickup { + utils.AfterFuncWithRecover(minAddWaybillTipMinute*time.Minute, func() { + jxutils.CallMsgHandlerAsync(func() { + s.handleWaybillTip(savedOrderInfo) + }, jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID)) + }) + } } if order.LockStatus != model.OrderStatusUnknown { s.stopTimer(savedOrderInfo) @@ -591,8 +593,10 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf if err = s.canOrderCreateWaybillNormally(order); err == nil { if (order.DeliveryFlag & model.OrderDeliveryFlagMaskScheduleDisabled) == 0 { if savedOrderInfo.retryCount <= maxWaybillRetryCount { - savedOrderInfo.retryCount++ - _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, false, 0, 0, 0) + savedOrderInfo.isNeedCreate3rdWaybill = true + if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, false, 1000, 1000, s.getMaxDeliveryFee(order)); err == nil { + savedOrderInfo.retryCount++ + } } else { err = fmt.Errorf("订单:%s已经自动创建过了%d次运单,请人工处理", order.VendorOrderID, savedOrderInfo.retryCount) globals.SugarLogger.Infof("createWaybillOn3rdProviders [运营2]同一订单orderID:%s尝试了%d次创建运单失败, 停止调度,如果还需要发单,请人工处理", order.VendorOrderID, savedOrderInfo.retryCount) @@ -986,7 +990,8 @@ func (s *DefScheduler) getMaxDeliveryFee(order *model.GoodsOrder) (maxDeliveryFe return maxDeliveryFee } -func (s *DefScheduler) handleWaybillTip(order2 *model.GoodsOrder) { +func (s *DefScheduler) handleWaybillTip(savedOrderInfo *WatchOrderInfo) { + order2 := savedOrderInfo.order if order, err := partner.CurOrderManager.LoadOrder(order2.VendorOrderID, order2.VendorID); err == nil { if order.Status == model.OrderStatusFinishedPickup { if tipFee := s.getWaybillTip(order); tipFee > 0 { @@ -1002,9 +1007,14 @@ func (s *DefScheduler) handleWaybillTip(order2 *model.GoodsOrder) { } partner.CurOrderManager.OnOrderMsg(order, vendorStatus, remark) } + if savedOrderInfo.isNeedCreate3rdWaybill { + s.createWaybillOn3rdProviders(savedOrderInfo, nil) + } } utils.AfterFuncWithRecover(5*time.Minute, func() { - s.handleWaybillTip(order) + jxutils.CallMsgHandlerAsync(func() { + s.handleWaybillTip(savedOrderInfo) + }, jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID)) }) } }