diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index cbbb990fa..e02e97ffa 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -497,6 +497,15 @@ func (c *OrderManager) UpdateOrderStatusAndFlag(order *model.GoodsOrder) (err er return err } +func (c *OrderManager) UpdateOrderFields(order *model.GoodsOrder, fieldList []string) (err error) { + db := orm.NewOrm() + utils.CallFuncLogError(func() error { + _, err = db.Update(order, fieldList...) + return err + }, "UpdateOrderFields orderID:%s failed with error:%v", order.VendorOrderID, err) + return err +} + //Waybill func (c *OrderManager) UpdateWaybillVendorID(bill *model.Waybill, revertStatus bool) (err error) { globals.SugarLogger.Debugf("UpdateWaybillVendorID bill:%v", bill) diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 0cf2a351a..691595efe 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -290,7 +290,7 @@ func (s *DefScheduler) OnOrderStatusChanged(order *model.GoodsOrder, status *mod status.Status == model.OrderStatusApplyFailedGetGoods || status.Status == model.OrderStatusAgreeFailedGetGoods || status.Status == model.OrderStatusDeliverFailed { - if isPending { + if !isPending { if status.Status == model.OrderStatusApplyCancel { utils.CallFuncAsync(func() { weixinmsg.NotifyUserApplyCancel(savedOrderInfo.order, status.Remark) diff --git a/business/partner/partner.go b/business/partner/partner.go index 36490ed41..da2e7c53c 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -115,6 +115,7 @@ type IOrderManager interface { UpdateWaybillVendorID(bill *model.Waybill, revertStatus bool) (err error) UpdateOrderStatusAndFlag(order *model.GoodsOrder) (err error) + UpdateOrderFields(order *model.GoodsOrder, fieldList []string) (err error) LoadWaybill(vendorWaybillID string, waybillVendorID int) (bill *model.Waybill, err error) OnOrderComments(orderCommentList []*model.OrderComment) (err error) diff --git a/controllers/jx_order.go b/controllers/jx_order.go index d9f05b48b..23ddf3ea4 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -489,7 +489,10 @@ func (c *OrderController) AgreeOrRefuseCancel() { c.callAgreeOrRefuseCancel(func(params *tOrderAgreeOrRefuseCancelParams) (retVal interface{}, errCode string, err error) { order, err := partner.CurOrderManager.LoadOrder(params.VendorOrderID, params.VendorID) if err == nil { - err = defsch.FixedScheduler.AgreeOrRefuseCancel(params.Ctx, order, params.AcceptIt, params.Reason) + if err = defsch.FixedScheduler.AgreeOrRefuseCancel(params.Ctx, order, params.AcceptIt, params.Reason); err == nil && params.AcceptIt { + order.LockStatus = model.OrderStatusUnknown + err = partner.CurOrderManager.UpdateOrderFields(order, []string{"LockStatus"}) + } } return retVal, "", err })