Przeglądaj źródła

企得宝ERP SDK实现

skyline 2 tygodni temu
rodzic
commit
a4aa991d65
18 zmienionych plików z 877 dodań i 1 usunięć
  1. 5 0
      qdb-sdk/src/main/java/com/qdb/sdk/QdbClient.java
  2. 48 1
      qdb-sdk/src/main/java/com/qdb/sdk/api/BaseQdbApi.java
  3. 131 0
      qdb-sdk/src/main/java/com/qdb/sdk/api/GoodsApi.java
  4. 73 0
      qdb-sdk/src/main/java/com/qdb/sdk/model/request/GoodsSaveRequest.java
  5. 28 0
      qdb-sdk/src/main/java/com/qdb/sdk/model/request/GoodsUnitQueryRequest.java
  6. 25 0
      qdb-sdk/src/main/java/com/qdb/sdk/model/request/PlatformGoodsBatchSaveRequest.java
  7. 27 0
      qdb-sdk/src/main/java/com/qdb/sdk/model/request/PlatformGoodsBatchUpdateRequest.java
  8. 42 0
      qdb-sdk/src/main/java/com/qdb/sdk/model/request/PlatformGoodsItem.java
  9. 106 0
      qdb-sdk/src/main/java/com/qdb/sdk/model/request/SysGoodsItem.java
  10. 52 0
      qdb-sdk/src/main/java/com/qdb/sdk/model/request/SysGoodsQueryRequest.java
  11. 28 0
      qdb-sdk/src/main/java/com/qdb/sdk/model/request/SysGoodsSaveRequest.java
  12. 25 0
      qdb-sdk/src/main/java/com/qdb/sdk/model/response/GoodsUnitItem.java
  13. 30 0
      qdb-sdk/src/main/java/com/qdb/sdk/model/response/GoodsUnitListResponse.java
  14. 25 0
      qdb-sdk/src/main/java/com/qdb/sdk/model/response/PlatformGoodsBatchErrorMsg.java
  15. 37 0
      qdb-sdk/src/main/java/com/qdb/sdk/model/response/PlatformGoodsBatchResponse.java
  16. 25 0
      qdb-sdk/src/main/java/com/qdb/sdk/model/response/SysGoodsSaveErrorMsg.java
  17. 39 0
      qdb-sdk/src/main/java/com/qdb/sdk/model/response/SysGoodsSaveResponse.java
  18. 131 0
      qdb-sdk/src/main/java/com/qdb/sdk/model/response/SysGoodsVO.java

+ 5 - 0
qdb-sdk/src/main/java/com/qdb/sdk/QdbClient.java

@@ -1,5 +1,6 @@
 package com.qdb.sdk;
 
+import com.qdb.sdk.api.GoodsApi;
 import com.qdb.sdk.api.OrderApi;
 import com.qdb.sdk.api.PurchaseApi;
 import com.qdb.sdk.util.HttpUtil;
