Files
jx-callback/business/enterprise/vendor_sku_compare.go
邹宗楠 ed9aa6ce5e 1
2024-03-26 18:10:09 +08:00

308 lines
11 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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, ","))
//}