From 8a75fb9beb775bf90ffe5ec574b120f90692e585 Mon Sep 17 00:00:00 2001 From: gazebo Date: Mon, 2 Jul 2018 22:39:16 +0800 Subject: [PATCH] - refactor auto accept order, explicit refuse added. --- business/controllers/business.go | 48 +++++++++++++++++++++++--------- business/elm/controller/order.go | 18 ++++++------ business/freshfood/freshfood.go | 14 ++++------ business/jd/controller/order.go | 15 ++++------ 4 files changed, 54 insertions(+), 41 deletions(-) diff --git a/business/controllers/business.go b/business/controllers/business.go index 3e06f7e12..07e2ace59 100644 --- a/business/controllers/business.go +++ b/business/controllers/business.go @@ -6,19 +6,41 @@ import ( "github.com/astaxie/beego/orm" ) -func IsAutoAcceptOrder(userMobile string, db orm.Ormer) bool { - if db == nil { - db = orm.NewOrm() - } - user := &models.BlackClient{ - Mobile: userMobile, - } - if err := db.Read(user, "Mobile"); err != nil { - if err != orm.ErrNoRows { - globals.SugarLogger.Errorf("read data error:%v, data:%v", err, user) +const ( + JD_VENDERID = 0 + ELM_VENDERID = 2 +) + +func OnNewOrder(orderID string, venderID int, userMobile string, jxStoreID int, db orm.Ormer, handler func(accepted bool)) int { + handleType := 0 + if userMobile != "" { + if db == nil { + db = orm.NewOrm() } - // 在访问数据库出错的情况下,也需要自动接单 - return true + user := &models.BlackClient{ + Mobile: userMobile, + } + if err := db.Read(user, "Mobile"); err != nil { + if err != orm.ErrNoRows { + globals.SugarLogger.Errorf("read data error:%v, data:%v, venderID:%d", err, user, venderID) + } + // 在访问数据库出错的情况下,也需要自动接单 + handleType = 1 + } else { + // 强制拒单 + globals.SugarLogger.Infof("force reject order:%s, venderID:%d", orderID, venderID) + handleType = -1 + } + } else { + globals.SugarLogger.Infof("order:%s, venderID:%d, mobile is empty, should accept it", orderID, venderID) + handleType = 1 } - return false + + if handleType == 1 { + handler(true) + } else if handleType == -1 { + handler(false) + } + + return handleType } diff --git a/business/elm/controller/order.go b/business/elm/controller/order.go index ec5741fd2..68d096c9c 100644 --- a/business/elm/controller/order.go +++ b/business/elm/controller/order.go @@ -46,15 +46,15 @@ func (o *OrderController) OrderMessage(msg *elmapi.CallbackMsg) (retVal *elmapi. return retVal } -func (o *OrderController) acceptOrder(orderID string, userMobile string) { - if controllers.IsAutoAcceptOrder(userMobile, nil) { - globals2.ElmAPI.ConfirmOrder(orderID) - if userMobile == "" { - globals.SugarLogger.Infof("elm order:%v force accepted, because userMobile is empty", orderID) + +func OnNewOrder(orderID string, userMobile string) { + controllers.OnNewOrder(orderID, controllers.ELM_VENDERID, userMobile, 0, nil, func(acceptIt bool) { + if acceptIt { + globals2.ElmAPI.ConfirmOrder(orderID) + } else { + globals2.ElmAPI.CancelOrder(orderID, elmapi.CancelOrderTypeOthers, "") } - } else { - globals.SugarLogger.Infof("elm order:%v refused, userMobile:%s", orderID, userMobile) - } + }) } func (o *OrderController) NewOrder(msg *elmapi.CallbackMsg, orderId string, userMobile string) *elmapi.CallbackResponse { @@ -84,7 +84,7 @@ func (o *OrderController) NewOrder(msg *elmapi.CallbackMsg, orderId string, user globals.SugarLogger.Infof("duplicate elm msg received:%v", msg) } } - o.acceptOrder(orderId, userMobile) + OnNewOrder(orderId, userMobile) return retVal } diff --git a/business/freshfood/freshfood.go b/business/freshfood/freshfood.go index e14c6fd46..6aa901519 100644 --- a/business/freshfood/freshfood.go +++ b/business/freshfood/freshfood.go @@ -11,6 +11,7 @@ import ( "git.rosy.net.cn/baseapi/platformapi/jdapi" "git.rosy.net.cn/baseapi/platformapi/mtpsapi" "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/controllers" "git.rosy.net.cn/jx-callback/business/jd/models" "git.rosy.net.cn/jx-callback/globals" ) @@ -85,11 +86,6 @@ const ( URL_WX_UPDATE_ACCESSTOKEN = "weixin/accesstoken/update" ) -const ( - JD_VENDERID = 0 - ELM_VENDERID = 2 -) - const ( retryCount = 2 ) @@ -150,7 +146,7 @@ func (f *FreshFoodAPI) NewJDOrder(jdorder *models.Jdorder, isNew bool) error { func (f *FreshFoodAPI) JDOrderStatus(msg *jdapi.CallbackOrderMsg) error { params := make(url.Values) - params.Set(URL_FRESHFOOD_PARA_VENDERID, utils.Int2Str(JD_VENDERID)) + params.Set(URL_FRESHFOOD_PARA_VENDERID, utils.Int2Str(controllers.JD_VENDERID)) params.Set(URL_FRESHFOOD_PARA_ORDERID, msg.BillID) params.Set(URL_FRESHFOOD_PARA_ORDERSTATUS, msg.StatusID) params.Set(URL_FRESHFOOD_PARA_ORDERSTATUSTIME, msg.Timestamp) @@ -161,7 +157,7 @@ func (f *FreshFoodAPI) JDOrderStatus(msg *jdapi.CallbackOrderMsg) error { func (f *FreshFoodAPI) JDOrderComment(msg *jdapi.CallbackOrderMsg) error { params := make(url.Values) - params.Set(URL_FRESHFOOD_PARA_VENDERID, utils.Int2Str(JD_VENDERID)) + params.Set(URL_FRESHFOOD_PARA_VENDERID, utils.Int2Str(controllers.JD_VENDERID)) params.Set(URL_FRESHFOOD_PARA_ORDERID, msg.BillID) params.Set(URL_FRESHFOOD_PARA_ORDERSTATUS, msg.StatusID) params.Set(URL_FRESHFOOD_PARA_ORDERSTATUSTIME, msg.Timestamp) @@ -173,7 +169,7 @@ func (f *FreshFoodAPI) JDOrderDeliveryStatus(jdOrderDeliveryStatusMsg *jdapi.Cal params := make(url.Values) cityName := "all" - params.Set(URL_FRESHFOOD_PARA_VENDERID, utils.Int2Str(JD_VENDERID)) + params.Set(URL_FRESHFOOD_PARA_VENDERID, utils.Int2Str(controllers.JD_VENDERID)) params.Set(URL_FRESHFOOD_PARA_ORDERID, jdOrderDeliveryStatusMsg.OrderID) params.Set(URL_FRESHFOOD_PARA_DELIVERYSTATUS, jdOrderDeliveryStatusMsg.DeliveryStatus) params.Set(URL_FRESHFOOD_PARA_DLIVERYSTATUSTIME, jdOrderDeliveryStatusMsg.DeliveryStatusTime) @@ -198,7 +194,7 @@ func (f *FreshFoodAPI) NewELMOrder(order map[string]interface{}) error { func (f *FreshFoodAPI) ELMOrderStatus(orderId string, status int, statusTime string) error { params := make(url.Values) - params.Set(URL_FRESHFOOD_PARA_VENDERID, utils.Int2Str(ELM_VENDERID)) + params.Set(URL_FRESHFOOD_PARA_VENDERID, utils.Int2Str(controllers.ELM_VENDERID)) params.Set(URL_FRESHFOOD_PARA_ORDERID, orderId) params.Set(URL_FRESHFOOD_PARA_ORDERSTATUS, utils.Int2Str(status)) params.Set(URL_FRESHFOOD_PARA_ORDERSTATUSTIME, statusTime) diff --git a/business/jd/controller/order.go b/business/jd/controller/order.go index cd98df955..e724c340c 100644 --- a/business/jd/controller/order.go +++ b/business/jd/controller/order.go @@ -144,15 +144,10 @@ func (c *OrderController) OrderDeliveryStatus(jdOrderDeliveryStatusMsg *jdapi.Ca } //----------- -func acceptOrder(msg *jdapi.CallbackOrderMsg, userMobile string, db orm.Ormer) { - if controllers.IsAutoAcceptOrder(userMobile, db) { - globals2.Jdapi.OrderAcceptOperate(msg.BillID, true) - if userMobile == "" { - globals.SugarLogger.Infof("jd order:%v force accepted, because userMobile is empty", msg) - } - } else { - globals.SugarLogger.Infof("jd order:%v refused, userMobile:%s", msg, userMobile) - } +func OnNewOrder(msg *jdapi.CallbackOrderMsg, userMobile string, db orm.Ormer) { + controllers.OnNewOrder(msg.BillID, controllers.JD_VENDERID, userMobile, 0, db, func(acceptIt bool) { + globals2.Jdapi.OrderAcceptOperate(msg.BillID, acceptIt) + }) } func newOrder(msg *jdapi.CallbackOrderMsg) error { @@ -197,7 +192,7 @@ func newOrder(msg *jdapi.CallbackOrderMsg) error { globals.SugarLogger.Errorf("can not get jdorder info:%v", msg.BillID) } } - acceptOrder(msg, userMobile, db) + OnNewOrder(msg, userMobile, db) return err }