@@ -66,6 +67,9 @@ public class QdbClient {
     /** 采购管理 API */
     private final PurchaseApi purchaseApi;
 
+    /** 商品管理 API */
+    private final GoodsApi goodsApi;
+
     /**
      * 构造方法
      *
@@ -81,6 +85,7 @@ public class QdbClient {
         // 初始化各业务 API 模块
         this.orderApi = new OrderApi(this);
         this.purchaseApi = new PurchaseApi(this);
+        this.goodsApi = new GoodsApi(this);
 
         log.info("企得宝ERP SDK 初始化成功, clientId: {}", config.getClientId());
     }

+ 48 - 1
qdb-sdk/src/main/java/com/qdb/sdk/api/BaseQdbApi.java

@@ -39,7 +39,7 @@ public abstract class BaseQdbApi {
      * @throws QdbException 调用失败时抛出
      */
     protected <T> QdbResponse<T> execute(String method, Object request) throws QdbException {
-        return execute(method, request, null);
+        return execute(method, request, (Class<T>) null);
     }
 
     /**
@@ -94,4 +94,51 @@ public abstract class BaseQdbApi {
             throw new QdbException("API 调用异常 [" + method + "]: " + e.getMessage(), e);
         }
     }
+
+    /**
+     * 执行API调用(指定data的TypeReference类型,支持泛型List等)
+     *
+     * @param method      API 方法名
+     * @param request     请求参数对象
+     * @param typeRef     data 字段的 TypeReference,用于泛型类型(如 List&lt;SysGoodsVO&gt;)
+     * @param <T>         data 字段类型
+     * @return 解析后的响应对象
+     * @throws QdbException 调用失败时抛出
+     */
+    @SuppressWarnings("unchecked")
+    protected <T> QdbResponse<T> execute(String method, Object request, TypeReference<T> typeRef) throws QdbException {
+        try {
+            String businessJson = request != null ? JsonUtil.toJsonString(request) : "{}";
+            String responseJson = httpUtil.post(client.getConfig(), method, businessJson);
+
+            log.debug("QDB API 原始响应: {}", responseJson);
+
+            QdbResponse<T> qdbResponse = JsonUtil.parseObject(responseJson,
+                    new TypeReference<QdbResponse<T>>() {});
+
+            if (qdbResponse == null) {
+                throw new QdbException("API 响应解析失败,响应为空");
+            }
+
+            if (!qdbResponse.isSuccess()) {
+                String errorMsg = qdbResponse.getMsg() != null ? qdbResponse.getMsg() : "未知错误";
+                String errorCode = qdbResponse.getErrorCode();
+                throw new QdbException(errorCode, "API 调用失败 [" + method + "]: " + errorMsg);
+            }
+
+            if (typeRef != null && qdbResponse.getData() != null) {
+                String dataJson = JsonUtil.toJsonString(qdbResponse.getData());
+                T typedData = JsonUtil.parseObject(dataJson, typeRef);
+                qdbResponse.setData(typedData);
+            }
+
+            return qdbResponse;
+
+        } catch (QdbException e) {
+            throw e;
+        } catch (Exception e) {
+            log.error("API 调用异常 [{}]", method, e);
+            throw new QdbException("API 调用异常 [" + method + "]: " + e.getMessage(), e);
+        }
+    }
 }

+ 131 - 0
qdb-sdk/src/main/java/com/qdb/sdk/api/GoodsApi.java

