From 6229fc5acca620670aaaf373fc99cd274c471a27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Fri, 18 Aug 2023 09:48:00 +0800 Subject: [PATCH 1/5] 1 --- business/partner/delivery/mtps/waybill.go | 6 +++--- business/partner/purchase/mtwm/financial.go | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/business/partner/delivery/mtps/waybill.go b/business/partner/delivery/mtps/waybill.go index bff8a6251..ea3aa27ea 100644 --- a/business/partner/delivery/mtps/waybill.go +++ b/business/partner/delivery/mtps/waybill.go @@ -94,11 +94,11 @@ func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *m c.pushToGy(msg) return mtpsapi.SuccessResponse } - // 多次取消,只处理第一次 - if msg.Status == mtpsapi.OrderStatusCanceled { + // 多次取消,送达,只处理第一次 + if msg.Status == mtpsapi.OrderStatusCanceled || msg.Status == mtpsapi.OrderStatusDeliverred { orderStatus, _ := orderman.FixedOrderManager.GetWayBillStatusList(msg.OrderID, msg.MtPeisongID, model.VendorIDMTPS) for _, v := range orderStatus { - if v.VendorStatus == "99" { + if v.VendorStatus == utils.Int64ToStr(mtpsapi.OrderStatusCanceled) || v.VendorStatus == utils.Int64ToStr(mtpsapi.OrderStatusDeliverred) { return mtpsapi.SuccessResponse } } diff --git a/business/partner/purchase/mtwm/financial.go b/business/partner/purchase/mtwm/financial.go index 918911506..a694fe8d7 100644 --- a/business/partner/purchase/mtwm/financial.go +++ b/business/partner/purchase/mtwm/financial.go @@ -154,6 +154,10 @@ func (p *PurchaseHandler) OrderDetail2Financial(result map[string]interface{}) ( } else { err = nil } + + // 区分门店是否为报价门店 + // 报价门店商品如果京西系统存在则不管,不存在则获取平台上填写的进货价 + if result["package_bag_money"] != nil { orderFinancial.BoxMoney = utils.MustInterface2Int64(result["package_bag_money"]) } From 018308ce61e1d68503f056512d0127deee44410a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Fri, 18 Aug 2023 10:05:44 +0800 Subject: [PATCH 2/5] 1' --- .../partner/purchase/tao_vegetable/order_utils.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/business/partner/purchase/tao_vegetable/order_utils.go b/business/partner/purchase/tao_vegetable/order_utils.go index 11b2bf574..94589d0ac 100644 --- a/business/partner/purchase/tao_vegetable/order_utils.go +++ b/business/partner/purchase/tao_vegetable/order_utils.go @@ -39,13 +39,15 @@ func orderStatusChangeNotice(order *model.GoodsOrder, orderStatus string) (*requ return nil, err } for _, v := range *orderDetail.SubOrderResponseList { - workCallbackSubOrderInfo := domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackSubOrderInfo{ - BizSubOrderId: v.BizSubOrderId, - SkuCode: v.SkuCode, - PickSaleQuantity: utils.String2Pointer(utils.Float64ToStr(*v.BuySaleQuantity)), - PickStockQuantity: utils.String2Pointer(utils.Float64ToStr(*v.BuyStockQuantity)), + 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) } - workCallbackSubOrderInfoList = append(workCallbackSubOrderInfoList, workCallbackSubOrderInfo) } // 出库 From 5cb97fb787118a057618a8fb7e7e053432985a8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Sat, 19 Aug 2023 10:50:15 +0800 Subject: [PATCH 3/5] 1 --- business/jxcallback/orderman/order.go | 5 +++++ business/jxcallback/orderman/orderman_ext.go | 19 ++++++++++++++----- .../jxcallback/scheduler/defsch/defsch.go | 10 +++++++++- business/model/dao/store.go | 2 +- 4 files changed, 29 insertions(+), 7 deletions(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index e25da2483..d73f93519 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -764,6 +764,11 @@ func (c *OrderManager) updateOrderSkuOtherInfo(order *model.GoodsOrder, db *dao. if intVendorSkuID != 0 && v.VendorSkuID != "-70000" { // todo hard code skuBindInfo := skumapper[v.VendorSkuID] if skuBindInfo == nil { + // 商品直接在美团创建,本地不存在商品信息,且为美团商品.如果门店是报价门店则获取商品的进货价 + //if v.ShopPrice == model.NO && v.VendorID == model.VendorIDMTWM && order.OrderPayPercentage >= 50 { + // + //} + if v.ShopPrice == 0 { v.ShopPrice = v.SalePrice * 70 / 100 } diff --git a/business/jxcallback/orderman/orderman_ext.go b/business/jxcallback/orderman/orderman_ext.go index 5c6c73fed..f8d6d83bd 100644 --- a/business/jxcallback/orderman/orderman_ext.go +++ b/business/jxcallback/orderman/orderman_ext.go @@ -717,12 +717,21 @@ func (c *OrderManager) GetLogisticsOrderStatusList(orderId, LogisticsId string, func (c *OrderManager) GetWayBillStatusList(orderId, LogisticsId string, vendorId int) ([]*model.OrderStatus, error) { sql := `SELECT * FROM order_status t1 - WHERE t1.vendor_order_id = ? AND t1.ref_vendor_order_id = ? AND t1.vendor_id = ?` - sqlParams := []interface{}{ - LogisticsId, - orderId, - vendorId, + WHERE 1=1 ` + sqlParams := make([]interface{}, 0, 0) + if LogisticsId != "" { + sql += ` AND t1.vendor_order_id = ? ` + sqlParams = append(sqlParams, LogisticsId) } + if orderId != "" { + sql += ` AND t1.ref_vendor_order_id = ? ` + sqlParams = append(sqlParams, orderId) + } + if vendorId != 0 { + sql += ` AND t1.vendor_id = ? ` + sqlParams = append(sqlParams, vendorId) + } + sql += ` ORDER BY status_time ASC ` var result []*model.OrderStatus if err := dao.GetRows(dao.GetDB(), &result, sql, sqlParams...); err != nil { diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 29a745423..194cd4501 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -900,6 +900,14 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf } } + // 获取配送记录, + statusList, _ := orderman.FixedOrderManager.GetWayBillStatusList(order.VendorOrderID, order.VendorOrderID, 0) + for _, v := range statusList { + if v.Status == model.OrderStatusMsg && utils.Str2Int64WithDefault(v.VendorStatus, 0) != model.NO { + excludeVendorIDs = append(excludeVendorIDs, utils.Str2Int(v.VendorStatus)) + } + } + //2020-11-16 预计收益-配送费 > 0 再发 if order.EarningType == model.EarningTypeQuote { for _, vendorID := range waybillVendorIDs { @@ -985,7 +993,7 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil { savedOrderInfo.retryCount++ } else { - partner.CurOrderManager.OnOrderMsg(order, fmt.Sprintf("发起自动创建三方运单,目标创建运单平台[%s],创建失败:%v", jxutils.GetVendorName(vendorID), err), "") + partner.CurOrderManager.OnOrderMsg(order, utils.Int2Str(vendorID), fmt.Sprintf("发起自动创建三方运单,目标创建运单平台[%s],创建失败:%v", jxutils.GetVendorName(vendorID), err)) //content := "您的门店 [" + storeDetail.Name + "],OrderID:[" + order.VendorOrderID + "],自动呼叫骑手失败[" + fmt.Sprintf(err.Error()) + "],请手动呼叫骑手" //if user, err := dao.GetUserByID(dao.GetDB(), "mobile", storeDetail.MarketManPhone); err == nil { // ddmsg.SendUserMessage(dingdingapi.MsgTyeText, user.UserID, "平台门店状态变化", content) diff --git a/business/model/dao/store.go b/business/model/dao/store.go index bfe07e46d..a1785a400 100644 --- a/business/model/dao/store.go +++ b/business/model/dao/store.go @@ -21,7 +21,7 @@ type StoreDetail struct { VendorStoreID string `orm:"column(vendor_store_id);size(48)" json:"vendorStoreID"` VendorStoreName string `json:"vendorStoreName"` VendorStatus int `json:"vendor_status"` // 取值同Store.Status - VendorPayPercentage int `json:"vendorPayPercentage"` //平台结算比例 + VendorPayPercentage int `json:"vendorPayPercentage"` //平台结算比例,大于50是报价门店 DeliveryFeeDeductionSill int `json:"deliveryFeeDeductionSill"` DeliveryFeeDeductionFee int `json:"deliveryFeeDeductionFee"` SyncStatus int8 `orm:"default(2)" json:"syncStatus"` From 275ecb1cf6e594502ecddd45dad91ca7d14ee866 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Sat, 19 Aug 2023 11:20:05 +0800 Subject: [PATCH 4/5] 1 --- business/jxcallback/scheduler/defsch/defsch.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 194cd4501..7c4f469b2 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -909,7 +909,7 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf } //2020-11-16 预计收益-配送费 > 0 再发 - if order.EarningType == model.EarningTypeQuote { + if order.EarningType == model.EarningTypeQuote && order.VendorID != model.VendorIDTaoVegetable { // 淘宝是第二天更新结算信息的 for _, vendorID := range waybillVendorIDs { handler := partner.GetDeliveryPlatformFromVendorID(vendorID) if deliveryFeeInfo, err := handler.Handler.GetWaybillFee(order); err == nil { @@ -990,6 +990,7 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf break } } + if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil { savedOrderInfo.retryCount++ } else { From 5c6f5b94580434dd895e81dbf8b56797b7c75fdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Sun, 20 Aug 2023 10:30:14 +0800 Subject: [PATCH 5/5] 1 --- .../jxcallback/scheduler/defsch/defsch.go | 45 ++++++++++--------- business/model/store.go | 4 +- 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 7c4f469b2..3e861e5a9 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -882,6 +882,30 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf if err = s.canOrderCreateWaybillNormally(order, savedOrderInfo); err == nil { if (order.DeliveryFlag & model.OrderDeliveryFlagMaskScheduleDisabled) == 0 { if savedOrderInfo.retryCount <= maxWaybillRetryCount { + //TODO 2020-07-21 发单时间要在门店的营业时间内 + var storeDetail *dao.StoreDetail + storeDetail, err = dao.GetStoreDetail(dao.GetDB(), jxutils.GetSaleStoreIDFromOrder(order), order.VendorID, "") + if storeDetail != nil { + if storeDetail.OpenTime1 != 0 && storeDetail.CloseTime1 != 0 { + time1 := jxutils.JxOperationTime2TimeByDate(storeDetail.OpenTime1, time.Now()) + time2 := jxutils.JxOperationTime2TimeByDate(storeDetail.CloseTime1, time.Now()) + if time.Now().Sub(time1) < 0 || time.Now().Sub(time2.Add(time.Minute*180)) > 0 { + if storeDetail.OpenTime2 != 0 && storeDetail.CloseTime2 != 0 { + time3 := jxutils.JxOperationTime2TimeByDate(storeDetail.OpenTime2, time.Now()) + time4 := jxutils.JxOperationTime2TimeByDate(storeDetail.CloseTime2, time.Now()) + if time.Now().Sub(time3) < 0 || time.Now().Sub(time4.Add(time.Minute*180)) > 0 { + err = fmt.Errorf("不在门店营业时间范围内!") + } + } else { + err = fmt.Errorf("不在门店营业时间范围内!") + } + } + } + } + if storeDetail.Status != model.StoreStatusOpened { + err = fmt.Errorf("门店非营业状态,不允许自动发单") + } + var waybillVendorIDs = []int{model.VendorIDMTPS, model.VendorIDDada, model.VendorIDFengNiao, model.VendorIDUUPT, model.VendorIDSFPS} savedOrderInfo.isNeedCreate3rdWaybill = true excludeVendorIDs := savedOrderInfo.GetWaybillVendorIDs() @@ -926,27 +950,6 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf } } - //TODO 2020-07-21 发单时间要在门店的营业时间内 - var storeDetail *dao.StoreDetail - storeDetail, err = dao.GetStoreDetail(dao.GetDB(), jxutils.GetSaleStoreIDFromOrder(order), order.VendorID, "") - if storeDetail != nil { - if storeDetail.OpenTime1 != 0 && storeDetail.CloseTime1 != 0 { - time1 := jxutils.JxOperationTime2TimeByDate(storeDetail.OpenTime1, time.Now()) - time2 := jxutils.JxOperationTime2TimeByDate(storeDetail.CloseTime1, time.Now()) - if time.Now().Sub(time1) < 0 || time.Now().Sub(time2.Add(time.Minute*180)) > 0 { - if storeDetail.OpenTime2 != 0 && storeDetail.CloseTime2 != 0 { - time3 := jxutils.JxOperationTime2TimeByDate(storeDetail.OpenTime2, time.Now()) - time4 := jxutils.JxOperationTime2TimeByDate(storeDetail.CloseTime2, time.Now()) - if time.Now().Sub(time3) < 0 || time.Now().Sub(time4.Add(time.Minute*180)) > 0 { - err = fmt.Errorf("不在门店营业时间范围内!") - } - } else { - err = fmt.Errorf("不在门店营业时间范围内!") - } - } - } - } - //1表示为门店发单,需要验证门店账户余额情况 _, err2 := s.CheckStoreBalance(jxcontext.AdminCtx, order, waybillVendorIDs) // 检查是否有有效运单 diff --git a/business/model/store.go b/business/model/store.go index 6198daaa0..5e97c8f1c 100644 --- a/business/model/store.go +++ b/business/model/store.go @@ -11,8 +11,8 @@ const ( StoreStatusAll = -9 StoreStatusDisabled = -2 // 禁用 StoreStatusClosed = -1 // 休息 - StoreStatusHaveRest = 0 - StoreStatusOpened = 1 // 营业 + StoreStatusHaveRest = 0 // 零食休息 + StoreStatusOpened = 1 // 营业 StoreIsSyncAll = -1 StoreIsSyncNo = 0