- 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"
)
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
}

View File

@@ -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
}

View File

@@ -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)

View File

@@ -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
}