|
|
|
@ -17,6 +17,7 @@ import com.ms.api.tool.DsJsonRequestTemplate;
|
|
|
|
|
import com.ms.dal.entity.Category;
|
|
|
|
|
import com.ms.dal.entity.MoveSystemSourceCategory;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
import org.phprpc.util.AssocArray;
|
|
|
|
|
import org.phprpc.util.PHPSerializer;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
@ -66,24 +67,26 @@ public class GetProductInfoByProductId extends SPIBaseService implements Extensi
|
|
|
|
|
resObj = JSON.parseObject(res);
|
|
|
|
|
JSONObject product = resObj.getJSONObject("productInfo");
|
|
|
|
|
Long sourceCategoryId = product.getLong("1688cid");
|
|
|
|
|
String sourceCateListStr = StringUtils.join(product.getJSONArray("cateList"), ">");
|
|
|
|
|
log.info("productInfo:::"+sourceCategoryId.toString());
|
|
|
|
|
MoveSystemSourceCategory moveSystemSourceCategory = moveSystemSourceCategoryService.selectBySourceCategoryId(sourceCategoryId.toString());
|
|
|
|
|
if (!ObjectUtil.isEmpty(moveSystemSourceCategory)) {
|
|
|
|
|
Long moveSystemSourceCategoryId = moveSystemSourceCategory.getMoveSystemSourceCategoryId();
|
|
|
|
|
PHPSerializer p = new PHPSerializer();
|
|
|
|
|
String content = moveSystemSourceCategory.getMatchCategoryList();
|
|
|
|
|
AssocArray assocArray = (AssocArray) p.unserialize(content.getBytes());
|
|
|
|
|
Map assocMap = assocArrayToHash(assocArray);
|
|
|
|
|
List<String> assocMapKeys = new ArrayList<>(assocMap.keySet());
|
|
|
|
|
|
|
|
|
|
log.info("assocArrayToHash" + assocMapKeys.get(assocMapKeys.size() - 1));
|
|
|
|
|
Long categoryId = Long.valueOf(assocMapKeys.get(assocMapKeys.size() - 1));
|
|
|
|
|
Map<String,Object> assocMap = assocArrayToHash(assocArray);
|
|
|
|
|
Long categoryId = this.getBestCategoryId(sourceCateListStr, assocMap);
|
|
|
|
|
if (ObjectUtil.isEmpty(categoryId)) {
|
|
|
|
|
product.put("ddCid", "");
|
|
|
|
|
product.put("ddCategoryList", "");
|
|
|
|
|
} else {
|
|
|
|
|
List<Long> categoryIds = this.getCategoryIdList(categoryId);
|
|
|
|
|
Category category = categoryService.selectByPrimaryKey(Long.valueOf(assocMapKeys.get(assocMapKeys.size() - 1)));
|
|
|
|
|
Category category = categoryService.selectByPrimaryKey(categoryId);
|
|
|
|
|
String path = category.getPath();
|
|
|
|
|
List<String> pathArr = Arrays.asList(path.split(">"));
|
|
|
|
|
product.put("ddCid", categoryIds);
|
|
|
|
|
product.put("ddCategoryList", pathArr);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
product.put("ddCid", "");
|
|
|
|
|
product.put("ddCategoryList", "");
|
|
|
|
@ -131,4 +134,25 @@ public class GetProductInfoByProductId extends SPIBaseService implements Extensi
|
|
|
|
|
log.info(result + "result");
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Long getBestCategoryId(String sourceCateListStr, Map assocMap) {
|
|
|
|
|
Double max = 0.00;
|
|
|
|
|
Long categoryId = null;
|
|
|
|
|
for (Object key : assocMap.keySet()) {
|
|
|
|
|
System.out.println("key:" + key + ", value:" + assocMap.get(key));
|
|
|
|
|
Category category = categoryService.selectByPrimaryKey(Long.valueOf(key.toString()));
|
|
|
|
|
if (!ObjectUtil.isEmpty(category)) {
|
|
|
|
|
Double score = this.getJaroWinklerDistance(sourceCateListStr, category.getPath());
|
|
|
|
|
if (score > max) {
|
|
|
|
|
max = score;
|
|
|
|
|
categoryId = Long.valueOf(key.toString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return categoryId;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private double getJaroWinklerDistance(String first, String second) {
|
|
|
|
|
return StringUtils.getJaroWinklerDistance(first, second);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|