- 处理美团外卖隐私号降级的情况
This commit is contained in:
@@ -5,6 +5,11 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type OrderPhoneNumberInfo struct {
|
||||||
|
VendorOrderID string
|
||||||
|
PhoneNumber string
|
||||||
|
}
|
||||||
|
|
||||||
type IPurchasePlatformOrderHandler interface {
|
type IPurchasePlatformOrderHandler interface {
|
||||||
Map2Order(orderData map[string]interface{}) (order *model.GoodsOrder)
|
Map2Order(orderData map[string]interface{}) (order *model.GoodsOrder)
|
||||||
GetOrder(vendorOrderID string) (order *model.GoodsOrder, err error)
|
GetOrder(vendorOrderID string) (order *model.GoodsOrder, err error)
|
||||||
|
|||||||
@@ -6,8 +6,13 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"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 curPurchaseHandler != nil {
|
||||||
|
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 != "" {
|
if orderID := GetOrderIDFromMsg(msg); orderID != "" {
|
||||||
jxutils.CallMsgHandler(func() {
|
jxutils.CallMsgHandler(func() {
|
||||||
switch msg.Cmd {
|
switch msg.Cmd {
|
||||||
@@ -22,8 +27,7 @@ func OnOrderCallbackMsg(msg *mtwmapi.CallbackMsg) (response *mtwmapi.CallbackRes
|
|||||||
utils.CallFuncAsync(func() {
|
utils.CallFuncAsync(func() {
|
||||||
OnFinancialMsg(msg)
|
OnFinancialMsg(msg)
|
||||||
})
|
})
|
||||||
} else */if msg.Cmd == mtwmapi.MsgTypeStoreStatusChanged {
|
} */
|
||||||
response = curPurchaseHandler.onStoreStatusChanged(msg)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return response
|
return response
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
"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/jxutils/tasksch"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"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/business/partner"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"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("timestamp", timeStr)
|
||||||
msg.FormData.Set("utime", timeStr)
|
msg.FormData.Set("utime", timeStr)
|
||||||
utils.CallFuncAsync(func() {
|
utils.CallFuncAsync(func() {
|
||||||
OnOrderCallbackMsg(msg)
|
c.onOrderMsg(msg)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -582,3 +583,111 @@ func (c *PurchaseHandler) ListOrders(ctx *jxcontext.Context, parentTask tasksch.
|
|||||||
// }
|
// }
|
||||||
// return err
|
// 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(mtwmapi.KeyOrderID, waybill.VendorOrderID)
|
||||||
msg.FormData.Set("status", mtwmapi.OrderStatusDelivering)
|
msg.FormData.Set("status", mtwmapi.OrderStatusDelivering)
|
||||||
utils.CallFuncAsync(func() {
|
utils.CallFuncAsync(func() {
|
||||||
OnOrderCallbackMsg(msg)
|
c.onOrderMsg(msg)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return mtwmapi.Err2CallbackResponse(err, "")
|
return mtwmapi.Err2CallbackResponse(err, "")
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ func (c *MtwmController) onCallbackMsg(msgType string) {
|
|||||||
c.Data["json"] = mtwmapi.Err2CallbackResponse(nil, "")
|
c.Data["json"] = mtwmapi.Err2CallbackResponse(nil, "")
|
||||||
msg, callbackResponse := api.MtwmAPI.GetCallbackMsg(c.Ctx.Request)
|
msg, callbackResponse := api.MtwmAPI.GetCallbackMsg(c.Ctx.Request)
|
||||||
if callbackResponse == nil {
|
if callbackResponse == nil {
|
||||||
callbackResponse = mtwm.OnOrderCallbackMsg(msg)
|
callbackResponse = mtwm.OnCallbackMsg(msg)
|
||||||
if callbackResponse == nil {
|
if callbackResponse == nil {
|
||||||
callbackResponse = mtwmapi.Err2CallbackResponse(nil, "")
|
callbackResponse = mtwmapi.Err2CallbackResponse(nil, "")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,12 @@
|
|||||||
package controllers
|
package controllers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
|
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxstore/cms"
|
"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/misc"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxstore/tempop"
|
"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"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
"git.rosy.net.cn/jx-callback/business/partner/purchase/mtwm"
|
||||||
"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"
|
|
||||||
"github.com/astaxie/beego"
|
"github.com/astaxie/beego"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -247,29 +243,32 @@ func (c *TempOpController) RefreshMtpsWaybillFee() {
|
|||||||
// @router /TestIt [get]
|
// @router /TestIt [get]
|
||||||
func (c *TempOpController) TestIt() {
|
func (c *TempOpController) TestIt() {
|
||||||
c.callTestIt(func(params *tTempopTestItParams) (retVal interface{}, errCode string, err error) {
|
c.callTestIt(func(params *tTempopTestItParams) (retVal interface{}, errCode string, err error) {
|
||||||
// retVal, err = cms.OpenRemoteStoreByJxStatus(params.Ctx, nil, nil, false, true, true)
|
// // retVal, err = cms.OpenRemoteStoreByJxStatus(params.Ctx, nil, nil, false, true, true)
|
||||||
// shopList, err := api.EbaiAPI.ShopList(ebaiapi.SysStatusAll)
|
// // shopList, err := api.EbaiAPI.ShopList(ebaiapi.SysStatusAll)
|
||||||
shopList, err := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDEBAI}, nil, model.StoreStatusAll, model.StoreIsSyncYes, "")
|
// shopList, err := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDEBAI}, nil, model.StoreStatusAll, model.StoreIsSyncYes, "")
|
||||||
task := tasksch.NewParallelTask("TestIt", nil, params.Ctx,
|
// task := tasksch.NewParallelTask("TestIt", nil, params.Ctx,
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
// shopID := batchItemList[0].(*ebaiapi.ShopInfo).ShopID
|
// // shopID := batchItemList[0].(*ebaiapi.ShopInfo).ShopID
|
||||||
shopID := utils.Int2Str(batchItemList[0].(*model.StoreMap).StoreID)
|
// shopID := utils.Int2Str(batchItemList[0].(*model.StoreMap).StoreID)
|
||||||
skuInfo, err := api.EbaiAPI.SkuList(shopID, &ebaiapi.SkuListParams{})
|
// skuInfo, err := api.EbaiAPI.SkuList(shopID, &ebaiapi.SkuListParams{})
|
||||||
if err == nil && skuInfo.Total > 500 {
|
// if err == nil && skuInfo.Total > 500 {
|
||||||
errSkuCount := 0
|
// errSkuCount := 0
|
||||||
for _, sku := range skuInfo.List {
|
// for _, sku := range skuInfo.List {
|
||||||
if sku.CustomCatIDs == "" {
|
// if sku.CustomCatIDs == "" {
|
||||||
errSkuCount++
|
// errSkuCount++
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
if errSkuCount > len(skuInfo.List)/3 {
|
// if errSkuCount > len(skuInfo.List)/3 {
|
||||||
retVal = []string{shopID}
|
// retVal = []string{shopID}
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
return retVal, err
|
// return retVal, err
|
||||||
}, shopList)
|
// }, shopList)
|
||||||
task.Run()
|
// task.Run()
|
||||||
retVal, err = task.GetResult(0)
|
// retVal, err = task.GetResult(0)
|
||||||
|
mtwm.OnCallbackMsg(&mtwmapi.CallbackMsg{
|
||||||
|
Cmd: mtwmapi.MsgTypePrivateNumberDowngrade,
|
||||||
|
})
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user