From 9b3d652ed792ee44d384ee2053710d80a6a8fbd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Mon, 10 Jul 2023 09:26:57 +0800 Subject: [PATCH 1/7] 1 --- business/jxstore/cms/sync_store_sku.go | 19 +++++++++- business/model/dao/store_sku.go | 35 ++++++++++++++++++ .../purchase/tao_vegetable/store_sku2.go | 37 ++++++++++--------- controllers/jx_order.go | 3 ++ 4 files changed, 74 insertions(+), 20 deletions(-) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index e821bf171..da0733aa8 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "github.com/astaxie/beego/server/web" + beego "github.com/astaxie/beego/server/web" "regexp" "sort" "strings" @@ -69,13 +70,27 @@ func CreateStoreCategoryByStoreSku(ctx *jxcontext.Context, vendorID, storeID int } func SyncStoreCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID, storeID int, vendorStoreID string, nameIDs, skuIDs []int, isAsync, isContinueWhenError bool) (hint string, err error) { - // 668594 正式服印象汇 668469 测试服芬姐 + db := dao.GetDB() + // 668594 正式服印象汇 668469 测试服芬姐(淘宝所有门店公用分类) if storeID != 668594 && storeID != 668469 && vendorID == model.VendorIDTaoVegetable { + var totalCategory []*model.StoreSkuCategoryMap + switch beego.BConfig.RunMode { + case "dev": + totalCategory, _ = dao.GetDetailStoreSkuCategoryMap(db, 668469) + case "jxgy": + default: + totalCategory, _ = dao.GetDetailStoreSkuCategoryMap(db, 668594) + } + if totalCategory != nil { + for _, v := range totalCategory { + dao.UpdateStoreSkuCategory(db, v.CategoryID, storeID, v.TaoID) + } + } + return "", nil } handler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler) num := 0 - db := dao.GetDB() rootTask := tasksch.NewSeqTask(fmt.Sprintf("%s SyncStoreCategory step1", model.VendorChineseNames[vendorID]), ctx, func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { level := step + 1 diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 15a1b91d8..53a85d790 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -3,6 +3,7 @@ package dao import ( "errors" "fmt" + beego "github.com/astaxie/beego/server/web" "strings" "time" @@ -2011,6 +2012,40 @@ func GetStoreSkuCategoryMap(db *DaoDB, categoryID, storeID int) (storeSkuCategor return storeSkuCategoryMap, err } +// GetDetailStoreSkuCategoryMap 淘宝是所有门店公用一套分类 用默认门店赋值其余门店 +func GetDetailStoreSkuCategoryMap(db *DaoDB, storeId int) (storeSkuCategoryMap []*model.StoreSkuCategoryMap, err error) { + sql := ` + SELECT * + FROM store_sku_category_map + WHERE deleted_at = ? + ` + sqlParams := []interface{}{utils.DefaultTimeValue} + + if storeId != 0 { + sql += " AND store_id = ? " + sqlParams = append(sqlParams, storeId) + } else { + switch beego.BConfig.RunMode { + case "jxgy": + storeId = 0 + case "dev": + storeId = 668469 // 测试服芬姐(淘宝所有门店公用分类) + default: + storeId = 668594 // 正式服印象汇 + } + } + + GetRows(db, &storeSkuCategoryMap, sql, sqlParams) + return storeSkuCategoryMap, err +} + +// UpdateStoreSkuCategory 修改淘宝门店的分类code以及同步装太 +func UpdateStoreSkuCategory(db *DaoDB, categoryId int, storeID int, vendorCode string) { + sql := ` UPDATE store_sku_category_map SET tao_id = ? ,tao_sync_status = ? WHERE store_id = ? AND category_id = ?` + param := []interface{}{vendorCode, 0, storeID, categoryId} + ExecuteSQL(db, sql, param...) +} + func GetStoreSkuListWithVendor(db *DaoDB, storeID, vendorID int, vendorOrgCode string) (skuList []*StoreSkuSyncInfo, err error) { sql := ` SELECT DISTINCT b.*, c.vendor_thing_id vendor_sku_id diff --git a/business/partner/purchase/tao_vegetable/store_sku2.go b/business/partner/purchase/tao_vegetable/store_sku2.go index 0ccdc2c85..eb7880ea4 100644 --- a/business/partner/purchase/tao_vegetable/store_sku2.go +++ b/business/partner/purchase/tao_vegetable/store_sku2.go @@ -312,24 +312,25 @@ func createTaoVegetable(ctx *jxcontext.Context, api *tao_vegetable.API, storeSku DeliverySpec: utils.String2Pointer(utils.Int2Str(model.YES)), MemberPrice: price, Storage: utils.String2Pointer(tao_vegetable.CreateStorage), - PickFloatRate: utils.String2Pointer(utils.Int2Str(model.NO)), // ? 0 - ForbidReceiveDays: utils.Int64ToPointer(tao_vegetable.CreateShelfLife), // ? 7 - ForbidSalesDays: utils.Int64ToPointer(model.NO), // ? 0 - OverloadRate: utils.String2Pointer(utils.Int2Str(model.NO)), // ? 0 - WarnDays: utils.Int64ToPointer(model.NO), // ? 0 - FixedFlag: utils.Int64ToPointer(model.NO), // ? 0 - PurchaseSpec: utils.String2Pointer(utils.Int2Str(model.YES)), // ? 1 - //PurchaseUnit: utils.String2Pointer(storeSku.Unit), // ? 同上 - PurchaseUnit: utils.String2Pointer("份"), // ? 同上 - LabelStyleType: utils.String2Pointer(tao_vegetable.CreateLabelStyleType), // 库存单位 - ItemTypeNew: utils.Int64ToPointer(tao_vegetable.CreateItemTypeNewVegetable), - SkuPrice: price, // 优先使用skuPrice 靠后SalePrice - Period: utils.Int64ToPointer(tao_vegetable.CreateShelfLife), // 优先使用period 靠后shelf_life - FragileFlag: utils.Int64ToPointer(model.YES), - DeliveryStorage: utils.String2Pointer(tao_vegetable.CreateItemDeliveryStorage), - TemporaryFlag: utils.Int64ToPointer(model.NO), - IsOnline: utils.Int64ToPointer(tao_vegetable.CreateIsOnline), - MerchantCatCode: utils.String2Pointer(storeSku.VendorCatID), // 优先使用 靠后 category_code + PickFloatRate: utils.String2Pointer(utils.Int2Str(model.NO)), // ? 0 + ForbidReceiveDays: utils.Int64ToPointer(tao_vegetable.CreateShelfLife), // ? 7 + ForbidSalesDays: utils.Int64ToPointer(model.NO), // ? 0 + OverloadRate: utils.String2Pointer(utils.Int2Str(model.NO)), // ? 0 + WarnDays: utils.Int64ToPointer(model.NO), // ? 0 + FixedFlag: utils.Int64ToPointer(model.NO), // ? 0 + PurchaseSpec: utils.String2Pointer(utils.Int2Str(model.YES)), // ? 1 + PurchaseUnit: utils.String2Pointer("份"), // ? 同上 + LabelStyleType: utils.String2Pointer(tao_vegetable.CreateLabelStyleType), // 库存单位 + ItemTypeNew: utils.Int64ToPointer(tao_vegetable.CreateItemTypeNewVegetable), + SkuPrice: price, // 优先使用skuPrice 靠后SalePrice + Period: utils.Int64ToPointer(tao_vegetable.CreateShelfLife), // 优先使用period 靠后shelf_life + FragileFlag: utils.Int64ToPointer(model.YES), + DeliveryStorage: utils.String2Pointer(tao_vegetable.CreateItemDeliveryStorage), + TemporaryFlag: utils.Int64ToPointer(model.NO), + IsOnline: utils.Int64ToPointer(tao_vegetable.CreateIsOnline), + MerchantCatCode: utils.String2Pointer(storeSku.VendorCatID), // 优先使用 靠后 category_code + RichText: utils.String2Pointer(storeSku.Name), + AllowAppSale: utils.Int64ToPointer(tao_vegetable.IsAllowAppSale), } sku.SkuPicUrls = uploadImg(api, []string{storeSku.ImgOrigin, storeSku.Img, storeSku.Img2, storeSku.Img3, storeSku.Img4, storeSku.Img5, storeSku.DescImg}) if sku.SkuPicUrls == nil { diff --git a/controllers/jx_order.go b/controllers/jx_order.go index 9641411c2..40c481ae6 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -636,6 +636,9 @@ func (c *OrderController) AdjustOrder() { func (c *OrderController) CancelOrder() { c.callCancelOrder(func(params *tOrderCancelOrderParams) (retVal interface{}, errCode string, err error) { order, err := partner.CurOrderManager.LoadOrder(params.VendorOrderID, params.VendorID) + if order.Status >= model.OrderStatusEndBegin { + return nil, "", fmt.Errorf("订单处于完成状态,不支持取消操作!请走售后流程") + } if err == nil { err = defsch.FixedScheduler.CancelOrder(params.Ctx, order, params.Reason) } From 412ef88bbd03f493d26dc1bb53bf4b7a512548c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Mon, 10 Jul 2023 10:11:19 +0800 Subject: [PATCH 2/7] 1 --- business/jxstore/cms/sync_store_sku.go | 1 + .../partner/purchase/tao_vegetable/order.go | 43 ++++++++++--------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index da0733aa8..b4f2b805a 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -78,6 +78,7 @@ func SyncStoreCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendo case "dev": totalCategory, _ = dao.GetDetailStoreSkuCategoryMap(db, 668469) case "jxgy": + default: totalCategory, _ = dao.GetDetailStoreSkuCategoryMap(db, 668594) } diff --git a/business/partner/purchase/tao_vegetable/order.go b/business/partner/purchase/tao_vegetable/order.go index 64a7670bf..e6025ae56 100644 --- a/business/partner/purchase/tao_vegetable/order.go +++ b/business/partner/purchase/tao_vegetable/order.go @@ -494,8 +494,8 @@ func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI // PickupGoods 拣货 func (c *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) (err error) { - globals.SugarLogger.Debugf("PickupGoods 自动拣货:%s, %s", utils.Format4Output(isSelfDelivery, false), utils.Format4Output(order, false)) - if isSelfDelivery { + store, _ := dao.GetStoreDetail(dao.GetDB(), order.JxStoreID, model.VendorIDTaoVegetable, "") + if isSelfDelivery && store.AutoPickup == model.YES { param, err := orderStatusChangeNotice(order, tao_vegetable.OrderStatusPickedUp) if err != nil { return err @@ -504,9 +504,8 @@ func (c *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bo globals.SugarLogger.Debugf("PickupGoods 拣货失败可能是BizSubOrderId 没填写 : %s", err.Error()) return err } + c.postFakeMsg(order.VendorOrderID, tao_vegetable.OrderStatusPickedUp, tao_vegetable.OrderStatusPickedUp) } - - c.postFakeMsg(order.VendorOrderID, tao_vegetable.OrderStatusPickedUp, tao_vegetable.OrderStatusPickedUp) return err } @@ -693,26 +692,30 @@ func (c *PurchaseHandler) AdjustOrder(ctx *jxcontext.Context, order *model.Goods } // 获取订单的子订单id - requestParam := &request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{ - StoreId: utils.String2Pointer(order.VendorStoreID), - BizOrderId: utils.Int64ToPointer(utils.Str2Int64(order.VendorOrderID)), - }} - orderDetail, err := api.QueryOrderDetail(requestParam) - if err != nil { - return err - } - - skuMap := make(map[string]string, 0) - for _, v := range *orderDetail.SubOrderResponseList { - skuMap[*v.SkuCode] = *v.OutSubOrderId - } + //requestParam := &request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{ + // StoreId: utils.String2Pointer(order.VendorStoreID), + // BizOrderId: utils.Int64ToPointer(utils.Str2Int64(order.VendorOrderID)), + //}} + //orderDetail, err := api.QueryOrderDetail(requestParam) + //if err != nil { + // return err + //} + // + //skuMap := make(map[string]string, 0) + //for _, v := range *orderDetail.SubOrderResponseList { + // skuMap[*v.SkuCode] = *v.OutSubOrderId + //} // 获取需要退货商品的子订单id refundSkuOrderID := make([]string, 0, len(removedSkuList)) + //for _, v := range removedSkuList { + // if orderId, ok := skuMap[v.VendorSkuID]; ok { + // refundSkuOrderID = append(refundSkuOrderID, orderId) + // } + //} + for _, v := range removedSkuList { - if orderId, ok := skuMap[v.VendorSkuID]; ok { - refundSkuOrderID = append(refundSkuOrderID, orderId) - } + refundSkuOrderID = append(refundSkuOrderID, v.VendorSubOrderID) } // 商家申请退货 From 904e360de2b46e520846827841c89cb972b8edce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Mon, 10 Jul 2023 11:28:35 +0800 Subject: [PATCH 3/7] 1 --- .../partner/purchase/tao_vegetable/order.go | 81 +++++++++---------- 1 file changed, 40 insertions(+), 41 deletions(-) diff --git a/business/partner/purchase/tao_vegetable/order.go b/business/partner/purchase/tao_vegetable/order.go index e6025ae56..764f597bb 100644 --- a/business/partner/purchase/tao_vegetable/order.go +++ b/business/partner/purchase/tao_vegetable/order.go @@ -681,56 +681,55 @@ func (c *PurchaseHandler) CancelOrder(ctx *jxcontext.Context, order *model.Goods return err } -// AdjustOrder 商户发起部分退款(取消订单部分商品) +// AdjustOrder 商户发起部分退款(取消订单部分商品),淘宝没有部分退款,所以调整订单的时候就是在拣货,把缺货的部分排除 func (c *PurchaseHandler) AdjustOrder(ctx *jxcontext.Context, order *model.GoodsOrder, removedSkuList []*model.OrderSku, reason string) (err error) { api := getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "") - // 美团外卖必须要确认订单后才能调整单 - if order.Status < model.OrderStatusFinishedPickup { - if err = c.PickupGoods(order, false, ctx.GetUserName()); err != nil { - return err - } - } - - // 获取订单的子订单id - //requestParam := &request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{ - // StoreId: utils.String2Pointer(order.VendorStoreID), - // BizOrderId: utils.Int64ToPointer(utils.Str2Int64(order.VendorOrderID)), - //}} - //orderDetail, err := api.QueryOrderDetail(requestParam) - //if err != nil { - // return err - //} - // - //skuMap := make(map[string]string, 0) - //for _, v := range *orderDetail.SubOrderResponseList { - // skuMap[*v.SkuCode] = *v.OutSubOrderId - //} // 获取需要退货商品的子订单id - refundSkuOrderID := make([]string, 0, len(removedSkuList)) - //for _, v := range removedSkuList { - // if orderId, ok := skuMap[v.VendorSkuID]; ok { - // refundSkuOrderID = append(refundSkuOrderID, orderId) - // } - //} - + refundSkuOrderID := make(map[int]int, 0) for _, v := range removedSkuList { - refundSkuOrderID = append(refundSkuOrderID, v.VendorSubOrderID) + refundSkuOrderID[v.SkuID] = 1 } - // 商家申请退货 - param := &request3156.AlibabaTclsAelophyRefundCsapplyRequest{ - RefundCsApplyDTO: &domain3156.AlibabaTclsAelophyRefundCsapplyRefundCsApplyDto{ - ReasonId: utils.Int64ToPointer(1111), - OutOrderId: utils.String2Pointer(order.VendorOrderID), - StoreId: utils.String2Pointer(order.VendorStoreID), - RequestId: utils.String2Pointer(fmt.Sprintf("%s%d", order.VendorStoreID, time.Now().UnixNano())), - OutSubOrderIds: &refundSkuOrderID, - Memo: utils.String2Pointer(reason), - }, + param := &request591.AlibabaAelophyOrderWorkCallbackRequest{} + param.WorkCallbackRequest = &domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackRequest{ + StoreId: utils.String2Pointer(order.VendorStoreID), + BizOrderId: utils.Int64ToPointer(utils.Str2Int64(order.VendorOrderID)), + Status: utils.String2Pointer(tao_vegetable.OrderStatusPickedUp), } - return api.PartialRefund(param) + workCallbackSubOrderInfoList := make([]domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackSubOrderInfo, 0, 0) + + orderDetail, err := getAPI(order.VendorOrgCode, 0, "").QueryOrderDetail(&request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{ + StoreId: utils.String2Pointer(order.VendorStoreID), + BizOrderId: utils.Int64ToPointer(utils.Str2Int64(order.VendorOrderID)), + }}) + if err != nil { + return err + } + for _, v := range *orderDetail.SubOrderResponseList { + // 缺货 + if refundSkuOrderID[utils.Str2Int(*v.SkuCode)] == model.YES { + continue + } + 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 + + if err = api.DeliveryFinish(param); err != nil { + globals.SugarLogger.Debugf("PickupGoods 拣货失败可能是BizSubOrderId 没填写 : %s", err.Error()) + return err + } + + return nil } // ListOrders 获取门店订单列表(补全遗漏订单) From b53ff7f049608c126dae560239d5c7a66d0b67f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Mon, 10 Jul 2023 11:48:50 +0800 Subject: [PATCH 4/7] 1 --- business/jxcallback/scheduler/defsch/defsch.go | 3 ++- business/partner/purchase/tao_vegetable/order.go | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 6911d861e..23ab462f1 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -1514,7 +1514,8 @@ func (s *DefScheduler) updateBillsInfo(savedOrderInfo *WatchOrderInfo, bill *mod func (s *DefScheduler) autoPickupGood(savedOrderInfo *WatchOrderInfo) (err error) { order := savedOrderInfo.order - flag := model.IsOrderDeliveryByStore(order) || model.IsOrderDeliveryBySelf(order) + store, _ := dao.GetStoreDetail(dao.GetDB(), order.JxStoreID, order.VendorID, "") + flag := (model.IsOrderDeliveryByStore(order) || model.IsOrderDeliveryBySelf(order)) && store.AutoPickup == model.YES if err = s.PickupGoods(order, flag, "autoPickup"); err == nil { order.DeliveryFlag |= model.OrderDeliveryFlagMaskAutoPickup partner.CurOrderManager.UpdateOrderFields(order, []string{"DeliveryFlag"}) diff --git a/business/partner/purchase/tao_vegetable/order.go b/business/partner/purchase/tao_vegetable/order.go index 764f597bb..0283c22cd 100644 --- a/business/partner/purchase/tao_vegetable/order.go +++ b/business/partner/purchase/tao_vegetable/order.go @@ -494,8 +494,7 @@ func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI // PickupGoods 拣货 func (c *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) (err error) { - store, _ := dao.GetStoreDetail(dao.GetDB(), order.JxStoreID, model.VendorIDTaoVegetable, "") - if isSelfDelivery && store.AutoPickup == model.YES { + if isSelfDelivery { param, err := orderStatusChangeNotice(order, tao_vegetable.OrderStatusPickedUp) if err != nil { return err @@ -712,6 +711,7 @@ func (c *PurchaseHandler) AdjustOrder(ctx *jxcontext.Context, order *model.Goods if refundSkuOrderID[utils.Str2Int(*v.SkuCode)] == model.YES { continue } + workCallbackSubOrderInfo := domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackSubOrderInfo{ BizSubOrderId: v.BizSubOrderId, SkuCode: v.SkuCode, From aa86ed115de60eae67ef023cebe865869c7d70b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Mon, 10 Jul 2023 13:45:48 +0800 Subject: [PATCH 5/7] 1 --- business/partner/purchase/tao_vegetable/order.go | 1 + 1 file changed, 1 insertion(+) diff --git a/business/partner/purchase/tao_vegetable/order.go b/business/partner/purchase/tao_vegetable/order.go index 0283c22cd..b017f5fbd 100644 --- a/business/partner/purchase/tao_vegetable/order.go +++ b/business/partner/purchase/tao_vegetable/order.go @@ -684,6 +684,7 @@ func (c *PurchaseHandler) CancelOrder(ctx *jxcontext.Context, order *model.Goods func (c *PurchaseHandler) AdjustOrder(ctx *jxcontext.Context, order *model.GoodsOrder, removedSkuList []*model.OrderSku, reason string) (err error) { api := getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "") + globals.SugarLogger.Debugf("removedSkuList := %s", utils.Format4Output(removedSkuList, false)) // 获取需要退货商品的子订单id refundSkuOrderID := make(map[int]int, 0) for _, v := range removedSkuList { From 81c61e6ec6b2740b5971855840e66ae3e1dfe94d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Mon, 10 Jul 2023 13:56:23 +0800 Subject: [PATCH 6/7] 1 --- .../partner/purchase/tao_vegetable/order.go | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/business/partner/purchase/tao_vegetable/order.go b/business/partner/purchase/tao_vegetable/order.go index b017f5fbd..b82a9987c 100644 --- a/business/partner/purchase/tao_vegetable/order.go +++ b/business/partner/purchase/tao_vegetable/order.go @@ -686,9 +686,9 @@ func (c *PurchaseHandler) AdjustOrder(ctx *jxcontext.Context, order *model.Goods globals.SugarLogger.Debugf("removedSkuList := %s", utils.Format4Output(removedSkuList, false)) // 获取需要退货商品的子订单id - refundSkuOrderID := make(map[int]int, 0) + refundSkuOrderID := make(map[int]*model.OrderSku, 0) for _, v := range removedSkuList { - refundSkuOrderID[v.SkuID] = 1 + refundSkuOrderID[v.SkuID] = v } param := &request591.AlibabaAelophyOrderWorkCallbackRequest{} @@ -709,17 +709,26 @@ func (c *PurchaseHandler) AdjustOrder(ctx *jxcontext.Context, order *model.Goods } for _, v := range *orderDetail.SubOrderResponseList { // 缺货 - if refundSkuOrderID[utils.Str2Int(*v.SkuCode)] == model.YES { - continue + if refundSkuOrderID[utils.Str2Int(*v.SkuCode)] != nil { + if refundSkuOrderID[utils.Str2Int(*v.SkuCode)].Count > utils.Float64TwoInt(*v.BuyStockQuantity) { + return fmt.Errorf("商品[%s],缺货数量[%d],大于订单数量[%d],请重新调整", refundSkuOrderID[utils.Str2Int(*v.SkuCode)].SkuName, refundSkuOrderID[utils.Str2Int(*v.SkuCode)].Count, utils.Float64TwoInt(*v.BuyStockQuantity)) + } + workCallbackSubOrderInfo := domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackSubOrderInfo{ + BizSubOrderId: v.BizSubOrderId, + SkuCode: v.SkuCode, + PickSaleQuantity: utils.String2Pointer(utils.Int2Str(utils.Float64TwoInt(*v.BuySaleQuantity) - refundSkuOrderID[utils.Str2Int(*v.SkuCode)].Count)), + PickStockQuantity: utils.String2Pointer(utils.Int2Str(utils.Float64TwoInt(*v.BuyStockQuantity) - refundSkuOrderID[utils.Str2Int(*v.SkuCode)].Count)), + } + workCallbackSubOrderInfoList = append(workCallbackSubOrderInfoList, workCallbackSubOrderInfo) + } else { + 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) } - - 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) } // 出库 From f011b3157efcf48dc5c35ffc82d83f1bd056ecd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Mon, 10 Jul 2023 14:12:25 +0800 Subject: [PATCH 7/7] 1 --- business/partner/purchase/tao_vegetable/order.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/business/partner/purchase/tao_vegetable/order.go b/business/partner/purchase/tao_vegetable/order.go index b82a9987c..0c8bc9c2b 100644 --- a/business/partner/purchase/tao_vegetable/order.go +++ b/business/partner/purchase/tao_vegetable/order.go @@ -681,6 +681,9 @@ func (c *PurchaseHandler) CancelOrder(ctx *jxcontext.Context, order *model.Goods } // AdjustOrder 商户发起部分退款(取消订单部分商品),淘宝没有部分退款,所以调整订单的时候就是在拣货,把缺货的部分排除 +// 1、子单部分缺货,骑手妥投的时候退款给用户 +// 2、子单整单缺货,商家打包完成退款给用户 +// 3、整单缺货,拣货完成退款给用户 func (c *PurchaseHandler) AdjustOrder(ctx *jxcontext.Context, order *model.GoodsOrder, removedSkuList []*model.OrderSku, reason string) (err error) { api := getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "") @@ -738,7 +741,7 @@ func (c *PurchaseHandler) AdjustOrder(ctx *jxcontext.Context, order *model.Goods globals.SugarLogger.Debugf("PickupGoods 拣货失败可能是BizSubOrderId 没填写 : %s", err.Error()) return err } - + c.postFakeMsg(order.VendorOrderID, tao_vegetable.OrderStatusPickedUp, tao_vegetable.OrderStatusPickedUp) return nil }