|
@@ -0,0 +1,92 @@
|
|
|
+package com.sd.wln.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.json.JSONArray;
|
|
|
+import cn.hutool.json.JSONObject;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
+import com.alibaba.nacos.shaded.com.google.common.base.Joiner;
|
|
|
+import com.sd.business.entity.sku.po.SkuClassifyParam;
|
|
|
+import com.sd.business.entity.sku.vo.SkuClassifyVo;
|
|
|
+import com.sd.business.service.sku.SkuClassifyService;
|
|
|
+import com.sd.wln.service.WanliService;
|
|
|
+import com.sd.wln.service.WanliSkuService;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Author
|
|
|
+ * @Description //TODO
|
|
|
+ * @Date 2023年07月03日 14:37
|
|
|
+ **/
|
|
|
+
|
|
|
+public class WanliServiceImpl implements WanliService {
|
|
|
+ @Autowired
|
|
|
+ SkuClassifyService skuClassifyService;
|
|
|
+ @Autowired
|
|
|
+ WanliSkuService wanliSkuService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Integer importSku(SkuClassifyParam param) {
|
|
|
+ List<SkuClassifyVo> skuClassifyList = skuClassifyService.getList();
|
|
|
+ List<Long> ids = skuClassifyList.stream().map(SkuClassifyVo::getId).collect(Collectors.toList());
|
|
|
+ JSONObject jsonObject = wanliSkuService.getSkuClassIfy(param);
|
|
|
+ JSONArray dataArray = JSONUtil.parseArray(jsonObject.get("data"));
|
|
|
+ List<SkuClassifyVo> skuClassifyVoList = new ArrayList<>();
|
|
|
+ for (int i=0;i<dataArray.size();i++){
|
|
|
+ SkuClassifyVo skuClassifyVo = new SkuClassifyVo();
|
|
|
+ JSONObject data = JSONUtil.parseObj(dataArray.get(i));
|
|
|
+ if(data.containsKey("catagoryid")){
|
|
|
+ skuClassifyVo.setId((Long) data.get("catagoryid"));
|
|
|
+ }
|
|
|
+ if(data.containsKey("catagory_name")){
|
|
|
+ skuClassifyVo.setName(data.get("catagory_name").toString());
|
|
|
+ }
|
|
|
+ if(data.containsKey("parentid")){
|
|
|
+ skuClassifyVo.setParentId((Long) data.get("parentid"));
|
|
|
+ }else{
|
|
|
+ skuClassifyVo.setParentId(0L);
|
|
|
+ }
|
|
|
+ skuClassifyVo.setCreateTime(new Date());
|
|
|
+ if(!ids.contains(skuClassifyVo.getId())){
|
|
|
+ skuClassifyVoList.add(skuClassifyVo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (SkuClassifyVo s:skuClassifyVoList){
|
|
|
+ List<Long> parentCategory = getParentCategory(s.getId(), skuClassifyVoList);
|
|
|
+ s.setAncestors(Joiner.on(",").join(parentCategory));
|
|
|
+ }
|
|
|
+
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取当前节点得所有父级ID
|
|
|
+ * @param id
|
|
|
+ * @param skuClassifyVoList
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private static List<Long> getParentCategory(Long id, List<SkuClassifyVo> skuClassifyVoList) {
|
|
|
+ //递归获取父级ids,不包含自己
|
|
|
+ List<Long> parentIds = new ArrayList<>();
|
|
|
+ parentIds.add(0L);
|
|
|
+ getParentTaxCompanyIds(skuClassifyVoList, id, parentIds);
|
|
|
+ return parentIds;
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void getParentTaxCompanyIds(List<SkuClassifyVo> skuClassifyVos, Long id, List<Long> parentIds) {
|
|
|
+ for (SkuClassifyVo taxCompany : skuClassifyVos) {
|
|
|
+ if (taxCompany.getParentId()==0) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ //判断是否有父节点
|
|
|
+ if (id.equals(taxCompany.getId())) {
|
|
|
+ parentIds.add(taxCompany.getParentId());
|
|
|
+ getParentTaxCompanyIds(skuClassifyVos, taxCompany.getParentId(), parentIds);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|