@@ -0,0 +1,131 @@
+package com.qdb.sdk.api;
+
+import com.alibaba.fastjson2.TypeReference;
+import com.qdb.sdk.QdbClient;
+import com.qdb.sdk.QdbException;
+import com.qdb.sdk.model.request.*;
+import com.qdb.sdk.model.response.*;
+
+import java.util.List;
+
+/**
+ * 商品管理 API
+ * <p>
+ * 提供商品上传、查询、单位管理等接口的调用封装。
+ * 对应文档:02-商品管理.md
+ * </p>
+ *
+ * @author qdb-sdk
+ * @version 1.0.0
+ */
+public class GoodsApi extends BaseQdbApi {
+
+    /** 商品上传(系统商品 + 店铺商品) */
+    private static final String METHOD_GOODS_SAVE = "foonsu.erp.goods.save";
+
+    /** 系统商品上传(批量,最大100) */
+    private static final String METHOD_SYS_GOODS_SAVE = "foonsu.erp.sysGoods.save";
+
+    /** 商品单位查询 */
+    private static final String METHOD_SYS_GOODS_LIST_UNIT = "foonsu.erp.sysGoods.listUnit";
+
+    /** 系统商品查询 */
+    private static final String METHOD_SYS_GOODS_LIST = "foonsu.erp.sysGoods.list";
+
+    /** 批量新增店铺商品 */
+    private static final String METHOD_PLATFORM_GOODS_BATCH_SAVE = "foonsu.erp.platForm.goods.batchSave";
+
+    /** 批量修改店铺商品 */
+    private static final String METHOD_PLATFORM_GOODS_BATCH_UPDATE = "foonsu.erp.platForm.goods.batchUpdate";
+
+    public GoodsApi(QdbClient client) {
+        super(client);
+    }
+
+    /**
+     * 商品上传
+     * <p>
+     * 上传至系统商品以及店铺商品(即【商品信息】、【店铺商品设置】页面)。
+     * </p>
+     *
+     * @param request 商品上传请求参数
+     * @return 响应对象(data 为 null)
+     * @throws QdbException 调用失败时抛出
+     */
+    public QdbResponse<Void> saveGoods(GoodsSaveRequest request) throws QdbException {
+        return execute(METHOD_GOODS_SAVE, request);
+    }
+
+    /**
+     * 系统商品上传
+     * <p>
+     * 批量上传至系统商品(即【商品信息】页面),单次最大100条。
+     * </p>
+     *
+     * @param request 系统商品上传请求参数
+     * @return 响应对象,data 包含上传结果统计
+     * @throws QdbException 调用失败时抛出
+     */
+    public QdbResponse<SysGoodsSaveResponse> saveSysGoods(SysGoodsSaveRequest request) throws QdbException {
+        return execute(METHOD_SYS_GOODS_SAVE, request, SysGoodsSaveResponse.class);
+    }
+
+    /**
+     * 商品单位查询
+     * <p>
+     * 查询商品单位列表。
+     * </p>
+     *
+     * @param request 查询请求参数(可分页)
+     * @return 响应对象,data 包含单位列表
+     * @throws QdbException 调用失败时抛出
+     */
+    public QdbResponse<GoodsUnitListResponse> listGoodsUnits(GoodsUnitQueryRequest request) throws QdbException {
+        return execute(METHOD_SYS_GOODS_LIST_UNIT, request, GoodsUnitListResponse.class);
+    }
+
+    /**
+     * 系统商品查询
+     * <p>
+     * 查询系统商品信息(即【商品信息】、【组合商品】页面数据)。
+     * </p>
+     *
+     * @param request 查询请求参数(支持多种筛选条件)
+     * @return 响应对象,data 为系统商品列表
+     * @throws QdbException 调用失败时抛出
+     */
+    public QdbResponse<List<SysGoodsVO>> listSysGoods(SysGoodsQueryRequest request) throws QdbException {
+        return execute(METHOD_SYS_GOODS_LIST, request,
+                new TypeReference<List<SysGoodsVO>>() {});
+    }
+
+    /**
+     * 批量新增店铺商品
+     * <p>
+     * 批量新增店铺商品(即【店铺商品设置】页面)。
+     * </p>
+     *
+     * @param request 批量新增请求参数
+     * @return 响应对象,data 包含操作结果统计
+     * @throws QdbException 调用失败时抛出
+     */
+    public QdbResponse<PlatformGoodsBatchResponse> batchSavePlatformGoods(
+            PlatformGoodsBatchSaveRequest request) throws QdbException {
+        return execute(METHOD_PLATFORM_GOODS_BATCH_SAVE, request, PlatformGoodsBatchResponse.class);
+    }
+
+    /**
+     * 批量修改店铺商品
+     * <p>
+     * 批量更新店铺商品信息。
+     * </p>
+     *
+     * @param request 批量修改请求参数
+     * @return 响应对象,data 包含操作结果统计
+     * @throws QdbException 调用失败时抛出
+     */
+    public QdbResponse<PlatformGoodsBatchResponse> batchUpdatePlatformGoods(
+            PlatformGoodsBatchUpdateRequest request) throws QdbException {
+        return execute(METHOD_PLATFORM_GOODS_BATCH_UPDATE, request, PlatformGoodsBatchResponse.class);
+    }
+}

