- 美团外卖生成不同的售后单号,支持同一订单多个售后单
This commit is contained in:
@@ -2,6 +2,7 @@ package orderman
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler"
|
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler"
|
||||||
@@ -36,13 +37,17 @@ func (c *OrderManager) OnAfsOrderNew(afsOrder *model.AfsOrder, orderStatus *mode
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *OrderManager) onAfsOrderNew(afsOrder *model.AfsOrder, orderStatus *model.OrderStatus, isAdjust bool) (err error) {
|
func (c *OrderManager) onAfsOrderNew(afsOrder *model.AfsOrder, orderStatus *model.OrderStatus, isAdjust bool) (err error) {
|
||||||
|
db := dao.GetDB()
|
||||||
|
c.setAfsOrderID(db, orderStatus)
|
||||||
|
if afsOrder.AfsOrderID == "" {
|
||||||
|
afsOrder.AfsOrderID = orderStatus.VendorOrderID
|
||||||
|
}
|
||||||
if afsOrder.VendorStatus == "" {
|
if afsOrder.VendorStatus == "" {
|
||||||
afsOrder.VendorStatus = orderStatus.VendorStatus
|
afsOrder.VendorStatus = orderStatus.VendorStatus
|
||||||
}
|
}
|
||||||
if afsOrder.Status == model.OrderStatusUnknown {
|
if afsOrder.Status == model.OrderStatusUnknown {
|
||||||
afsOrder.Status = orderStatus.Status
|
afsOrder.Status = orderStatus.Status
|
||||||
}
|
}
|
||||||
db := dao.GetDB()
|
|
||||||
dao.Begin(db)
|
dao.Begin(db)
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil || err != nil {
|
if r := recover(); r != nil || err != nil {
|
||||||
@@ -150,6 +155,7 @@ func (c *OrderManager) SaveAfsOrder(db *dao.DaoDB, afsOrder *model.AfsOrder, isD
|
|||||||
|
|
||||||
func (c *OrderManager) OnAfsOrderStatusChanged(orderStatus *model.OrderStatus) (err error) {
|
func (c *OrderManager) OnAfsOrderStatusChanged(orderStatus *model.OrderStatus) (err error) {
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
|
c.setAfsOrderID(db, orderStatus)
|
||||||
dao.Begin(db)
|
dao.Begin(db)
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil || err != nil {
|
if r := recover(); r != nil || err != nil {
|
||||||
@@ -299,3 +305,28 @@ func (c *OrderManager) UpdateAfsOrderFields(afsOrder *model.AfsOrder, fieldList
|
|||||||
}, "UpdateAfsOrderFields orderID:%s failed with error:%v", afsOrder.VendorOrderID, err)
|
}, "UpdateAfsOrderFields orderID:%s failed with error:%v", afsOrder.VendorOrderID, err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *OrderManager) setAfsOrderID(db *dao.DaoDB, orderStatus *model.OrderStatus) {
|
||||||
|
if orderStatus.VendorOrderID == "" {
|
||||||
|
index := 1
|
||||||
|
if afsOrderList, err2 := dao.GetAfsOrders(db, orderStatus.RefVendorID, orderStatus.RefVendorOrderID, ""); err2 == nil {
|
||||||
|
if len(afsOrderList) > 0 {
|
||||||
|
list := strings.Split(afsOrderList[0].AfsOrderID, "-")
|
||||||
|
if len(list) > 1 {
|
||||||
|
index = int(utils.Str2Int64WithDefault(list[1], 0))
|
||||||
|
if afsOrderList[1].Status >= model.AfsOrderStatusFinished {
|
||||||
|
index++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
orderStatus.VendorOrderID = composeAfsOrderID(orderStatus.RefVendorOrderID, index)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func composeAfsOrderID(vendorOrderID string, index int) (afsOrderID string) {
|
||||||
|
return strings.Join([]string{
|
||||||
|
vendorOrderID,
|
||||||
|
utils.Int2Str(index),
|
||||||
|
}, "-")
|
||||||
|
}
|
||||||
|
|||||||
@@ -60,3 +60,25 @@ func SetAfsOrderFlag(db *DaoDB, userName string, afsOrderID string, vendorID int
|
|||||||
`, flag, afsOrderID, vendorID)
|
`, flag, afsOrderID, vendorID)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetAfsOrders(db *DaoDB, vendorID int, vendorOrderID, afsOrderID string) (afsOrderList []*model.AfsOrder, err error) {
|
||||||
|
sql := `
|
||||||
|
SELECT *
|
||||||
|
FROM afs_order t1
|
||||||
|
WHERE t1.vendor_id = ?
|
||||||
|
`
|
||||||
|
sqlParams := []interface{}{
|
||||||
|
vendorID,
|
||||||
|
}
|
||||||
|
if vendorOrderID != "" {
|
||||||
|
sql += " AND t1.vendor_order_id = ?"
|
||||||
|
sqlParams = append(sqlParams, vendorOrderID)
|
||||||
|
}
|
||||||
|
if afsOrderID != "" {
|
||||||
|
sql += " AND t1.afs_order_id = ?"
|
||||||
|
sqlParams = append(sqlParams, afsOrderID)
|
||||||
|
}
|
||||||
|
sql += " ORDER BY t1.afs_order_id DESC"
|
||||||
|
err = GetRows(db, &afsOrderList, sql, sqlParams...)
|
||||||
|
return afsOrderList, err
|
||||||
|
}
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *mtwmapi.CallbackMsg) (retVal *mtwma
|
|||||||
func (c *PurchaseHandler) callbackAfsMsg2Status(msg *mtwmapi.CallbackMsg) (orderStatus *model.OrderStatus) {
|
func (c *PurchaseHandler) callbackAfsMsg2Status(msg *mtwmapi.CallbackMsg) (orderStatus *model.OrderStatus) {
|
||||||
refundData := msg.Data.(*mtwmapi.CallbackRefundInfo)
|
refundData := msg.Data.(*mtwmapi.CallbackRefundInfo)
|
||||||
orderStatus = &model.OrderStatus{
|
orderStatus = &model.OrderStatus{
|
||||||
VendorOrderID: utils.Int64ToStr(refundData.OrderID),
|
// VendorOrderID: utils.Int64ToStr(refundData.OrderID),
|
||||||
VendorID: model.VendorIDMTWM,
|
VendorID: model.VendorIDMTWM,
|
||||||
OrderType: model.OrderTypeAfsOrder,
|
OrderType: model.OrderTypeAfsOrder,
|
||||||
RefVendorOrderID: utils.Int64ToStr(refundData.OrderID),
|
RefVendorOrderID: utils.Int64ToStr(refundData.OrderID),
|
||||||
|
|||||||
Reference in New Issue
Block a user