1
This commit is contained in:
@@ -2029,6 +2029,81 @@ public class JDUtil {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 提供给对外API使用:根据商品类型选择一条评论
|
||||
* 优先返回未使用的京东评论;若无则尝试淘宝映射;仍无则从已使用中随机一条。
|
||||
* 返回的 Comment 可能不是持久化实体(如淘宝生成),调用方需自行处理 images 解析。
|
||||
*/
|
||||
public synchronized cn.van.business.model.pl.Comment selectCommentForProductType(String productType) {
|
||||
try {
|
||||
// 加载型号映射
|
||||
getProductTypeMap();
|
||||
String productId = productTypeMap.get(productType);
|
||||
if (productId == null || productId.trim().isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// 本地京东评论(优先未使用)
|
||||
java.util.List<cn.van.business.model.pl.Comment> availableComments = commentRepository
|
||||
.findByProductIdAndIsUseNotAndPictureUrlsIsNotNull(productId, 1);
|
||||
java.util.List<cn.van.business.model.pl.Comment> usedComments = commentRepository
|
||||
.findByProductIdAndIsUseNotAndPictureUrlsIsNotNull(productId, 0);
|
||||
|
||||
if (availableComments != null && !availableComments.isEmpty()) {
|
||||
java.util.Collections.shuffle(availableComments);
|
||||
cn.van.business.model.pl.Comment chosen = availableComments.get(0);
|
||||
// 标记为已使用
|
||||
try {
|
||||
if (chosen.getIsUse() == null || chosen.getIsUse() == 0) {
|
||||
chosen.setIsUse(1);
|
||||
commentRepository.save(chosen);
|
||||
}
|
||||
} catch (Exception ignore) {}
|
||||
return chosen;
|
||||
}
|
||||
|
||||
// 无可用京东评论时,尝试淘宝映射生成
|
||||
try {
|
||||
cn.van.business.model.pl.Comment taobao = generateTaobaoComment(productType);
|
||||
if (taobao != null) {
|
||||
return taobao; // 注意:此处返回的对象未必持久化
|
||||
}
|
||||
} catch (Exception ignore) {}
|
||||
|
||||
// 兜底:从已使用京东评论里取一条
|
||||
if (usedComments != null && !usedComments.isEmpty()) {
|
||||
java.util.Collections.shuffle(usedComments);
|
||||
return usedComments.get(0);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("selectCommentForProductType error", e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 工具:将数据库中的 pictureUrls 解析为列表。
|
||||
* 支持 JSON 数组或以逗号/空白分隔的纯文本。
|
||||
*/
|
||||
public static java.util.List<String> parsePictureUrlsToList(String raw) {
|
||||
if (raw == null || raw.trim().isEmpty()) return java.util.Collections.emptyList();
|
||||
try {
|
||||
Object parsed = com.alibaba.fastjson2.JSON.parse(raw);
|
||||
if (parsed instanceof com.alibaba.fastjson2.JSONArray) {
|
||||
com.alibaba.fastjson2.JSONArray ja = (com.alibaba.fastjson2.JSONArray) parsed;
|
||||
java.util.List<String> list = new java.util.ArrayList<>();
|
||||
for (int i = 0; i < ja.size(); i++) {
|
||||
Object v = ja.get(i);
|
||||
if (v != null) list.add(String.valueOf(v));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
} catch (Exception ignore) {}
|
||||
return java.util.Arrays.stream(raw.split("[\n,\t ]+"))
|
||||
.filter(s -> s != null && !s.trim().isEmpty())
|
||||
.collect(java.util.stream.Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据商品类型生成评论内容,并优先使用京东评论,若无则使用淘宝评论
|
||||
|
||||
Reference in New Issue
Block a user