From e3f01608767d00e4db199bdaa47567b2076ba380 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8D=92?= Date: Sun, 17 Aug 2025 22:18:16 +0800 Subject: [PATCH] 1 --- .../van/business/util/JDProductService.java | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/src/main/java/cn/van/business/util/JDProductService.java b/src/main/java/cn/van/business/util/JDProductService.java index 9f61c0c..8928037 100644 --- a/src/main/java/cn/van/business/util/JDProductService.java +++ b/src/main/java/cn/van/business/util/JDProductService.java @@ -529,4 +529,66 @@ public class JDProductService { // 存入 Redis Hash redisTemplate.opsForHash().put(key, hashKey, JSON.toJSONString(data)); } + + /** + * 提取商品价格信息 + * + * @param productInfo 商品查询结果 + * @return 包含价格信息的Map + */ + public Map extractPriceInfo(GoodsQueryResult productInfo) { + Map priceMap = new HashMap<>(); + + if (productInfo == null || productInfo.getData() == null || productInfo.getData().length == 0) { + priceMap.put("error", "商品信息为空"); + return priceMap; + } + + try { + // 获取第一个商品的价格信息 + var priceInfo = productInfo.getData()[0].getPriceInfo(); + if (priceInfo != null) { + priceMap.put("price", priceInfo.getPrice()); // 原价 + priceMap.put("lowestPrice", priceInfo.getLowestPrice()); // 最低价 + priceMap.put("lowestCouponPrice", priceInfo.getLowestCouponPrice()); // 最低券后价 + priceMap.put("lowestPriceType", priceInfo.getLowestPriceType()); // 最低价类型 + + // 计算优惠金额 + if (priceInfo.getPrice() != null && priceInfo.getLowestCouponPrice() != null) { + long discount = priceInfo.getPrice() - priceInfo.getLowestCouponPrice(); + priceMap.put("discount", discount); // 优惠金额 + } + + // 格式化价格显示 + priceMap.put("priceFormatted", "¥" + (priceInfo.getPrice() != null ? priceInfo.getPrice() / 100.0 : 0)); + priceMap.put("lowestPriceFormatted", "¥" + (priceInfo.getLowestPrice() != null ? priceInfo.getLowestPrice() / 100.0 : 0)); + priceMap.put("lowestCouponPriceFormatted", "¥" + (priceInfo.getLowestCouponPrice() != null ? priceInfo.getLowestCouponPrice() / 100.0 : 0)); + } else { + priceMap.put("error", "价格信息为空"); + } + } catch (Exception e) { + log.error("提取价格信息时发生异常", e); + priceMap.put("error", "提取价格信息时发生异常: " + e.getMessage()); + } + + return priceMap; + } + + /** + * 通过商品链接提取价格信息 + * + * @param uJDUrl 京东商品链接 + * @return 包含价格信息的Map + */ + public Map extractPriceInfoByUrl(String uJDUrl) { + try { + GoodsQueryResult productInfo = queryProductInfoByUJDUrl(uJDUrl); + return extractPriceInfo(productInfo); + } catch (Exception e) { + log.error("通过链接提取价格信息时发生异常: {}", uJDUrl, e); + Map errorMap = new HashMap<>(); + errorMap.put("error", "通过链接提取价格信息时发生异常: " + e.getMessage()); + return errorMap; + } + } }