Merge remote-tracking branch 'origin/mark' into don
This commit is contained in:
@@ -69,7 +69,8 @@ type WatchOrderInfo struct {
|
|||||||
timer *time.Timer
|
timer *time.Timer
|
||||||
timerTime time.Time
|
timerTime time.Time
|
||||||
|
|
||||||
retryCount int // 失败后尝试的次数,调试阶段可能出现死循化,阻止这种情况发生
|
retryCount int // 失败后尝试的次数,调试阶段可能出现死循化,阻止这种情况发生
|
||||||
|
isNeedCreate3rdWaybill bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type StatusActionConfig struct {
|
type StatusActionConfig struct {
|
||||||
@@ -336,12 +337,13 @@ func (s *DefScheduler) OnOrderStatusChanged(order *model.GoodsOrder, status *mod
|
|||||||
s.orderMap.Delete(jxutils.GetUniversalOrderIDFromOrderStatus(status))
|
s.orderMap.Delete(jxutils.GetUniversalOrderIDFromOrderStatus(status))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// if savedOrderInfo.order.Status == model.OrderStatusFinishedPickup {
|
if savedOrderInfo.order.Status == model.OrderStatusFinishedPickup {
|
||||||
// order := savedOrderInfo.order
|
utils.AfterFuncWithRecover(minAddWaybillTipMinute*time.Minute, func() {
|
||||||
// utils.AfterFuncWithRecover(minAddWaybillTipMinute*time.Minute, func() {
|
jxutils.CallMsgHandlerAsync(func() {
|
||||||
// s.handleWaybillTip(order)
|
s.handleWaybillTip(savedOrderInfo)
|
||||||
// })
|
}, jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID))
|
||||||
// }
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if order.LockStatus != model.OrderStatusUnknown {
|
if order.LockStatus != model.OrderStatusUnknown {
|
||||||
s.stopTimer(savedOrderInfo)
|
s.stopTimer(savedOrderInfo)
|
||||||
@@ -591,8 +593,10 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf
|
|||||||
if err = s.canOrderCreateWaybillNormally(order); err == nil {
|
if err = s.canOrderCreateWaybillNormally(order); err == nil {
|
||||||
if (order.DeliveryFlag & model.OrderDeliveryFlagMaskScheduleDisabled) == 0 {
|
if (order.DeliveryFlag & model.OrderDeliveryFlagMaskScheduleDisabled) == 0 {
|
||||||
if savedOrderInfo.retryCount <= maxWaybillRetryCount {
|
if savedOrderInfo.retryCount <= maxWaybillRetryCount {
|
||||||
savedOrderInfo.retryCount++
|
savedOrderInfo.isNeedCreate3rdWaybill = true
|
||||||
_, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, false, 0, 0, 0)
|
if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, false, 1000, 1000, s.getMaxDeliveryFee(order)); err == nil {
|
||||||
|
savedOrderInfo.retryCount++
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
err = fmt.Errorf("订单:%s已经自动创建过了%d次运单,请人工处理", order.VendorOrderID, savedOrderInfo.retryCount)
|
err = fmt.Errorf("订单:%s已经自动创建过了%d次运单,请人工处理", order.VendorOrderID, savedOrderInfo.retryCount)
|
||||||
globals.SugarLogger.Infof("createWaybillOn3rdProviders [运营2]同一订单orderID:%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
|
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, err := partner.CurOrderManager.LoadOrder(order2.VendorOrderID, order2.VendorID); err == nil {
|
||||||
if order.Status == model.OrderStatusFinishedPickup {
|
if order.Status == model.OrderStatusFinishedPickup {
|
||||||
if tipFee := s.getWaybillTip(order); tipFee > 0 {
|
if tipFee := s.getWaybillTip(order); tipFee > 0 {
|
||||||
@@ -1002,9 +1007,14 @@ func (s *DefScheduler) handleWaybillTip(order2 *model.GoodsOrder) {
|
|||||||
}
|
}
|
||||||
partner.CurOrderManager.OnOrderMsg(order, vendorStatus, remark)
|
partner.CurOrderManager.OnOrderMsg(order, vendorStatus, remark)
|
||||||
}
|
}
|
||||||
|
if savedOrderInfo.isNeedCreate3rdWaybill {
|
||||||
|
s.createWaybillOn3rdProviders(savedOrderInfo, nil)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
utils.AfterFuncWithRecover(5*time.Minute, func() {
|
utils.AfterFuncWithRecover(5*time.Minute, func() {
|
||||||
s.handleWaybillTip(order)
|
jxutils.CallMsgHandlerAsync(func() {
|
||||||
|
s.handleWaybillTip(savedOrderInfo)
|
||||||
|
}, jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -369,6 +369,9 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, isFull bo
|
|||||||
}); err2 == nil && len(skuNameList) > 0 {
|
}); err2 == nil && len(skuNameList) > 0 {
|
||||||
batchedStoreSkuList[0].VendorNameID = skuNameList[0].VendorNameID
|
batchedStoreSkuList[0].VendorNameID = skuNameList[0].VendorNameID
|
||||||
batchedStoreSkuList[0].VendorSkuID = skuNameList[0].SkuList[0].VendorSkuID
|
batchedStoreSkuList[0].VendorSkuID = skuNameList[0].SkuList[0].VendorSkuID
|
||||||
|
|
||||||
|
// 如果创建商品时已经存在,需要更新
|
||||||
|
updateList = append(updateList, calVendorPrice4StoreSku(batchedStoreSkuList[0], storeDetail.PricePercentagePackObj, int(storeDetail.PricePercentage)))
|
||||||
err = nil
|
err = nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -159,8 +159,8 @@ type ActStoreSkuMap struct {
|
|||||||
|
|
||||||
VendorActID string `orm:"column(vendor_act_id);size(48)" json:"vendorActID"`
|
VendorActID string `orm:"column(vendor_act_id);size(48)" json:"vendorActID"`
|
||||||
SyncStatus int8 `orm:"default(2)" json:"syncStatus"`
|
SyncStatus int8 `orm:"default(2)" json:"syncStatus"`
|
||||||
VendorPrice int64 `json:"vendorPrice"` // 创建活动时的平台价格
|
VendorPrice int64 `json:"vendorPrice"` // 创建活动时的平台价格
|
||||||
ActualActPrice int64 `orm:"" json:"actualActPrice"` // 单品级活动用,创建活动时商品的活动价格
|
ActualActPrice int64 `json:"actualActPrice"` // 单品级活动用,创建活动时商品的活动价格
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*ActStoreSkuMap) TableUnique() [][]string {
|
func (*ActStoreSkuMap) TableUnique() [][]string {
|
||||||
@@ -184,7 +184,8 @@ type ActStoreSku2 struct {
|
|||||||
|
|
||||||
VendorActID string `orm:"column(vendor_act_id);size(48)" json:"vendorActID"`
|
VendorActID string `orm:"column(vendor_act_id);size(48)" json:"vendorActID"`
|
||||||
SyncStatus int8 `orm:"default(2)" json:"syncStatus"`
|
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"`
|
VendorStoreID string `orm:"column(vendor_store_id)" json:"vendorStoreID"`
|
||||||
StoreName string `json:"storeName"`
|
StoreName string `json:"storeName"`
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ func GetActStoreSkuVendorInfo(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs
|
|||||||
}
|
}
|
||||||
sql := fmt.Sprintf(`
|
sql := fmt.Sprintf(`
|
||||||
SELECT t1.*,
|
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,
|
t3.vendor_store_id,
|
||||||
CASE t2.vendor_id
|
CASE t2.vendor_id
|
||||||
WHEN 0 THEN
|
WHEN 0 THEN
|
||||||
|
|||||||
Reference in New Issue
Block a user