diff --git a/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/BatchPublishServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/BatchPublishServiceImpl.java index 6f3486f..f0d34e7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/BatchPublishServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/BatchPublishServiceImpl.java @@ -124,16 +124,32 @@ public class BatchPublishServiceImpl implements IBatchPublishService Set processedSkuids = new HashSet<>(); // 优先处理URL(更准确) - for (String url : urls) { + for (int i = 0; i < urls.size(); i++) { + String url = urls.get(i); try { + log.info("正在处理第 {}/{} 个URL: {}", i + 1, urls.size(), url); Map productInfo = queryProductInfo(url); - if (productInfo != null) { - String skuid = (String) productInfo.get("skuid"); - if (skuid != null && !processedSkuids.contains(skuid)) { - products.add(productInfo); - processedSkuids.add(skuid); - } + + if (productInfo == null) { + log.warn("URL解析返回空结果: {}", url); + continue; } + + String skuid = (String) productInfo.get("skuid"); + if (skuid == null || skuid.trim().isEmpty()) { + log.warn("商品SKUID为空,URL: {}, 返回数据: {}", url, productInfo); + continue; + } + + if (processedSkuids.contains(skuid)) { + log.info("SKUID已存在,跳过: {}", skuid); + continue; + } + + products.add(productInfo); + processedSkuids.add(skuid); + log.info("成功添加商品: SKUID={}, 名称={}", skuid, productInfo.get("productName")); + } catch (Exception e) { log.error("查询商品信息失败,URL: {}", url, e); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/jarvis/util/LineReportParser.java b/ruoyi-system/src/main/java/com/ruoyi/jarvis/util/LineReportParser.java index 28799d1..5db82f0 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/jarvis/util/LineReportParser.java +++ b/ruoyi-system/src/main/java/com/ruoyi/jarvis/util/LineReportParser.java @@ -12,8 +12,8 @@ import java.util.regex.Pattern; */ public class LineReportParser { - // 京东链接正则表达式 - private static final Pattern JD_URL_PATTERN = Pattern.compile("https?://[^\\s]*?jd\\.com[^\\s]*"); + // 京东链接正则表达式(贪婪匹配,捕获完整URL) + private static final Pattern JD_URL_PATTERN = Pattern.compile("https?://[^\\s]*jd\\.com[^\\s]*"); // SKUID正则表达式(10-13位数字) private static final Pattern SKUID_PATTERN = Pattern.compile("\\b(\\d{10,13})\\b");