- 处理美团外卖隐私号降级的情况
This commit is contained in:
@@ -5,6 +5,11 @@ import (
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
)
|
||||
|
||||
type OrderPhoneNumberInfo struct {
|
||||
VendorOrderID string
|
||||
PhoneNumber string
|
||||
}
|
||||
|
||||
type IPurchasePlatformOrderHandler interface {
|
||||
Map2Order(orderData map[string]interface{}) (order *model.GoodsOrder)
|
||||
GetOrder(vendorOrderID string) (order *model.GoodsOrder, err error)
|
||||
|
||||
@@ -6,24 +6,28 @@ import (
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
)
|
||||
|
||||
func OnOrderCallbackMsg(msg *mtwmapi.CallbackMsg) (response *mtwmapi.CallbackResponse) {
|
||||
func OnCallbackMsg(msg *mtwmapi.CallbackMsg) (response *mtwmapi.CallbackResponse) {
|
||||
if curPurchaseHandler != nil {
|
||||
if orderID := GetOrderIDFromMsg(msg); orderID != "" {
|
||||
jxutils.CallMsgHandler(func() {
|
||||
switch msg.Cmd {
|
||||
case mtwmapi.MsgTypeWaybillStatus:
|
||||
response = curPurchaseHandler.onWaybillMsg(msg)
|
||||
default:
|
||||
response = curPurchaseHandler.onOrderMsg(msg)
|
||||
}
|
||||
}, jxutils.ComposeUniversalOrderID(orderID, model.VendorIDMTWM))
|
||||
}
|
||||
/*if msg.Cmd == mtwmapi.MsgTypeOrderRefund || msg.Cmd == mtwmapi.MsgTypeOrderPartialRefund {
|
||||
utils.CallFuncAsync(func() {
|
||||
OnFinancialMsg(msg)
|
||||
})
|
||||
} else */if msg.Cmd == mtwmapi.MsgTypeStoreStatusChanged {
|
||||
if msg.Cmd == mtwmapi.MsgTypeStoreStatusChanged {
|
||||
response = curPurchaseHandler.onStoreStatusChanged(msg)
|
||||
} else if msg.Cmd == mtwmapi.MsgTypePrivateNumberDowngrade {
|
||||
response = curPurchaseHandler.onNumberDowngrade(msg)
|
||||
} else {
|
||||
if orderID := GetOrderIDFromMsg(msg); orderID != "" {
|
||||
jxutils.CallMsgHandler(func() {
|
||||
switch msg.Cmd {
|
||||
case mtwmapi.MsgTypeWaybillStatus:
|
||||
response = curPurchaseHandler.onWaybillMsg(msg)
|
||||
default:
|
||||
response = curPurchaseHandler.onOrderMsg(msg)
|
||||
}
|
||||
}, jxutils.ComposeUniversalOrderID(orderID, model.VendorIDMTWM))
|
||||
}
|
||||
/*if msg.Cmd == mtwmapi.MsgTypeOrderRefund || msg.Cmd == mtwmapi.MsgTypeOrderPartialRefund {
|
||||
utils.CallFuncAsync(func() {
|
||||
OnFinancialMsg(msg)
|
||||
})
|
||||
} */
|
||||
}
|
||||
}
|
||||
return response
|
||||
|
||||
@@ -15,6 +15,7 @@ import (
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||
"git.rosy.net.cn/jx-callback/business/partner"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
@@ -382,7 +383,7 @@ func (c *PurchaseHandler) postFakeMsg(vendorOrderID, cmd, vendorStatus string) {
|
||||
msg.FormData.Set("timestamp", timeStr)
|
||||
msg.FormData.Set("utime", timeStr)
|
||||
utils.CallFuncAsync(func() {
|
||||
OnOrderCallbackMsg(msg)
|
||||
c.onOrderMsg(msg)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -582,3 +583,111 @@ func (c *PurchaseHandler) ListOrders(ctx *jxcontext.Context, parentTask tasksch.
|
||||
// }
|
||||
// return err
|
||||
// }
|
||||
|
||||
func (p *PurchaseHandler) GetOrderConsigneeNumber(ctx *jxcontext.Context, storeID int, vendorStoreID string) (numberList []*partner.OrderPhoneNumberInfo, err error) {
|
||||
offset := 0
|
||||
for {
|
||||
result, err2 := api.MtwmAPI.OrderBatchPullPhoneNumber(vendorStoreID, 0, mtwmapi.MaxBatchPullPhoneNumberLimit)
|
||||
if err = err2; err == nil {
|
||||
for _, v := range result {
|
||||
v2 := &partner.OrderPhoneNumberInfo{
|
||||
VendorOrderID: utils.Int64ToStr(v.OrderID),
|
||||
PhoneNumber: v.RealPhoneNumber,
|
||||
}
|
||||
if v2.PhoneNumber == "" {
|
||||
v2.PhoneNumber = v.RealOrderPhoneNumber
|
||||
}
|
||||
numberList = append(numberList, v2)
|
||||
}
|
||||
if len(result) <= mtwmapi.MaxBatchPullPhoneNumberLimit {
|
||||
break
|
||||
}
|
||||
offset += mtwmapi.MaxBatchPullPhoneNumberLimit
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
return numberList, err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) GetOrderCourierNumber(ctx *jxcontext.Context, storeID int, vendorStoreID string) (numberList []*partner.OrderPhoneNumberInfo, err error) {
|
||||
offset := 0
|
||||
for {
|
||||
result, err2 := api.MtwmAPI.OrderGetRiderInfoPhoneNumber(vendorStoreID, 0, mtwmapi.MaxBatchPullPhoneNumberLimit)
|
||||
if err = err2; err == nil {
|
||||
for _, v := range result {
|
||||
numberList = append(numberList, &partner.OrderPhoneNumberInfo{
|
||||
VendorOrderID: utils.Int64ToStr(v.OrderID),
|
||||
PhoneNumber: v.RiderRealPhoneNumber,
|
||||
})
|
||||
}
|
||||
if len(result) <= mtwmapi.MaxBatchPullPhoneNumberLimit {
|
||||
break
|
||||
}
|
||||
offset += mtwmapi.MaxBatchPullPhoneNumberLimit
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
return numberList, err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) onNumberDowngrade(msg *mtwmapi.CallbackMsg) (response *mtwmapi.CallbackResponse) {
|
||||
var userNumberList, courierNumberList []*partner.OrderPhoneNumberInfo
|
||||
userNumberMap := make(map[string]*partner.OrderPhoneNumberInfo)
|
||||
courierNumberMap := make(map[string]*partner.OrderPhoneNumberInfo)
|
||||
orderMap := make(map[string]int)
|
||||
ctx := jxcontext.AdminCtx
|
||||
task := tasksch.NewParallelTask("美团外卖平台处理隐私号降级通知", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(true), ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
step := batchItemList[0].(int)
|
||||
switch step {
|
||||
case 0:
|
||||
if userNumberList, err = p.GetOrderConsigneeNumber(ctx, 0, ""); err == nil {
|
||||
for _, v := range userNumberList {
|
||||
userNumberMap[v.VendorOrderID] = v
|
||||
orderMap[v.VendorOrderID] = 1
|
||||
}
|
||||
}
|
||||
case 1:
|
||||
if courierNumberList, err = p.GetOrderCourierNumber(ctx, 0, ""); err == nil {
|
||||
for _, v := range courierNumberList {
|
||||
courierNumberMap[v.VendorOrderID] = v
|
||||
orderMap[v.VendorOrderID] = 1
|
||||
}
|
||||
}
|
||||
case 2:
|
||||
orderList := jxutils.StringMap2List(orderMap)
|
||||
if len(orderList) > 0 {
|
||||
updateTask := tasksch.NewParallelTask("美团外卖平台处理隐私号降级通知/处理订单", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(true), ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
vendorOrderID := batchItemList[0].(string)
|
||||
db := dao.GetDB()
|
||||
if userNumberMap[vendorOrderID] != nil {
|
||||
_, err = dao.UpdateEntityByKV(db, &model.GoodsOrder{}, map[string]interface{}{
|
||||
"ConsigneeMobile": userNumberMap[vendorOrderID].PhoneNumber,
|
||||
"ConsigneeMobile2": userNumberMap[vendorOrderID].PhoneNumber,
|
||||
}, map[string]interface{}{
|
||||
model.FieldVendorOrderID: vendorOrderID,
|
||||
model.FieldVendorID: model.VendorIDMTWM,
|
||||
})
|
||||
}
|
||||
if courierNumberMap[vendorOrderID] != nil {
|
||||
_, err = dao.UpdateEntityByKV(db, &model.Waybill{}, map[string]interface{}{
|
||||
"CourierMobile": courierNumberMap[vendorOrderID].PhoneNumber,
|
||||
}, map[string]interface{}{
|
||||
"VendorWaybillID": vendorOrderID,
|
||||
"WaybillVendorID": model.VendorIDMTWM,
|
||||
})
|
||||
}
|
||||
return retVal, err
|
||||
}, orderList)
|
||||
tasksch.HandleTask(updateTask, task, true).Run()
|
||||
_, err = updateTask.GetResult(0)
|
||||
}
|
||||
}
|
||||
return retVal, err
|
||||
}, []int{0, 1, 2})
|
||||
tasksch.HandleTask(task, nil, true).Run()
|
||||
return response
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ func (c *PurchaseHandler) onWaybillMsg(msg *mtwmapi.CallbackMsg) (response *mtwm
|
||||
msg.FormData.Set(mtwmapi.KeyOrderID, waybill.VendorOrderID)
|
||||
msg.FormData.Set("status", mtwmapi.OrderStatusDelivering)
|
||||
utils.CallFuncAsync(func() {
|
||||
OnOrderCallbackMsg(msg)
|
||||
c.onOrderMsg(msg)
|
||||
})
|
||||
}
|
||||
return mtwmapi.Err2CallbackResponse(err, "")
|
||||
|
||||
@@ -15,7 +15,7 @@ func (c *MtwmController) onCallbackMsg(msgType string) {
|
||||
c.Data["json"] = mtwmapi.Err2CallbackResponse(nil, "")
|
||||
msg, callbackResponse := api.MtwmAPI.GetCallbackMsg(c.Ctx.Request)
|
||||
if callbackResponse == nil {
|
||||
callbackResponse = mtwm.OnOrderCallbackMsg(msg)
|
||||
callbackResponse = mtwm.OnCallbackMsg(msg)
|
||||
if callbackResponse == nil {
|
||||
callbackResponse = mtwmapi.Err2CallbackResponse(nil, "")
|
||||
}
|
||||
|
||||
@@ -1,16 +1,12 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
||||
"git.rosy.net.cn/jx-callback/business/jxstore/cms"
|
||||
"git.rosy.net.cn/jx-callback/business/jxstore/misc"
|
||||
"git.rosy.net.cn/jx-callback/business/jxstore/tempop"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
"git.rosy.net.cn/jx-callback/business/partner/purchase/mtwm"
|
||||
"github.com/astaxie/beego"
|
||||
)
|
||||
|
||||
@@ -247,29 +243,32 @@ func (c *TempOpController) RefreshMtpsWaybillFee() {
|
||||
// @router /TestIt [get]
|
||||
func (c *TempOpController) TestIt() {
|
||||
c.callTestIt(func(params *tTempopTestItParams) (retVal interface{}, errCode string, err error) {
|
||||
// retVal, err = cms.OpenRemoteStoreByJxStatus(params.Ctx, nil, nil, false, true, true)
|
||||
// shopList, err := api.EbaiAPI.ShopList(ebaiapi.SysStatusAll)
|
||||
shopList, err := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDEBAI}, nil, model.StoreStatusAll, model.StoreIsSyncYes, "")
|
||||
task := tasksch.NewParallelTask("TestIt", nil, params.Ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
// shopID := batchItemList[0].(*ebaiapi.ShopInfo).ShopID
|
||||
shopID := utils.Int2Str(batchItemList[0].(*model.StoreMap).StoreID)
|
||||
skuInfo, err := api.EbaiAPI.SkuList(shopID, &ebaiapi.SkuListParams{})
|
||||
if err == nil && skuInfo.Total > 500 {
|
||||
errSkuCount := 0
|
||||
for _, sku := range skuInfo.List {
|
||||
if sku.CustomCatIDs == "" {
|
||||
errSkuCount++
|
||||
}
|
||||
}
|
||||
if errSkuCount > len(skuInfo.List)/3 {
|
||||
retVal = []string{shopID}
|
||||
}
|
||||
}
|
||||
return retVal, err
|
||||
}, shopList)
|
||||
task.Run()
|
||||
retVal, err = task.GetResult(0)
|
||||
// // retVal, err = cms.OpenRemoteStoreByJxStatus(params.Ctx, nil, nil, false, true, true)
|
||||
// // shopList, err := api.EbaiAPI.ShopList(ebaiapi.SysStatusAll)
|
||||
// shopList, err := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDEBAI}, nil, model.StoreStatusAll, model.StoreIsSyncYes, "")
|
||||
// task := tasksch.NewParallelTask("TestIt", nil, params.Ctx,
|
||||
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
// // shopID := batchItemList[0].(*ebaiapi.ShopInfo).ShopID
|
||||
// shopID := utils.Int2Str(batchItemList[0].(*model.StoreMap).StoreID)
|
||||
// skuInfo, err := api.EbaiAPI.SkuList(shopID, &ebaiapi.SkuListParams{})
|
||||
// if err == nil && skuInfo.Total > 500 {
|
||||
// errSkuCount := 0
|
||||
// for _, sku := range skuInfo.List {
|
||||
// if sku.CustomCatIDs == "" {
|
||||
// errSkuCount++
|
||||
// }
|
||||
// }
|
||||
// if errSkuCount > len(skuInfo.List)/3 {
|
||||
// retVal = []string{shopID}
|
||||
// }
|
||||
// }
|
||||
// return retVal, err
|
||||
// }, shopList)
|
||||
// task.Run()
|
||||
// retVal, err = task.GetResult(0)
|
||||
mtwm.OnCallbackMsg(&mtwmapi.CallbackMsg{
|
||||
Cmd: mtwmapi.MsgTypePrivateNumberDowngrade,
|
||||
})
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user