1
This commit is contained in:
@@ -1,15 +1,12 @@
|
|||||||
package bidding
|
package bidding
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/ali_logistics_query"
|
"git.rosy.net.cn/baseapi/platformapi/ali_logistics_query"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
|
|
||||||
"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/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"
|
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -23,147 +20,170 @@ func LoadingLogistics(paramLogistic []*model.UpdateMaterialLogistic) []error {
|
|||||||
|
|
||||||
var db = dao.GetDB()
|
var db = dao.GetDB()
|
||||||
var errList = make([]error, 0, 0)
|
var errList = make([]error, 0, 0)
|
||||||
for _, logistics := range param {
|
|
||||||
// 获取当前订单物流状态
|
|
||||||
statusList, err := orderman.FixedOrderManager.GetLogisticsOrderStatusList(logistics.OrderId, logistics.LogisticId, 9)
|
|
||||||
if err != nil {
|
|
||||||
errList = append(errList, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取当前订单三方配送物流
|
|
||||||
logisticsList, err := api.LogisticsApi.GetLogisticsInfo(logistics.LogisticId)
|
|
||||||
if err != nil {
|
|
||||||
errList = append(errList, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
// 新订单,本地暂无物流信息,全部更新远端物流信息到本地
|
|
||||||
if len(logisticsList.Info[0].LogisticsTraceDetailList) == model.NO {
|
|
||||||
errList = append(errList, errors.New("运单号[%s]:已经过期/新订单暂无物流推送信息"))
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
var orderStatus = make([]*model.OrderStatus, 0, 0)
|
|
||||||
goodsOrderStatus := 0
|
|
||||||
for _, v := range logisticsList.Info[0].LogisticsTraceDetailList {
|
|
||||||
orderStatusToLocal := &model.OrderStatus{
|
|
||||||
VendorOrderID: logisticsList.Info[0].MailNo,
|
|
||||||
VendorID: model.VendorIDTotalWl,
|
|
||||||
OrderType: model.OrderTypeWaybill,
|
|
||||||
RefVendorOrderID: logistics.OrderId,
|
|
||||||
RefVendorID: model.VendorIDJX,
|
|
||||||
VendorStatus: v.SubLogisticsStatus,
|
|
||||||
StatusTime: time.Time{},
|
|
||||||
DuplicatedCount: 0,
|
|
||||||
Remark: v.Desc,
|
|
||||||
ModelTimeInfo: model.ModelTimeInfo{CreatedAt: time.Now(), UpdatedAt: time.Now()},
|
|
||||||
}
|
|
||||||
|
|
||||||
switch v.SubLogisticsStatus {
|
|
||||||
case ali_logistics_query.LogisticsStatusRECEVIE:
|
|
||||||
orderStatusToLocal.Status = model.WaybillStatusNew // 新订单
|
|
||||||
goodsOrderStatus = model.OrderStatusNew // 新订单
|
|
||||||
case ali_logistics_query.LogisticsStatusWAIT_ACCEPT:
|
|
||||||
orderStatusToLocal.Status = model.WaybillStatusAccepted // 分配骑手
|
|
||||||
goodsOrderStatus = model.OrderStatusAccepted // 拣货完成等待骑手
|
|
||||||
case ali_logistics_query.LogisticsStatusACCEPT:
|
|
||||||
orderStatusToLocal.Status = model.WaybillStatusCourierArrived // 兼容骑手取货状态
|
|
||||||
goodsOrderStatus = model.OrderStatusFinishedPickup
|
|
||||||
case ali_logistics_query.LogisticsStatusTRANSPORT, ali_logistics_query.LogisticsStatusSEND_ON, ali_logistics_query.LogisticsStatusARRIVE_CITY, ali_logistics_query.LogisticsStatusDELIVERING:
|
|
||||||
orderStatusToLocal.Status = model.WaybillStatusDelivering // 配送中
|
|
||||||
goodsOrderStatus = model.OrderStatusDelivering
|
|
||||||
case ali_logistics_query.LogisticsStatusAGENT_SIGN, ali_logistics_query.LogisticsStatusSIGN, ali_logistics_query.LogisticsStatusSTA_SIGN:
|
|
||||||
orderStatusToLocal.Status = model.WaybillStatusDelivered // 配送结束
|
|
||||||
goodsOrderStatus = model.OrderStatusFinished
|
|
||||||
default: // 剩余状态全部为异常状态,除非新加状态
|
|
||||||
orderStatusToLocal.Status = model.WaybillStatusUnknown // 异常配送
|
|
||||||
goodsOrderStatus = model.OrderStatusDeliverFailed // 投递失败
|
|
||||||
}
|
|
||||||
orderStatusToLocal.StatusTime = utils.Timestamp2Time(v.Time)
|
|
||||||
orderStatus = append(orderStatus, orderStatusToLocal)
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(statusList) == 0 || statusList == nil { // 本地订单状态为空不存在
|
|
||||||
for _, v := range orderStatus {
|
|
||||||
if err := dao.CreateEntity(db, v); err != nil {
|
|
||||||
errList = append(errList, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for _, v := range orderStatus {
|
|
||||||
if statusList[len(statusList)-1].StatusTime.Unix() > v.StatusTime.Unix() && checkOrderStatus(statusList[len(statusList)-1].VendorStatus) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if err := dao.CreateEntity(db, v); err != nil {
|
|
||||||
errList = append(errList, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取当前订单运单状态
|
|
||||||
wayBill, err := dao.GetWaybills(db, logistics.OrderId, nil)
|
|
||||||
if err != nil {
|
|
||||||
errList = append(errList, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
status := orderStatus[len(orderStatus)-1].Status
|
|
||||||
vendorStatus := orderStatus[len(orderStatus)-1].VendorStatus
|
|
||||||
statusTime := orderStatus[len(orderStatus)-1].StatusTime
|
|
||||||
if len(wayBill) == 0 || wayBill == nil {
|
|
||||||
wayBillObj := &model.Waybill{
|
|
||||||
VendorWaybillID: logistics.LogisticId,
|
|
||||||
WaybillVendorID: model.VendorIDTotalWl,
|
|
||||||
VendorOrderID: logistics.OrderId,
|
|
||||||
OrderVendorID: model.VendorIDJX,
|
|
||||||
CourierName: logisticsList.Info[0].Courier,
|
|
||||||
CourierMobile: logisticsList.Info[0].CourierPhone,
|
|
||||||
Status: status,
|
|
||||||
VendorStatus: vendorStatus,
|
|
||||||
ActualFee: logistics.LogisticFee,
|
|
||||||
DesiredFee: logistics.LogisticFee,
|
|
||||||
DeliveryFlag: model.OrderDeliveryFlagMaskScheduleDisabled,
|
|
||||||
WaybillCreatedAt: time.Now(),
|
|
||||||
StatusTime: statusTime,
|
|
||||||
ModelTimeInfo: model.ModelTimeInfo{CreatedAt: time.Now(), UpdatedAt: time.Now()},
|
|
||||||
WaybillFinishedAt: time.Now(),
|
|
||||||
}
|
|
||||||
if err := dao.CreateEntity(db, wayBillObj); err != nil {
|
|
||||||
errList = append(errList, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
wayBill[0].UpdatedAt = time.Now()
|
|
||||||
wayBill[0].Status = status
|
|
||||||
wayBill[0].VendorStatus = vendorStatus
|
|
||||||
wayBill[0].StatusTime = statusTime
|
|
||||||
wayBill[0].WaybillFinishedAt = time.Now()
|
|
||||||
if _, err := dao.UpdateEntity(db, wayBill[0], "Status", "UpdatedAt", "VendorStatus", "StatusTime"); err != nil {
|
|
||||||
errList = append(errList, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
for _, v := range param {
|
||||||
// 更新订单状态
|
// 更新订单状态
|
||||||
goodsOrder, err := partner.CurOrderManager.LoadOrder(logistics.OrderId, model.VendorIDJX)
|
goodsOrder, err := partner.CurOrderManager.LoadOrder(v.OrderId, model.VendorIDJX)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errList = append(errList, err)
|
errList = append(errList, err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
goodsOrder.Status = goodsOrderStatus
|
if time.Since(goodsOrder.CreatedAt) >= 3*24*time.Hour {
|
||||||
goodsOrder.VendorStatus = vendorStatus
|
goodsOrder.Status = model.OrderStatusFinished
|
||||||
goodsOrder.StatusTime = statusTime
|
goodsOrder.VendorStatus = utils.Int2Str(model.WaybillStatusDelivered)
|
||||||
if orderStatus[len(orderStatus)-1].Status >= model.OrderStatusEndBegin {
|
goodsOrder.StatusTime = time.Now()
|
||||||
goodsOrder.OrderFinishedAt = time.Now()
|
goodsOrder.OrderFinishedAt = time.Now()
|
||||||
|
if _, err := dao.UpdateEntity(db, goodsOrder, "Status", "VendorStatus", "StatusTime", "OrderFinishedAt"); err != nil {
|
||||||
|
errList = append(errList, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if _, err := dao.UpdateEntity(db, goodsOrder, "Status", "VendorStatus", "StatusTime", "OrderFinishedAt"); err != nil {
|
|
||||||
errList = append(errList, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return errList
|
}
|
||||||
|
return nil
|
||||||
|
|
||||||
|
// GetLogisticsInfo 免费物流查询资源不可用,暂时不管
|
||||||
|
//for _, logistics := range param {
|
||||||
|
// // 获取当前订单物流状态
|
||||||
|
// statusList, err := orderman.FixedOrderManager.GetLogisticsOrderStatusList(logistics.OrderId, logistics.LogisticId, 9)
|
||||||
|
// if err != nil {
|
||||||
|
// errList = append(errList, err)
|
||||||
|
// continue
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// // 获取当前订单三方配送物流
|
||||||
|
// logisticsList, err := api.LogisticsApi.GetLogisticsInfo(logistics.LogisticId)
|
||||||
|
// if err != nil {
|
||||||
|
// errList = append(errList, err)
|
||||||
|
// continue
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// // 新订单,本地暂无物流信息,全部更新远端物流信息到本地
|
||||||
|
// if len(logisticsList.Info[0].LogisticsTraceDetailList) == model.NO {
|
||||||
|
// errList = append(errList, errors.New("运单号[%s]:已经过期/新订单暂无物流推送信息"))
|
||||||
|
// continue
|
||||||
|
// }
|
||||||
|
// var orderStatus = make([]*model.OrderStatus, 0, 0)
|
||||||
|
// goodsOrderStatus := 0
|
||||||
|
// for _, v := range logisticsList.Info[0].LogisticsTraceDetailList {
|
||||||
|
// orderStatusToLocal := &model.OrderStatus{
|
||||||
|
// VendorOrderID: logisticsList.Info[0].MailNo,
|
||||||
|
// VendorID: model.VendorIDTotalWl,
|
||||||
|
// OrderType: model.OrderTypeWaybill,
|
||||||
|
// RefVendorOrderID: logistics.OrderId,
|
||||||
|
// RefVendorID: model.VendorIDJX,
|
||||||
|
// VendorStatus: v.SubLogisticsStatus,
|
||||||
|
// StatusTime: time.Time{},
|
||||||
|
// DuplicatedCount: 0,
|
||||||
|
// Remark: v.Desc,
|
||||||
|
// ModelTimeInfo: model.ModelTimeInfo{CreatedAt: time.Now(), UpdatedAt: time.Now()},
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// switch v.SubLogisticsStatus {
|
||||||
|
// case ali_logistics_query.LogisticsStatusRECEVIE:
|
||||||
|
// orderStatusToLocal.Status = model.WaybillStatusNew // 新订单
|
||||||
|
// goodsOrderStatus = model.OrderStatusNew // 新订单
|
||||||
|
// case ali_logistics_query.LogisticsStatusWAIT_ACCEPT:
|
||||||
|
// orderStatusToLocal.Status = model.WaybillStatusAccepted // 分配骑手
|
||||||
|
// goodsOrderStatus = model.OrderStatusAccepted // 拣货完成等待骑手
|
||||||
|
// case ali_logistics_query.LogisticsStatusACCEPT:
|
||||||
|
// orderStatusToLocal.Status = model.WaybillStatusCourierArrived // 兼容骑手取货状态
|
||||||
|
// goodsOrderStatus = model.OrderStatusFinishedPickup
|
||||||
|
// case ali_logistics_query.LogisticsStatusTRANSPORT, ali_logistics_query.LogisticsStatusSEND_ON, ali_logistics_query.LogisticsStatusARRIVE_CITY, ali_logistics_query.LogisticsStatusDELIVERING:
|
||||||
|
// orderStatusToLocal.Status = model.WaybillStatusDelivering // 配送中
|
||||||
|
// goodsOrderStatus = model.OrderStatusDelivering
|
||||||
|
// case ali_logistics_query.LogisticsStatusAGENT_SIGN, ali_logistics_query.LogisticsStatusSIGN, ali_logistics_query.LogisticsStatusSTA_SIGN:
|
||||||
|
// orderStatusToLocal.Status = model.WaybillStatusDelivered // 配送结束
|
||||||
|
// goodsOrderStatus = model.OrderStatusFinished
|
||||||
|
// default: // 剩余状态全部为异常状态,除非新加状态
|
||||||
|
// orderStatusToLocal.Status = model.WaybillStatusUnknown // 异常配送
|
||||||
|
// goodsOrderStatus = model.OrderStatusDeliverFailed // 投递失败
|
||||||
|
// }
|
||||||
|
// orderStatusToLocal.StatusTime = utils.Timestamp2Time(v.Time)
|
||||||
|
// orderStatus = append(orderStatus, orderStatusToLocal)
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if len(statusList) == 0 || statusList == nil { // 本地订单状态为空不存在
|
||||||
|
// for _, v := range orderStatus {
|
||||||
|
// if err := dao.CreateEntity(db, v); err != nil {
|
||||||
|
// errList = append(errList, err)
|
||||||
|
// continue
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// for _, v := range orderStatus {
|
||||||
|
// if statusList[len(statusList)-1].StatusTime.Unix() > v.StatusTime.Unix() && checkOrderStatus(statusList[len(statusList)-1].VendorStatus) {
|
||||||
|
// continue
|
||||||
|
// }
|
||||||
|
// if err := dao.CreateEntity(db, v); err != nil {
|
||||||
|
// errList = append(errList, err)
|
||||||
|
// continue
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// // 获取当前订单运单状态
|
||||||
|
// wayBill, err := dao.GetWaybills(db, logistics.OrderId, nil)
|
||||||
|
// if err != nil {
|
||||||
|
// errList = append(errList, err)
|
||||||
|
// continue
|
||||||
|
// }
|
||||||
|
// status := orderStatus[len(orderStatus)-1].Status
|
||||||
|
// vendorStatus := orderStatus[len(orderStatus)-1].VendorStatus
|
||||||
|
// statusTime := orderStatus[len(orderStatus)-1].StatusTime
|
||||||
|
// if len(wayBill) == 0 || wayBill == nil {
|
||||||
|
// wayBillObj := &model.Waybill{
|
||||||
|
// VendorWaybillID: logistics.LogisticId,
|
||||||
|
// WaybillVendorID: model.VendorIDTotalWl,
|
||||||
|
// VendorOrderID: logistics.OrderId,
|
||||||
|
// OrderVendorID: model.VendorIDJX,
|
||||||
|
// CourierName: logisticsList.Info[0].Courier,
|
||||||
|
// CourierMobile: logisticsList.Info[0].CourierPhone,
|
||||||
|
// Status: status,
|
||||||
|
// VendorStatus: vendorStatus,
|
||||||
|
// ActualFee: logistics.LogisticFee,
|
||||||
|
// DesiredFee: logistics.LogisticFee,
|
||||||
|
// DeliveryFlag: model.OrderDeliveryFlagMaskScheduleDisabled,
|
||||||
|
// WaybillCreatedAt: time.Now(),
|
||||||
|
// StatusTime: statusTime,
|
||||||
|
// ModelTimeInfo: model.ModelTimeInfo{CreatedAt: time.Now(), UpdatedAt: time.Now()},
|
||||||
|
// WaybillFinishedAt: time.Now(),
|
||||||
|
// }
|
||||||
|
// if err := dao.CreateEntity(db, wayBillObj); err != nil {
|
||||||
|
// errList = append(errList, err)
|
||||||
|
// continue
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// wayBill[0].UpdatedAt = time.Now()
|
||||||
|
// wayBill[0].Status = status
|
||||||
|
// wayBill[0].VendorStatus = vendorStatus
|
||||||
|
// wayBill[0].StatusTime = statusTime
|
||||||
|
// wayBill[0].WaybillFinishedAt = time.Now()
|
||||||
|
// if _, err := dao.UpdateEntity(db, wayBill[0], "Status", "UpdatedAt", "VendorStatus", "StatusTime"); err != nil {
|
||||||
|
// errList = append(errList, err)
|
||||||
|
// continue
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// // 更新订单状态
|
||||||
|
// goodsOrder, err := partner.CurOrderManager.LoadOrder(logistics.OrderId, model.VendorIDJX)
|
||||||
|
// if err != nil {
|
||||||
|
// errList = append(errList, err)
|
||||||
|
// continue
|
||||||
|
// }
|
||||||
|
// goodsOrder.Status = goodsOrderStatus
|
||||||
|
// goodsOrder.VendorStatus = vendorStatus
|
||||||
|
// goodsOrder.StatusTime = statusTime
|
||||||
|
// if orderStatus[len(orderStatus)-1].Status >= model.OrderStatusEndBegin {
|
||||||
|
// goodsOrder.OrderFinishedAt = time.Now()
|
||||||
|
// }
|
||||||
|
// if _, err := dao.UpdateEntity(db, goodsOrder, "Status", "VendorStatus", "StatusTime", "OrderFinishedAt"); err != nil {
|
||||||
|
// errList = append(errList, err)
|
||||||
|
// continue
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//return errList
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkOrderStatus(orderStatus string) bool {
|
func checkOrderStatus(orderStatus string) bool {
|
||||||
|
|||||||
@@ -74,10 +74,7 @@ func pay4OrderByTL(ctx *jxcontext.Context, order *model.GoodsOrder, payType int,
|
|||||||
}
|
}
|
||||||
err = api.TLpayAPI.CreateH5UnitorderOrder(param2)
|
err = api.TLpayAPI.CreateH5UnitorderOrder(param2)
|
||||||
} else {
|
} else {
|
||||||
globals.SugarLogger.Debugf("------param := %s", utils.Format4Output(param, false))
|
|
||||||
result, err := api.TLpayAPI.CreateUnitorderOrder(param)
|
result, err := api.TLpayAPI.CreateUnitorderOrder(param)
|
||||||
globals.SugarLogger.Debugf("------result := %s", utils.Format4Output(result, false))
|
|
||||||
globals.SugarLogger.Debugf("------err := %s", utils.Format4Output(result, false))
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
var result2 tonglianpayapi.PayInfo
|
var result2 tonglianpayapi.PayInfo
|
||||||
json.Unmarshal([]byte(result.PayInfo), &result2)
|
json.Unmarshal([]byte(result.PayInfo), &result2)
|
||||||
|
|||||||
Reference in New Issue
Block a user