+ 73 - 0
qdb-sdk/src/main/java/com/qdb/sdk/model/request/GoodsSaveRequest.java

@@ -0,0 +1,73 @@
+package com.qdb.sdk.model.request;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 商品上传请求参数
+ * <p>
+ * 对应 Method: {@code foonsu.erp.goods.save}
+ * 上传至系统商品以及店铺商品。
+ * </p>
+ *
+ * @author qdb-sdk
+ * @version 1.0.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class GoodsSaveRequest {
+
+    /** 店铺ID(必填) */
+    private Long shopId;
+
+    /** 系统商品编码 / 平台商品sku编码(必填) */
+    private String goodsOuterId;
+
+    /** 平台商品ID / 平台商品skuId,不填默认取 goodsOuterId */
+    private String platformGoodsCode;
+
+    /** 商品名称(必填) */
+    private String goodsName;
+
+    /** 图片路径 */
+    private String picPath;
+
+    /** 价格 */
+    private String price;
+
+    /** 销售属性(规格名称) */
+    private String properties;
+
+    /** 单位 */
+    private String unit;
+
+    /** 商品品牌 */
+    private String brand;
+
+    /** 商品类别代码 */
+    private String categoryCode;
+
+    /** 商品类别名称,categoryCode 不存在已有类别时默认取 categoryCode */
+    private String categoryName;
+
+    /** 商品简称 */
+    private String shortName;
+
+    /** 商品重量 */
+    private String goodsWeight;
+
+    /** 商品条码 */
+    private List<String> barCodeList;
+
+    /** 供应商名称 */
+    private String providerName;
+
+    /** 商品类型:0-无;1-批次库存;2-唯一码;4-序列号 */
+    private String batchType;
+}

+ 28 - 0
qdb-sdk/src/main/java/com/qdb/sdk/model/request/GoodsUnitQueryRequest.java

@@ -0,0 +1,28 @@
+package com.qdb.sdk.model.request;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 商品单位查询请求参数
+ * <p>
+ * 对应 Method: {@code foonsu.erp.sysGoods.listUnit}
+ * </p>
+ *
+ * @author qdb-sdk
+ * @version 1.0.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class GoodsUnitQueryRequest {
+
+    /** 当前页码 */
+    private Integer pageIndex;
+
+    /** 每页记录数,默认20,最大不超过50 */
+    private Integer pageSize;
+}

+ 25 - 0
qdb-sdk/src/main/java/com/qdb/sdk/model/request/PlatformGoodsBatchSaveRequest.java

@@ -0,0 +1,25 @@
+package com.qdb.sdk.model.request;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 批量新增店铺商品请求参数
+ * <p>
+ * 对应 Method: {@code foonsu.erp.platForm.goods.batchSave}
+ * </p>
+ *
+ * @author qdb-sdk
+ * @version 1.0.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class PlatformGoodsBatchSaveRequest {
+
+    /** 请求数据(必填) */
+    private PlatformGoodsItem data;
+}

+ 27 - 0
qdb-sdk/src/main/java/com/qdb/sdk/model/request/PlatformGoodsBatchUpdateRequest.java

@@ -0,0 +1,27 @@
+package com.qdb.sdk.model.request;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 批量修改店铺商品请求参数
+ * <p>
+ * 对应 Method: {@code foonsu.erp.platForm.goods.batchUpdate}
+ * </p>
+ *
+ * @author qdb-sdk
+ * @version 1.0.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class PlatformGoodsBatchUpdateRequest {
+
+    /** 请求数据集合(必填) */
+    private List<PlatformGoodsItem> data;
+}

+ 42 - 0
qdb-sdk/src/main/java/com/qdb/sdk/model/request/PlatformGoodsItem.java

