From 245d5581ffe8391082ed3980cae381ca17384b6c Mon Sep 17 00:00:00 2001 From: gazebo Date: Mon, 29 Jul 2019 16:44:42 +0800 Subject: [PATCH 1/4] =?UTF-8?q?-=20PartRefundOrder=E4=B8=8EAdjustOrder?= =?UTF-8?q?=E9=92=88=E5=AF=B9removedList=E4=B8=BA=E6=89=80=E6=9C=89?= =?UTF-8?q?=E5=95=86=E5=93=81=E7=9A=84=E6=83=85=E5=86=B5=E7=89=B9=E6=AE=8A?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/jx_order.go | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/controllers/jx_order.go b/controllers/jx_order.go index d48029f0a..e64e166f6 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -503,9 +503,10 @@ func (c *OrderController) GetPrinterStatus() { }) } -func skuList2Map(skuList []*model.OrderSku) (skuMap map[int]*model.OrderSku) { +func skuList2Map(skuList []*model.OrderSku) (skuCount int, skuMap map[int]*model.OrderSku) { skuMap = make(map[int]*model.OrderSku) for _, sku := range skuList { + skuCount += sku.Count skuID := jxutils.GetSkuIDFromOrderSku(sku) if sku.SkuID > 0 { if skuMap[skuID] == nil { @@ -515,7 +516,7 @@ func skuList2Map(skuList []*model.OrderSku) (skuMap map[int]*model.OrderSku) { } } } - return skuMap + return skuCount, skuMap } // @Title 调整订单 @@ -536,8 +537,13 @@ func (c *OrderController) AdjustOrder() { var order *model.GoodsOrder order, err = partner.CurOrderManager.LoadOrder(params.VendorOrderID, params.VendorID) if err == nil { - if err = fillSkuList(skuList, order.Skus); err == nil { - err = defsch.FixedScheduler.AdjustOrder(params.Ctx, order, skuList, params.Reason) + removedAll, err2 := fillSkuList(skuList, order.Skus) + if err = err2; err == nil { + if removedAll { + err = fmt.Errorf("至少要保留一个商品") + } else { + err = defsch.FixedScheduler.AdjustOrder(params.Ctx, order, skuList, params.Reason) + } } } } @@ -733,8 +739,13 @@ func (c *OrderController) PartRefundOrder() { var order *model.GoodsOrder order, err = partner.CurOrderManager.LoadOrder(params.VendorOrderID, params.VendorID) if err == nil { - if err = fillSkuList(skuList, order.Skus); err == nil { - err = defsch.FixedScheduler.PartRefundOrder(params.Ctx, order, skuList, params.Reason) + removedAll, err2 := fillSkuList(skuList, order.Skus) + if err = err2; err == nil { + if removedAll { + err = defsch.FixedScheduler.RefundOrder(params.Ctx, order, params.Reason) + } else { + err = defsch.FixedScheduler.PartRefundOrder(params.Ctx, order, skuList, params.Reason) + } } } } @@ -742,10 +753,11 @@ func (c *OrderController) PartRefundOrder() { }) } -func fillSkuList(skuList, orderSkuList []*model.OrderSku) (err error) { - orderSkuMap := skuList2Map(orderSkuList) - removeSkuMap := skuList2Map(skuList) - for _, sku := range removeSkuMap { +func fillSkuList(skuList, orderSkuList []*model.OrderSku) (isSame bool, err error) { + skuCount, orderSkuMap := skuList2Map(orderSkuList) + skuCount2 := 0 + for _, sku := range skuList { + skuCount2 += sku.Count skuID := jxutils.GetSkuIDFromOrderSku(sku) if orderSkuMap[skuID] == nil { err = fmt.Errorf("找不到SKU:%d", skuID) @@ -760,7 +772,7 @@ func fillSkuList(skuList, orderSkuList []*model.OrderSku) (err error) { sku.Count = count } } - return err + return skuCount == skuCount2, err } // @Title 商家主动发起全额退款售后 From bda7a4edb24af0d8a18ad23dd7f10e58112d55ef Mon Sep 17 00:00:00 2001 From: gazebo Date: Mon, 29 Jul 2019 16:50:41 +0800 Subject: [PATCH 2/4] =?UTF-8?q?-=20=E4=BA=AC=E4=B8=9C=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E9=97=A8=E5=BA=97=E8=AE=BE=E7=BD=AE=E6=88=90=E4=BA=86=E6=8E=A5?= =?UTF-8?q?=E5=8D=95=E5=8D=B3=E6=8B=A3=E8=B4=A7=E5=AE=8C=E6=88=90=EF=BC=8C?= =?UTF-8?q?=E8=BF=99=E7=A7=8D=E6=83=85=E5=86=B5=E4=B8=8B=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E6=8B=A3=E8=B4=A7=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/scheduler/defsch/defsch.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 5a8afa469..75e0ae1d8 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -390,6 +390,9 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo } } s.updateOrderByBill(order, nil, false) + if time.Now().Sub(order.OrderCreatedAt) < 2*time.Minute { // 京东一些门店设置成了接单即拣货完成,这种情况下自动调用拣货完成 + s.autoPickupGood(savedOrderInfo) + } } else { s.ProxyCancelWaybill(order, bill, partner.CancelWaybillReasonNotAcceptIntime, partner.CancelWaybillReasonStrNotAcceptIntime) } From 1a8bcef3923ca6a5322287f9a4af060bc92227fc Mon Sep 17 00:00:00 2001 From: gazebo Date: Mon, 29 Jul 2019 17:18:06 +0800 Subject: [PATCH 3/4] =?UTF-8?q?-=20=E8=8E=B7=E5=8F=96=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E9=97=A8=E5=BA=97=E4=BF=A1=E6=81=AF=E5=90=8E=EF=BC=8C=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=9C=AC=E5=9C=B0DeliveryType?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store.go | 5 ++++- business/model/store.go | 11 ++++++----- business/partner/purchase/jd/store.go | 4 ++-- business/partner/purchase/mtwm/store.go | 9 +++++---- 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index d6ea7e552..790c94e6a 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -1349,6 +1349,8 @@ func GetStoresVendorSnapshot(ctx *jxcontext.Context, parentTask tasksch.ITask, v CloseTime1: store.CloseTime1, OpenTime2: store.OpenTime2, CloseTime2: store.CloseTime2, + + DeliveryType: store.DeliveryType, }} } } @@ -1391,7 +1393,8 @@ func updateVendorStoreStatusBySnapshot(db *dao.DaoDB, curSnapshotList []*model.V for _, v := range storeMapList { if snapshot := snapshotMap[jxutils.Combine2Int(v.StoreID, v.VendorID)]; snapshot != nil && v.Status != snapshot.Status { v.Status = snapshot.Status - if _, err = dao.UpdateEntity(db, v, model.FieldStatus); err != nil { + v.DeliveryType = snapshot.DeliveryType + if _, err = dao.UpdateEntity(db, v, model.FieldStatus, "DeliveryType"); err != nil { return err } } diff --git a/business/model/store.go b/business/model/store.go index 3f73d8d22..87e8bcc1e 100644 --- a/business/model/store.go +++ b/business/model/store.go @@ -397,11 +397,12 @@ type VendorStoreSnapshot struct { VendorStoreID string `orm:"column(vendor_store_id);size(48)" json:"vendorStoreID"` SnapshotAt time.Time `orm:"type(datetime)" json:"snapshotAt"` // 这个不同于CreatedAt,SnapshotAt是逻辑上的时间,CreatedAt是实际存储的时间 - Status int `json:"status"` // 取值同Store.Status - OpenTime1 int16 `json:"openTime1"` // 930就表示9点半,用两个的原因是为了支持中午休息,1与2的时间段不能交叉,为0表示没有 - CloseTime1 int16 `json:"closeTime1"` // 格式同上 - OpenTime2 int16 `json:"openTime2"` // 格式同上 - CloseTime2 int16 `json:"closeTime2"` // 格式同上 + Status int `json:"status"` // 取值同Store.Status + OpenTime1 int16 `json:"openTime1"` // 930就表示9点半,用两个的原因是为了支持中午休息,1与2的时间段不能交叉,为0表示没有 + CloseTime1 int16 `json:"closeTime1"` // 格式同上 + OpenTime2 int16 `json:"openTime2"` // 格式同上 + CloseTime2 int16 `json:"closeTime2"` // 格式同上 + DeliveryType int8 `orm:"default(0)" json:"deliveryType"` // 配送类型 } func (*VendorStoreSnapshot) TableUnique() [][]string { diff --git a/business/partner/purchase/jd/store.go b/business/partner/purchase/jd/store.go index ae131099a..144ed378d 100644 --- a/business/partner/purchase/jd/store.go +++ b/business/partner/purchase/jd/store.go @@ -277,9 +277,9 @@ func (p *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask // } func JdDeliveryType2Jx(deliveryType int) int8 { - if deliveryType == 2938 { + if deliveryType == jdapi.CarrierNoSelfDelivery { return scheduler.StoreDeliveryTypeByStore - } else if deliveryType == 9966 { + } else if deliveryType == jdapi.CarrierNoCrowdSourcing { return scheduler.StoreDeliveryTypeCrowdSourcing } return scheduler.StoreDeliveryTypeByPlatform diff --git a/business/partner/purchase/mtwm/store.go b/business/partner/purchase/mtwm/store.go index c271aa838..50643480a 100644 --- a/business/partner/purchase/mtwm/store.go +++ b/business/partner/purchase/mtwm/store.go @@ -68,17 +68,18 @@ func (p *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorStoreID string retVal.ID = int(utils.Str2Int64WithDefault(poiCode, 0)) retVal.DeliveryRangeType = model.DeliveryRangeTypePolygon var deliveryRangeInfo []map[string]interface{} - deliveryRangeInfo, err = api.MtwmAPI.ShippingList(poiCode) + deliveryRangeInfo, err = api.MtwmAPI.ShippingFetch(poiCode) if err != nil { - deliveryRangeInfo, err = api.MtwmAPI.ShippingFetch(poiCode) + deliveryRangeInfo, err = api.MtwmAPI.ShippingList(poiCode) } if err == nil { if len(deliveryRangeInfo) > 0 { retVal.DeliveryRange = rangeMtwm2JX(deliveryRangeInfo[0]["area"].(string)) - if utils.Interface2String(deliveryRangeInfo[0]["logistics_code"]) == mtwmapi.PeiSongTypeSelf { + logisticsCode := utils.Interface2String(deliveryRangeInfo[0]["logistics_code"]) + if logisticsCode == "" || logisticsCode == mtwmapi.PeiSongTypeSelf { retVal.DeliveryType = scheduler.StoreDeliveryTypeByStore } else { - retVal.DeliveryType = scheduler.StoreDeliveryTypeCrowdSourcing + retVal.DeliveryType = scheduler.StoreDeliveryTypeByPlatform } } } From d8852a569b72104310187cc546e5375e088b6350 Mon Sep 17 00:00:00 2001 From: gazebo Date: Mon, 29 Jul 2019 17:18:26 +0800 Subject: [PATCH 4/4] =?UTF-8?q?-=20=E7=BE=8E=E5=9B=A2=E5=A4=96=E5=8D=96?= =?UTF-8?q?=E4=B8=8D=E6=94=AF=E6=8C=81=E5=94=AE=E5=90=8E=E5=85=A8=E9=A2=9D?= =?UTF-8?q?=E9=80=80=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/ebai/order_afs.go | 4 ++-- business/partner/purchase/mtwm/order_afs.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/business/partner/purchase/ebai/order_afs.go b/business/partner/purchase/ebai/order_afs.go index 24506a262..05da43af4 100644 --- a/business/partner/purchase/ebai/order_afs.go +++ b/business/partner/purchase/ebai/order_afs.go @@ -190,10 +190,10 @@ func (c *PurchaseHandler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, ord // 发起全款退款 func (c *PurchaseHandler) RefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) { - return fmt.Errorf("饿百不支持全款退款") + return fmt.Errorf("%s不支持售后全额退款,请让买家发起退款", model.VendorChineseNames[model.VendorIDEBAI]) } // 发起部分退款 func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, refundSkuList []*model.OrderSku, reason string) (err error) { - return fmt.Errorf("饿百不支持部分退款") + return fmt.Errorf("%s不支持售后部分退款,请让买家发起退款", model.VendorChineseNames[model.VendorIDEBAI]) } diff --git a/business/partner/purchase/mtwm/order_afs.go b/business/partner/purchase/mtwm/order_afs.go index 60eecab66..1a4b25d2a 100644 --- a/business/partner/purchase/mtwm/order_afs.go +++ b/business/partner/purchase/mtwm/order_afs.go @@ -173,7 +173,7 @@ func (c *PurchaseHandler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, ord // 发起全款退款 func (c *PurchaseHandler) RefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) { - return c.CancelOrder(ctx, order, reason) + return fmt.Errorf("%s不支持售后全额退款,请让买家发起退款", model.VendorChineseNames[model.VendorIDMTWM]) } // 发起部分退款