diff --git a/business/jxstore/cms/store_sku_check.go b/business/jxstore/cms/store_sku_check.go index cfe5d4aef..054fe5407 100644 --- a/business/jxstore/cms/store_sku_check.go +++ b/business/jxstore/cms/store_sku_check.go @@ -32,6 +32,7 @@ var ( "京西门店ID", "平台门店ID", "门店名", + "SkuID", "京西商品名", "平台商品名", "京西可售状态", @@ -46,6 +47,7 @@ type DiffData struct { JxStoreID string `json:"京西门店ID"` VendorStoreID string `json:"平台门店ID"` VendorStoreName string `json:"门店名"` + SkuID string `json:"SkuID"` JxSkuName string `json:"京西商品名"` VendorSkuName string `json:"平台商品名"` JxStatus string `json:"京西可售状态"` @@ -123,39 +125,34 @@ func GetSkuStatusName(status int) string { func CompareJxAndJd(vendorID int, storeIDStr, vendorStoreID, storeName string, filterJxSkuInfoMap map[int]*StoreSkuNameExt, filterJdSkuInfoMap map[int]*partner.StoreSkuInfo) { - for skuID, jxSkuInfo := range filterJxSkuInfoMap { - jxSkuDetailName := jxutils.ComposeSkuName(jxSkuInfo.SkuName.Prefix, jxSkuInfo.SkuName.Name, "", jxSkuInfo.SkuName.Unit, jxSkuInfo.SkuName.SpecQuality, jxSkuInfo.SkuName.SpecUnit, 0) - jxSkuStatusName := GetSkuStatusName(jxSkuInfo.Skus2[0].SkuStatus) - + for skuID, jxSkuInfo := range filterJxSkuInfoMap { + skuIDStr := utils.Int2Str(skuID) + 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) + jxSkuStatus := jxutils.MergeSkuStatus(jxSkuInfo.Skus2[0].SkuStatus, jxSkuInfo.Skus2[0].StoreSkuStatus) + jxSkuStatusName := GetSkuStatusName(jxSkuStatus) vendorSkuInfo := filterJdSkuInfoMap[skuID] if vendorSkuInfo != nil { vendorSkuInfo := jdAllSkuInfoMap[vendorSkuInfo.SkuID] vendorSkuDetailName := vendorSkuInfo.SkuList[0].SkuName vendorSkuStatusName := GetSkuStatusName(vendorSkuInfo.SkuList[0].Status) if jxSkuStatusName != vendorSkuStatusName || jxSkuDetailName != vendorSkuDetailName { - outPutData := DiffData{storeIDStr, vendorStoreID, storeName, jxSkuDetailName, vendorSkuDetailName, jxSkuStatusName, jxSkuStatusName} + outPutData := DiffData{storeIDStr, vendorStoreID, storeName, skuIDStr, jxSkuDetailName, vendorSkuDetailName, jxSkuStatusName, vendorSkuStatusName} diffData[vendorID] = append(diffData[vendorID], outPutData) } } else { - outPutData := DiffData{storeIDStr, vendorStoreID, storeName, jxSkuDetailName, "", jxSkuStatusName, ""} + outPutData := DiffData{storeIDStr, vendorStoreID, storeName, skuIDStr, jxSkuDetailName, "", jxSkuStatusName, ""} diffData[vendorID] = append(diffData[vendorID], outPutData) } } for skuID, _ := range filterJdSkuInfoMap { + skuIDStr := utils.Int2Str(skuID) vendorSkuInfo := jdAllSkuInfoMap[skuID] vendorSkuDetailName := vendorSkuInfo.SkuList[0].SkuName vendorSkuStatusName := GetSkuStatusName(vendorSkuInfo.SkuList[0].Status) jxSkuInfo := filterJxSkuInfoMap[skuID] - if jxSkuInfo != nil { - jxSkuDetailName := jxutils.ComposeSkuName(jxSkuInfo.SkuName.Prefix, jxSkuInfo.SkuName.Name, "", jxSkuInfo.SkuName.Unit, jxSkuInfo.SkuName.SpecQuality, jxSkuInfo.SkuName.SpecUnit, 0) - jxSkuStatusName := GetSkuStatusName(jxSkuInfo.Skus2[0].SkuStatus) - if jxSkuStatusName != vendorSkuStatusName || jxSkuDetailName != vendorSkuDetailName { - outPutData := DiffData{storeIDStr, vendorStoreID, storeName, jxSkuDetailName, vendorSkuDetailName, jxSkuStatusName, jxSkuStatusName} - diffData[vendorID] = append(diffData[vendorID], outPutData) - } - } else { - outPutData := DiffData{storeIDStr, vendorStoreID, storeName, vendorSkuDetailName, "", vendorSkuStatusName, ""} + if jxSkuInfo == nil { + outPutData := DiffData{storeIDStr, vendorStoreID, storeName, skuIDStr, "", vendorSkuDetailName, "", vendorSkuStatusName} diffData[vendorID] = append(diffData[vendorID], outPutData) } } @@ -164,37 +161,33 @@ func CompareJxAndJd(vendorID int, storeIDStr, vendorStoreID, storeName string, func CompareJxAndVendor(vendorID int, storeIDStr, vendorStoreID, storeName string, filterJxSkuInfoMap map[int]*StoreSkuNameExt, filterVendorSkuInfoMap map[int]*partner.SkuNameInfo) { - for skuID, jxSkuInfo := range filterJxSkuInfoMap { - jxSkuDetailName := jxutils.ComposeSkuName(jxSkuInfo.SkuName.Prefix, jxSkuInfo.SkuName.Name, "", jxSkuInfo.SkuName.Unit, jxSkuInfo.SkuName.SpecQuality, jxSkuInfo.SkuName.SpecUnit, 0) - jxSkuStatusName := GetSkuStatusName(jxSkuInfo.Skus2[0].SkuStatus) + for skuID, jxSkuInfo := range filterJxSkuInfoMap { + skuIDStr := utils.Int2Str(skuID) + 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) + jxSkuStatus := jxutils.MergeSkuStatus(jxSkuInfo.Skus2[0].SkuStatus, jxSkuInfo.Skus2[0].StoreSkuStatus) + jxSkuStatusName := GetSkuStatusName(jxSkuStatus) vendorSkuInfo := filterVendorSkuInfoMap[skuID] if vendorSkuInfo != nil { vendorSkuDetailName := vendorSkuInfo.SkuList[0].SkuName vendorSkuStatusName := GetSkuStatusName(vendorSkuInfo.SkuList[0].Status) if jxSkuStatusName != vendorSkuStatusName || jxSkuDetailName != vendorSkuDetailName { - outPutData := DiffData{storeIDStr, vendorStoreID, storeName, jxSkuDetailName, vendorSkuDetailName, jxSkuStatusName, jxSkuStatusName} + outPutData := DiffData{storeIDStr, vendorStoreID, storeName, skuIDStr, jxSkuDetailName, vendorSkuDetailName, jxSkuStatusName, vendorSkuStatusName} diffData[vendorID] = append(diffData[vendorID], outPutData) } } else { - outPutData := DiffData{storeIDStr, vendorStoreID, storeName, jxSkuDetailName, "", jxSkuStatusName, ""} + outPutData := DiffData{storeIDStr, vendorStoreID, storeName, skuIDStr, jxSkuDetailName, "", jxSkuStatusName, ""} diffData[vendorID] = append(diffData[vendorID], outPutData) } } for skuID, vendorSkuInfo := range filterVendorSkuInfoMap { + skuIDStr := utils.Int2Str(skuID) vendorSkuDetailName := vendorSkuInfo.SkuList[0].SkuName vendorSkuStatusName := GetSkuStatusName(vendorSkuInfo.SkuList[0].Status) jxSkuInfo := filterJxSkuInfoMap[skuID] - if jxSkuInfo != nil { - jxSkuDetailName := jxutils.ComposeSkuName(jxSkuInfo.SkuName.Prefix, jxSkuInfo.SkuName.Name, "", jxSkuInfo.SkuName.Unit, jxSkuInfo.SkuName.SpecQuality, jxSkuInfo.SkuName.SpecUnit, 0) - jxSkuStatusName := GetSkuStatusName(jxSkuInfo.Skus2[0].SkuStatus) - if jxSkuStatusName != vendorSkuStatusName || jxSkuDetailName != vendorSkuDetailName { - outPutData := DiffData{storeIDStr, vendorStoreID, storeName, jxSkuDetailName, vendorSkuDetailName, jxSkuStatusName, jxSkuStatusName} - diffData[vendorID] = append(diffData[vendorID], outPutData) - } - } else { - outPutData := DiffData{storeIDStr, vendorStoreID, storeName, vendorSkuDetailName, "", vendorSkuStatusName, ""} + if jxSkuInfo == nil { + outPutData := DiffData{storeIDStr, vendorStoreID, storeName, skuIDStr, "", vendorSkuDetailName, "", vendorSkuStatusName} diffData[vendorID] = append(diffData[vendorID], outPutData) } } @@ -233,17 +226,19 @@ func CheckSkuDiffBetweenJxAndVendor(vendorIDList []int, storeIDList []int) { storeIDStr := utils.Int2Str(storeID) storeName := jxStoreInfoListValue.Name if jxStoreInfoListValue.StoreMaps != nil { - for vendorListIndex, vendorListValue := range jxStoreInfoListValue.StoreMaps { + isGetJxSkuInfoData := false + for _, vendorListValue := range jxStoreInfoListValue.StoreMaps { vendorID := int(utils.MustInterface2Int64(vendorListValue["vendorID"])) //filter for vendorID if len(vendorMap) > 0 { if _, ok := vendorMap[vendorID]; !ok { - return retVal, err + continue } } if _, ok := vendorNameList[vendorID]; ok { var filterJxSkuInfoMap map[int]*StoreSkuNameExt - if vendorListIndex == 0 { + if isGetJxSkuInfoData == false {//only get once jx sku info list every store id + isGetJxSkuInfoData = true jxSkuInfoData, _ := GetStoreSkus(ctx, storeID, []int{}, true, "", true, map[string]interface{}{}, 0, -1) filterJxSkuInfoMap = GetFilterJxSkuInfoMap(jxSkuInfoData.SkuNames) }