- 自送订单不调用拣货完成API
- 在updateOrderStoreFeature中将order.DeliveryFlag落地 - 发送用户申请取消订单消息(当前只有饿百与京东有此事件)
This commit is contained in:
@@ -33,19 +33,21 @@ func (c *BaseScheduler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt
|
|||||||
|
|
||||||
func (c *BaseScheduler) PickupGoods(order *model.GoodsOrder, userName string) (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.DeliveryFlag & model.OrderDeliveryFlagMaskPurcahseDisabled) == 0 {
|
||||||
if c.IsReallyCallPlatformAPI {
|
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusAccepted {
|
||||||
err = utils.CallFuncLogErrorWithInfo(func() error {
|
if c.IsReallyCallPlatformAPI {
|
||||||
return partner.GetPurchasePlatformFromVendorID(order.VendorID).PickupGoods(order, userName)
|
err = utils.CallFuncLogErrorWithInfo(func() error {
|
||||||
}, "PickupGoods orderID:%s", order.VendorOrderID)
|
return partner.GetPurchasePlatformFromVendorID(order.VendorID).PickupGoods(order, userName)
|
||||||
}
|
}, "PickupGoods orderID:%s", order.VendorOrderID)
|
||||||
} else {
|
}
|
||||||
if order.LockStatus != model.OrderStatusUnknown || order.Status < model.OrderStatusAccepted {
|
|
||||||
err = scheduler.ErrOrderStatusIsNotSuitable4CurOperation
|
|
||||||
globals.SugarLogger.Infof("PickupGoods orderID:%s, status:%d is not suitable", order.VendorOrderID, order.Status)
|
|
||||||
} else {
|
} else {
|
||||||
err = scheduler.ErrOrderStatusAlreadySatisfyCurOperation
|
if order.LockStatus != model.OrderStatusUnknown || order.Status < model.OrderStatusAccepted {
|
||||||
globals.SugarLogger.Debugf("PickupGoods orderID:%s status:%d already ok", order.VendorOrderID, order.Status)
|
err = scheduler.ErrOrderStatusIsNotSuitable4CurOperation
|
||||||
|
globals.SugarLogger.Infof("PickupGoods orderID:%s, status:%d is not suitable", order.VendorOrderID, order.Status)
|
||||||
|
} else {
|
||||||
|
err = scheduler.ErrOrderStatusAlreadySatisfyCurOperation
|
||||||
|
globals.SugarLogger.Debugf("PickupGoods orderID:%s status:%d already ok", order.VendorOrderID, order.Status)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -136,6 +136,7 @@ func (s *WatchOrderInfo) updateOrderStoreFeature(order *model.GoodsOrder) (err e
|
|||||||
if !isNeedSchedule {
|
if !isNeedSchedule {
|
||||||
order.DeliveryFlag |= model.OrderDeliveryFlagMaskScheduleDisabled
|
order.DeliveryFlag |= model.OrderDeliveryFlagMaskScheduleDisabled
|
||||||
}
|
}
|
||||||
|
_, err = dao.UpdateEntity(db, order, "DeliveryFlag")
|
||||||
globals.SugarLogger.Debugf("updateOrderStoreFeature orderID:%s, s.storeDeliveryType:%d, order.DeliveryFlag:%d", order.VendorOrderID, s.storeDeliveryType, order.DeliveryFlag)
|
globals.SugarLogger.Debugf("updateOrderStoreFeature orderID:%s, s.storeDeliveryType:%d, order.DeliveryFlag:%d", order.VendorOrderID, s.storeDeliveryType, order.DeliveryFlag)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
@@ -280,6 +281,12 @@ func (s *DefScheduler) OnOrderStatusChanged(status *model.OrderStatus, isPending
|
|||||||
} else if status.LockStatus != model.OrderStatusUnknown {
|
} else if status.LockStatus != model.OrderStatusUnknown {
|
||||||
s.stopTimer(savedOrderInfo)
|
s.stopTimer(savedOrderInfo)
|
||||||
}
|
}
|
||||||
|
} else if status.Status > model.OrderStatusApplyCancel {
|
||||||
|
globals.SugarLogger.Debugf("OnOrderStatusChanged orderID:%s %s, status:%v", status.VendorOrderID, model.OrderStatusName[status.Status], status)
|
||||||
|
savedOrderInfo := s.loadSavedOrderFromMap(status, true)
|
||||||
|
utils.CallFuncAsync(func() {
|
||||||
|
weixinmsg.NotifyUserApplyCancel(savedOrderInfo.order, status.Remark)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ const (
|
|||||||
WX_NORMAL_STORE_MSG_TEMPLATE_ID = "7ngcTFYiUFw66BMzIYntM1tpy-xZkJwlcCT5pVtXwtw"
|
WX_NORMAL_STORE_MSG_TEMPLATE_ID = "7ngcTFYiUFw66BMzIYntM1tpy-xZkJwlcCT5pVtXwtw"
|
||||||
WX_CHANGE_APPROVED_TEMPLATE_ID = "gIG2olBZtQbjXmp6doNB_dESu60By5xuXYOGxksLv3Y"
|
WX_CHANGE_APPROVED_TEMPLATE_ID = "gIG2olBZtQbjXmp6doNB_dESu60By5xuXYOGxksLv3Y"
|
||||||
WX_CHANGE_REJECTED_TEMPLATE_ID = "tn2QXWi4HtSIwaztmtN6Bb2uzNL-jBxWltCZTDNJuYE"
|
WX_CHANGE_REJECTED_TEMPLATE_ID = "tn2QXWi4HtSIwaztmtN6Bb2uzNL-jBxWltCZTDNJuYE"
|
||||||
|
WS_ORDER_CANCLED_TEMPLATE_ID = "iFozwiCsQdMs7VTiPXoBne45jKIQkoyxdGHSeAExP9U"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -273,6 +274,43 @@ func NotifyWaybillStatus(bill *model.Waybill, order *model.GoodsOrder, isBillAlr
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NotifyUserApplyCancel(order *model.GoodsOrder, cancelReason string) (err error) {
|
||||||
|
globals.SugarLogger.Debugf("NotifyUserApplyCancel orderID:%s", order.VendorOrderID)
|
||||||
|
if order.VendorID == model.VendorIDELM {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if !model.IsOrderSolid(order) {
|
||||||
|
globals.SugarLogger.Infof("NotifyUserApplyCancel orderID:%s is not solid", order.VendorOrderID)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
data := map[string]interface{}{
|
||||||
|
"first": map[string]interface{}{
|
||||||
|
"value": "老板,您有订单申请取消!请及时联系客户处理!",
|
||||||
|
"color": WX_NEW_ORDER_TEMPLATE_COLOR,
|
||||||
|
},
|
||||||
|
"keyword1": map[string]interface{}{
|
||||||
|
"value": order.VendorOrderID,
|
||||||
|
"color": WX_NEW_ORDER_TEMPLATE_COLOR,
|
||||||
|
},
|
||||||
|
"keyword2": map[string]interface{}{
|
||||||
|
"value": fmt.Sprintf("%s 第%d号订单", model.VendorChineseNames[order.VendorID], order.OrderSeq),
|
||||||
|
"color": WX_NEW_ORDER_TEMPLATE_COLOR,
|
||||||
|
},
|
||||||
|
"keyword3": map[string]interface{}{
|
||||||
|
"value": cancelReason,
|
||||||
|
"color": venderColors[order.VendorID],
|
||||||
|
},
|
||||||
|
"remark": map[string]interface{}{
|
||||||
|
"value": order.ConsigneeMobile,
|
||||||
|
"color": WX_NEW_ORDER_TEMPLATE_COLOR,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
storeID := jxutils.GetSaleStoreIDFromOrder(order)
|
||||||
|
return SendMsgToStore(storeID, WS_ORDER_CANCLED_TEMPLATE_ID, "", "", data)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func PushJDBadCommentToWeiXin(comment *legacymodel.JxBadComments) (err error) {
|
func PushJDBadCommentToWeiXin(comment *legacymodel.JxBadComments) (err error) {
|
||||||
globals.SugarLogger.Debugf("PushJDBadCommentToWeiXin orderID:%s", comment.OrderId)
|
globals.SugarLogger.Debugf("PushJDBadCommentToWeiXin orderID:%s", comment.OrderId)
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ func OnCallbackMsg(msg *ebaiapi.CallbackMsg) (response *ebaiapi.CallbackResponse
|
|||||||
orderID := GetOrderIDFromMsg(msg)
|
orderID := GetOrderIDFromMsg(msg)
|
||||||
jxutils.CallMsgHandler(func() {
|
jxutils.CallMsgHandler(func() {
|
||||||
switch msg.Cmd {
|
switch msg.Cmd {
|
||||||
case ebaiapi.CmdOrderCreate, ebaiapi.CmdOrderStatus:
|
case ebaiapi.CmdOrderCreate, ebaiapi.CmdOrderStatus, ebaiapi.CmdOrderUserCancel:
|
||||||
response = CurPurchaseHandler.onOrderMsg(msg)
|
response = CurPurchaseHandler.onOrderMsg(msg)
|
||||||
case ebaiapi.CmdOrderDeliveryStatus:
|
case ebaiapi.CmdOrderDeliveryStatus:
|
||||||
response = CurPurchaseHandler.onWaybillMsg(msg)
|
response = CurPurchaseHandler.onWaybillMsg(msg)
|
||||||
|
|||||||
@@ -21,8 +21,9 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
acceptOrderDelay = 180 * time.Second
|
acceptOrderDelay = 180 * time.Second
|
||||||
fakePickedUp = "9527"
|
fakePickedUp = "9527"
|
||||||
|
fakeUserApplyCancel = "user_apply_cancel"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -30,6 +31,7 @@ var (
|
|||||||
ebaiapi.OrderStatusNew: model.OrderStatusNew,
|
ebaiapi.OrderStatusNew: model.OrderStatusNew,
|
||||||
ebaiapi.OrderStatusAccepted: model.OrderStatusAccepted,
|
ebaiapi.OrderStatusAccepted: model.OrderStatusAccepted,
|
||||||
fakePickedUp: model.OrderStatusFinishedPickup,
|
fakePickedUp: model.OrderStatusFinishedPickup,
|
||||||
|
fakeUserApplyCancel: model.OrderStatusApplyCancel,
|
||||||
ebaiapi.OrderStatusCourierAccepted: model.OrderStatusDelivering,
|
ebaiapi.OrderStatusCourierAccepted: model.OrderStatusDelivering,
|
||||||
ebaiapi.OrderStatusCourierPickedup: model.OrderStatusDelivering,
|
ebaiapi.OrderStatusCourierPickedup: model.OrderStatusDelivering,
|
||||||
ebaiapi.OrderStatusFinished: model.OrderStatusFinished,
|
ebaiapi.OrderStatusFinished: model.OrderStatusFinished,
|
||||||
@@ -245,21 +247,31 @@ func (c *PurchaseHandler) onOrderNew(msg *ebaiapi.CallbackMsg) (response *ebaiap
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) callbackMsg2Status(msg *ebaiapi.CallbackMsg) (orderStatus *model.OrderStatus) {
|
func (c *PurchaseHandler) callbackMsg2Status(msg *ebaiapi.CallbackMsg) (orderStatus *model.OrderStatus) {
|
||||||
if status, ok := msg.Body["status"]; ok {
|
orderID := GetOrderIDFromMsg(msg)
|
||||||
vendorStatus := utils.Int64ToStr(utils.MustInterface2Int64(status))
|
orderStatus = &model.OrderStatus{
|
||||||
orderID := GetOrderIDFromMsg(msg)
|
VendorOrderID: orderID,
|
||||||
orderStatus = &model.OrderStatus{
|
VendorID: model.VendorIDEBAI,
|
||||||
VendorOrderID: orderID,
|
OrderType: model.OrderTypeOrder,
|
||||||
VendorID: model.VendorIDEBAI,
|
RefVendorOrderID: orderID,
|
||||||
OrderType: model.OrderTypeOrder,
|
RefVendorID: model.VendorIDEBAI,
|
||||||
RefVendorOrderID: orderID,
|
StatusTime: utils.Timestamp2Time(msg.Timestamp),
|
||||||
RefVendorID: model.VendorIDEBAI,
|
}
|
||||||
VendorStatus: vendorStatus,
|
if msg.Cmd == ebaiapi.CmdOrderUserCancel {
|
||||||
Status: c.GetStatusFromVendorStatus(vendorStatus),
|
cancelType := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["type"]))
|
||||||
StatusTime: utils.Timestamp2Time(msg.Timestamp),
|
if cancelType == ebaiapi.OrderUserApplyCancel {
|
||||||
Remark: utils.Interface2String(msg.Body["reason"]),
|
orderStatus.VendorStatus = fakeUserApplyCancel
|
||||||
|
orderStatus.Status = c.GetStatusFromVendorStatus(orderStatus.VendorStatus)
|
||||||
|
orderStatus.Remark = utils.Interface2String(msg.Body["cancel_reason"])
|
||||||
|
} else {
|
||||||
|
orderStatus = nil
|
||||||
}
|
}
|
||||||
|
} else if status, ok := msg.Body["status"]; ok {
|
||||||
|
vendorStatus := utils.Int64ToStr(utils.MustInterface2Int64(status))
|
||||||
|
orderStatus.VendorStatus = vendorStatus
|
||||||
|
orderStatus.Status = c.GetStatusFromVendorStatus(orderStatus.VendorStatus)
|
||||||
|
orderStatus.Remark = utils.Interface2String(msg.Body["reason"])
|
||||||
} else {
|
} else {
|
||||||
|
orderStatus = nil
|
||||||
globals.SugarLogger.Infof("ebai callbackMsg2Status can not find status field in msg:%s", utils.Format4Output(msg, false))
|
globals.SugarLogger.Infof("ebai callbackMsg2Status can not find status field in msg:%s", utils.Format4Output(msg, false))
|
||||||
}
|
}
|
||||||
return orderStatus
|
return orderStatus
|
||||||
|
|||||||
@@ -16,7 +16,9 @@ func (c *MtwmController) onCallbackMsg(msgType string) {
|
|||||||
msg, callbackResponse := api.MtwmAPI.GetCallbackMsg(c.Ctx.Request)
|
msg, callbackResponse := api.MtwmAPI.GetCallbackMsg(c.Ctx.Request)
|
||||||
if callbackResponse == nil {
|
if callbackResponse == nil {
|
||||||
callbackResponse = mtwm.OnOrderCallbackMsg(msg)
|
callbackResponse = mtwm.OnOrderCallbackMsg(msg)
|
||||||
// callbackResponse = mtwmapi.Err2CallbackResponse(nil, "")
|
if callbackResponse == nil {
|
||||||
|
callbackResponse = mtwmapi.Err2CallbackResponse(nil, "")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
c.Data["json"] = callbackResponse
|
c.Data["json"] = callbackResponse
|
||||||
c.ServeJSON()
|
c.ServeJSON()
|
||||||
|
|||||||
Reference in New Issue
Block a user