From 034970648e055532c0632829d4e57da54f23b991 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 27 Mar 2025 09:20:25 +0800 Subject: [PATCH] 1 --- business/jxstore/cms/system_store_sku.go | 137 +++++++++++++++++++- business/model/dao/dao_order.go | 3 - business/partner/purchase/mtwm/order_afs.go | 3 +- controllers/mtwm_callback.go | 7 +- 4 files changed, 138 insertions(+), 12 deletions(-) diff --git a/business/jxstore/cms/system_store_sku.go b/business/jxstore/cms/system_store_sku.go index eca1a237d..0854e5f8a 100644 --- a/business/jxstore/cms/system_store_sku.go +++ b/business/jxstore/cms/system_store_sku.go @@ -4,6 +4,7 @@ import ( "encoding/json" "fmt" "git.rosy.net.cn/baseapi/platformapi/ebaiapi" + "git.rosy.net.cn/baseapi/platformapi/jdapi" product_addV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_addV2/request" "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" "git.rosy.net.cn/jx-callback/business/jxutils" @@ -61,8 +62,8 @@ func CopyOnStoreSkuToOther(ctx *jxcontext.Context, fromStoreId, toStoreId string _, copySkuErr, err = CopyMtToEBai(ctx, fromStore, toStore, isAsync, offSet) case 31: // 饿了么到美团 _, copySkuErr, err = CopyEBaiToMt(ctx, fromStore, toStore, isAsync, offSet) - case 10: // 美团到京东 - + case 30: // 饿百到京东 + _, copySkuErr, err = CopyEBaiToJd(ctx, fromStore, toStore, isAsync, offSet) default: return nil, fmt.Errorf("暂时还不支持") } @@ -1214,6 +1215,138 @@ func BatchInitSkuEBai2Mt(ctx *jxcontext.Context, fromSku []*ebaiapi.SkuInfo, toA //#endregion +//#region 饿百复制到京东 + +func CopyEBaiToJd(ctx *jxcontext.Context, fromStore, toStore *dao.StoreDetail, isAsync bool, offSet int) (hint string, errList []string, err error) { + var api = api.EbaiAPI + var toApi *jdapi.API = partner.CurAPIManager.GetAPI(model.VendorIDJD, toStore.VendorOrgCode).(*jdapi.API) + + taskName := fmt.Sprintf("将饿百平台门店[%s],分类和商品复制到[%s]", fromStore.VendorStoreID, toStore.VendorStoreID) + config := tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(false) + work := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + step := batchItemList[0].(int) + switch step { + case 1: + // 京东商品分类不做同步 + //fromCategoryList, err := api.ShopCategoryGet(utils.Int2Str(fromStore.ID)) + //if err != nil { + // return nil, err + //} + //for _, v := range fromCategoryList { + // categoryErr := toApi.RetailCatUpdate(toStore.VendorStoreID, v.Name, &mtwmapi.Param4UpdateCat{ + // CategoryCode: utils.Int64ToStr(v.CategoryID), + // Sequence: v.Rank, + // }) + // if categoryErr != nil { + // globals.SugarLogger.Debugf("err := RetailCatUpdate : %v", categoryErr) + // } + // if v.Children != nil && len(v.Children) != 0 { + // for _, c := range v.Children { + // if err3 := toApi.RetailCatUpdate(toStore.VendorStoreID, v.Name, &mtwmapi.Param4UpdateCat{ + // CategoryNameOrigin: v.Name, + // SecondaryCategoryCode: utils.Int64ToStr(c.CategoryID), + // SecondaryCategoryName: c.Name, + // Sequence: c.Rank, + // }); err3 != nil { + // globals.SugarLogger.Debugf("err := RetailCatUpdate Children : %v", err3) + // } + // } + // } + //} + + case 2: + i := offSet + for { + // 同步商品 + fromFoodList, err1 := api.SkuList(utils.Int2Str(fromStore.ID), &ebaiapi.SkuListParams{ + Page: i, + }) + if len(fromFoodList.List) == 0 || fromFoodList == nil { + return nil, fmt.Errorf("fromFoodList 为空 %s ,i:= %d", utils.Format4Output(err1, false), i) + } + + err := BatchInitSkuEBai2Jd(ctx, fromFoodList.List, toApi, toStore.VendorStoreID, i) + if err != nil { + globals.SugarLogger.Debugf("BatchInitData : %v", err) + } + globals.SugarLogger.Debugf("==========页数[%d],数据长度[%d]", i, len(fromFoodList.List)) + if len(fromFoodList.List) < 100 { + break + } + i++ + } + } + return + } + task := tasksch.NewParallelTask(taskName, config, ctx, work, []int{1, 2}) + tasksch.HandleTask(task, nil, true).Run() + if !isAsync { + _, err = task.GetResult(0) + hint = "1" + } else { + hint = task.ID + } + + globals.SugarLogger.Debugf("======errrList := %s", utils.Format4Output(errList, false)) + return hint, errList, err + +} + +func BatchInitSkuEBai2Jd(ctx *jxcontext.Context, fromSku []*ebaiapi.SkuInfo, toApi *jdapi.API, vendorStoreID string, offset int) []error { + errList := make([]error, 0, 0) + for _, storeSku := range fromSku { + param := &jdapi.OpSkuParam{ + TraceID: ctx.GetTrackInfo(), + //ShopCategories: []int64{}, + //CategoryID: utils.Str2Int64(catMaps[0].JdID), + CategoryID: 291, // 暂无分类 + BrandID: 35247, + SkuName: storeSku.Name, + SkuPrice: storeSku.SalePrice, + Weight: float64(jxutils.IntWeight2Float(utils.Str2Int(storeSku.Weight))), + FixedStatus: 1, + IsSale: -1, + Upc: storeSku.Upc, + } + if storeSku.CustomSkuId != "" { + param.OutSkuID = storeSku.CustomSkuId + } else { + param.OutSkuID = utils.Int64ToStr(storeSku.SkuId) + } + photos := make([]string, 0, len(storeSku.Photos)) + for _, v := range storeSku.Photos { + photos = append(photos, v.Url) + } + param.Images = photos + //param.ShopCategories = append(param.ShopCategories, 16578930) // 暂无分类 + if storeSku.Rtf != "" { + param.ProductDesc = fmt.Sprintf(`一张图片`, storeSku.Rtf) + } + skuID, err := toApi.AddSku2(param) + if err != nil { + errList = append(errList, err) + } + if skuID != "" { + toApi.UpdateCurrentQty(ctx.GetTrackInfo(), vendorStoreID, utils.Str2Int64(skuID), storeSku.LeftNum) + SaleStatus := []*jdapi.QueryStockRequest{ + &jdapi.QueryStockRequest{ + StationNo: vendorStoreID, + SkuId: utils.Str2Int64(skuID), + //DoSale: mtSku.IsSoldOut, + }, + } + if storeSku.Status == "1" { + SaleStatus[0].DoSale = 0 + } else { + SaleStatus[0].DoSale = 1 + } + toApi.UpdateVendibility(ctx.GetTrackInfo(), SaleStatus) + } + } + + return errList +} + //#endregion ////#region 同步活动 diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index 681e57dbf..60984b4ec 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -2,7 +2,6 @@ package dao import ( "fmt" - "git.rosy.net.cn/jx-callback/globals" "regexp" "strconv" "time" @@ -1147,8 +1146,6 @@ func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDat sqlParams = append(sqlParams, pageSize, offset) txDB, _ := Begin(db) defer Commit(db, txDB) - globals.SugarLogger.Debugf("------sql := %s", sql) - globals.SugarLogger.Debugf("------sql := %s", utils.Format4Output(sqlParams, false)) if err = GetRowsTx(txDB, &orders, sql, sqlParams...); err == nil { totalCount = GetLastTotalRowCount2(db, txDB) } diff --git a/business/partner/purchase/mtwm/order_afs.go b/business/partner/purchase/mtwm/order_afs.go index b0518c17b..b04594e16 100644 --- a/business/partner/purchase/mtwm/order_afs.go +++ b/business/partner/purchase/mtwm/order_afs.go @@ -156,11 +156,12 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *mtwmapi.CallbackMsg) (retVal *mtwma //直接就来一个新的售后单,并且还是售后完成的 if orderStatus.Status == model.AfsOrderStatusFinished { afsOrder.AfsFinishedAt = afsOrder.AfsCreatedAt + afsOrder.Status = model.AfsOrderStatusFinished } // 补丁,这种类型的退款申请,不会在推送退款成功消息,直接将售后单标记为完成 if strings.Contains(afsOrder.ReasonDesc, "商家开通极速退款服务,用户申请系统自动通过") { - afsOrder.Status = model.AfsOrderStatusFinished afsOrder.AfsFinishedAt = time.Now() + afsOrder.Status = model.AfsOrderStatusFinished } } err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus) diff --git a/controllers/mtwm_callback.go b/controllers/mtwm_callback.go index 1967807ed..2ce2c6874 100644 --- a/controllers/mtwm_callback.go +++ b/controllers/mtwm_callback.go @@ -2,10 +2,7 @@ package controllers import ( "encoding/json" - "fmt" - "git.rosy.net.cn/baseapi/platformapi/dingdingapi" "git.rosy.net.cn/baseapi/platformapi/mtwmapi" - "git.rosy.net.cn/jx-callback/business/jxutils/ddmsg" "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/purchase/mtwm" @@ -37,9 +34,7 @@ func (c *MtwmController) onCallbackMsg(msgType string) { json.Unmarshal([]byte(msg.FormData.Get("pick_up_data")), &finishedPickup) vendorStoreId = finishedPickup.AppPoiCode } - if vendorStoreId == "" && msgType != "skuDelete" { - ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "2452A93EEB9111EC9B06525400E86DC0", "美团菜市推果园,果园退超市未找到门店", fmt.Sprintf("美团菜市推果园,获取平台门店ID异常cmd:%s,storeId:%s", msgType, vendorStoreId)) - } + if _, have := MTWMVendorStoreIDMap.Load(vendorStoreId); vendorStoreId != "" && !have { storeDetail, _ := dao.GetStoreDetailByVendorStoreID(dao.GetDB(), vendorStoreId, model.VendorIDMTWM, "") if storeDetail == nil {