@@ -0,0 +1,42 @@
+package com.qdb.sdk.model.request;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+ * 平台店铺商品信息
+ * <p>
+ * 用于批量新增/修改店铺商品的 data 元素。
+ * </p>
+ *
+ * @author qdb-sdk
+ * @version 1.0.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class PlatformGoodsItem {
+
+    /** 店铺ID(必填) */
+    private Long shopId;
+
+    /** 平台商品sku编码,需与匹配的系统商品编码一致(必填) */
+    private String goodsOuterId;
+
+    /** 平台商品ID(必填) */
+    private String platformGoodsCode;
+
+    /** 平台商品名称 */
+    private String platformGoodsName;
+
+    /** 平台规格名称 */
+    private String platformGoodsSpecs;
+
+    /** 平台商品售价 */
+    private BigDecimal platformSalePrice;
+}

+ 106 - 0
qdb-sdk/src/main/java/com/qdb/sdk/model/request/SysGoodsItem.java

@@ -0,0 +1,106 @@
+package com.qdb.sdk.model.request;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 系统商品信息
+ * <p>
+ * 对应 {@code foonsu.erp.sysGoods.save} 接口 data 集合中的元素。
+ * </p>
+ *
+ * @author qdb-sdk
+ * @version 1.0.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SysGoodsItem {
+
+    /** 商品外部ID(必填) */
+    private Long outGoodsId;
+
+    /** 商品编码(必填) */
+    private String goodsCode;
+
+    /** 商品名称(必填) */
+    private String goodsName;
+
+    /** 商品单位 */
+    private String unit;
+
+    /** 商品品牌 */
+    private String brand;
+
+    /** 商品短标题 */
+    private String shortGoodsName;
+
+    /** 商品规格 */
+    private String specs;
+
+    /** 商品价格 */
+    private BigDecimal salePrice;
+
+    /** 商品重量 */
+    private BigDecimal goodsWeight;
+
+    /** 商品条码 */
+    private List<String> barCodeList;
+
+    /** 自定义字段1 */
+    private String ext1;
+
+    /** 自定义字段2 */
+    private String ext2;
+
+    /** 自定义字段3 */
+    private String ext3;
+
+    /** 自定义字段4 */
+    private String ext4;
+
+    /** 自定义字段5 */
+    private String ext5;
+
+    /** 自定义字段6 */
+    private String ext6;
+
+    /** 图片路径 */
+    private String picPath;
+
+    /** 图片路径2 */
+    private String picPath2;
+
+    /** 图片路径3 */
+    private String picPath3;
+
+    /** 图片路径4 */
+    private String picPath4;
+
+    /** 图片路径5 */
+    private String picPath5;
+
+    /** 供应商编码 */
+    private String providerCode;
+
+    /** 商品类型:0-无;1-批次库存;2-唯一码;4-序列号 */
+    private String batchType;
+
+    /** 出入库是否校验经销商:0-不校验;1-校验 */
+    private String checkDistributor;
+
+    /** 商品长度,单位:mm */
+    private Integer length;
+
+    /** 商品宽度,单位:mm */
+    private Integer width;
+
+    /** 商品高度,单位:mm */
+    private Integer height;
+}

+ 52 - 0
qdb-sdk/src/main/java/com/qdb/sdk/model/request/SysGoodsQueryRequest.java

@@ -0,0 +1,52 @@
+package com.qdb.sdk.model.request;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+/**
+ * 系统商品查询请求参数
+ * <p>
+ * 对应 Method: {@code foonsu.erp.sysGoods.list}
+ * 查询系统商品信息(即【商品信息】、【组合商品】页面数据)。
+ * </p>
+ *
+ * @author qdb-sdk
+ * @version 1.0.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SysGoodsQueryRequest {
+
+    /** 当前页码 */
+    private Integer pageIndex;
+
+    /** 每页记录数,默认20,最大不超过50 */
+    private Integer pageSize;
+
+    /** 商品ID */
+    private Long goodsId;
+
+    /** 商品编码 */
+    private String goodsCode;
+
+    /** 商品状态:0-停用;1-启用 */
+    private Integer status;
+
+    /** 组合商品:0-非组合;1-组合 */
+    private Integer combination;
+
+    /** 商品货号 */
+    private String articleNo;
+
+    /** 修改时间开始 */
+    private Date modifyDateStart;
+
+    /** 修改时间结束 */
+    private Date modifyDateEnd;
+}

