package enterprise // //import ( // "fmt" // "git.rosy.net.cn/baseapi/platformapi/ebaiapi" // "git.rosy.net.cn/baseapi/platformapi/mtwmapi" // tao "git.rosy.net.cn/baseapi/platformapi/tao_vegetable" // domain585 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability585/domain" // request585 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability585/request" // product_listV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_listV2/request" // product_listV2_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_listV2/response" // "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" // "git.rosy.net.cn/baseapi/utils" // "git.rosy.net.cn/jx-callback/business/jxstore/cms" // "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" // "git.rosy.net.cn/jx-callback/business/model" // "git.rosy.net.cn/jx-callback/business/model/dao" // "git.rosy.net.cn/jx-callback/globals" // "git.rosy.net.cn/jx-callback/globals/api/apimanager" // "strings" //) // //// 该函数主要用于对比京西平台商品和各个平台门店商品的差异 //// 对比上下架状态以及商品价格差异,相同的不做修改,不同的以京西系统商品为主 // //func CompareJxVendorSku(jxStoreId int) error { // var ( // db = dao.GetDB() // errListToStr = new(strings.Builder) // ) // skuList, err := dao.GetStoresSkusInfo(db, []int{jxStoreId}, nil) // if err != nil { // return err // } // // // 门店商品列表平 // skuMap := make(map[string]*model.StoreSkuBind, 0) // skuIdList := make([]string, 0, len(skuList)) // for _, v := range skuList { // localSkuId := utils.Int2Str(v.SkuID) // skuMap[localSkuId] = v // skuIdList = append(skuIdList, localSkuId) // } // // // 有效的三方平台 // storeMap, err := dao.GetStoresMapList(db, nil, []int{jxStoreId}, []int{model.StoreStatusOpened, model.StoreStatusClosed, model.StoreStatusHaveRest}, model.StoreStatusDisabled, 1, "", "", "") // if err != nil { // return err // } // // for _, sm := range storeMap { // switch sm.VendorID { // case model.VendorIDJD: // case model.VendorIDMTWM: // if errs := MtWmSyncSkuPriceAndStatus(db, sm, skuMap); errs != nil { // errListToStr.WriteString(errs.Error()) // } // continue // case model.VendorIDEBAI: // if errs := EBaiSyncSkuPriceAndStatus(db, sm, skuMap); errs != nil { // errListToStr.WriteString(errs.Error()) // } // continue // case model.VendorIDDD: // case model.VendorIDTaoVegetable: // if errs := TaoSyncSkuPriceAndStatus(db, sm, skuMap, skuIdList); errs != nil { // errListToStr.WriteString(errs.Error()) // } // continue // default: // return fmt.Errorf("无法识别的平台id") // } // } // // return err //} // //// MtWmSyncSkuPriceAndStatus 校验美团平台和京西系统商品差异 //func MtWmSyncSkuPriceAndStatus(db *dao.DaoDB, sm *model.StoreMap, skuMap map[string]*model.StoreSkuBind) (err error) { // mtApi := apimanager.CurAPIManager.GetAPI(sm.VendorID, sm.VendorOrgCode).(*mtwmapi.API) // // i := model.NO // foodListData := make([]*mtwmapi.AppFood, 0, 0) // for { // foodList, err := mtApi.RetailListAll(sm.VendorStoreID, i) // if err != nil { // globals.SugarLogger.Debugf("美团商品价格和上下架状态获取平台商品异常 :%v", err) // continue // } // foodListData = append(foodListData, foodList...) // if len(foodList) < 100 { // break // } // i++ // } // // errs := make([]string, 0, 0) // for _, vsl := range foodListData { // if sku, ok := skuMap[vsl.AppFoodCode]; ok { // // 同步商品价格 // if utils.Float64TwoInt(vsl.Price*float64(100)) != sku.MtwmPrice { // _, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{sm.VendorID}, []int{sku.StoreID}, false, []int{sku.SkuID}, []int{27379}, model.SyncFlagPriceMask, true, true) // if err != nil { // errs = append(errs, fmt.Sprintf("%v", err)) // } // } // // 同步商品上下架状态 // // SPU(可能包含多个SKU)上下架状态,字段取值范围:0-全部sku上架,1-全部sku下架。以下功能灰度中:若同时传递sku_is_sold_out,则优先根据sku_is_sold_out传参判断单个sku的上下架状态。 // // 本地sku.Status 0-不可售, 1-可售 // if vsl.IsSoldOut == sku.Status { // // 平台上架本地下架,将平台商品下架 // _, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{sm.VendorID}, []int{sku.StoreID}, false, []int{sku.SkuID}, []int{27379}, 56, true, true) // if err != nil { // errs = append(errs, fmt.Sprintf("%v", err)) // } // } // } // } // if len(errs) == model.NO { // return nil // } // // return fmt.Errorf("%s", strings.Join(errs, ",")) //} // //// EBaiSyncSkuPriceAndStatus 校验饿了么平台和京西系统商品差异 //func EBaiSyncSkuPriceAndStatus(db *dao.DaoDB, sm *model.StoreMap, skuMap map[string]*model.StoreSkuBind) (err error) { // ebaiApi := apimanager.CurAPIManager.GetAPI(sm.VendorID, sm.VendorOrgCode).(*ebaiapi.API) // // skuIdOffset := 0 // foodListData := make([]*ebaiapi.SkuInfo, 0, 0) // for { // param := &ebaiapi.SkuListParams{ // Page: 1, // PageSize: 100, // SkuIdOffset: skuIdOffset, // } // foodList, err := ebaiApi.SkuList(sm.VendorStoreID, param) // if err != nil { // globals.SugarLogger.Debugf("美团商品价格和上下架状态获取平台商品异常 :%v", err) // continue // } // // foodListData = append(foodListData, foodList.List...) // if len(foodList.List) < 100 { // break // } // skuIdOffset = foodList.SkuIdOffset // } // // errs := make([]string, 0, 0) // for _, vsl := range foodListData { // if sku, ok := skuMap[vsl.CustomSkuId]; ok { // // 同步商品价格 // if vsl.SalePrice != sku.EbaiPrice { // _, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{sm.VendorID}, []int{sku.StoreID}, false, []int{sku.SkuID}, []int{27379}, model.SyncFlagPriceMask, true, true) // } // // 同步商品上下架状态 // // 1为上架,0为下架 // // 本地sku.Status 0-不可售, 1-可售 // if vsl.Status != utils.Int2Str(sku.Status) { // // 平台上架本地下架,将平台商品下架 // _, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{sm.VendorID}, []int{sku.StoreID}, false, []int{sku.SkuID}, []int{27379}, 56, true, true) // } // } // } // // if len(errs) == model.NO { // return nil // } // // return fmt.Errorf("%s", strings.Join(errs, ",")) //} // //// TaoSyncSkuPriceAndStatus 校验淘宝平台和京西系统商品差异 //func TaoSyncSkuPriceAndStatus(db *dao.DaoDB, sm *model.StoreMap, skuMap map[string]*model.StoreSkuBind, skuIdList []string) (err error) { // var ( // taoApi = apimanager.CurAPIManager.GetAPI(sm.VendorID, sm.VendorOrgCode).(*tao.API) // length = len(skuIdList) / 100 // foodListData = make([]domain585.AlibabaWdkSkuQuerySkuDo, 0, 0) // ) // // if len(skuIdList)%100 != 0 { // length += 1 // } // // // 获取平台商品列表 // for i := 0; i < length; i++ { // skuCods := skuIdList[i*100 : (i+1)*100] // foodList, _ := taoApi.QueryStoreSKu(&request585.AlibabaWdkSkuQueryRequest{Param: &domain585.AlibabaWdkSkuQuerySkuQueryDo{ // OuCode: utils.String2Pointer(sm.VendorStoreID), // SkuCodes: &skuCods, // }}) // for _, fl := range *foodList { // if *fl.Success { // foodListData = append(foodListData, *fl.Model) // } // } // } // // // 比较商品差异 // errs := make([]string, 0, 0) // for _, vsl := range foodListData { // if sku, ok := skuMap[*vsl.SkuCode]; ok { // // 同步商品价格 // if utils.Float64TwoInt(utils.Str2Float64(*vsl.SalePrice)*float64(100)) != sku.TaoPrice { // _, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{sm.VendorID}, []int{sku.StoreID}, false, []int{sku.SkuID}, []int{27379}, model.SyncFlagPriceMask, true, true) // if err != nil { // errs = append(errs, fmt.Sprintf("%v", err)) // } // } // // 同步商品上下架状态 // // 是否线上可售 是 0:否 1:是。 // // 本地sku.Status 0-不可售, 1-可售 // if int(*vsl.OnlineSaleFlag) != sku.Status { // // 平台上架本地下架,将平台商品下架 // _, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{sm.VendorID}, []int{sku.StoreID}, false, []int{sku.SkuID}, []int{27379}, 56, true, true) // if err != nil { // errs = append(errs, fmt.Sprintf("%v", err)) // } // } // } // } // if len(errs) == model.NO { // return nil // } // // return fmt.Errorf("%s", strings.Join(errs, ",")) //} // //// TiktokSyncSkuPriceAndStatus 校验抖音平台和京西系统商品差异 //func TiktokSyncSkuPriceAndStatus(db *dao.DaoDB, sm *model.StoreMap, skuMap map[string]*model.StoreSkuBind) (err error) { // var ( // tiktokApi = apimanager.CurAPIManager.GetAPI(sm.VendorID, sm.VendorOrgCode).(*tiktok_api.API) // page = 0 // foodListData = make([]product_listV2_response.DataItem, 0, 0) // errs = make([]string, 0, 0) // ) // // for { // param := &product_listV2_request.ProductListV2Param{ // Page: int64(page), // Size: 100, // StoreId: utils.Str2Int64(sm.VendorStoreID), // } // foodList, err := tiktokApi.GetSkuDetailList(param) // if err != nil { // globals.SugarLogger.Debugf("抖音商品价格和上下架状态获取平台商品异常 :%v", err) // continue // } // // foodListData = append(foodListData, foodList.Data...) // if len(foodList.Data) < 100 { // break // } // page += 1 // } // // for _, vsl := range foodListData { // if sku, ok := skuMap[vsl.OuterProductId]; ok { // // 同步商品价格 // if vsl.SalePrice != sku.EbaiPrice { // _, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{sm.VendorID}, []int{sku.StoreID}, false, []int{sku.SkuID}, []int{27379}, model.SyncFlagPriceMask, true, true) // } // // 同步商品上下架状态 // // 0-在线 1-下线 // // 本地sku.Status 0-不可售,1-可售 // if vsl.Status == int64(sku.Status) { // skuAndName, _ := dao.GetSkus(db, []int{sku.SkuID}, nil, nil, nil, nil) // if len(skuAndName) != model.NO { // globals.SugarLogger.Debugf("抖音更新商品信息获取nameId异常") // continue // } // skuBindInfo := make([]*cms.StoreSkuBindInfo, 0, 0) // skuBindInfo = append(skuBindInfo, &cms.StoreSkuBindInfo{ // StoreID: 0, // NameID: skuAndName[0].NameID, // UnitPrice: 0, // IsFocus: 0, // IsSale: 0, // SubStoreID: 0, // StatusSaleBegin: nil, // StatusSaleEnd: nil, // UPC: "", // MtLadderBoxPrice: 0, // Skus: append([]*cms.StoreSkuBindSkuInfo{}, &cms.StoreSkuBindSkuInfo{ // SkuID: sku.SkuID, // IsSale: -1, // Stock: nil, // MtLadderBoxPrice: 0, // }), // }) // // 平台上架本地下架,将平台商品下架 // //_, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{sm.VendorID}, []int{sku.StoreID}, false, []int{sku.SkuID}, []int{27379}, 56, true, true) // //_, err = cms.UpdateStoresSkus(jxcontext.AdminCtx, nil, 0, db, []int{sm.VendorID}, []int{sku.StoreID}, false, []int{sku.SkuID}, []int{27379}, 56, true, true) // retVal, err = cms.UpdateStoresSkus(jxcontext.AdminCtx, 0, []int{sm.StoreID}, skuBindInfo, false, false, false, false) // } // } // } // // if len(errs) == model.NO { // return nil // } // // return fmt.Errorf("%s", strings.Join(errs, ",")) //}