|
@@ -57,6 +57,9 @@ public class WlnSkuServiceImpl implements WlnSkuService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 同步sku分类
|
|
|
+ */
|
|
|
private void syncSkuClassify() {
|
|
|
List<JSONObject> list;
|
|
|
|
|
@@ -78,16 +81,16 @@ public class WlnSkuServiceImpl implements WlnSkuService {
|
|
|
for (int i = 0; i < list.size(); i++) {
|
|
|
JSONObject item = list.get(i);
|
|
|
|
|
|
- String catagoryid = item.getString("catagoryid");
|
|
|
+ String catagoryId = item.getString("catagoryid");
|
|
|
String name = item.getString("catagory_name");
|
|
|
String parentId = item.getString("parentid");
|
|
|
|
|
|
- SkuClassify skuClassify = skuClassifyMap.get(catagoryid);
|
|
|
+ SkuClassify skuClassify = skuClassifyMap.get(catagoryId);
|
|
|
if (skuClassify == null) {
|
|
|
skuClassify = new SkuClassify();
|
|
|
skuClassify.setId(IdWorker.getId());
|
|
|
}
|
|
|
- skuClassify.setWlnCatagoryId(catagoryid);
|
|
|
+ skuClassify.setWlnCatagoryId(catagoryId);
|
|
|
skuClassify.setName(name);
|
|
|
skuClassify.setWlnParentId(parentId);
|
|
|
skuClassify.setSort(i);
|
|
@@ -95,8 +98,8 @@ public class WlnSkuServiceImpl implements WlnSkuService {
|
|
|
}
|
|
|
|
|
|
// 赋值parentId
|
|
|
- Map<String, Long> map = skuClassifyList.stream().collect(
|
|
|
- Collectors.toMap(SkuClassify::getWlnCatagoryId, SkuClassify::getId, (t1, t2) -> t1));
|
|
|
+ Map<String, Long> map = skuClassifyList.stream()
|
|
|
+ .collect(Collectors.toMap(SkuClassify::getWlnCatagoryId, SkuClassify::getId, (t1, t2) -> t1));
|
|
|
for (SkuClassify skuClassify : skuClassifyList) {
|
|
|
skuClassify.setParentId(map.getOrDefault(skuClassify.getWlnParentId(), 0L));
|
|
|
}
|
|
@@ -105,75 +108,99 @@ public class WlnSkuServiceImpl implements WlnSkuService {
|
|
|
skuClassifyService.saveOrUpdateBatch(skuClassifyList);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 同步sku
|
|
|
+ */
|
|
|
private void syncSku() {
|
|
|
- Sku tempSku = skuService.getOne(q -> q.orderByDesc(BasePo::getUpdateTime));
|
|
|
- Long modifyTime;
|
|
|
- if (tempSku == null) {
|
|
|
- modifyTime = 965381503L;
|
|
|
- } else {
|
|
|
- modifyTime = tempSku.getUpdateTime().getTime() + 1;
|
|
|
- }
|
|
|
-
|
|
|
- int page = 1;
|
|
|
- int size;
|
|
|
- List<JSONObject> wlnSkuList = new ArrayList<>();
|
|
|
- do {
|
|
|
- try {
|
|
|
- List<JSONObject> itemList = WlnUtil.getSkuList(page, 200, modifyTime);
|
|
|
- wlnSkuList.addAll(itemList);
|
|
|
- page++;
|
|
|
- size = itemList.size();
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("sku同步失败", e);
|
|
|
- throw new ServiceException("sku同步失败");
|
|
|
- }
|
|
|
- } while (size == 200);
|
|
|
|
|
|
+ // 获取万里牛sku列表
|
|
|
+ List<JSONObject> wlnSkuList = getWlnSkuList();
|
|
|
if (wlnSkuList.isEmpty()) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- LogicHolder.setLogicHolder(true);
|
|
|
+ List<String> wlnSkuIdList = wlnSkuList.stream().map(item -> item.getString("sys_goods_uid")).collect(Collectors.toList());
|
|
|
|
|
|
+ LogicHolder.setLogicHolder(true);
|
|
|
// 产品分类map
|
|
|
Map<String, Long> skuClassifyMap = skuClassifyService.mapKV(SkuClassify::getWlnCatagoryId, BaseIdPo::getId, null);
|
|
|
-
|
|
|
// 产品map
|
|
|
- Map<String, Sku> skuMap = skuService.mapKEntity(Sku::getWlnUid, null);
|
|
|
-
|
|
|
+ Map<String, Sku> skuMap = skuService.mapKEntity(Sku::getWlnSkuId, q -> q.in(Sku::getWlnSkuId, wlnSkuIdList));
|
|
|
// 产品规格map
|
|
|
- Map<Long, Map<String, SkuSpec>> specMap = skuSpecService.list(q -> q.isNotNull(SkuSpec::getWlnUid)).stream()
|
|
|
- .collect(Collectors.groupingBy(SkuSpec::getSkuId, Collectors.toMap(SkuSpec::getWlnUid, Function.identity())));
|
|
|
-
|
|
|
+ Map<Long, Map<String, SkuSpec>> specMap = skuSpecService.list(q -> q.in(SkuSpec::getWlnSkuId, wlnSkuIdList)).stream()
|
|
|
+ .collect(Collectors.groupingBy(SkuSpec::getSkuId, Collectors.toMap(SkuSpec::getWlnSkuSpecId, Function.identity())));
|
|
|
LogicHolder.clear();
|
|
|
|
|
|
List<Sku> newSkuList = new ArrayList<>();
|
|
|
List<SkuSpec> newSkuSpecList = new ArrayList<>();
|
|
|
|
|
|
for (JSONObject wlnSku : wlnSkuList) {
|
|
|
- Sku sku = skuMap.get(wlnSku.getString("sys_goods_uid"));
|
|
|
- if (sku == null) {
|
|
|
- sku = createSku(wlnSku, skuClassifyMap);
|
|
|
- if (sku == null) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- newSkuList.add(sku);
|
|
|
+ Sku tempSku = createSku(wlnSku, skuClassifyMap);
|
|
|
+ if (tempSku == null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ Sku oldSku = skuMap.get(tempSku.getWlnSkuId());
|
|
|
+ if (oldSku != null) {
|
|
|
+ tempSku.setId(oldSku.getId());
|
|
|
}
|
|
|
+ newSkuList.add(tempSku);
|
|
|
|
|
|
List<JSONObject> specList = wlnSku.getJSONArray("specs").toJavaList(JSONObject.class);
|
|
|
for (JSONObject wlnSkuSpec : specList) {
|
|
|
- Map<String, SkuSpec> skuSpecMap = specMap.get(sku.getId());
|
|
|
- if (skuSpecMap != null && skuSpecMap.get(wlnSkuSpec.getString("sys_spec_uid")) != null) {
|
|
|
- continue;
|
|
|
+ SkuSpec tempSkuSpec = createSkuSpec(wlnSkuSpec, tempSku);
|
|
|
+
|
|
|
+ SkuSpec oldSkuSpec = null;
|
|
|
+ Map<String, SkuSpec> oldSkuSpecMap = specMap.get(tempSku.getId());
|
|
|
+ if (oldSkuSpecMap != null) {
|
|
|
+ oldSkuSpec = oldSkuSpecMap.get(tempSkuSpec.getWlnSkuSpecId());
|
|
|
}
|
|
|
- newSkuSpecList.add(createSkuSpec(wlnSkuSpec, sku));
|
|
|
+ if (oldSkuSpec != null) {
|
|
|
+ tempSkuSpec.setId(oldSkuSpec.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ newSkuSpecList.add(tempSkuSpec);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- skuService.saveBatch(newSkuList);
|
|
|
- skuSpecService.saveBatch(newSkuSpecList);
|
|
|
+ skuService.saveOrUpdateBatch(newSkuList);
|
|
|
+ skuSpecService.saveOrUpdateBatch(newSkuSpecList);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取万里牛sku列表
|
|
|
+ */
|
|
|
+ private List<JSONObject> getWlnSkuList() {
|
|
|
+ Sku lastSku = skuService.getOne(q -> q.orderByDesc(BasePo::getUpdateTime));
|
|
|
+
|
|
|
+ Long modifyTime;
|
|
|
+ if (lastSku == null) {
|
|
|
+ modifyTime = 965381503L;
|
|
|
+ } else {
|
|
|
+ modifyTime = lastSku.getUpdateTime().getTime() + 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ int page = 1;
|
|
|
+ int size;
|
|
|
+ List<JSONObject> wlnSkuList = new ArrayList<>();
|
|
|
+ do {
|
|
|
+ try {
|
|
|
+ List<JSONObject> itemList = WlnUtil.getSkuList(page, 200, modifyTime);
|
|
|
+ wlnSkuList.addAll(itemList);
|
|
|
+ page++;
|
|
|
+ size = itemList.size();
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("sku同步失败", e);
|
|
|
+ throw new ServiceException("sku同步失败");
|
|
|
+ }
|
|
|
+ } while (size == 200);
|
|
|
+
|
|
|
+ return wlnSkuList;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建sku
|
|
|
+ */
|
|
|
private Sku createSku(JSONObject wlnSku, Map<String, Long> skuClassifyMap) {
|
|
|
|
|
|
String catagoryId = wlnSku.getString("catagory_id");
|
|
@@ -189,7 +216,7 @@ public class WlnSkuServiceImpl implements WlnSkuService {
|
|
|
Sku sku = new Sku();
|
|
|
sku.setId(IdWorker.getId());
|
|
|
sku.setWlnCatagoryId(catagoryId);
|
|
|
- sku.setWlnUid(wlnSku.getString("sys_goods_uid"));
|
|
|
+ sku.setWlnSkuId(wlnSku.getString("sys_goods_uid"));
|
|
|
sku.setSource(2);
|
|
|
sku.setSkuClassifyId(skuClassifyId);
|
|
|
sku.setCode(wlnSku.getString("goods_code"));
|
|
@@ -200,11 +227,15 @@ public class WlnSkuServiceImpl implements WlnSkuService {
|
|
|
return sku;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 创建sku规格
|
|
|
+ */
|
|
|
private SkuSpec createSkuSpec(JSONObject wlnSku, Sku sku) {
|
|
|
SkuSpec skuSpec = new SkuSpec();
|
|
|
skuSpec.setId(IdWorker.getId());
|
|
|
- skuSpec.setWlnUid(wlnSku.getString("sys_spec_uid"));
|
|
|
skuSpec.setSkuId(sku.getId());
|
|
|
+ skuSpec.setWlnSkuId(sku.getWlnSkuId());
|
|
|
+ skuSpec.setWlnSkuSpecId(wlnSku.getString("sys_spec_uid"));
|
|
|
skuSpec.setSpecImgUrl(wlnSku.getString("pic"));
|
|
|
skuSpec.setCode(wlnSku.getString("spec_code"));
|
|
|
skuSpec.setName(sku.getName() + ":" + wlnSku.getString("spec1") + wlnSku.getString("spec2"));
|