- refactor auto accept order, explicit refuse added.
This commit is contained in:
@@ -6,7 +6,14 @@ import (
|
|||||||
"github.com/astaxie/beego/orm"
|
"github.com/astaxie/beego/orm"
|
||||||
)
|
)
|
||||||
|
|
||||||
func IsAutoAcceptOrder(userMobile string, db orm.Ormer) bool {
|
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 {
|
if db == nil {
|
||||||
db = orm.NewOrm()
|
db = orm.NewOrm()
|
||||||
}
|
}
|
||||||
@@ -15,10 +22,25 @@ func IsAutoAcceptOrder(userMobile string, db orm.Ormer) bool {
|
|||||||
}
|
}
|
||||||
if err := db.Read(user, "Mobile"); err != nil {
|
if err := db.Read(user, "Mobile"); err != nil {
|
||||||
if err != orm.ErrNoRows {
|
if err != orm.ErrNoRows {
|
||||||
globals.SugarLogger.Errorf("read data error:%v, data:%v", err, user)
|
globals.SugarLogger.Errorf("read data error:%v, data:%v, venderID:%d", err, user, venderID)
|
||||||
}
|
}
|
||||||
// 在访问数据库出错的情况下,也需要自动接单
|
// 在访问数据库出错的情况下,也需要自动接单
|
||||||
return true
|
handleType = 1
|
||||||
|
} else {
|
||||||
|
// 强制拒单
|
||||||
|
globals.SugarLogger.Infof("force reject order:%s, venderID:%d", orderID, venderID)
|
||||||
|
handleType = -1
|
||||||
}
|
}
|
||||||
return false
|
} else {
|
||||||
|
globals.SugarLogger.Infof("order:%s, venderID:%d, mobile is empty, should accept it", orderID, venderID)
|
||||||
|
handleType = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
return retVal
|
||||||
}
|
}
|
||||||
func (o *OrderController) acceptOrder(orderID string, userMobile string) {
|
|
||||||
if controllers.IsAutoAcceptOrder(userMobile, nil) {
|
func OnNewOrder(orderID string, userMobile string) {
|
||||||
|
controllers.OnNewOrder(orderID, controllers.ELM_VENDERID, userMobile, 0, nil, func(acceptIt bool) {
|
||||||
|
if acceptIt {
|
||||||
globals2.ElmAPI.ConfirmOrder(orderID)
|
globals2.ElmAPI.ConfirmOrder(orderID)
|
||||||
if userMobile == "" {
|
|
||||||
globals.SugarLogger.Infof("elm order:%v force accepted, because userMobile is empty", orderID)
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
globals.SugarLogger.Infof("elm order:%v refused, userMobile:%s", orderID, userMobile)
|
globals2.ElmAPI.CancelOrder(orderID, elmapi.CancelOrderTypeOthers, "")
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user