- refactor auto accept order, explicit refuse added.

This commit is contained in:
gazebo
2018-07-02 22:39:16 +08:00
parent 009f67fff5
commit 8a75fb9beb
4 changed files with 54 additions and 41 deletions

View File

@@ -6,19 +6,41 @@ import (
"github.com/astaxie/beego/orm" "github.com/astaxie/beego/orm"
) )
func IsAutoAcceptOrder(userMobile string, db orm.Ormer) bool { const (
if db == nil { JD_VENDERID = 0
db = orm.NewOrm() ELM_VENDERID = 2
} )
user := &models.BlackClient{
Mobile: userMobile, func OnNewOrder(orderID string, venderID int, userMobile string, jxStoreID int, db orm.Ormer, handler func(accepted bool)) int {
} handleType := 0
if err := db.Read(user, "Mobile"); err != nil { if userMobile != "" {
if err != orm.ErrNoRows { if db == nil {
globals.SugarLogger.Errorf("read data error:%v, data:%v", err, user) db = orm.NewOrm()
} }
// 在访问数据库出错的情况下,也需要自动接单 user := &models.BlackClient{
return true 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
} }

View File

@@ -46,15 +46,15 @@ func (o *OrderController) OrderMessage(msg *elmapi.CallbackMsg) (retVal *elmapi.
return retVal return retVal
} }
func (o *OrderController) acceptOrder(orderID string, userMobile string) {
if controllers.IsAutoAcceptOrder(userMobile, nil) { func OnNewOrder(orderID string, userMobile string) {
globals2.ElmAPI.ConfirmOrder(orderID) controllers.OnNewOrder(orderID, controllers.ELM_VENDERID, userMobile, 0, nil, func(acceptIt bool) {
if userMobile == "" { if acceptIt {
globals.SugarLogger.Infof("elm order:%v force accepted, because userMobile is empty", orderID) 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 { 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) globals.SugarLogger.Infof("duplicate elm msg received:%v", msg)
} }
} }
o.acceptOrder(orderId, userMobile) OnNewOrder(orderId, userMobile)
return retVal return retVal
} }

View File

@@ -11,6 +11,7 @@ import (
"git.rosy.net.cn/baseapi/platformapi/jdapi" "git.rosy.net.cn/baseapi/platformapi/jdapi"
"git.rosy.net.cn/baseapi/platformapi/mtpsapi" "git.rosy.net.cn/baseapi/platformapi/mtpsapi"
"git.rosy.net.cn/baseapi/utils" "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/business/jd/models"
"git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals"
) )
@@ -85,11 +86,6 @@ const (
URL_WX_UPDATE_ACCESSTOKEN = "weixin/accesstoken/update" URL_WX_UPDATE_ACCESSTOKEN = "weixin/accesstoken/update"
) )
const (
JD_VENDERID = 0
ELM_VENDERID = 2
)
const ( const (
retryCount = 2 retryCount = 2
) )
@@ -150,7 +146,7 @@ func (f *FreshFoodAPI) NewJDOrder(jdorder *models.Jdorder, isNew bool) error {
func (f *FreshFoodAPI) JDOrderStatus(msg *jdapi.CallbackOrderMsg) error { func (f *FreshFoodAPI) JDOrderStatus(msg *jdapi.CallbackOrderMsg) error {
params := make(url.Values) 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_ORDERID, msg.BillID)
params.Set(URL_FRESHFOOD_PARA_ORDERSTATUS, msg.StatusID) params.Set(URL_FRESHFOOD_PARA_ORDERSTATUS, msg.StatusID)
params.Set(URL_FRESHFOOD_PARA_ORDERSTATUSTIME, msg.Timestamp) 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 { func (f *FreshFoodAPI) JDOrderComment(msg *jdapi.CallbackOrderMsg) error {
params := make(url.Values) 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_ORDERID, msg.BillID)
params.Set(URL_FRESHFOOD_PARA_ORDERSTATUS, msg.StatusID) params.Set(URL_FRESHFOOD_PARA_ORDERSTATUS, msg.StatusID)
params.Set(URL_FRESHFOOD_PARA_ORDERSTATUSTIME, msg.Timestamp) params.Set(URL_FRESHFOOD_PARA_ORDERSTATUSTIME, msg.Timestamp)
@@ -173,7 +169,7 @@ func (f *FreshFoodAPI) JDOrderDeliveryStatus(jdOrderDeliveryStatusMsg *jdapi.Cal
params := make(url.Values) params := make(url.Values)
cityName := "all" 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_ORDERID, jdOrderDeliveryStatusMsg.OrderID)
params.Set(URL_FRESHFOOD_PARA_DELIVERYSTATUS, jdOrderDeliveryStatusMsg.DeliveryStatus) params.Set(URL_FRESHFOOD_PARA_DELIVERYSTATUS, jdOrderDeliveryStatusMsg.DeliveryStatus)
params.Set(URL_FRESHFOOD_PARA_DLIVERYSTATUSTIME, jdOrderDeliveryStatusMsg.DeliveryStatusTime) 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 { func (f *FreshFoodAPI) ELMOrderStatus(orderId string, status int, statusTime string) error {
params := make(url.Values) 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_ORDERID, orderId)
params.Set(URL_FRESHFOOD_PARA_ORDERSTATUS, utils.Int2Str(status)) params.Set(URL_FRESHFOOD_PARA_ORDERSTATUS, utils.Int2Str(status))
params.Set(URL_FRESHFOOD_PARA_ORDERSTATUSTIME, statusTime) params.Set(URL_FRESHFOOD_PARA_ORDERSTATUSTIME, statusTime)

View File

@@ -144,15 +144,10 @@ func (c *OrderController) OrderDeliveryStatus(jdOrderDeliveryStatusMsg *jdapi.Ca
} }
//----------- //-----------
func acceptOrder(msg *jdapi.CallbackOrderMsg, userMobile string, db orm.Ormer) { func OnNewOrder(msg *jdapi.CallbackOrderMsg, userMobile string, db orm.Ormer) {
if controllers.IsAutoAcceptOrder(userMobile, db) { controllers.OnNewOrder(msg.BillID, controllers.JD_VENDERID, userMobile, 0, db, func(acceptIt bool) {
globals2.Jdapi.OrderAcceptOperate(msg.BillID, true) globals2.Jdapi.OrderAcceptOperate(msg.BillID, acceptIt)
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 newOrder(msg *jdapi.CallbackOrderMsg) error { 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) globals.SugarLogger.Errorf("can not get jdorder info:%v", msg.BillID)
} }
} }
acceptOrder(msg, userMobile, db) OnNewOrder(msg, userMobile, db)
return err return err
} }