From c1e9d7347b8e3bed860fff2661c1bc689fa170f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 17 Mar 2026 11:47:21 +0800 Subject: [PATCH] 1 --- business/bidding/logistics_Loading.go | 290 ++++++++++-------- .../purchase/jx/localjx/tonglianpay.go | 3 - 2 files changed, 155 insertions(+), 138 deletions(-) diff --git a/business/bidding/logistics_Loading.go b/business/bidding/logistics_Loading.go index 3deda78ca..69c65832e 100644 --- a/business/bidding/logistics_Loading.go +++ b/business/bidding/logistics_Loading.go @@ -1,15 +1,12 @@ package bidding import ( - "errors" "git.rosy.net.cn/baseapi/platformapi/ali_logistics_query" "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/dao" "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals" - "git.rosy.net.cn/jx-callback/globals/api" "time" ) @@ -23,147 +20,170 @@ func LoadingLogistics(paramLogistic []*model.UpdateMaterialLogistic) []error { var db = dao.GetDB() 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 { errList = append(errList, err) continue } - goodsOrder.Status = goodsOrderStatus - goodsOrder.VendorStatus = vendorStatus - goodsOrder.StatusTime = statusTime - if orderStatus[len(orderStatus)-1].Status >= model.OrderStatusEndBegin { + if time.Since(goodsOrder.CreatedAt) >= 3*24*time.Hour { + goodsOrder.Status = model.OrderStatusFinished + goodsOrder.VendorStatus = utils.Int2Str(model.WaybillStatusDelivered) + goodsOrder.StatusTime = 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 { diff --git a/business/partner/purchase/jx/localjx/tonglianpay.go b/business/partner/purchase/jx/localjx/tonglianpay.go index 628a4f284..211781b8f 100644 --- a/business/partner/purchase/jx/localjx/tonglianpay.go +++ b/business/partner/purchase/jx/localjx/tonglianpay.go @@ -74,10 +74,7 @@ func pay4OrderByTL(ctx *jxcontext.Context, order *model.GoodsOrder, payType int, } err = api.TLpayAPI.CreateH5UnitorderOrder(param2) } else { - globals.SugarLogger.Debugf("------param := %s", utils.Format4Output(param, false)) 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 { var result2 tonglianpayapi.PayInfo json.Unmarshal([]byte(result.PayInfo), &result2)