Files
jx-callback/business/partner/purchase/tao_vegetable/order_utils.go
邹宗楠 7fa1fade3b 1
2023-10-16 09:35:06 +08:00

251 lines
11 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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而不是空01538103149不是特殊值只是一个任意之前的时间这样写可以处理
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
//}