From 8dce7135e0cb7f2b2f3b655bf6c6dd9aa71da942 Mon Sep 17 00:00:00 2001 From: huangyujie <27665451@qq.com> Date: Wed, 25 Mar 2026 11:32:14 +0800 Subject: [PATCH] =?UTF-8?q?fix(pdd):=20cat.rule.get=20param=5Fjson=20?= =?UTF-8?q?=E5=90=AB=20goods=5Fid=3D0=EF=BC=8C=E7=BB=9F=E4=B8=80=20catRule?= =?UTF-8?q?GetParamJson=20=E4=B8=8E=E5=A4=B1=E8=B4=A5=E6=97=A5=E5=BF=97=20?= =?UTF-8?q?paramJsonSnippet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made-with: Cursor --- .../external/pdd/ExternalPddPublishService.java | 6 +----- .../pdd/PddCatRuleSpecAutoResolver.java | 5 +---- .../service/external/pdd/PddOpenApiSupport.java | 17 +++++++++++++++++ .../service/external/pdd/PddPopClient.java | 5 +++-- 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/service/src/main/java/cn/qihangerp/service/external/pdd/ExternalPddPublishService.java b/service/src/main/java/cn/qihangerp/service/external/pdd/ExternalPddPublishService.java index 88088755..9ba341ec 100644 --- a/service/src/main/java/cn/qihangerp/service/external/pdd/ExternalPddPublishService.java +++ b/service/src/main/java/cn/qihangerp/service/external/pdd/ExternalPddPublishService.java @@ -5,8 +5,6 @@ import cn.qihangerp.model.entity.OGoodsSku; import cn.qihangerp.model.request.ExternalGoodsUpsertRequest; import cn.qihangerp.model.vo.PddPublishLaneResultVo; import cn.qihangerp.service.external.shop.PddShopCredential; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -125,10 +123,8 @@ public class ExternalPddPublishService { if (props.isAutoFetchCatRule() && !catFetched) { try { - JSONObject body = new JSONObject(); - body.put("cat_id", catId); String raw = pddPopClient.invoke(gateway, cred.getAppKey(), cred.getAppSecret(), cred.getAccessToken(), - "pdd.goods.cat.rule.get", JSON.toJSONString(body)); + "pdd.goods.cat.rule.get", PddOpenApiSupport.catRuleGetParamJson(catId)); catRuleSnippet = PddOpenApiSupport.snippet(raw, 2000); catFetched = true; } catch (Exception e) { diff --git a/service/src/main/java/cn/qihangerp/service/external/pdd/PddCatRuleSpecAutoResolver.java b/service/src/main/java/cn/qihangerp/service/external/pdd/PddCatRuleSpecAutoResolver.java index 0c883044..d5d4a44a 100644 --- a/service/src/main/java/cn/qihangerp/service/external/pdd/PddCatRuleSpecAutoResolver.java +++ b/service/src/main/java/cn/qihangerp/service/external/pdd/PddCatRuleSpecAutoResolver.java @@ -75,16 +75,13 @@ public class PddCatRuleSpecAutoResolver { if (catId <= 0) { throw new IllegalArgumentException("cat_id 必须为正数,当前=" + catId); } - JSONObject p = new JSONObject(); - // POP 文档 cat_id 类型为 LONG;部分网关对字符串 cat_id 解析失败会报「请求参数不能为空:cat_id」 - p.put("cat_id", catId); return popClient.invoke( gatewayUrl, cred.getAppKey(), cred.getAppSecret(), cred.getAccessToken(), "pdd.goods.cat.rule.get", - JSON.toJSONString(p) + PddOpenApiSupport.catRuleGetParamJson(catId) ); } diff --git a/service/src/main/java/cn/qihangerp/service/external/pdd/PddOpenApiSupport.java b/service/src/main/java/cn/qihangerp/service/external/pdd/PddOpenApiSupport.java index 6608a9db..aa21b138 100644 --- a/service/src/main/java/cn/qihangerp/service/external/pdd/PddOpenApiSupport.java +++ b/service/src/main/java/cn/qihangerp/service/external/pdd/PddOpenApiSupport.java @@ -5,6 +5,9 @@ import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import org.springframework.util.StringUtils; +import java.util.LinkedHashMap; +import java.util.Map; + /** * 解析拼多多 POP 返回 JSON 的通用工具。 * @@ -15,6 +18,20 @@ public final class PddOpenApiSupport { private PddOpenApiSupport() { } + /** + * {@code pdd.goods.cat.rule.get} 的 {@code param_json}。 + *
开放平台约定:除 {@code cat_id} 外,新发品场景须传 {@code goods_id=0};缺省时部分网关会误报「cat_id 不能为空」。
+ */ + public static String catRuleGetParamJson(long catId) { + if (catId <= 0) { + throw new IllegalArgumentException("cat_id 必须为正数: " + catId); + } + Map