- cancel waybill reason added.
- api operator added. - token added.
This commit is contained in:
@@ -61,12 +61,12 @@ func (c *BaseScheduler) GetDeliveryPlatformFromVendorID(vendorID int) *scheduler
|
|||||||
return c.DeliveryPlatformHandlers[vendorID]
|
return c.DeliveryPlatformHandlers[vendorID]
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *BaseScheduler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool) (err error) {
|
func (c *BaseScheduler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) {
|
||||||
globals.SugarLogger.Infof("AcceptOrRefuseOrder orderID:%s, isAcceptIt:%t", order.VendorOrderID, isAcceptIt)
|
globals.SugarLogger.Infof("AcceptOrRefuseOrder orderID:%s, isAcceptIt:%t", order.VendorOrderID, isAcceptIt)
|
||||||
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusNew {
|
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusNew {
|
||||||
if c.IsReallyCallPlatformAPI {
|
if c.IsReallyCallPlatformAPI {
|
||||||
err = utils.CallFuncLogErrorWithInfo(func() error {
|
err = utils.CallFuncLogErrorWithInfo(func() error {
|
||||||
return c.GetPurchasePlatformFromVendorID(order.VendorID).AcceptOrRefuseOrder(order, isAcceptIt)
|
return c.GetPurchasePlatformFromVendorID(order.VendorID).AcceptOrRefuseOrder(order, isAcceptIt, userName)
|
||||||
}, "AcceptOrRefuseOrder orderID:%s, isAcceptIt:%t", order.VendorOrderID, isAcceptIt)
|
}, "AcceptOrRefuseOrder orderID:%s, isAcceptIt:%t", order.VendorOrderID, isAcceptIt)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -75,12 +75,12 @@ func (c *BaseScheduler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *BaseScheduler) PickupGoods(order *model.GoodsOrder) (err error) {
|
func (c *BaseScheduler) PickupGoods(order *model.GoodsOrder, userName string) (err error) {
|
||||||
globals.SugarLogger.Infof("PickupGoods orderID:%s", order.VendorOrderID)
|
globals.SugarLogger.Infof("PickupGoods orderID:%s", order.VendorOrderID)
|
||||||
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusAccepted {
|
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusAccepted {
|
||||||
if c.IsReallyCallPlatformAPI {
|
if c.IsReallyCallPlatformAPI {
|
||||||
err = utils.CallFuncLogErrorWithInfo(func() error {
|
err = utils.CallFuncLogErrorWithInfo(func() error {
|
||||||
return c.GetPurchasePlatformFromVendorID(order.VendorID).PickupGoods(order)
|
return c.GetPurchasePlatformFromVendorID(order.VendorID).PickupGoods(order, userName)
|
||||||
}, "PickupGoods orderID:%s", order.VendorOrderID)
|
}, "PickupGoods orderID:%s", order.VendorOrderID)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -92,12 +92,12 @@ func (c *BaseScheduler) PickupGoods(order *model.GoodsOrder) (err error) {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *BaseScheduler) Swtich2SelfDeliver(order *model.GoodsOrder) (err error) {
|
func (c *BaseScheduler) Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error) {
|
||||||
globals.SugarLogger.Infof("Swtich2SelfDeliver orderID:%s", order.VendorOrderID)
|
globals.SugarLogger.Infof("Swtich2SelfDeliver orderID:%s", order.VendorOrderID)
|
||||||
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusFinishedPickup {
|
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusFinishedPickup {
|
||||||
if c.IsReallyCallPlatformAPI {
|
if c.IsReallyCallPlatformAPI {
|
||||||
err = utils.CallFuncLogErrorWithInfo(func() error {
|
err = utils.CallFuncLogErrorWithInfo(func() error {
|
||||||
return c.GetPurchasePlatformFromVendorID(order.VendorID).Swtich2SelfDeliver(order)
|
return c.GetPurchasePlatformFromVendorID(order.VendorID).Swtich2SelfDeliver(order, userName)
|
||||||
}, "Swtich2SelfDeliver orderID:%s", order.VendorOrderID)
|
}, "Swtich2SelfDeliver orderID:%s", order.VendorOrderID)
|
||||||
if err == nil { // 因为有些平台转自送后,不会再发送订单在配送中消息过来,所以成功后就强制设置状态为配送中
|
if err == nil { // 因为有些平台转自送后,不会再发送订单在配送中消息过来,所以成功后就强制设置状态为配送中
|
||||||
order.Status = model.OrderStatusDelivering
|
order.Status = model.OrderStatusDelivering
|
||||||
@@ -112,12 +112,12 @@ func (c *BaseScheduler) Swtich2SelfDeliver(order *model.GoodsOrder) (err error)
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *BaseScheduler) Swtich2SelfDelivered(order *model.GoodsOrder) (err error) {
|
func (c *BaseScheduler) Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) {
|
||||||
globals.SugarLogger.Infof("Swtich2SelfDelivered orderID:%s", order.VendorOrderID)
|
globals.SugarLogger.Infof("Swtich2SelfDelivered orderID:%s", order.VendorOrderID)
|
||||||
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusDelivering {
|
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusDelivering {
|
||||||
if c.IsReallyCallPlatformAPI {
|
if c.IsReallyCallPlatformAPI {
|
||||||
err = utils.CallFuncLogError(func() error {
|
err = utils.CallFuncLogError(func() error {
|
||||||
return c.GetPurchasePlatformFromVendorID(order.VendorID).Swtich2SelfDelivered(order)
|
return c.GetPurchasePlatformFromVendorID(order.VendorID).Swtich2SelfDelivered(order, userName)
|
||||||
}, "Swtich2SelfDelivered orderID:%s", order.VendorOrderID)
|
}, "Swtich2SelfDelivered orderID:%s", order.VendorOrderID)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -126,12 +126,12 @@ func (c *BaseScheduler) Swtich2SelfDelivered(order *model.GoodsOrder) (err error
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *BaseScheduler) SelfDeliverDelievering(order *model.GoodsOrder) (err error) {
|
func (c *BaseScheduler) SelfDeliverDelievering(order *model.GoodsOrder, userName string) (err error) {
|
||||||
globals.SugarLogger.Infof("SelfDeliverDelievering orderID:%s", order.VendorOrderID)
|
globals.SugarLogger.Infof("SelfDeliverDelievering orderID:%s", order.VendorOrderID)
|
||||||
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusFinishedPickup {
|
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusFinishedPickup {
|
||||||
if c.IsReallyCallPlatformAPI {
|
if c.IsReallyCallPlatformAPI {
|
||||||
err = utils.CallFuncLogError(func() error {
|
err = utils.CallFuncLogError(func() error {
|
||||||
return c.GetPurchasePlatformFromVendorID(order.VendorID).SelfDeliverDelievering(order)
|
return c.GetPurchasePlatformFromVendorID(order.VendorID).SelfDeliverDelievering(order, userName)
|
||||||
}, "SelfDeliverDelievering orderID:%s", order.VendorOrderID)
|
}, "SelfDeliverDelievering orderID:%s", order.VendorOrderID)
|
||||||
if err == nil { // 因为有些平台设置配送中后,不会发送订单在配送中消息过来,所以成功后就强制设置状态为配送中
|
if err == nil { // 因为有些平台设置配送中后,不会发送订单在配送中消息过来,所以成功后就强制设置状态为配送中
|
||||||
order.Status = model.OrderStatusDelivering
|
order.Status = model.OrderStatusDelivering
|
||||||
@@ -145,12 +145,12 @@ func (c *BaseScheduler) SelfDeliverDelievering(order *model.GoodsOrder) (err err
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *BaseScheduler) SelfDeliverDelievered(order *model.GoodsOrder) (err error) {
|
func (c *BaseScheduler) SelfDeliverDelievered(order *model.GoodsOrder, userName string) (err error) {
|
||||||
globals.SugarLogger.Infof("SelfDeliverDelievered orderID:%s", order.VendorOrderID)
|
globals.SugarLogger.Infof("SelfDeliverDelievered orderID:%s", order.VendorOrderID)
|
||||||
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusDelivering {
|
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusDelivering {
|
||||||
if c.IsReallyCallPlatformAPI {
|
if c.IsReallyCallPlatformAPI {
|
||||||
err = utils.CallFuncLogError(func() error {
|
err = utils.CallFuncLogError(func() error {
|
||||||
return c.GetPurchasePlatformFromVendorID(order.VendorID).SelfDeliverDelievered(order)
|
return c.GetPurchasePlatformFromVendorID(order.VendorID).SelfDeliverDelievered(order, userName)
|
||||||
}, "SelfDeliverDelievered orderID:%s", order.VendorOrderID)
|
}, "SelfDeliverDelievered orderID:%s", order.VendorOrderID)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -179,12 +179,12 @@ func (c *BaseScheduler) CreateWaybill(platformVendorID int, order *model.GoodsOr
|
|||||||
return bill, err
|
return bill, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *BaseScheduler) CancelWaybill(bill *model.Waybill) (err error) {
|
func (c *BaseScheduler) CancelWaybill(bill *model.Waybill, cancelReasonID int, cancelReason string) (err error) {
|
||||||
globals.SugarLogger.Infof("CancelWaybill bill:%v", bill)
|
globals.SugarLogger.Infof("CancelWaybill bill:%v, cancelReasonID:%d cancelReason:%s", bill, cancelReasonID, cancelReason)
|
||||||
if c.IsReallyCallPlatformAPI && bill.OrderVendorID != bill.WaybillVendorID {
|
if c.IsReallyCallPlatformAPI && bill.OrderVendorID != bill.WaybillVendorID {
|
||||||
if handlerInfo := c.GetDeliveryPlatformFromVendorID(bill.WaybillVendorID); handlerInfo != nil {
|
if handlerInfo := c.GetDeliveryPlatformFromVendorID(bill.WaybillVendorID); handlerInfo != nil {
|
||||||
err = utils.CallFuncLogError(func() error {
|
err = utils.CallFuncLogError(func() error {
|
||||||
return handlerInfo.Handler.CancelWaybill(bill)
|
return handlerInfo.Handler.CancelWaybill(bill, cancelReasonID, cancelReason)
|
||||||
}, "CancelWaybill bill:%v", bill)
|
}, "CancelWaybill bill:%v", bill)
|
||||||
globals.SugarLogger.Debugf("CancelWaybill bill:%v canceled by myself", bill)
|
globals.SugarLogger.Debugf("CancelWaybill bill:%v canceled by myself", bill)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,10 +18,10 @@ func (c *BaseScheduler) CreateWaybillOnProviders(vendorOrderID string, vendorID
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *BaseScheduler) Swtich2SelfDeliverAndUpdateStatus(vendorOrderID string, vendorID int) (err error) {
|
func (c *BaseScheduler) Swtich2SelfDeliverAndUpdateStatus(vendorOrderID string, vendorID int, userName string) (err error) {
|
||||||
order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, vendorID)
|
order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, vendorID)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
err = c.Swtich2SelfDeliver(order)
|
err = c.Swtich2SelfDeliver(order, userName)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
order.Status = model.OrderStatusDelivering
|
order.Status = model.OrderStatusDelivering
|
||||||
err = partner.CurOrderManager.UpdateOrderStatusDirectly(order)
|
err = partner.CurOrderManager.UpdateOrderStatusDirectly(order)
|
||||||
@@ -30,10 +30,10 @@ func (c *BaseScheduler) Swtich2SelfDeliverAndUpdateStatus(vendorOrderID string,
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *BaseScheduler) PickupGoodsAndUpdateStatus(vendorOrderID string, vendorID int) (err error) {
|
func (c *BaseScheduler) PickupGoodsAndUpdateStatus(vendorOrderID string, vendorID int, userName string) (err error) {
|
||||||
order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, vendorID)
|
order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, vendorID)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
err = c.PickupGoods(order)
|
err = c.PickupGoods(order, userName)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
order.Status = model.OrderStatusFinishedPickup
|
order.Status = model.OrderStatusFinishedPickup
|
||||||
err = partner.CurOrderManager.UpdateOrderStatusDirectly(order)
|
err = partner.CurOrderManager.UpdateOrderStatusDirectly(order)
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ func init() {
|
|||||||
TimeoutAction: func(savedOrderInfo *WatchOrderInfo) (err error) {
|
TimeoutAction: func(savedOrderInfo *WatchOrderInfo) (err error) {
|
||||||
order := savedOrderInfo.order
|
order := savedOrderInfo.order
|
||||||
_ = sch.handleAutoAcceptOrder(order.VendorOrderID, order.VendorID, order.ConsigneeMobile, jxutils.GetJxStoreIDFromOrder(order), nil, func(isAcceptIt bool) error {
|
_ = sch.handleAutoAcceptOrder(order.VendorOrderID, order.VendorID, order.ConsigneeMobile, jxutils.GetJxStoreIDFromOrder(order), nil, func(isAcceptIt bool) error {
|
||||||
if err = sch.AcceptOrRefuseOrder(order, isAcceptIt); err != nil {
|
if err = sch.AcceptOrRefuseOrder(order, isAcceptIt, ""); err != nil {
|
||||||
// 为了解决京东新消息与接单消息乱序的问题
|
// 为了解决京东新消息与接单消息乱序的问题
|
||||||
if errWithCode, ok := err.(*utils.ErrorWithCode); ok && errWithCode.Level() == 1 && errWithCode.IntCode() == -1 {
|
if errWithCode, ok := err.(*utils.ErrorWithCode); ok && errWithCode.Level() == 1 && errWithCode.IntCode() == -1 {
|
||||||
if order2, err2 := sch.GetPurchasePlatformFromVendorID(order.VendorID).GetOrder(order.VendorOrderID); err2 == nil && order2.Status > order.Status {
|
if order2, err2 := sch.GetPurchasePlatformFromVendorID(order.VendorID).GetOrder(order.VendorOrderID); err2 == nil && order2.Status > order.Status {
|
||||||
@@ -238,7 +238,7 @@ func (s *DefScheduler) OnOrderStatusChanged(status *model.OrderStatus, isPending
|
|||||||
globals.SugarLogger.Infof("OnOrderStatusChanged [运营2]订单orderID:%s可能被手动点击送达,会对程序状态产生不利影响,请通知门店不要这样操作!", status.VendorOrderID)
|
globals.SugarLogger.Infof("OnOrderStatusChanged [运营2]订单orderID:%s可能被手动点击送达,会对程序状态产生不利影响,请通知门店不要这样操作!", status.VendorOrderID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
s.cancelOtherWaybills(savedOrderInfo, curWaybill)
|
s.cancelOtherWaybills(savedOrderInfo, curWaybill, partner.CancelWaybillReasonOther, partner.CancelWaybillReasonStrOrderAlreadyFinished)
|
||||||
s.orderMap.Delete(jxutils.GetUniversalOrderIDFromOrderStatus(status))
|
s.orderMap.Delete(jxutils.GetUniversalOrderIDFromOrderStatus(status))
|
||||||
}
|
}
|
||||||
} else if status.LockStatus != model.OrderStatusUnknown {
|
} else if status.LockStatus != model.OrderStatusUnknown {
|
||||||
@@ -266,11 +266,11 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
|||||||
s.addWaybill2Map(savedOrderInfo, bill)
|
s.addWaybill2Map(savedOrderInfo, bill)
|
||||||
if !isPending {
|
if !isPending {
|
||||||
if order.Status > model.OrderStatusEndBegin {
|
if order.Status > model.OrderStatusEndBegin {
|
||||||
s.CancelWaybill(bill)
|
s.CancelWaybill(bill, partner.CancelWaybillReasonNotAcceptIntime, partner.CancelWaybillReasonStrNotAcceptIntime)
|
||||||
} else if order.WaybillVendorID != model.VendorIDUnknown {
|
} else if order.WaybillVendorID != model.VendorIDUnknown {
|
||||||
globals.SugarLogger.Debugf("OnWaybillStatusChanged multiple waybill created, bill:%v", bill)
|
globals.SugarLogger.Debugf("OnWaybillStatusChanged multiple waybill created, bill:%v", bill)
|
||||||
if !s.isBillCandidate(order, bill) && bill.WaybillVendorID != order.VendorID {
|
if !s.isBillCandidate(order, bill) && bill.WaybillVendorID != order.VendorID {
|
||||||
s.CancelWaybill(bill)
|
s.CancelWaybill(bill, partner.CancelWaybillReasonNotAcceptIntime, partner.CancelWaybillReasonStrNotAcceptIntime)
|
||||||
} else if bill.WaybillVendorID == order.VendorID && order.WaybillVendorID != order.VendorID {
|
} else if bill.WaybillVendorID == order.VendorID && order.WaybillVendorID != order.VendorID {
|
||||||
globals.SugarLogger.Warnf("OnWaybillStatusChanged bill:%v purchase platform bill came later than others, strange!!!", bill)
|
globals.SugarLogger.Warnf("OnWaybillStatusChanged bill:%v purchase platform bill came later than others, strange!!!", bill)
|
||||||
}
|
}
|
||||||
@@ -293,10 +293,10 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
|||||||
globals.SugarLogger.Infof("OnWaybillStatusChanged orderID:%s purchase platform waybill arrvied later, may case problem", order.VendorOrderID)
|
globals.SugarLogger.Infof("OnWaybillStatusChanged orderID:%s purchase platform waybill arrvied later, may case problem", order.VendorOrderID)
|
||||||
}
|
}
|
||||||
s.updateOrderByBill(order, bill, false)
|
s.updateOrderByBill(order, bill, false)
|
||||||
s.cancelOtherWaybills(savedOrderInfo, bill)
|
s.cancelOtherWaybills(savedOrderInfo, bill, partner.CancelWaybillReasonNotAcceptIntime, partner.CancelWaybillReasonStrNotAcceptIntime)
|
||||||
if bill.WaybillVendorID != bill.OrderVendorID {
|
if bill.WaybillVendorID != bill.OrderVendorID {
|
||||||
if savedOrderInfo.storeDeliveryType == scheduler.StoreDeliveryTypeByStore {
|
if savedOrderInfo.storeDeliveryType == scheduler.StoreDeliveryTypeByStore {
|
||||||
s.SelfDeliverDelievering(savedOrderInfo.order)
|
s.SelfDeliverDelievering(savedOrderInfo.order, "")
|
||||||
} else {
|
} else {
|
||||||
s.swtich2SelfDeliverWithRetry(savedOrderInfo, bill, 2, 10*time.Second)
|
s.swtich2SelfDeliverWithRetry(savedOrderInfo, bill, 2, 10*time.Second)
|
||||||
}
|
}
|
||||||
@@ -306,7 +306,7 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
|||||||
}
|
}
|
||||||
} else if !s.isBillCandidate(order, bill) && bill.WaybillVendorID != order.VendorID {
|
} else if !s.isBillCandidate(order, bill) && bill.WaybillVendorID != order.VendorID {
|
||||||
// 发生这种情况的原因就是两个接单事件几乎同时到达(来不及取消),也算正常
|
// 发生这种情况的原因就是两个接单事件几乎同时到达(来不及取消),也算正常
|
||||||
s.CancelWaybill(bill)
|
s.CancelWaybill(bill, partner.CancelWaybillReasonNotAcceptIntime, partner.CancelWaybillReasonStrNotAcceptIntime)
|
||||||
globals.SugarLogger.Infof("OnWaybillStatusChanged Accepted orderID:%s got multiple bill:%v", order.VendorOrderID, bill)
|
globals.SugarLogger.Infof("OnWaybillStatusChanged Accepted orderID:%s got multiple bill:%v", order.VendorOrderID, bill)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -320,14 +320,14 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
|||||||
s.createWaybillOn3rdProviders(savedOrderInfo, bill)
|
s.createWaybillOn3rdProviders(savedOrderInfo, bill)
|
||||||
}
|
}
|
||||||
} else if order.WaybillVendorID != model.VendorIDUnknown {
|
} else if order.WaybillVendorID != model.VendorIDUnknown {
|
||||||
s.CancelWaybill(bill)
|
s.CancelWaybill(bill, partner.CancelWaybillReasonNotAcceptIntime, partner.CancelWaybillReasonStrNotAcceptIntime)
|
||||||
globals.SugarLogger.Warnf("OnWaybillStatusChanged AcceptCanceled orderID:%s got multiple bill:%v, order details:%v", order.VendorOrderID, bill, order)
|
globals.SugarLogger.Warnf("OnWaybillStatusChanged AcceptCanceled orderID:%s got multiple bill:%v, order details:%v", order.VendorOrderID, bill, order)
|
||||||
}
|
}
|
||||||
case model.WaybillStatusCourierArrived: // do nothing
|
case model.WaybillStatusCourierArrived: // do nothing
|
||||||
s.resetTimer(savedOrderInfo, bill, isPending)
|
s.resetTimer(savedOrderInfo, bill, isPending)
|
||||||
if s.isBillCandidate(order, bill) {
|
if s.isBillCandidate(order, bill) {
|
||||||
} else {
|
} else {
|
||||||
// s.CancelWaybill(bill)
|
// s.CancelWaybill(bill, partner.CancelWaybillReasonNotAcceptIntime, partner.CancelWaybillReasonStrNotAcceptIntime)
|
||||||
globals.SugarLogger.Infof("OnWaybillStatusChanged CourierArrived order(%d, %s) bill(%d, %s), bill:%v shouldn't get here", order.WaybillVendorID, order.VendorWaybillID, bill.WaybillVendorID, bill.VendorWaybillID, bill)
|
globals.SugarLogger.Infof("OnWaybillStatusChanged CourierArrived order(%d, %s) bill(%d, %s), bill:%v shouldn't get here", order.WaybillVendorID, order.VendorWaybillID, bill.WaybillVendorID, bill.VendorWaybillID, bill)
|
||||||
}
|
}
|
||||||
case model.WaybillStatusFailed: // todo WaybillStatusFailed理解成订单整个失败了,不需要再尝试创建运单了,注意这里应该加个zabbix日志的报警
|
case model.WaybillStatusFailed: // todo WaybillStatusFailed理解成订单整个失败了,不需要再尝试创建运单了,注意这里应该加个zabbix日志的报警
|
||||||
@@ -362,7 +362,7 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
|||||||
if s.isBillCandidate(order, bill) {
|
if s.isBillCandidate(order, bill) {
|
||||||
// do nothing
|
// do nothing
|
||||||
} else {
|
} else {
|
||||||
// s.CancelWaybill(bill)
|
// s.CancelWaybill(bill, partner.CancelWaybillReasonNotAcceptIntime, partner.CancelWaybillReasonStrNotAcceptIntime)
|
||||||
globals.SugarLogger.Infof("OnWaybillStatusChanged Delivering order(%d, %s) bill(%d, %s), bill:%v shouldn't get here", order.WaybillVendorID, order.VendorWaybillID, bill.WaybillVendorID, bill.VendorWaybillID, bill)
|
globals.SugarLogger.Infof("OnWaybillStatusChanged Delivering order(%d, %s) bill(%d, %s), bill:%v shouldn't get here", order.WaybillVendorID, order.VendorWaybillID, bill.WaybillVendorID, bill.VendorWaybillID, bill)
|
||||||
}
|
}
|
||||||
case model.WaybillStatusDelivered:
|
case model.WaybillStatusDelivered:
|
||||||
@@ -370,9 +370,9 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
|||||||
s.removeWaybillFromMap(savedOrderInfo, bill)
|
s.removeWaybillFromMap(savedOrderInfo, bill)
|
||||||
if order.VendorID != bill.WaybillVendorID && !isPending {
|
if order.VendorID != bill.WaybillVendorID && !isPending {
|
||||||
if savedOrderInfo.storeDeliveryType == scheduler.StoreDeliveryTypeByStore {
|
if savedOrderInfo.storeDeliveryType == scheduler.StoreDeliveryTypeByStore {
|
||||||
s.SelfDeliverDelievered(order)
|
s.SelfDeliverDelievered(order, "")
|
||||||
} else {
|
} else {
|
||||||
s.Swtich2SelfDelivered(order)
|
s.Swtich2SelfDelivered(order, "")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !s.isBillCandidate(order, bill) {
|
if !s.isBillCandidate(order, bill) {
|
||||||
@@ -464,11 +464,11 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *DefScheduler) cancelOtherWaybills(savedOrderInfo *WatchOrderInfo, bill2Keep *model.Waybill) (err error) {
|
func (s *DefScheduler) cancelOtherWaybills(savedOrderInfo *WatchOrderInfo, bill2Keep *model.Waybill, cancelReasonID int, cancelReason string) (err error) {
|
||||||
globals.SugarLogger.Debugf("cancelOtherWaybills, orderID:%s, bill:%v", savedOrderInfo.order.VendorOrderID, bill2Keep)
|
globals.SugarLogger.Debugf("cancelOtherWaybills, orderID:%s, bill:%v", savedOrderInfo.order.VendorOrderID, bill2Keep)
|
||||||
for _, v := range savedOrderInfo.waybills {
|
for _, v := range savedOrderInfo.waybills {
|
||||||
if (v.OrderVendorID != v.WaybillVendorID) && (bill2Keep == nil || !(v.WaybillVendorID == bill2Keep.WaybillVendorID && v.VendorWaybillID == bill2Keep.VendorWaybillID)) {
|
if (v.OrderVendorID != v.WaybillVendorID) && (bill2Keep == nil || !(v.WaybillVendorID == bill2Keep.WaybillVendorID && v.VendorWaybillID == bill2Keep.VendorWaybillID)) {
|
||||||
s.CancelWaybill(v)
|
s.CancelWaybill(v, cancelReasonID, cancelReason)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@@ -478,7 +478,7 @@ func (s *DefScheduler) swtich2SelfDeliverWithRetry(savedOrderInfo *WatchOrderInf
|
|||||||
order := savedOrderInfo.order
|
order := savedOrderInfo.order
|
||||||
globals.SugarLogger.Debugf("swtich2SelfDeliverWithRetry orderID:%s", order.VendorOrderID)
|
globals.SugarLogger.Debugf("swtich2SelfDeliverWithRetry orderID:%s", order.VendorOrderID)
|
||||||
if order.WaybillVendorID != order.VendorID {
|
if order.WaybillVendorID != order.VendorID {
|
||||||
if err := s.Swtich2SelfDeliver(order); err != nil {
|
if err := s.Swtich2SelfDeliver(order, ""); err != nil {
|
||||||
globals.SugarLogger.Infof("swtich2SelfDeliverWithRetry failed, bill:%v, err:%v", bill, err)
|
globals.SugarLogger.Infof("swtich2SelfDeliverWithRetry failed, bill:%v, err:%v", bill, err)
|
||||||
if retryCount > 0 {
|
if retryCount > 0 {
|
||||||
time.AfterFunc(duration, func() {
|
time.AfterFunc(duration, func() {
|
||||||
@@ -497,7 +497,7 @@ func (s *DefScheduler) swtich2SelfDeliverWithRetry(savedOrderInfo *WatchOrderInf
|
|||||||
db := orm.NewOrm()
|
db := orm.NewOrm()
|
||||||
db.Insert(tmpLog)
|
db.Insert(tmpLog)
|
||||||
|
|
||||||
if s.CancelWaybill(bill) == nil {
|
if s.CancelWaybill(bill, partner.CancelWaybillReasonSwitch2SelfFailed, partner.CancelWaybillReasonStrSwitch2SelfFailed) == nil {
|
||||||
// 转自送失败的取消,要将订单中的运单状态更新
|
// 转自送失败的取消,要将订单中的运单状态更新
|
||||||
if s.isBillCandidate(order, bill) {
|
if s.isBillCandidate(order, bill) {
|
||||||
bill.WaybillVendorID = model.VendorIDUnknown
|
bill.WaybillVendorID = model.VendorIDUnknown
|
||||||
@@ -697,7 +697,7 @@ func (s *DefScheduler) updateOrderByBill(order *model.GoodsOrder, bill *model.Wa
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *DefScheduler) autoPickupGood(order *model.GoodsOrder) (err error) {
|
func (s *DefScheduler) autoPickupGood(order *model.GoodsOrder) (err error) {
|
||||||
return s.PickupGoods(order)
|
return s.PickupGoods(order, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *DefScheduler) isBillCandidate(order *model.GoodsOrder, bill *model.Waybill) bool {
|
func (s *DefScheduler) isBillCandidate(order *model.GoodsOrder, bill *model.Waybill) bool {
|
||||||
|
|||||||
@@ -148,17 +148,16 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, policy func(del
|
|||||||
return bill, err
|
return bill, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *DeliveryHandler) CancelWaybill(bill *model.Waybill) (err error) {
|
func (c *DeliveryHandler) CancelWaybill(bill *model.Waybill, cancelReasonID int, cancelReason string) (err error) {
|
||||||
reasonID := dadaapi.ReasonIDOther
|
switch cancelReasonID {
|
||||||
reasonMsg := "send not in time"
|
case partner.CancelWaybillReasonNotAcceptIntime:
|
||||||
if bill.Status < model.WaybillStatusAccepted {
|
cancelReasonID = dadaapi.ReasonIDNobodyAccept
|
||||||
reasonID = dadaapi.ReasonIDNobodyAccept
|
case partner.CancelWaybillReasonSwitch2SelfFailed:
|
||||||
reasonMsg = "ReasonIDNobodyAccept"
|
cancelReasonID = dadaapi.ReasonIDClientDontWantItAnymore
|
||||||
} else if bill.Status < model.WaybillStatusCourierArrived {
|
default:
|
||||||
reasonID = dadaapi.ReasonIDNobodyPickup
|
cancelReasonID = dadaapi.ReasonIDOther
|
||||||
reasonMsg = "ReasonIDNobodyPickup"
|
|
||||||
}
|
}
|
||||||
_, err = api.DadaAPI.CancelOrder(bill.VendorOrderID, reasonID, reasonMsg)
|
_, err = api.DadaAPI.CancelOrder(bill.VendorOrderID, cancelReasonID, cancelReason)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -245,17 +245,16 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, policy func(del
|
|||||||
return bill, err
|
return bill, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *DeliveryHandler) CancelWaybill(bill *model.Waybill) (err error) {
|
func (c *DeliveryHandler) CancelWaybill(bill *model.Waybill, cancelReasonID int, cancelReason string) (err error) {
|
||||||
reasonID := mtpsapi.CancelReasonRidderSendNotIntime
|
switch cancelReasonID {
|
||||||
reasonMsg := "CancelReasonRidderSendNotIntime"
|
case partner.CancelWaybillReasonNotAcceptIntime:
|
||||||
if bill.Status < model.WaybillStatusAccepted {
|
cancelReasonID = mtpsapi.CancelReasonRideerMtpsOther
|
||||||
reasonID = mtpsapi.CancelReasonMerchantOther
|
case partner.CancelWaybillReasonSwitch2SelfFailed:
|
||||||
reasonMsg = "nobody accept order"
|
cancelReasonID = mtpsapi.CancelReasonMerchantOther
|
||||||
} else if bill.Status < model.WaybillStatusCourierArrived {
|
default:
|
||||||
reasonID = mtpsapi.CancelReasonRideerGetGoodNotIntime
|
cancelReasonID = mtpsapi.CancelReasonRideerOther
|
||||||
reasonMsg = "CancelReasonRideerGetGoodNotIntime"
|
|
||||||
}
|
}
|
||||||
_, err = api.MtpsAPI.CancelOrder(utils.Str2Int64(bill.VendorWaybillID2), bill.VendorWaybillID, reasonID, reasonMsg)
|
_, err = api.MtpsAPI.CancelOrder(utils.Str2Int64(bill.VendorWaybillID2), bill.VendorWaybillID, cancelReasonID, cancelReason)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,18 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
CancelWaybillReasonNotAcceptIntime = 1
|
||||||
|
CancelWaybillReasonSwitch2SelfFailed = 2
|
||||||
|
CancelWaybillReasonOther = 10
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
CancelWaybillReasonStrNotAcceptIntime = "没有及时抢单"
|
||||||
|
CancelWaybillReasonStrSwitch2SelfFailed = "转自送失败"
|
||||||
|
CancelWaybillReasonStrOrderAlreadyFinished = "订单已经结束"
|
||||||
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
CurOrderManager IOrderManager
|
CurOrderManager IOrderManager
|
||||||
)
|
)
|
||||||
@@ -27,25 +39,25 @@ type IPurchasePlatformHandler interface {
|
|||||||
GetOrder(vendorOrderID string) (order *model.GoodsOrder, err error)
|
GetOrder(vendorOrderID string) (order *model.GoodsOrder, err error)
|
||||||
GetStatusActionTimeout(statusType, status int) time.Duration
|
GetStatusActionTimeout(statusType, status int) time.Duration
|
||||||
|
|
||||||
AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool) (err error)
|
AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error)
|
||||||
PickupGoods(order *model.GoodsOrder) (err error)
|
PickupGoods(order *model.GoodsOrder, userName string) (err error)
|
||||||
|
|
||||||
// 将订单从购物平台配送转为自送
|
// 将订单从购物平台配送转为自送
|
||||||
Swtich2SelfDeliver(order *model.GoodsOrder) (err error)
|
Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error)
|
||||||
|
|
||||||
// 将订单从购物平台配送转为自送后又送达
|
// 将订单从购物平台配送转为自送后又送达
|
||||||
Swtich2SelfDelivered(order *model.GoodsOrder) (err error)
|
Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error)
|
||||||
|
|
||||||
// 完全自送的门店表示开始配送
|
// 完全自送的门店表示开始配送
|
||||||
SelfDeliverDelievering(order *model.GoodsOrder) (err error)
|
SelfDeliverDelievering(order *model.GoodsOrder, userName string) (err error)
|
||||||
|
|
||||||
// 完全自送的门店表示配送完成
|
// 完全自送的门店表示配送完成
|
||||||
SelfDeliverDelievered(order *model.GoodsOrder) (err error)
|
SelfDeliverDelievered(order *model.GoodsOrder, userName string) (err error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type IDeliveryPlatformHandler interface {
|
type IDeliveryPlatformHandler interface {
|
||||||
CreateWaybill(order *model.GoodsOrder, policy func(deliveryFee, addFee int64) error) (bill *model.Waybill, err error)
|
CreateWaybill(order *model.GoodsOrder, policy func(deliveryFee, addFee int64) error) (bill *model.Waybill, err error)
|
||||||
CancelWaybill(bill *model.Waybill) (err error)
|
CancelWaybill(bill *model.Waybill, cancelReasonID int, cancelReason string) (err error)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Init(curOrderManager IOrderManager) {
|
func Init(curOrderManager IOrderManager) {
|
||||||
|
|||||||
@@ -264,7 +264,7 @@ func (c *PurchaseHandler) GetStatusFromVendorStatus(vendorStatus string) int {
|
|||||||
return model.OrderStatusUnknown
|
return model.OrderStatusUnknown
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool) (err error) {
|
func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) {
|
||||||
if isAcceptIt {
|
if isAcceptIt {
|
||||||
err = api.ElmAPI.ConfirmOrder(order.VendorOrderID)
|
err = api.ElmAPI.ConfirmOrder(order.VendorOrderID)
|
||||||
} else {
|
} else {
|
||||||
@@ -275,25 +275,25 @@ func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI
|
|||||||
|
|
||||||
// 饿了么没有拣货这个状态,直接返回成功
|
// 饿了么没有拣货这个状态,直接返回成功
|
||||||
// 真实流程中也不会调用这个方法,因为接收订单后状态会直接转移到已拣货
|
// 真实流程中也不会调用这个方法,因为接收订单后状态会直接转移到已拣货
|
||||||
func (c *PurchaseHandler) PickupGoods(order *model.GoodsOrder) (err error) {
|
func (c *PurchaseHandler) PickupGoods(order *model.GoodsOrder, userName string) (err error) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder) (err error) {
|
func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error) {
|
||||||
err = api.ElmAPI.DeliveryBySelfLite(order.VendorOrderID)
|
err = api.ElmAPI.DeliveryBySelfLite(order.VendorOrderID)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// 饿了么转商家自送后,没有确认送达的概念,空操作
|
// 饿了么转商家自送后,没有确认送达的概念,空操作
|
||||||
func (c *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder) (err error) {
|
func (c *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) SelfDeliverDelievering(order *model.GoodsOrder) (err error) {
|
func (c *PurchaseHandler) SelfDeliverDelievering(order *model.GoodsOrder, userName string) (err error) {
|
||||||
return api.ElmAPI.StartDeliveryBySelf(order.VendorOrderID, order.ConsigneeMobile)
|
return api.ElmAPI.StartDeliveryBySelf(order.VendorOrderID, order.ConsigneeMobile)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) SelfDeliverDelievered(order *model.GoodsOrder) (err error) {
|
func (c *PurchaseHandler) SelfDeliverDelievered(order *model.GoodsOrder, userName string) (err error) {
|
||||||
return api.ElmAPI.CompleteDeliveryBySelf(order.VendorOrderID, order.ConsigneeMobile)
|
return api.ElmAPI.CompleteDeliveryBySelf(order.VendorOrderID, order.ConsigneeMobile)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -184,18 +184,18 @@ func (c *PurchaseHandler) GetStatusFromVendorStatus(vendorStatus string) int {
|
|||||||
return model.OrderStatusUnknown
|
return model.OrderStatusUnknown
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool) (err error) {
|
func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) {
|
||||||
_, err = api.JdAPI.OrderAcceptOperate(order.VendorOrderID, isAcceptIt)
|
_, err = api.JdAPI.OrderAcceptOperate(order.VendorOrderID, isAcceptIt, userName)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) PickupGoods(order *model.GoodsOrder) (err error) {
|
func (c *PurchaseHandler) PickupGoods(order *model.GoodsOrder, userName string) (err error) {
|
||||||
_, err = api.JdAPI.OrderJDZBDelivery(order.VendorOrderID)
|
_, err = api.JdAPI.OrderJDZBDelivery(order.VendorOrderID, userName)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder) (err error) {
|
func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error) {
|
||||||
_, err = api.JdAPI.ModifySellerDelivery(order.VendorOrderID)
|
_, err = api.JdAPI.ModifySellerDelivery(order.VendorOrderID, userName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if errWithCode, ok := err.(*utils.ErrorWithCode); ok && errWithCode.Level() == 1 {
|
if errWithCode, ok := err.(*utils.ErrorWithCode); ok && errWithCode.Level() == 1 {
|
||||||
globals.SugarLogger.Infof("Swtich2SelfDeliver failed with error:%v try get current status", err)
|
globals.SugarLogger.Infof("Swtich2SelfDeliver failed with error:%v try get current status", err)
|
||||||
@@ -212,17 +212,17 @@ func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder) (err error
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder) (err error) {
|
func (c *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) {
|
||||||
_, err = api.JdAPI.DeliveryEndOrder(order.VendorOrderID)
|
_, err = api.JdAPI.DeliveryEndOrder(order.VendorOrderID, userName)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) SelfDeliverDelievering(order *model.GoodsOrder) (err error) {
|
func (c *PurchaseHandler) SelfDeliverDelievering(order *model.GoodsOrder, userName string) (err error) {
|
||||||
_, err = api.JdAPI.OrderSerllerDelivery(order.VendorOrderID)
|
_, err = api.JdAPI.OrderSerllerDelivery(order.VendorOrderID, userName)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// 京东送达接口都是一样的
|
// 京东送达接口都是一样的
|
||||||
func (c *PurchaseHandler) SelfDeliverDelievered(order *model.GoodsOrder) (err error) {
|
func (c *PurchaseHandler) SelfDeliverDelievered(order *model.GoodsOrder, userName string) (err error) {
|
||||||
return c.Swtich2SelfDelivered(order)
|
return c.Swtich2SelfDelivered(order, userName)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,14 @@ type OrderController struct {
|
|||||||
beego.Controller
|
beego.Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetUserNameFromToken(token string) string {
|
||||||
|
userName := token
|
||||||
|
if len(userName) > 10 {
|
||||||
|
userName = userName[:10]
|
||||||
|
}
|
||||||
|
return userName
|
||||||
|
}
|
||||||
|
|
||||||
func (c *OrderController) URLMapping() {
|
func (c *OrderController) URLMapping() {
|
||||||
c.Mapping("FinishedPickup", c.FinishedPickup)
|
c.Mapping("FinishedPickup", c.FinishedPickup)
|
||||||
c.Mapping("GetStoreOrderInfo", c.GetStoreOrderInfo)
|
c.Mapping("GetStoreOrderInfo", c.GetStoreOrderInfo)
|
||||||
@@ -21,16 +29,17 @@ func (c *OrderController) URLMapping() {
|
|||||||
c.Mapping("Swtich2SelfDeliver", c.Swtich2SelfDeliver)
|
c.Mapping("Swtich2SelfDeliver", c.Swtich2SelfDeliver)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *OrderController) orderOperate(handler func(vendorOrderID string, vendorID int) (interface{}, error)) {
|
func (c *OrderController) orderOperate(handler func(vendorOrderID string, vendorID int, userName string) (interface{}, error)) {
|
||||||
var (
|
var (
|
||||||
vendorOrderID string
|
vendorOrderID, token string
|
||||||
vendorID int
|
vendorID int
|
||||||
err error
|
err error
|
||||||
)
|
)
|
||||||
|
token = c.Ctx.Input.Header("token")
|
||||||
vendorOrderID = c.GetString("vendorOrderID")
|
vendorOrderID = c.GetString("vendorOrderID")
|
||||||
vendorID, err1 := c.GetInt("vendorID", 0)
|
vendorID, err1 := c.GetInt("vendorID", 0)
|
||||||
if vendorOrderID != "" && err1 == nil {
|
if vendorOrderID != "" && token != "" && err1 == nil {
|
||||||
result, err2 := handler(vendorOrderID, vendorID)
|
result, err2 := handler(vendorOrderID, vendorID, GetUserNameFromToken(token))
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
retObj := &model.CallResult{
|
retObj := &model.CallResult{
|
||||||
Code: "0",
|
Code: "0",
|
||||||
@@ -45,6 +54,9 @@ func (c *OrderController) orderOperate(handler func(vendorOrderID string, vendor
|
|||||||
if vendorOrderID == "" {
|
if vendorOrderID == "" {
|
||||||
errMsg += "vendorOrderID is empty\n"
|
errMsg += "vendorOrderID is empty\n"
|
||||||
}
|
}
|
||||||
|
if token == "" {
|
||||||
|
errMsg += "token is empty\n"
|
||||||
|
}
|
||||||
if errMsg != "" {
|
if errMsg != "" {
|
||||||
c.Data["json"] = &model.CallResult{
|
c.Data["json"] = &model.CallResult{
|
||||||
Code: "-1",
|
Code: "-1",
|
||||||
@@ -56,45 +68,49 @@ func (c *OrderController) orderOperate(handler func(vendorOrderID string, vendor
|
|||||||
|
|
||||||
// @Title 完成拣货
|
// @Title 完成拣货
|
||||||
// @Description 完成拣货
|
// @Description 完成拣货
|
||||||
|
// @Param token header string true "认证toke"
|
||||||
// @Param vendorOrderID formData string true "订单ID"
|
// @Param vendorOrderID formData string true "订单ID"
|
||||||
// @Param vendorID formData int true "订单所属的厂商ID"
|
// @Param vendorID formData int true "订单所属的厂商ID"
|
||||||
// @Success 200 {object} business.model.CallResult
|
// @Success 200 {object} business.model.CallResult
|
||||||
// @Failure 200 {object} business.model.CallResult
|
// @Failure 200 {object} business.model.CallResult
|
||||||
// @router /FinishedPickup [post]
|
// @router /FinishedPickup [post]
|
||||||
func (c *OrderController) FinishedPickup() {
|
func (c *OrderController) FinishedPickup() {
|
||||||
c.orderOperate(func(vendorOrderID string, vendorID int) (interface{}, error) {
|
c.orderOperate(func(vendorOrderID string, vendorID int, userName string) (interface{}, error) {
|
||||||
return nil, basesch.FixedBaseScheduler.PickupGoodsAndUpdateStatus(vendorOrderID, vendorID)
|
return nil, basesch.FixedBaseScheduler.PickupGoodsAndUpdateStatus(vendorOrderID, vendorID, userName)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Title 转自送
|
// @Title 转自送
|
||||||
// @Description 转自送
|
// @Description 转自送
|
||||||
|
// @Param token header string true "认证toke"
|
||||||
// @Param vendorOrderID formData string true "订单ID"
|
// @Param vendorOrderID formData string true "订单ID"
|
||||||
// @Param vendorID formData int true "订单所属的厂商ID"
|
// @Param vendorID formData int true "订单所属的厂商ID"
|
||||||
// @Success 200 {object} business.model.CallResult
|
// @Success 200 {object} business.model.CallResult
|
||||||
// @Failure 200 {object} business.model.CallResult
|
// @Failure 200 {object} business.model.CallResult
|
||||||
// @router /Swtich2SelfDeliver [post]
|
// @router /Swtich2SelfDeliver [post]
|
||||||
func (c *OrderController) Swtich2SelfDeliver() {
|
func (c *OrderController) Swtich2SelfDeliver() {
|
||||||
c.orderOperate(func(vendorOrderID string, vendorID int) (interface{}, error) {
|
c.orderOperate(func(vendorOrderID string, vendorID int, userName string) (interface{}, error) {
|
||||||
return nil, basesch.FixedBaseScheduler.Swtich2SelfDeliverAndUpdateStatus(vendorOrderID, vendorID)
|
return nil, basesch.FixedBaseScheduler.Swtich2SelfDeliverAndUpdateStatus(vendorOrderID, vendorID, userName)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Title 创建三方运单
|
// @Title 创建三方运单
|
||||||
// @Description 创建三方运单
|
// @Description 创建三方运单
|
||||||
|
// @Param token header string true "认证toke"
|
||||||
// @Param vendorOrderID formData string true "订单ID"
|
// @Param vendorOrderID formData string true "订单ID"
|
||||||
// @Param vendorID formData int true "订单所属的厂商ID"
|
// @Param vendorID formData int true "订单所属的厂商ID"
|
||||||
// @Success 200 {object} business.model.CallResult
|
// @Success 200 {object} business.model.CallResult
|
||||||
// @Failure 200 {object} business.model.CallResult
|
// @Failure 200 {object} business.model.CallResult
|
||||||
// @router /CreateWaybillOnProviders [post]
|
// @router /CreateWaybillOnProviders [post]
|
||||||
func (c *OrderController) CreateWaybillOnProviders() {
|
func (c *OrderController) CreateWaybillOnProviders() {
|
||||||
c.orderOperate(func(vendorOrderID string, vendorID int) (interface{}, error) {
|
c.orderOperate(func(vendorOrderID string, vendorID int, userName string) (interface{}, error) {
|
||||||
return basesch.FixedBaseScheduler.CreateWaybillOnProviders(vendorOrderID, vendorID)
|
return basesch.FixedBaseScheduler.CreateWaybillOnProviders(vendorOrderID, vendorID)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Title 得到门店订单信息
|
// @Title 得到门店订单信息
|
||||||
// @Description 得到门店订单信息
|
// @Description 得到门店订单信息
|
||||||
|
// @Param token header string true "认证toke"
|
||||||
// @Param storeID query string true "京西门店ID"
|
// @Param storeID query string true "京西门店ID"
|
||||||
// @Param lastHours query int false "最近多少小时的信息(缺省为两天)"
|
// @Param lastHours query int false "最近多少小时的信息(缺省为两天)"
|
||||||
// @Success 200 {object} business.model.CallResult
|
// @Success 200 {object} business.model.CallResult
|
||||||
@@ -132,6 +148,7 @@ func (c *OrderController) GetStoreOrderCountInfo() {
|
|||||||
|
|
||||||
// @Title 得到门店订单状态信息
|
// @Title 得到门店订单状态信息
|
||||||
// @Description 得到门店订单状态信息
|
// @Description 得到门店订单状态信息
|
||||||
|
// @Param token header string true "认证toke"
|
||||||
// @Param storeID query string true "京西门店ID"
|
// @Param storeID query string true "京西门店ID"
|
||||||
// @Param lastHours query int false "最近多少小时的信息(缺省为两天)"
|
// @Param lastHours query int false "最近多少小时的信息(缺省为两天)"
|
||||||
// @Param fromStatus query int true "起始状态(包括)"
|
// @Param fromStatus query int true "起始状态(包括)"
|
||||||
@@ -178,13 +195,15 @@ func (c *OrderController) GetStoreOrderInfo() {
|
|||||||
|
|
||||||
// @Title 得到订单SKU信息
|
// @Title 得到订单SKU信息
|
||||||
// @Description 得到订单SKU信息
|
// @Description 得到订单SKU信息
|
||||||
|
// @Param token header string true "认证toke"
|
||||||
// @Param vendorOrderID query string true "订单ID"
|
// @Param vendorOrderID query string true "订单ID"
|
||||||
// @Param vendorID query int true "订单所属的厂商ID"
|
// @Param vendorID query int true "订单所属的厂商ID"
|
||||||
// @Success 200 {object} business.model.CallResult
|
// @Success 200 {object} business.model.CallResult
|
||||||
// @Failure 200 {object} business.model.CallResult
|
// @Failure 200 {object} business.model.CallResult
|
||||||
// @router /GetOrderSkuInfo [get]
|
// @router /GetOrderSkuInfo [get]
|
||||||
func (c *OrderController) GetOrderSkuInfo() {
|
func (c *OrderController) GetOrderSkuInfo() {
|
||||||
c.orderOperate(func(vendorOrderID string, vendorID int) (interface{}, error) {
|
c.orderOperate(func(vendorOrderID string, vendorID int, userName string) (interface{}, error) {
|
||||||
|
// globals.SugarLogger.Debugf("userName:%s", userName)
|
||||||
return orderman.FixedOrderManager.GetOrderSkuInfo(vendorOrderID, vendorID)
|
return orderman.FixedOrderManager.GetOrderSkuInfo(vendorOrderID, vendorID)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user