|
@@ -37,7 +37,6 @@ public class ProductGoodsLogicService { |
|
@@ -37,7 +37,6 @@ public class ProductGoodsLogicService { |
37
|
@Autowired
|
37
|
@Autowired
|
38
|
private StorageService storageService;
|
38
|
private StorageService storageService;
|
39
|
|
39
|
|
40
|
-
|
|
|
41
|
/**
|
40
|
/**
|
42
|
* 全量增量都有调用
|
41
|
* 全量增量都有调用
|
43
|
*/
|
42
|
*/
|
|
@@ -53,11 +52,10 @@ public class ProductGoodsLogicService { |
|
@@ -53,11 +52,10 @@ public class ProductGoodsLogicService { |
53
|
|
52
|
|
54
|
//2、构建库存相关数据
|
53
|
//2、构建库存相关数据
|
55
|
Map<Integer, Integer> goodStorageNumMap = goodsRelatedStorageLogicService.buildGoodStorageNumMap(storageList);
|
54
|
Map<Integer, Integer> goodStorageNumMap = goodsRelatedStorageLogicService.buildGoodStorageNumMap(storageList);
|
56
|
- Map<Integer, List<Storage>> productStorageMap = goodsRelatedStorageLogicService.buildProductStorageListMap(goodsList,storageList);
|
55
|
+ Map<Integer, List<Storage>> productStorageMap = goodsRelatedStorageLogicService.buildProductStorageListMap(goodsList, storageList);
|
57
|
|
56
|
|
58
|
//3、构建图片相关数据
|
57
|
//3、构建图片相关数据
|
59
|
- Map<Integer, String> defaultImageMap = goodsRelatedImageLogicService.buildProductDefaultImage(goodsImages, goodStorageNumMap);
|
|
|
60
|
- Map<Integer, GoodsCoverImage> goodsCoverImagesMap = goodsRelatedImageLogicService.selectGoodsCoverImage(goodsImages);
|
58
|
+ Map<Integer, GoodsImageInfo> goodsImageInfoMap = goodsRelatedImageLogicService.selectGoodsCoverImage(goodsImages);
|
61
|
|
59
|
|
62
|
//4、批量查询尺码信息
|
60
|
//4、批量查询尺码信息
|
63
|
Map<Integer, String> sizeId2NameMap = productSizesLogicService.buildSizeId2NameMap(storageList);
|
61
|
Map<Integer, String> sizeId2NameMap = productSizesLogicService.buildSizeId2NameMap(storageList);
|
|
@@ -65,19 +63,17 @@ public class ProductGoodsLogicService { |
|
@@ -65,19 +63,17 @@ public class ProductGoodsLogicService { |
65
|
//5、构建product2GoodsMap
|
63
|
//5、构建product2GoodsMap
|
66
|
Map<Integer, List<ProductGoodInfo>> productGoodsMap = new HashMap<>();
|
64
|
Map<Integer, List<ProductGoodInfo>> productGoodsMap = new HashMap<>();
|
67
|
for (Goods goods : goodsList) {
|
65
|
for (Goods goods : goodsList) {
|
68
|
- ProductGoodInfo goodInfo = buildProductGoodInfo(goods, goodsCoverImagesMap, goodStorageNumMap);
|
66
|
+ ProductGoodInfo goodInfo = buildProductGoodInfo(goods, goodsImageInfoMap, goodStorageNumMap);
|
69
|
List<ProductGoodInfo> goodInfoList = productGoodsMap.computeIfAbsent(goods.getProductId(), a -> new ArrayList<>());
|
67
|
List<ProductGoodInfo> goodInfoList = productGoodsMap.computeIfAbsent(goods.getProductId(), a -> new ArrayList<>());
|
70
|
goodInfoList.add(goodInfo);
|
68
|
goodInfoList.add(goodInfo);
|
71
|
}
|
69
|
}
|
72
|
|
70
|
|
73
|
//6、构建productGoodsBOs
|
71
|
//6、构建productGoodsBOs
|
74
|
-
|
|
|
75
|
-
|
|
|
76
|
List<ProductGoodsBO> productGoodsBOs = new ArrayList<>();
|
72
|
List<ProductGoodsBO> productGoodsBOs = new ArrayList<>();
|
77
|
for (Map.Entry<Integer, List<ProductGoodInfo>> entry : productGoodsMap.entrySet()) {
|
73
|
for (Map.Entry<Integer, List<ProductGoodInfo>> entry : productGoodsMap.entrySet()) {
|
78
|
ProductGoodsBO productGoodsBO = new ProductGoodsBO(entry.getKey(), entry.getValue());
|
74
|
ProductGoodsBO productGoodsBO = new ProductGoodsBO(entry.getKey(), entry.getValue());
|
79
|
//填充图片
|
75
|
//填充图片
|
80
|
- fillProductImage(productGoodsBO, defaultImageMap);
|
76
|
+ fillProductImage(productGoodsBO);
|
81
|
//填充颜色
|
77
|
//填充颜色
|
82
|
fillColorInfo(productGoodsBO);
|
78
|
fillColorInfo(productGoodsBO);
|
83
|
//填充尺码
|
79
|
//填充尺码
|
|
@@ -91,35 +87,83 @@ public class ProductGoodsLogicService { |
|
@@ -91,35 +87,83 @@ public class ProductGoodsLogicService { |
91
|
return new ArrayList<>();
|
87
|
return new ArrayList<>();
|
92
|
}
|
88
|
}
|
93
|
|
89
|
|
94
|
- private void fillProductImage(ProductGoodsBO productGoodsBO, Map<Integer, String> defaultImageMap) {
|
|
|
95
|
- String imagesUrl = "";
|
90
|
+ /**
|
|
|
91
|
+ * 转成good对象
|
|
|
92
|
+ */
|
|
|
93
|
+ private ProductGoodInfo buildProductGoodInfo(Goods goods, Map<Integer, GoodsImageInfo> goodsImagesInfoMap, Map<Integer, Integer> goodStorageMap) {
|
|
|
94
|
+ Map<Integer, ProductColor> productColorsMap = basicDataCacheService.getColor();
|
|
|
95
|
+ ProductGoodInfo productGoodInfo = new ProductGoodInfo();
|
|
|
96
|
+ // 来自Goods
|
|
|
97
|
+ productGoodInfo.setGoods_id(String.valueOf(goods.getId()));
|
|
|
98
|
+ productGoodInfo.setColor_name(StringUtils.isBlank(goods.getColorName()) ? "" : goods.getColorName());
|
|
|
99
|
+ productGoodInfo.setImages_url(StringUtils.isBlank(goods.getColorImage()) ? "" : goods.getColorImage());
|
|
|
100
|
+ productGoodInfo.setIs_default(StringUtils.isBlank(goods.getIsDefault()) ? "N" : goods.getIsDefault());
|
|
|
101
|
+ productGoodInfo.setColor_id(goods.getColorId() == null ? "" : goods.getColorId().toString());
|
|
|
102
|
+ productGoodInfo.setStatus(goods.getStatus() == null ? "0" : goods.getStatus().toString());
|
|
|
103
|
+ productGoodInfo.setProduct_skc(goods.getProductSkc() == null ? "" : goods.getProductSkc().toString());
|
|
|
104
|
+ productGoodInfo.setColor_value("");
|
|
|
105
|
+ // 来自productColorsMap
|
|
|
106
|
+ ProductColor productColor = productColorsMap.get(goods.getColorId());
|
|
|
107
|
+ if (productColor != null) {
|
|
|
108
|
+ String colorCode = productColor.getColorCode();
|
|
|
109
|
+ productGoodInfo.setColor_code(colorCode);
|
|
|
110
|
+ }
|
|
|
111
|
+ // 来自goodsCoverImagesMap
|
|
|
112
|
+ GoodsImageInfo goodsImageInfo = goodsImagesInfoMap.get(goods.getId());
|
|
|
113
|
+ String cover_1 = "";
|
|
|
114
|
+ String cover_2 = "";
|
|
|
115
|
+ if (goodsImageInfo != null) {
|
|
|
116
|
+ cover_1 = goodsImageInfo.getCover_1();
|
|
|
117
|
+ cover_2 = goodsImageInfo.getCover_2();
|
|
|
118
|
+ // Images_url兜底
|
|
|
119
|
+ if (StringUtils.isBlank(productGoodInfo.getImages_url())) {
|
|
|
120
|
+ productGoodInfo.setImages_url(goodsImageInfo.getImage_url());
|
|
|
121
|
+ }
|
|
|
122
|
+ }
|
|
|
123
|
+ productGoodInfo.setCover_1(StringUtils.isBlank(cover_1) ? "" : cover_1);
|
|
|
124
|
+ productGoodInfo.setCover_2(StringUtils.isBlank(cover_2) ? "" : cover_2);
|
|
|
125
|
+ // 来自storageMap
|
|
|
126
|
+ Integer storage_num = goodStorageMap.get(goods.getId());
|
|
|
127
|
+ productGoodInfo.setStorage_num(storage_num == null ? "0" : storage_num.toString());
|
|
|
128
|
+ return productGoodInfo;
|
|
|
129
|
+ }
|
|
|
130
|
+
|
|
|
131
|
+ private void fillProductImage(ProductGoodsBO productGoodsBO) {
|
|
|
132
|
+ String defaultImage = "";
|
96
|
String cover1 = "";
|
133
|
String cover1 = "";
|
97
|
String cover2 = "";
|
134
|
String cover2 = "";
|
98
|
for (ProductGoodInfo goodInfo : productGoodsBO.getGoodsList()) {
|
135
|
for (ProductGoodInfo goodInfo : productGoodsBO.getGoodsList()) {
|
99
|
- // 如果此goods是is_default=Y的,用这个goods,否则不用
|
136
|
+ // 如果此goods是is_default=Y的,并且有库存用这个goods的信息
|
100
|
if ("Y".equals(goodInfo.getIs_default()) && Integer.valueOf(goodInfo.getStorage_num()) > 0) {
|
137
|
if ("Y".equals(goodInfo.getIs_default()) && Integer.valueOf(goodInfo.getStorage_num()) > 0) {
|
101
|
- imagesUrl = goodInfo.getImages_url();
|
138
|
+ defaultImage = goodInfo.getImages_url();
|
102
|
cover1 = goodInfo.getCover_1();
|
139
|
cover1 = goodInfo.getCover_1();
|
103
|
cover2 = goodInfo.getCover_2();
|
140
|
cover2 = goodInfo.getCover_2();
|
104
|
- if (StringUtils.isNotBlank(imagesUrl)) {
|
141
|
+ //找到了则退出循环
|
|
|
142
|
+ if (StringUtils.isNotBlank(defaultImage)) {
|
105
|
break;
|
143
|
break;
|
106
|
}
|
144
|
}
|
107
|
}
|
145
|
}
|
108
|
}
|
146
|
}
|
109
|
- cover1 = StringUtils.isNotBlank(cover1) ? cover1 : imagesUrl;
|
|
|
110
|
- cover2 = StringUtils.isNotBlank(cover2) ? cover2 : imagesUrl;
|
|
|
111
|
- productGoodsBO.setCover_1(cover1);
|
|
|
112
|
- productGoodsBO.setCover_2(cover2);
|
|
|
113
|
- String defaultImage = defaultImageMap.get(productGoodsBO.getProductId());
|
|
|
114
|
//default_images灾备
|
147
|
//default_images灾备
|
115
|
if (StringUtils.isBlank(defaultImage)) {
|
148
|
if (StringUtils.isBlank(defaultImage)) {
|
116
|
- defaultImage = getImageNotNull(productGoodsBO.getGoodsList());
|
149
|
+ defaultImage = getImageNotNull(productGoodsBO.getGoodsList(), true);
|
|
|
150
|
+ if (StringUtils.isBlank(defaultImage)) {
|
|
|
151
|
+ defaultImage = getImageNotNull(productGoodsBO.getGoodsList(), false);
|
|
|
152
|
+ }
|
117
|
}
|
153
|
}
|
|
|
154
|
+ // cover1 cover2不存在则取defaultImage
|
|
|
155
|
+ cover1 = StringUtils.isNotBlank(cover1) ? cover1 : defaultImage;
|
|
|
156
|
+ cover2 = StringUtils.isNotBlank(cover2) ? cover2 : defaultImage;
|
|
|
157
|
+ productGoodsBO.setCover_1(cover1);
|
|
|
158
|
+ productGoodsBO.setCover_2(cover2);
|
118
|
productGoodsBO.setDefaultImage(defaultImage);
|
159
|
productGoodsBO.setDefaultImage(defaultImage);
|
119
|
}
|
160
|
}
|
120
|
|
161
|
|
121
|
- private String getImageNotNull(List<ProductGoodInfo> goodsList) {
|
162
|
+ private String getImageNotNull(List<ProductGoodInfo> goodsList, boolean filterStorage) {
|
122
|
for (ProductGoodInfo goods : goodsList) {
|
163
|
for (ProductGoodInfo goods : goodsList) {
|
|
|
164
|
+ if (filterStorage && Integer.valueOf(goods.getStorage_num()) <= 0) {
|
|
|
165
|
+ continue;
|
|
|
166
|
+ }
|
123
|
String imagesUrl = goods.getImages_url();
|
167
|
String imagesUrl = goods.getImages_url();
|
124
|
if (StringUtils.isNotBlank(imagesUrl)) {
|
168
|
if (StringUtils.isNotBlank(imagesUrl)) {
|
125
|
return imagesUrl;
|
169
|
return imagesUrl;
|
|
@@ -136,7 +180,6 @@ public class ProductGoodsLogicService { |
|
@@ -136,7 +180,6 @@ public class ProductGoodsLogicService { |
136
|
return "";
|
180
|
return "";
|
137
|
}
|
181
|
}
|
138
|
|
182
|
|
139
|
-
|
|
|
140
|
/**
|
183
|
/**
|
141
|
* 获取有库存且状态正常的color
|
184
|
* 获取有库存且状态正常的color
|
142
|
*/
|
185
|
*/
|
|
@@ -163,40 +206,6 @@ public class ProductGoodsLogicService { |
|
@@ -163,40 +206,6 @@ public class ProductGoodsLogicService { |
163
|
productGoodsBO.setColorNames(colorNameSet);
|
206
|
productGoodsBO.setColorNames(colorNameSet);
|
164
|
}
|
207
|
}
|
165
|
|
208
|
|
166
|
- /**
|
|
|
167
|
- * 转成good对象
|
|
|
168
|
- */
|
|
|
169
|
- private ProductGoodInfo buildProductGoodInfo(Goods goods, Map<Integer, GoodsCoverImage> goodsCoverImagesMap, Map<Integer, Integer> goodStorageMap) {
|
|
|
170
|
- Map<Integer, ProductColor> productColorsMap = basicDataCacheService.getColor();
|
|
|
171
|
- ProductGoodInfo productGoodInfo = new ProductGoodInfo();
|
|
|
172
|
- // 来自Goods
|
|
|
173
|
- productGoodInfo.setGoods_id(String.valueOf(goods.getId()));
|
|
|
174
|
- productGoodInfo.setColor_name(StringUtils.isBlank(goods.getColorName()) ? "" : goods.getColorName());
|
|
|
175
|
- productGoodInfo.setImages_url(StringUtils.isBlank(goods.getColorImage()) ? "" : goods.getColorImage());
|
|
|
176
|
- productGoodInfo.setIs_default(StringUtils.isBlank(goods.getIsDefault()) ? "N" : goods.getIsDefault());
|
|
|
177
|
- productGoodInfo.setColor_id(goods.getColorId() == null ? "" : goods.getColorId().toString());
|
|
|
178
|
- productGoodInfo.setStatus(goods.getStatus() == null ? "0" : goods.getStatus().toString());
|
|
|
179
|
- productGoodInfo.setProduct_skc(goods.getProductSkc() == null ? "" : goods.getProductSkc().toString());
|
|
|
180
|
- productGoodInfo.setColor_value("");
|
|
|
181
|
- // 来自productColorsMap
|
|
|
182
|
- ProductColor productColor = productColorsMap.get(goods.getColorId());
|
|
|
183
|
- if (productColor != null) {
|
|
|
184
|
- String colorCode = productColor.getColorCode();
|
|
|
185
|
- productGoodInfo.setColor_code(colorCode);
|
|
|
186
|
- }
|
|
|
187
|
- // 来自goodsCoverImagesMap
|
|
|
188
|
- GoodsCoverImage goodsCoverImage = goodsCoverImagesMap.get(goods.getId());
|
|
|
189
|
- String cover_1 = "";
|
|
|
190
|
- String cover_2 = "";
|
|
|
191
|
- if (goodsCoverImage != null) {
|
|
|
192
|
- cover_1 = goodsCoverImage.getCover_1();
|
|
|
193
|
- cover_2 = goodsCoverImage.getCover_2();
|
|
|
194
|
- }
|
|
|
195
|
- productGoodInfo.setCover_1(StringUtils.isBlank(cover_1) ? "" : cover_1);
|
|
|
196
|
- productGoodInfo.setCover_2(StringUtils.isBlank(cover_2) ? "" : cover_2);
|
|
|
197
|
- // 来自storageMap
|
|
|
198
|
- Integer storage_num = goodStorageMap.get(goods.getId());
|
|
|
199
|
- productGoodInfo.setStorage_num(storage_num == null ? "0" : storage_num.toString());
|
|
|
200
|
- return productGoodInfo;
|
|
|
201
|
- }
|
209
|
+
|
|
|
210
|
+
|
202
|
} |
211
|
} |