diff --git a/service/src/main/java/cn/qihangerp/service/external/pdd/ExternalPddConfiguration.java b/service/src/main/java/cn/qihangerp/service/external/pdd/ExternalPddConfiguration.java index 5f549416..e74ccb95 100644 --- a/service/src/main/java/cn/qihangerp/service/external/pdd/ExternalPddConfiguration.java +++ b/service/src/main/java/cn/qihangerp/service/external/pdd/ExternalPddConfiguration.java @@ -1,7 +1,16 @@ package cn.qihangerp.service.external.pdd; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.core.convert.converter.Converter; + +import java.util.ArrayList; +import java.util.List; /** * @author guochengyu @@ -9,4 +18,28 @@ import org.springframework.context.annotation.Configuration; @Configuration @EnableConfigurationProperties(ExternalPddProperties.class) public class ExternalPddConfiguration { + + private static final Logger log = LoggerFactory.getLogger(ExternalPddConfiguration.class); + + /** + * K8s/Helm 常把 {@code sku-overrides: []} 落成环境变量 {@code EXTERNAL_PDD_SKU_OVERRIDES=[]}(字符串), + * 默认 Binder 无法转为 {@link List};此处兼容 {@code []}、空串及 JSON 数组。 + */ + @Bean + public Converter> externalPddSkuOverridesStringConverter() { + return source -> { + String s = source == null ? "" : source.trim(); + if (s.isEmpty() || "[]".equals(s)) { + return new ArrayList<>(); + } + try { + List list = + JSON.parseArray(s, ExternalPddProperties.PddSkuOverride.class); + return list != null ? list : new ArrayList<>(); + } catch (JSONException e) { + log.warn("external.pdd.sku-overrides 环境变量/配置非合法 JSON,已按空列表处理: {}", e.getMessage()); + return new ArrayList<>(); + } + }; + } }