251 lines
11 KiB
Go
251 lines
11 KiB
Go
package tao_vegetable
|
||
|
||
import (
|
||
"fmt"
|
||
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable"
|
||
domain3156 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability3156/domain"
|
||
request3156 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability3156/request"
|
||
domain591 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability591/domain"
|
||
request591 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability591/request"
|
||
"git.rosy.net.cn/baseapi/utils"
|
||
"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"
|
||
"time"
|
||
)
|
||
|
||
// orderStatusChangeNotice 拣货和通知发货状态变化接口
|
||
func orderStatusChangeNotice(order *model.GoodsOrder, orderStatus string) (*request591.AlibabaAelophyOrderWorkCallbackRequest, error) {
|
||
param := &request591.AlibabaAelophyOrderWorkCallbackRequest{}
|
||
param.WorkCallbackRequest = &domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackRequest{
|
||
StoreId: utils.String2Pointer(order.VendorStoreID),
|
||
BizOrderId: utils.Int64ToPointer(utils.Str2Int64(order.VendorOrderID)),
|
||
Status: utils.String2Pointer(orderStatus),
|
||
}
|
||
|
||
workCallbackSubOrderInfoList := make([]domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackSubOrderInfo, 0, 0)
|
||
skuList, err := dao.GetSimpleOrderSkus(dao.GetDB(), order.VendorOrderID, nil)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
if len(skuList) == model.NO {
|
||
return nil, fmt.Errorf("订单商品列表为零,请管理员检查")
|
||
}
|
||
orderDetail, err := getAPI(order.VendorOrgCode, order.JxStoreID, order.VendorStoreID).QueryOrderDetail(&request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{
|
||
StoreId: utils.String2Pointer(order.VendorStoreID),
|
||
BizOrderId: utils.Int64ToPointer(utils.Str2Int64(order.VendorOrderID)),
|
||
}})
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
for _, v := range *orderDetail.SubOrderResponseList {
|
||
if *v.OrderStatus != tao_vegetable.OrderStatusRefundClose {
|
||
workCallbackSubOrderInfo := domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackSubOrderInfo{
|
||
BizSubOrderId: v.BizSubOrderId,
|
||
SkuCode: v.SkuCode,
|
||
PickSaleQuantity: utils.String2Pointer(utils.Float64ToStr(*v.BuySaleQuantity)),
|
||
PickStockQuantity: utils.String2Pointer(utils.Float64ToStr(*v.BuyStockQuantity)),
|
||
}
|
||
workCallbackSubOrderInfoList = append(workCallbackSubOrderInfoList, workCallbackSubOrderInfo)
|
||
}
|
||
}
|
||
|
||
// 出库
|
||
param.WorkCallbackRequest.WorkCallbackSubOrderInfoList = &workCallbackSubOrderInfoList
|
||
|
||
return param, nil
|
||
}
|
||
|
||
// OrderStatusChangeDelivery 订单开始配送和送达通知接口
|
||
func OrderStatusChangeDelivery(order *model.GoodsOrder, orderStatus string) *request591.AlibabaAelophyOrderWorkCallbackRequest {
|
||
param := &request591.AlibabaAelophyOrderWorkCallbackRequest{}
|
||
param.WorkCallbackRequest = &domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackRequest{
|
||
StoreId: utils.String2Pointer(order.VendorStoreID),
|
||
BizOrderId: utils.Int64ToPointer(utils.Str2Int64(order.VendorOrderID)),
|
||
Status: utils.String2Pointer(orderStatus),
|
||
}
|
||
var bill *model.Waybill
|
||
bill, _ = partner.CurOrderManager.LoadWaybill(order.VendorWaybillID, order.WaybillVendorID)
|
||
if bill == nil {
|
||
bill, _ = partner.CurOrderManager.LoadWaybill(order.VendorOrderID, model.VendorJXFakeWL)
|
||
}
|
||
storeDetail, _ := dao.GetStoreDetail(dao.GetDB(), order.JxStoreID, model.VendorIDTaoVegetable, "")
|
||
if bill != nil {
|
||
if bill.CourierName == "" && bill.CourierMobile == "" {
|
||
param.WorkCallbackRequest.DelivererName = utils.String2Pointer("门店老板")
|
||
param.WorkCallbackRequest.DelivererPhone = utils.String2Pointer(storeDetail.Tel1)
|
||
param.WorkCallbackRequest.DelivererCompany = utils.String2Pointer(tao_vegetable.TaoDeliveryTypeSELF)
|
||
param.WorkCallbackRequest.LogisticsNo = utils.String2Pointer(bill.VendorWaybillID)
|
||
} else {
|
||
param.WorkCallbackRequest.DelivererName = utils.String2Pointer(bill.CourierName)
|
||
param.WorkCallbackRequest.DelivererPhone = utils.String2Pointer(bill.CourierMobile)
|
||
switch bill.WaybillVendorID {
|
||
case model.VendorIDDada:
|
||
param.WorkCallbackRequest.DelivererCompany = utils.String2Pointer(tao_vegetable.TaoDeliveryTypeDD)
|
||
case model.VendorIDFengNiao:
|
||
param.WorkCallbackRequest.DelivererCompany = utils.String2Pointer(tao_vegetable.TaoDeliveryTypeFN)
|
||
case model.VendorIDMTPS:
|
||
param.WorkCallbackRequest.DelivererCompany = utils.String2Pointer(tao_vegetable.TaoDeliveryTypeMT)
|
||
case model.VendorIDSFPS:
|
||
param.WorkCallbackRequest.DelivererCompany = utils.String2Pointer(tao_vegetable.TaoDeliveryTypeSF)
|
||
default:
|
||
param.WorkCallbackRequest.DelivererCompany = utils.String2Pointer(tao_vegetable.TaoDeliveryTypeOther)
|
||
}
|
||
param.WorkCallbackRequest.LogisticsNo = utils.String2Pointer(bill.VendorWaybillID)
|
||
}
|
||
}
|
||
|
||
if param.WorkCallbackRequest.DelivererName == nil || param.WorkCallbackRequest.DelivererPhone == nil {
|
||
param.WorkCallbackRequest.DelivererName = utils.String2Pointer("门店老板")
|
||
param.WorkCallbackRequest.DelivererPhone = utils.String2Pointer(storeDetail.Tel1)
|
||
param.WorkCallbackRequest.DelivererCompany = utils.String2Pointer(tao_vegetable.TaoDeliveryTypeSELF)
|
||
param.WorkCallbackRequest.LogisticsNo = utils.String2Pointer(order.VendorOrderID + "_1")
|
||
}
|
||
|
||
return param
|
||
}
|
||
|
||
// getOrderCancelList 获取订单可取消的订单列表
|
||
func getOrderCancelList(api *tao_vegetable.API, order *model.GoodsOrder) (*domain3156.AlibabaTclsAelophyRefundCsapplyrenderRefundCsApplyRenderResponseDto, error) {
|
||
param := &request3156.AlibabaTclsAelophyRefundCsapplyrenderRequest{
|
||
RefundCsApplyRenderDTO: &domain3156.AlibabaTclsAelophyRefundCsapplyrenderRefundCsApplyRenderDto{
|
||
OutOrderId: utils.String2Pointer(order.VendorOrderID2),
|
||
StoreId: utils.String2Pointer(order.VendorStoreID),
|
||
OutSubOrderIds: nil,
|
||
OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)),
|
||
},
|
||
}
|
||
|
||
skuList, err := dao.GetSimpleOrderSkus(dao.GetDB(), order.VendorOrderID, nil)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
outSubOrderIds := make([]string, 0, len(skuList))
|
||
for _, v := range skuList {
|
||
outSubOrderIds = append(outSubOrderIds, v.VendorSubOrderID)
|
||
}
|
||
param.RefundCsApplyRenderDTO.OutSubOrderIds = &outSubOrderIds
|
||
|
||
return api.PartialRefundReason(param)
|
||
}
|
||
|
||
func getTimeFromTimestamp(timeStamp int64) time.Time {
|
||
if timeStamp < 1538103149 { // 立即达订单给的是1(而不是空,0),1538103149不是特殊值,只是一个任意之前的时间,这样写可以处理
|
||
return utils.DefaultTimeValue
|
||
}
|
||
return utils.Timestamp2Time(timeStamp)
|
||
}
|
||
|
||
//
|
||
//func (p *PurchaseHandler) GetOrderConsigneeNumber(ctx *jxcontext.Context, storeID int, vendorStoreID string) (numberList []*partner.OrderPhoneNumberInfo, err error) {
|
||
// offset := 0
|
||
// for {
|
||
// store, _ := dao.GetStoreDetail(dao.GetDB(), storeID, model.VendorIDMTWM, "")
|
||
// result, err2 := getAPI(store.VendorOrgCode, storeID, "").OrderBatchPullPhoneNumber(vendorStoreID, offset, 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 {
|
||
// store, _ := dao.GetStoreDetail(dao.GetDB(), storeID, model.VendorIDMTWM, "")
|
||
// result, err2 := getAPI(store.VendorOrgCode, 0, "").OrderGetRiderInfoPhoneNumber(vendorStoreID, offset, 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) {
|
||
// 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:
|
||
// userNumberList, err2 := p.GetOrderConsigneeNumber(ctx, 0, "")
|
||
// if err = err2; err == nil {
|
||
// for _, v := range userNumberList {
|
||
// userNumberMap[v.VendorOrderID] = v
|
||
// orderMap[v.VendorOrderID] = 1
|
||
// }
|
||
// }
|
||
// case 1:
|
||
// courierNumberList, err2 := p.GetOrderCourierNumber(ctx, 0, "")
|
||
// if err = err2; 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
|
||
//}
|