- refactor auto accept order, explicit refuse added.
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user