diff --git a/business/jxstore/cms/store_sku_check.go b/business/jxstore/cms/store_sku_check.go index e9252e32e..97c6a125d 100644 --- a/business/jxstore/cms/store_sku_check.go +++ b/business/jxstore/cms/store_sku_check.go @@ -29,7 +29,7 @@ const ( ) const ( - DatAanalyse1 = "京东商品库直接创建,正常数据 " + DatAanalyse1 = "京东商品库直接创建,京西无数据" DatAanalyse2 = "京东商品库未创建成功(可能无经营许可等) " DatAanalyse3 = "商品名不同 " DatAanalyse4 = "商品可售状态不同 " @@ -175,7 +175,7 @@ func GetMultiStoreAllSkuInfoList(vendorID int) []*partner.StoreSkuInfo { return multiStoreAllSkuInfoList[vendorID] } -func GetMultiStoreAllSkuInfo(ctx *jxcontext.Context, vendorMap map[int]bool) { +func GetMultiStoreAllSkuInfo(ctx *jxcontext.Context, vendorMap map[int]bool) (allSkuNameInfoList []*partner.SkuNameInfo) { InitMultiStoreData() filterCloseSkuIds = filterCloseSkuIds[0:0] for vendorID, _ := range vendorNameList { @@ -196,16 +196,17 @@ func GetMultiStoreAllSkuInfo(ctx *jxcontext.Context, vendorMap map[int]bool) { for _, value := range allSkuNameInfoList { for _, skuInfo := range value.SkuList { //表示平台商品库未下架的 - if skuInfo.Status != 0 { + if skuInfo.Status > model.SkuStatusDontSale { filterCloseSkuIds = append(filterCloseSkuIds, skuInfo.SkuID) + tempMap[skuInfo.SkuID] = value } - tempMap[skuInfo.SkuID] = value } } multiStoreAllSkuInfoMap[vendorID] = tempMap //map[平台ID][map[skuID1:SkuNameInfo1,skuID2:SkuNameInfo2]...] } } } + return allSkuNameInfoList } func GetFilterJxSkuInfoMap(jxSkuInfoList []*StoreSkuNameExt) map[int]*StoreSkuNameExt { @@ -308,6 +309,7 @@ func IsSkuCanSale(saleStatus int) bool { //storeIDStr 京西商家id ,vendorStoreID 平台商家id func CompareJxAndVendor(vendorID int, storeIDStr, vendorStoreID, storeName string, filterJxSkuInfoMap map[int]*StoreSkuNameExt, filterVendorSkuInfoMap map[int]*partner.SkuNameInfo) { for skuID, jxSkuInfo := range filterJxSkuInfoMap { + reason := `` skuIDStr := utils.Int2Str(skuID) //jxSkuDetailName : 前缀 ([荐]) + 分类名(xxx水饺) + 数量单位(约..g/份) + 注释 (补充..) jxSkuDetailName := jxutils.ComposeSkuName(jxSkuInfo.SkuName.Prefix, jxSkuInfo.SkuName.Name, jxSkuInfo.Skus2[0].Comment, jxSkuInfo.SkuName.Unit, jxSkuInfo.Skus2[0].SkuSpecQuality, jxSkuInfo.Skus2[0].SkuSpecUnit, 0) @@ -338,14 +340,20 @@ func CompareJxAndVendor(vendorID int, storeIDStr, vendorStoreID, storeName strin isNameDiff = false } if isSaleStatusDiff || isNameDiff { - outPutData := DiffData{storeIDStr, vendorStoreID, storeName, skuIDStr, syncStatus, toBeCreate, toBeDel, jxSkuDetailName, vendorSkuDetailName, jxSkuSaleStatusName, vendorSkuSaleStatusName, ""} + if isNameDiff { + reason += DatAanalyse3 + } + if isSaleStatusDiff { + reason += DatAanalyse4 + } + outPutData := DiffData{storeIDStr, vendorStoreID, storeName, skuIDStr, syncStatus, toBeCreate, toBeDel, jxSkuDetailName, vendorSkuDetailName, jxSkuSaleStatusName, vendorSkuSaleStatusName, reason} diffData.AppendData(vendorID, outPutData) } } else { if isFilterToBeCreateAndNotSale && model.IsSyncStatusNeedCreate(status) && !IsSkuCanSale(jxSkuSaleStatus) { continue } - outPutData := DiffData{storeIDStr, vendorStoreID, storeName, skuIDStr, syncStatus, toBeCreate, toBeDel, jxSkuDetailName, "", jxSkuSaleStatusName, "", ""} + outPutData := DiffData{storeIDStr, vendorStoreID, storeName, skuIDStr, syncStatus, toBeCreate, toBeDel, jxSkuDetailName, "", jxSkuSaleStatusName, "", DatAanalyse2} diffData.AppendData(vendorID, outPutData) } } @@ -370,7 +378,7 @@ func CompareJxAndVendor(vendorID int, storeIDStr, vendorStoreID, storeName strin } } -func CompareJxAndMultiVenderDepot(ctx *jxcontext.Context, vendorMap map[int]bool) { +func CompareJxAndMultiVenderDepot(ctx *jxcontext.Context, vendorMap map[int]bool, allSkuNameInfoList []*partner.SkuNameInfo) { db := dao.GetDB() for vendorID, _ := range vendorNameList { //filter for vendorID @@ -380,8 +388,6 @@ func CompareJxAndMultiVenderDepot(ctx *jxcontext.Context, vendorMap map[int]bool } } if partner.IsMultiStore(vendorID) { - multiHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IMultipleStoresHandler) - allSkuNameInfoList, _ := multiHandler.GetSkus(ctx, 0, "", "") filterVendorSkuInfoMap := GetFilterVendorSkuInfoMap(allSkuNameInfoList) skuList, _ := dao.GetSkus(db, []int{}, []int{}, []int{}, []int{}) filterJxSkuInfoMap2 := GetFilterJxSkuInfoMap2(skuList) @@ -438,6 +444,7 @@ func CompareJxAndMultiVenderDepot(ctx *jxcontext.Context, vendorMap map[int]bool //入口函数,校验本地商品京西和其他平台的差异 func CheckSkuDiffBetweenJxAndVendor(ctx *jxcontext.Context, vendorIDList []int, storeIDList []int) { + var allSkuNameInfoList []*partner.SkuNameInfo startProcessTime := time.Now().Unix() baseapi.SugarLogger.Debugf("CheckSkuDiffBetweenJxAndVendor start time: %v", time.Now()) vendorMap := make(map[int]bool) @@ -454,11 +461,11 @@ func CheckSkuDiffBetweenJxAndVendor(ctx *jxcontext.Context, vendorIDList []int, //获取所有多门店平台的商品信息 //1.循环传进来的平台id,如果是多门店的平台,查询该门店京东到家平台的所有商品 //2.为multiStoreAllSkuInfoList 和 multiStoreAllSkuInfoMap 赋值 - GetMultiStoreAllSkuInfo(ctx, vendorMap) + allSkuNameInfoList = GetMultiStoreAllSkuInfo(ctx, vendorMap) case 1: //对比京西库和多门店平台的库的信息 depotDiffData.InitData2() - CompareJxAndMultiVenderDepot(ctx, vendorMap) + CompareJxAndMultiVenderDepot(ctx, vendorMap, allSkuNameInfoList) case 2: //1.获取京西本地所有门店信息 store、place、user表联查 jxStoreInfoList //2.过滤所有门店信息,只留下传进来的vendorMap,storeIDMap中对应的平台和门台信息 filterStoreList