diff --git a/business/partner/purchase/tao_vegetable/order.go b/business/partner/purchase/tao_vegetable/order.go index 05f579597..318d37b16 100644 --- a/business/partner/purchase/tao_vegetable/order.go +++ b/business/partner/purchase/tao_vegetable/order.go @@ -3,6 +3,8 @@ package tao_vegetable import ( "errors" "fmt" + "git.rosy.net.cn/baseapi/platformapi/dingdingapi" + "git.rosy.net.cn/jx-callback/business/jxutils/ddmsg" "regexp" "strings" "time" @@ -580,7 +582,36 @@ func (c *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userNam // SelfDeliverDelivered 自配送订单送达 func (c *PurchaseHandler) SelfDeliverDelivered(order *model.GoodsOrder, userName string) (err error) { param := OrderStatusChangeDelivery(order, tao_vegetable.OrderStatusDeliveryOver) - return getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").DeliveryFinish(param) + api := getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "") + err = api.DeliveryFinish(param) + // 这个是因为自动拣货失败出现订单状态为更新,无法设置送达 + if err != nil && strings.Contains(err.Error(), "当前状态不允许更新") { + errMap := make(map[string]interface{}, 0) + + pickupErr := c.PickupGoods(order, true, userName) // 自动拣货 + time.Sleep(200 * time.Millisecond) + deliverErr := c.Swtich2SelfDeliver(order, userName) // 出库 + time.Sleep(200 * time.Millisecond) + deliveringErr := c.SelfDeliverDelivering(order, userName) // 配送中 + time.Sleep(200 * time.Millisecond) + deliveredErr := c.Swtich2SelfDelivered(order, userName) // 送达 + if pickupErr != nil { + errMap["pickupErr"] = pickupErr + } + if deliverErr != nil { + errMap["deliverErr"] = deliverErr + } + if deliveringErr != nil { + errMap["deliveringErr"] = deliveringErr + } + if deliveredErr != nil { + errMap["deliveredErr"] = deliveredErr + } + if len(errMap) > 0 { + ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "2452A93EEB9111EC9B06525400E86DC0", "淘宝订单拣货异常,导致设置送达错误:", utils.Format4Output(errMap, false)) + } + } + return err } func (c *PurchaseHandler) GetOrderRealMobile(ctx *jxcontext.Context, order *model.GoodsOrder) (mobile string, err error) {