+ 28 - 0
qdb-sdk/src/main/java/com/qdb/sdk/model/request/SysGoodsSaveRequest.java

@@ -0,0 +1,28 @@
+package com.qdb.sdk.model.request;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 系统商品上传请求参数
+ * <p>
+ * 对应 Method: {@code foonsu.erp.sysGoods.save}
+ * 上传至系统商品(即【商品信息】页面),单次最大100条。
+ * </p>
+ *
+ * @author qdb-sdk
+ * @version 1.0.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SysGoodsSaveRequest {
+
+    /** 系统商品新增请求集合,最大100(必填) */
+    private List<SysGoodsItem> data;
+}

+ 25 - 0
qdb-sdk/src/main/java/com/qdb/sdk/model/response/GoodsUnitItem.java

@@ -0,0 +1,25 @@
+package com.qdb.sdk.model.response;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 商品单位信息
+ *
+ * @author qdb-sdk
+ * @version 1.0.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class GoodsUnitItem {
+
+    /** 单位ID */
+    private Long id;
+
+    /** 单位名称 */
+    private String unit;
+}

+ 30 - 0
qdb-sdk/src/main/java/com/qdb/sdk/model/response/GoodsUnitListResponse.java

@@ -0,0 +1,30 @@
+package com.qdb.sdk.model.response;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 商品单位查询响应数据
+ * <p>
+ * 对应 {@code foonsu.erp.sysGoods.listUnit} 接口的 data 字段。
+ * </p>
+ *
+ * @author qdb-sdk
+ * @version 1.0.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class GoodsUnitListResponse {
+
+    /** 记录总数 */
+    private Integer total;
+
+    /** 单位列表 */
+    private List<GoodsUnitItem> data;
+}

+ 25 - 0
qdb-sdk/src/main/java/com/qdb/sdk/model/response/PlatformGoodsBatchErrorMsg.java

@@ -0,0 +1,25 @@
+package com.qdb.sdk.model.response;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 店铺商品批量操作错误信息
+ *
+ * @author qdb-sdk
+ * @version 1.0.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class PlatformGoodsBatchErrorMsg {
+
+    /** 失败的外部唯一ID */
+    private String failOutId;
+
+    /** 失败信息 */
+    private String errorMsg;
+}

+ 37 - 0
qdb-sdk/src/main/java/com/qdb/sdk/model/response/PlatformGoodsBatchResponse.java

@@ -0,0 +1,37 @@
+package com.qdb.sdk.model.response;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 店铺商品批量操作响应数据
+ * <p>
+ * 对应 {@code foonsu.erp.platForm.goods.batchSave} 和
+ * {@code foonsu.erp.platForm.goods.batchUpdate} 接口的 data 字段。
+ * </p>
+ *
+ * @author qdb-sdk
+ * @version 1.0.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class PlatformGoodsBatchResponse {
+
+    /** 总数量 */
+    private Integer totalCount;
+
+    /** 成功数量 */
+    private Integer successCount;
+
+    /** 失败数量 */
+    private Integer failCount;
+
+    /** 错误信息集合 */
+    private List<PlatformGoodsBatchErrorMsg> errorMsgList;
+}

+ 25 - 0
qdb-sdk/src/main/java/com/qdb/sdk/model/response/SysGoodsSaveErrorMsg.java

@@ -0,0 +1,25 @@
+package com.qdb.sdk.model.response;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 系统商品上传错误信息
+ *
+ * @author qdb-sdk
+ * @version 1.0.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SysGoodsSaveErrorMsg {
+
+    /** 失败的外部唯一ID */
+    private String failOutId;
+
+    /** 失败信息 */
+    private String errorMsg;
+}

