- big refactor for scheduler.
This commit is contained in:
@@ -49,6 +49,12 @@ func init() {
|
||||
}
|
||||
|
||||
func addOrderOrWaybillStatus(status *model.OrderStatus, db orm.Ormer) (isDuplicated bool, err error) {
|
||||
if status.OrderType == model.OrderTypeOrder {
|
||||
globals.SugarLogger.Debugf("addOrderStatus order:%v", status)
|
||||
} else {
|
||||
globals.SugarLogger.Debugf("addOrderStatus waybill:%v", status)
|
||||
}
|
||||
|
||||
status.ID = 0
|
||||
created, _, err := db.ReadOrCreate(status, "VendorOrderID", "VendorID", "OrderType", "VendorStatus", "StatusTime")
|
||||
if err == nil {
|
||||
@@ -99,17 +105,17 @@ func LoadPendingOrders() {
|
||||
if order, ok := item.(*model.GoodsOrder); ok {
|
||||
if order.Status == model.OrderStatusNew {
|
||||
jxutils.CallMsgHandlerAsync(func() {
|
||||
scheduler.CurrentScheduler.OnOrderNew(order)
|
||||
scheduler.CurrentScheduler.OnOrderNew(order, true)
|
||||
}, order.VendorOrderID)
|
||||
} else {
|
||||
jxutils.CallMsgHandlerAsync(func() {
|
||||
scheduler.CurrentScheduler.OnOrderStatusChanged(model.Order2Status(order))
|
||||
scheduler.CurrentScheduler.OnOrderStatusChanged(model.Order2Status(order), true)
|
||||
}, order.VendorOrderID)
|
||||
}
|
||||
} else {
|
||||
bill := item.(*model.Waybill)
|
||||
jxutils.CallMsgHandlerAsync(func() {
|
||||
scheduler.CurrentScheduler.OnWaybillStatusChanged(bill)
|
||||
scheduler.CurrentScheduler.OnWaybillStatusChanged(bill, true)
|
||||
}, bill.VendorOrderID)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
"git.rosy.net.cn/jx-callback/business/controller"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/business/scheduler"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
"github.com/astaxie/beego/orm"
|
||||
@@ -22,7 +23,7 @@ type WaybillController struct {
|
||||
}
|
||||
|
||||
func init() {
|
||||
//scheduler.CurrentScheduler.RegisterDeliveryPlatform(model.VendorIDDada, new(WaybillController))
|
||||
scheduler.CurrentScheduler.RegisterDeliveryPlatform(model.VendorIDDada, new(WaybillController), false)
|
||||
}
|
||||
|
||||
func (c *WaybillController) OnWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaapi.CallbackResponse) {
|
||||
|
||||
@@ -158,6 +158,11 @@ func (c *OrderController) GetOrder(orderID string) (order *model.GoodsOrder, err
|
||||
Skus: []*model.OrderSku{},
|
||||
}
|
||||
order.Status = c.GetStatusFromVendorStatus(order.VendorStatus)
|
||||
if result["book"].(bool) {
|
||||
order.BusinessType = model.BusinessTypeDingshida
|
||||
} else {
|
||||
order.BusinessType = model.BusinessTypeImmediate
|
||||
}
|
||||
deliveryGeo := strings.Split(utils.Interface2String(result["deliveryGeo"]), ",")
|
||||
if len(deliveryGeo) == 2 {
|
||||
order.CoordinateType = model.CoordinateTypeMars
|
||||
@@ -273,8 +278,11 @@ func (c *OrderController) SelfDeliverDelievered(order *model.GoodsOrder) (err er
|
||||
return api.ElmAPI.CompleteDeliveryBySelf(order.VendorOrderID, order.ConsigneeMobile)
|
||||
}
|
||||
|
||||
func (c *OrderController) GetStatusActionConfig(status int) *scheduler.StatusActionConfig {
|
||||
return &scheduler.StatusActionConfig{
|
||||
Timeout: acceptOrderDelay, // 饿了么没有拣货状态,接单后就为拣货完成,所以要延迟接单,否则门店来不及备货
|
||||
func (c *OrderController) GetStatusActionConfig(statusType, status int) *scheduler.StatusActionConfig {
|
||||
if statusType == scheduler.TimerStatusTypeOrder && status == model.OrderStatusNew {
|
||||
return &scheduler.StatusActionConfig{
|
||||
Timeout: acceptOrderDelay, // 饿了么没有拣货状态,接单后就为拣货完成,所以要延迟接单,否则门店来不及备货
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ func (c *WaybillController) OnWaybillStatusMsg(msg *elmapi.CallbackWaybillStatus
|
||||
|
||||
func (c *WaybillController) onWaybillStatusMsg(msg *elmapi.CallbackWaybillStatusMsg) (retVal *elmapi.CallbackResponse) {
|
||||
order := c.callbackMsg2Waybill(msg)
|
||||
if msg.MsgType == elmapi.MsgTypeWaybillWait4DeliveryVendor {
|
||||
if msg.MsgType == elmapi.MsgTypeWaybillWait4Courier { //MsgTypeWaybillWait4Courier事件与JD的新运单事件的时间机制更相似
|
||||
order.Status = model.WaybillStatusNew
|
||||
} else if msg.MsgType == elmapi.MsgTypeWaybillPickingUp {
|
||||
if result, err := api.ElmAPI.GetOrder(msg.OrderID); err == nil {
|
||||
|
||||
@@ -90,6 +90,12 @@ func (c *OrderController) GetOrder(orderID string) (order *model.GoodsOrder, err
|
||||
Skus: []*model.OrderSku{},
|
||||
}
|
||||
order.Status = c.GetStatusFromVendorStatus(order.VendorStatus)
|
||||
businessTage := utils.Interface2String(result["businessTag"])
|
||||
if strings.Index(businessTage, "dj_aging_immediately") >= 0 {
|
||||
order.BusinessType = model.BusinessTypeImmediate
|
||||
} else {
|
||||
order.BusinessType = model.BusinessTypeDingshida
|
||||
}
|
||||
coordinateType := utils.Interface2Int64WithDefault(result["buyerCoordType"], 1)
|
||||
originalLng := utils.MustInterface2Float64(result["buyerLng"])
|
||||
originalLat := utils.MustInterface2Float64(result["buyerLat"])
|
||||
@@ -183,32 +189,20 @@ func (c *OrderController) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI
|
||||
|
||||
func (c *OrderController) PickedUpGoods(order *model.GoodsOrder) (err error) {
|
||||
_, err = api.JdAPI.OrderJDZBDelivery(order.VendorOrderID)
|
||||
return c.translateOrderRelatedErr(err)
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *OrderController) Swtich2SelfDeliver(order *model.GoodsOrder) (err error) {
|
||||
_, err = api.JdAPI.ModifySellerDelivery(order.VendorOrderID)
|
||||
return c.translateOrderRelatedErr(err)
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *OrderController) SelfDeliverDelievering(order *model.GoodsOrder) (err error) {
|
||||
_, err = api.JdAPI.OrderSerllerDelivery(order.VendorOrderID)
|
||||
return c.translateOrderRelatedErr(err)
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *OrderController) SelfDeliverDelievered(order *model.GoodsOrder) (err error) {
|
||||
_, err = api.JdAPI.DeliveryEndOrder(order.VendorOrderID)
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *OrderController) translateOrderRelatedErr(err error) (retVal error) {
|
||||
if err != nil {
|
||||
if errWithCode, ok := err.(*utils.ErrorWithCode); ok {
|
||||
if errWithCode.Level() == 1 && errWithCode.Code() == jdapi.ResponseInnerCodeOrderAlreadyPickedUp {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
return scheduler.ErrStatusIsNotOKForOperation
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
35
business/controller/jd/order_test.go
Normal file
35
business/controller/jd/order_test.go
Normal file
@@ -0,0 +1,35 @@
|
||||
package jd
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/business/controller"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
"git.rosy.net.cn/jx-callback/globals/db"
|
||||
"github.com/astaxie/beego"
|
||||
)
|
||||
|
||||
func init() {
|
||||
beego.InitBeegoBeforeTest("/Users/xujianhua/go/src/git.rosy.net.cn/jx-callback/conf/app.conf")
|
||||
beego.BConfig.RunMode = "dev" // InitBeegoBeforeTest会将runmode设置为test
|
||||
|
||||
globals.Init()
|
||||
db.Init()
|
||||
api.Init()
|
||||
}
|
||||
|
||||
func TestSwitch2SelfDeliver(t *testing.T) {
|
||||
orderID := "817540316000041"
|
||||
if order, err := controller.OrderManager.LoadOrder(orderID, model.VendorIDJD); err == nil {
|
||||
// globals.SugarLogger.Debug(order)
|
||||
c := new(OrderController)
|
||||
if err = c.Swtich2SelfDeliver(order); err == nil {
|
||||
} else {
|
||||
t.Fatal(err.Error())
|
||||
}
|
||||
} else {
|
||||
t.Fatal(err.Error())
|
||||
}
|
||||
}
|
||||
@@ -24,7 +24,7 @@ type WaybillController struct {
|
||||
}
|
||||
|
||||
func init() {
|
||||
scheduler.CurrentScheduler.RegisterDeliveryPlatform(model.VendorIDMTPS, new(WaybillController))
|
||||
scheduler.CurrentScheduler.RegisterDeliveryPlatform(model.VendorIDMTPS, new(WaybillController), true)
|
||||
}
|
||||
|
||||
func (c *WaybillController) OnWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *mtpsapi.CallbackResponse) {
|
||||
|
||||
@@ -48,13 +48,16 @@ func (c *OrderController) LoadPendingOrders() []*model.GoodsOrder {
|
||||
// OnOrderAdjust也类似,而OrderStatus要记录的是消息,所以添加这个
|
||||
func (c *OrderController) OnOrderNew(order *model.GoodsOrder, msgVendorStatus string) (err error) {
|
||||
db := orm.NewOrm()
|
||||
if order.Status == model.OrderStatusUnknown {
|
||||
order.Status = model.OrderStatusNew
|
||||
}
|
||||
status := model.Order2Status(order)
|
||||
status.Status = model.OrderStatusNew
|
||||
status.VendorStatus = msgVendorStatus
|
||||
isDuplicated, err := addOrderOrWaybillStatus(status, db)
|
||||
if err == nil && !isDuplicated {
|
||||
if err = c.saveOrder(order, false, db); err == nil {
|
||||
err = scheduler.CurrentScheduler.OnOrderNew(order)
|
||||
err = scheduler.CurrentScheduler.OnOrderNew(order, false)
|
||||
weixinmsg.NotifyNewOrder(order)
|
||||
}
|
||||
}
|
||||
@@ -64,6 +67,9 @@ func (c *OrderController) OnOrderNew(order *model.GoodsOrder, msgVendorStatus st
|
||||
// todo 调整单的处理可能还需要再细化一点,当前只是简单的删除重建
|
||||
func (c *OrderController) OnOrderAdjust(order *model.GoodsOrder, msgVendorStatus string) (err error) {
|
||||
db := orm.NewOrm()
|
||||
if order.Status == model.OrderStatusUnknown {
|
||||
order.Status = model.OrderStatusNew
|
||||
}
|
||||
status := model.Order2Status(order)
|
||||
status.Status = model.OrderStatusAdjust
|
||||
status.VendorStatus = msgVendorStatus
|
||||
@@ -85,7 +91,9 @@ func (c *OrderController) OnOrderAdjust(order *model.GoodsOrder, msgVendorStatus
|
||||
}
|
||||
if err = c.saveOrder(order, true, db); err == nil {
|
||||
// 因为订单调度器需要的是真实状态,所以用order的状态
|
||||
err = scheduler.CurrentScheduler.OnOrderStatusChanged(model.Order2Status(order))
|
||||
err = scheduler.CurrentScheduler.OnOrderNew(order, false)
|
||||
err = scheduler.CurrentScheduler.OnOrderStatusChanged(model.Order2Status(order), false)
|
||||
weixinmsg.NotifyNewOrder(order)
|
||||
}
|
||||
}
|
||||
return err
|
||||
@@ -94,7 +102,7 @@ func (c *OrderController) OnOrderAdjust(order *model.GoodsOrder, msgVendorStatus
|
||||
func (c *OrderController) OnOrderStatusChanged(orderStatus *model.OrderStatus) (err error) {
|
||||
isDuplicated, err := c.addOrderStatus(orderStatus, nil)
|
||||
if err == nil && !isDuplicated {
|
||||
err = scheduler.CurrentScheduler.OnOrderStatusChanged(orderStatus)
|
||||
err = scheduler.CurrentScheduler.OnOrderStatusChanged(orderStatus, false)
|
||||
if globals.GenerateLegacyJxOrder {
|
||||
c.legacyJxOrderStatusChanged(orderStatus, nil)
|
||||
}
|
||||
@@ -258,14 +266,14 @@ func (c *OrderController) LoadOrder(vendorOrderID string, vendorID int) (order *
|
||||
}
|
||||
|
||||
//Waybill
|
||||
func (c *OrderController) UpdateWaybillVendorID(bill *model.Waybill) (err error) {
|
||||
func (c *OrderController) UpdateWaybillVendorID(bill *model.Waybill, revertStatus bool) (err error) {
|
||||
globals.SugarLogger.Debugf("UpdateWaybillVendorID bill:%v", bill)
|
||||
db := orm.NewOrm()
|
||||
params := orm.Params{
|
||||
"waybill_vendor_id": bill.WaybillVendorID,
|
||||
}
|
||||
// 如果运单被取消,则要保持在已拣货状态
|
||||
if bill.WaybillVendorID == model.VendorIDUnknown {
|
||||
if revertStatus && bill.WaybillVendorID == model.VendorIDUnknown {
|
||||
params["status"] = model.OrderStatusFinishedPickup
|
||||
}
|
||||
utils.CallFuncLogError(func() error {
|
||||
|
||||
@@ -34,6 +34,8 @@ const (
|
||||
JX_DELIVERY_STATUS_DELIVERY_FAIL = 5 //投递失败
|
||||
JX_DELIVERY_STATUS_DELIVERY_DONE = 6 //已完成
|
||||
JX_DELIVERY_STATUS_DELIVERY_CANCEL = 7 //已取消
|
||||
|
||||
JX_STATUS_UNKNOWN = -100
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -84,7 +86,7 @@ func legacyMapOrderStatus(orderStatus int) (retVal int8) {
|
||||
retVal = JX_ORDER_STATUS_PICKING
|
||||
case model.OrderStatusDelivering:
|
||||
retVal = JX_ORDER_STATUS_DELIVERING
|
||||
case model.OrderStatusDelivered:
|
||||
case model.OrderStatusDelivered, model.OrderStatusFinished:
|
||||
retVal = JX_ORDER_STATUS_DELIVERY_DONE
|
||||
case model.OrderStatusAdjust:
|
||||
retVal = JX_ORDER_STATUS_ADJUST
|
||||
@@ -92,6 +94,8 @@ func legacyMapOrderStatus(orderStatus int) (retVal int8) {
|
||||
retVal = JX_ORDER_STATUS_EXCEPTION_APPLY
|
||||
case model.OrderStatusCanceled:
|
||||
retVal = JX_ORDER_STATUS_CANCEL
|
||||
default:
|
||||
retVal = JX_STATUS_UNKNOWN
|
||||
}
|
||||
return retVal
|
||||
}
|
||||
@@ -112,6 +116,8 @@ func legacyMapWaybillStatus(status int) (retVal int8) {
|
||||
retVal = JX_DELIVERY_STATUS_DELIVERY_CANCEL
|
||||
case model.WaybillStatusFailed:
|
||||
retVal = JX_DELIVERY_STATUS_DELIVERY_FAIL
|
||||
default:
|
||||
retVal = JX_STATUS_UNKNOWN
|
||||
}
|
||||
return retVal
|
||||
}
|
||||
@@ -132,8 +138,8 @@ func (c *OrderController) legacyWriteJxOrder(order *model.GoodsOrder, db orm.Orm
|
||||
|
||||
db.Begin()
|
||||
if isDelFirst {
|
||||
db.Raw("DELETE FROM "+globals.JxorderTableName+" WHERE order_id = ?", utils.Str2Int64(order.VendorOrderID))
|
||||
db.Raw("DELETE FROM "+globals.JxorderskuTableName+" WHERE order_id = ?", utils.Str2Int64(order.VendorOrderID))
|
||||
db.Raw("DELETE FROM "+globals.JxorderTableName+" WHERE order_id = ?", utils.Str2Int64(order.VendorOrderID)).Exec()
|
||||
db.Raw("DELETE FROM "+globals.JxorderskuTableName+" WHERE order_id = ?", utils.Str2Int64(order.VendorOrderID)).Exec()
|
||||
}
|
||||
|
||||
jxorder := &legacymodel.Jxorder2{
|
||||
@@ -210,81 +216,87 @@ func (c *OrderController) legacyWriteJxOrder(order *model.GoodsOrder, db orm.Orm
|
||||
}
|
||||
|
||||
func (c *OrderController) legacyJxOrderStatusChanged(status *model.OrderStatus, db orm.Ormer) (err error) {
|
||||
if db == nil {
|
||||
db = orm.NewOrm()
|
||||
}
|
||||
jxorder := &legacymodel.Jxorder2{
|
||||
OrderId: utils.Str2Int64(status.VendorOrderID),
|
||||
}
|
||||
if err = db.Read(jxorder, "OrderId"); err == nil {
|
||||
utils.CallFuncLogError(func() error {
|
||||
jxorder.OrderStatus = legacyMapOrderStatus(status.Status)
|
||||
jxorder.OrderStatusTime = utils.Time2Str(status.StatusTime)
|
||||
updateFields := []string{
|
||||
"OrderStatus",
|
||||
"OrderStatusTime",
|
||||
}
|
||||
if status.Status >= model.OrderStatusEndBegin {
|
||||
jxorder.DeliveryFinishTime = utils.Time2Str(status.StatusTime)
|
||||
updateFields = append(updateFields, "DeliveryFinishTime")
|
||||
}
|
||||
_, err = db.Update(jxorder, updateFields...)
|
||||
|
||||
db.Raw(`
|
||||
orderStatus := legacyMapOrderStatus(status.Status)
|
||||
if orderStatus != JX_STATUS_UNKNOWN {
|
||||
if db == nil {
|
||||
db = orm.NewOrm()
|
||||
}
|
||||
jxorder := &legacymodel.Jxorder2{
|
||||
OrderId: utils.Str2Int64(status.VendorOrderID),
|
||||
}
|
||||
if err = db.Read(jxorder, "OrderId"); err == nil {
|
||||
utils.CallFuncLogError(func() error {
|
||||
jxorder.OrderStatus = orderStatus
|
||||
jxorder.OrderStatusTime = utils.Time2Str(status.StatusTime)
|
||||
updateFields := []string{
|
||||
"OrderStatus",
|
||||
"OrderStatusTime",
|
||||
}
|
||||
if status.Status >= model.OrderStatusEndBegin {
|
||||
jxorder.DeliveryFinishTime = utils.Time2Str(status.StatusTime)
|
||||
updateFields = append(updateFields, "DeliveryFinishTime")
|
||||
}
|
||||
_, err = db.Update(jxorder, updateFields...)
|
||||
if orderStatus == JX_ORDER_STATUS_DELIVERY_DONE {
|
||||
db.Raw(`
|
||||
UPDATE `+globals.JxorderTableName+` t1
|
||||
JOIN waybill t2 ON t2.vendor_order_id = t1.order_id AND t2.status = 105
|
||||
SET t1.delivery_price = IF(t2.waybill_vendor_id = 102, t2.desired_fee/100, t1.delivery_price),
|
||||
t1.delivery_price1 = IF(t2.waybill_vendor_id = 101, t2.desired_fee/100, t1.delivery_price1)
|
||||
WHERE t1.order_id = ?
|
||||
`, jxorder.OrderId).Exec()
|
||||
|
||||
return err
|
||||
}, "legacyJxOrderStatusChanged")
|
||||
} else {
|
||||
globals.SugarLogger.Infof("read legacyJxOrder orderID:%d error:%v, ", jxorder.OrderId, err)
|
||||
}
|
||||
return err
|
||||
}, "legacyJxOrderStatusChanged")
|
||||
} else {
|
||||
globals.SugarLogger.Infof("read legacyJxOrder orderID:%d error:%v, ", jxorder.OrderId, err)
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *WaybillController) legacyWaybillStatusChanged(bill *model.Waybill, db orm.Ormer) (err error) {
|
||||
if db == nil {
|
||||
db = orm.NewOrm()
|
||||
}
|
||||
jxorder := &legacymodel.Jxorder2{
|
||||
OrderId: utils.Str2Int64(bill.VendorOrderID),
|
||||
}
|
||||
if err = db.Read(jxorder, "OrderId"); err == nil {
|
||||
utils.CallFuncLogError(func() error {
|
||||
updateFields := []string{
|
||||
"DeliveryCarrierNo",
|
||||
"DeliveryCarrierName",
|
||||
"DeliveryManNo",
|
||||
"DeliveryManName",
|
||||
"DeliveryManPhone",
|
||||
"DeliveryBillNo",
|
||||
"DeliveryStatus",
|
||||
}
|
||||
// jxorder.DeliveryPackageWeight
|
||||
jxorder.DeliveryCarrierNo = VENDOR_ID2CARRIER_NO[bill.WaybillVendorID]
|
||||
jxorder.DeliveryCarrierName = CARRIERS_NAMES[jxorder.DeliveryCarrierNo]
|
||||
jxorder.DeliveryManNo = bill.CourierMobile
|
||||
jxorder.DeliveryManName = bill.CourierName
|
||||
jxorder.DeliveryManPhone = bill.CourierMobile
|
||||
jxorder.DeliveryBillNo = bill.VendorWaybillID
|
||||
jxorder.DeliveryStatus = legacyMapWaybillStatus(bill.Status)
|
||||
// jxorder.DeliveryConfirmTime
|
||||
if bill.Status == model.WaybillStatusNew {
|
||||
updateFields = append(updateFields, "DeliveryStartTime")
|
||||
jxorder.DeliveryStartTime = utils.Time2Str(bill.StatusTime)
|
||||
} else if bill.Status >= model.WaybillStatusEndBegin {
|
||||
jxorder.DeliveryFinishTime = utils.Time2Str(bill.StatusTime)
|
||||
updateFields = append(updateFields, "DeliveryFinishTime")
|
||||
}
|
||||
_, err = db.Update(jxorder, updateFields...)
|
||||
return err
|
||||
}, "legacyJxOrderStatusChanged")
|
||||
} else {
|
||||
globals.SugarLogger.Infof("read legacyJxOrder, orderID:%d error:%v", jxorder.OrderId, err)
|
||||
deliveryStatus := legacyMapWaybillStatus(bill.Status)
|
||||
if deliveryStatus != JX_STATUS_UNKNOWN {
|
||||
if db == nil {
|
||||
db = orm.NewOrm()
|
||||
}
|
||||
jxorder := &legacymodel.Jxorder2{
|
||||
OrderId: utils.Str2Int64(bill.VendorOrderID),
|
||||
}
|
||||
if err = db.Read(jxorder, "OrderId"); err == nil {
|
||||
utils.CallFuncLogError(func() error {
|
||||
updateFields := []string{
|
||||
"DeliveryCarrierNo",
|
||||
"DeliveryCarrierName",
|
||||
"DeliveryManNo",
|
||||
"DeliveryManName",
|
||||
"DeliveryManPhone",
|
||||
"DeliveryBillNo",
|
||||
"DeliveryStatus",
|
||||
}
|
||||
// jxorder.DeliveryPackageWeight
|
||||
jxorder.DeliveryCarrierNo = VENDOR_ID2CARRIER_NO[bill.WaybillVendorID]
|
||||
jxorder.DeliveryCarrierName = CARRIERS_NAMES[jxorder.DeliveryCarrierNo]
|
||||
jxorder.DeliveryManNo = bill.CourierMobile
|
||||
jxorder.DeliveryManName = bill.CourierName
|
||||
jxorder.DeliveryManPhone = bill.CourierMobile
|
||||
jxorder.DeliveryBillNo = bill.VendorWaybillID
|
||||
jxorder.DeliveryStatus = deliveryStatus
|
||||
// jxorder.DeliveryConfirmTime
|
||||
if bill.Status == model.WaybillStatusNew {
|
||||
updateFields = append(updateFields, "DeliveryStartTime")
|
||||
jxorder.DeliveryStartTime = utils.Time2Str(bill.StatusTime)
|
||||
} else if bill.Status >= model.WaybillStatusEndBegin {
|
||||
jxorder.DeliveryFinishTime = utils.Time2Str(bill.StatusTime)
|
||||
updateFields = append(updateFields, "DeliveryFinishTime")
|
||||
}
|
||||
_, err = db.Update(jxorder, updateFields...)
|
||||
return err
|
||||
}, "legacyJxOrderStatusChanged")
|
||||
} else {
|
||||
globals.SugarLogger.Infof("read legacyJxOrder, orderID:%d error:%v", jxorder.OrderId, err)
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ func (w *WaybillController) OnWaybillStatusChanged(bill *model.Waybill) (err err
|
||||
isDuplicated, err = w.addWaybillStatus(bill, db, addParams)
|
||||
}
|
||||
if err == nil && !isDuplicated {
|
||||
scheduler.CurrentScheduler.OnWaybillStatusChanged(bill)
|
||||
scheduler.CurrentScheduler.OnWaybillStatusChanged(bill, false)
|
||||
if bill.Status == model.WaybillStatusAccepted || bill.Status == model.WaybillStatusDelivered {
|
||||
if order, err2 := OrderManager.LoadOrder(bill.VendorOrderID, bill.OrderVendorID); err2 == nil {
|
||||
weixinmsg.NotifyWaybillStatus(bill, order)
|
||||
|
||||
Reference in New Issue
Block a user