+ 39 - 0
qdb-sdk/src/main/java/com/qdb/sdk/model/response/SysGoodsSaveResponse.java

@@ -0,0 +1,39 @@
+package com.qdb.sdk.model.response;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 系统商品上传响应数据
+ * <p>
+ * 对应 {@code foonsu.erp.sysGoods.save} 接口的 data 字段。
+ * </p>
+ *
+ * @author qdb-sdk
+ * @version 1.0.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SysGoodsSaveResponse {
+
+    /** 上传总数 */
+    private Integer totalCount;
+
+    /** 更新数量 */
+    private Integer updateCount;
+
+    /** 新增数量 */
+    private Integer insertCount;
+
+    /** 失败数量 */
+    private Integer failCount;
+
+    /** 错误信息集合 */
+    private List<SysGoodsSaveErrorMsg> errorMsgList;
+}

+ 131 - 0
qdb-sdk/src/main/java/com/qdb/sdk/model/response/SysGoodsVO.java

@@ -0,0 +1,131 @@
+package com.qdb.sdk.model.response;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 系统商品信息
+ * <p>
+ * 对应 {@code foonsu.erp.sysGoods.list} 接口 data 列表中的元素。
+ * </p>
+ *
+ * @author qdb-sdk
+ * @version 1.0.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SysGoodsVO {
+
+    /** 商品ID */
+    private Long goodsId;
+
+    /** 商品编码 */
+    private String goodsCode;
+
+    /** 商品名称 */
+    private String goodsName;
+
+    /** 商品简称 */
+    private String shortGoodsName;
+
+    /** 规格名称 */
+    private String specs;
+
+    /** 单位名称 */
+    private String skUnit;
+
+    /** 商品类别编码 */
+    private String goodsKindCode;
+
+    /** 商品类别名称 */
+    private String goodsKindName;
+
+    /** 品牌名称 */
+    private String brand;
+
+    /** 税率类型:0-含税;1-免税;2-未税 */
+    private Integer taxType;
+
+    /** 税率 */
+    private BigDecimal stockTaxRate;
+
+    /** 商品类型:0-普通商品;1-批次;2-唯一码 */
+    private String batchType;
+
+    /** 含有效期:0-不含;1-含 */
+    private String isExpried;
+
+    /** 保质期天数 */
+    private Integer validDays;
+
+    /** 商品条码 */
+    private List<String> barCodeList;
+
+    /** 供应商ID */
+    private Long providerId;
+
+    /** 供应商名称 */
+    private String providerName;
+
+    /** 标准售价 */
+    private BigDecimal salePrice;
+
+    /** 图片路径 */
+    private String picPath;
+
+    /** 组合商品:0-非组合;1-组合 */
+    private String combination;
+
+    /** 商品货号 */
+    private String articleNo;
+
+    /** 重量 */
+    private BigDecimal weight;
+
+    /** 长(单位mm) */
+    private Integer length;
+
+    /** 宽(单位mm) */
+    private Integer width;
+
+    /** 高(单位mm) */
+    private Integer height;
+
+    /** 体积单位 */
+    private String bulkUnit;
+
+    /** 采购指导价 */
+    private BigDecimal costPrice;
+
+    /** 自定义字段1 */
+    private String ext1;
+
+    /** 自定义字段2 */
+    private String ext2;
+
+    /** 自定义字段3 */
+    private String ext3;
+
+    /** 自定义字段4 */
+    private String ext4;
+
+    /** 自定义字段5 */
+    private String ext5;
+
+    /** 自定义字段6 */
+    private String ext6;
+
+    /** 修改日期 */
+    private Date modifyDate;
+
+    /** 组合商品明细集合 */
+    private List<Object> combinationGoodsList;
+}