1. Qlink Warehouse SDK
1.1. 概述
Qlink Warehouse SDK 提供了调用 GlobalWarehouseController 所有方法的客户端SDK,支持仓库管理的各种操作。
1.2. 主要功能
1.2.1. QlinkWarehouseClient
QlinkWarehouseClient
是仓库管理的主要SDK客户端,提供以下功能:
仓库初始化
- 初始化仓库列表
- 初始化仓库物流渠道列表
订单管理
- 创建仓库订单
- 查询仓库订单
- 取消仓库订单
库存管理
- 库存同步
入库单管理
- 创建入库单
- 查询入库单列表
- 取消入库单
商品管理
- 商品下发仓库
1.3. 快速开始
1.3.1. 添加依赖
<dependency>
<groupId>com.800best</groupId>
<artifactId>open-platform-sdk</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
1.3.2. 初始化客户端
方式1: 直接创建
String baseUrl = "http://localhost:8080"; // API服务地址
String appKey = "your-app-key"; // 应用密钥
String appSecret = "your-app-secret"; // 应用密钥
QlinkWarehouseClient client = new QlinkWarehouseClient(baseUrl, appKey, appSecret);
方式2: 使用工厂类
// 开发环境
QlinkWarehouseClient client = QlinkWarehouseClientFactory.createDevClient(appKey, appSecret);
// 测试环境
QlinkWarehouseClient client = QlinkWarehouseClientFactory.createTestClient(appKey, appSecret);
// 生产环境
QlinkWarehouseClient client = QlinkWarehouseClientFactory.createProdClient(appKey, appSecret);
// 自定义环境
QlinkWarehouseClient client = QlinkWarehouseClientFactory.createClientByEnvironment("dev", appKey, appSecret);
方式3: 使用配置类
// 创建配置
QlinkWarehouseConfig config = QlinkWarehouseConfig.createDevConfig(appKey, appSecret);
QlinkWarehouseClient client = new QlinkWarehouseClient(config);
// 或者使用工厂类
QlinkWarehouseClient client = QlinkWarehouseClientFactory.createClient(config);
方式4: 自定义配置
// 创建自定义配置客户端
QlinkWarehouseClient client = QlinkWarehouseClientFactory.createCustomClient(
baseUrl, appKey, appSecret, 5000, 30000, true);
1.3.3. 使用示例
初始化仓库列表
List<String> warehouseKeys = Arrays.asList("WH001", "WH002");
QlinkWarehouseResponse<WarehouseInitResponse> response = client.initWarehouses(warehouseKeys);
if (response.isSuccess()) {
System.out.println("初始化成功: " + response.getResult());
} else {
System.err.println("初始化失败: " + response.getErrorMsg());
}
创建仓库订单
WarehouseCreateOrderRequest request = new WarehouseCreateOrderRequest();
request.setWarehouseKey("WH001");
request.setOrderNumber("ORD123456");
request.setOnlineOrderId("ONLINE123456");
request.setShopName("测试店铺");
request.setWarehouseCode("WH001");
request.setLogisticsCode("LOG001");
request.setPlatform("TEMU");
request.setFreight(new BigDecimal("10.00"));
// 设置收件人信息
WarehouseCreateOrderRequest.Receiver receiver = new WarehouseCreateOrderRequest.Receiver();
receiver.setName("张三");
receiver.setPhone("13800138000");
receiver.setEmail("zhangsan@example.com");
receiver.setCountry("CN");
receiver.setState("北京");
receiver.setCity("北京");
receiver.setDistrict("朝阳区");
receiver.setAddress1("测试地址1");
receiver.setPostalCode("100000");
request.setReceiver(receiver);
// 设置商品信息
List<WarehouseCreateOrderRequest.SkuInfo> skuList = new ArrayList<>();
WarehouseCreateOrderRequest.SkuInfo skuInfo = new WarehouseCreateOrderRequest.SkuInfo();
skuInfo.setSku("SKU001");
skuInfo.setErpSku("ERP001");
skuInfo.setName("测试商品");
skuInfo.setQuantity("2");
skuInfo.setAmount(new BigDecimal("99.99"));
skuList.add(skuInfo);
request.setSkuList(skuList);
QlinkWarehouseResponse<WarehouseCreateOrderResponse> response = client.createOrder(request);
查询仓库订单
WarehouseGetOrderRequest request = new WarehouseGetOrderRequest();
request.setOrderNumber("ORD123456");
request.setWarehouseCode("WH001");
QlinkWarehouseResponse<WarehouseGetOrderResponse> response = client.getOrder(request);
取消仓库订单
WarehouseCancelOrderRequest request = new WarehouseCancelOrderRequest();
request.setOrderNumber("ORD123456");
request.setWarehouseCode("WH001");
request.setCancelReason("用户取消");
QlinkWarehouseResponse<WarehouseCancelOrderResponse> response = client.cancelOrder(request);
创建入库单
WarehouseCreateAsnOrderRequest request = new WarehouseCreateAsnOrderRequest();
request.setWarehouseKey("WH001");
request.setAsnNumber("ASN123456");
request.setWarehouseCode("WH001");
request.setCustomNumber("REF123456");
request.setEstimatedArrivalDate(System.currentTimeMillis());
request.setTrackNumber("TRACK123456");
request.setType("NORMAL");
// 设置商品信息
List<WarehouseCreateAsnOrderRequest.SkuInfo> skuList = new ArrayList<>();
WarehouseCreateAsnOrderRequest.SkuInfo skuInfo = new WarehouseCreateAsnOrderRequest.SkuInfo();
skuInfo.setSku("SKU001");
skuInfo.setName("测试商品");
skuInfo.setQuantity(100L);
skuList.add(skuInfo);
request.setSkuList(skuList);
QlinkWarehouseResponse<WarehouseCreateAsnOrderResponse> response = client.createAsnOrder(request);
商品下发仓库
WarehouseInsertSkuInfoRequest request = new WarehouseInsertSkuInfoRequest();
request.setWarehouseKey("WH001");
request.setWarehouseCode("WH001");
request.setSku("SKU001");
request.setErpSku("ERP001");
request.setTitle("测试商品");
request.setBarcode("123456789");
request.setSpecifications("规格信息");
request.setImageUrl("http://example.com/image.jpg");
request.setWeight(new BigDecimal("0.5"));
request.setNetWeight(new BigDecimal("0.4"));
request.setWeightUnit("KG");
request.setLength(new BigDecimal("10"));
request.setWidth(new BigDecimal("5"));
request.setHeight(new BigDecimal("3"));
request.setDimensionUnit("CM");
request.setItemPackage(1);
QlinkWarehouseResponse<WarehouseInsertSkuInfoResponse> response = client.insertSkuInfo(request);
1.4. 配置说明
1.4.1. QlinkWarehouseConfig
配置类提供了灵活的配置选项:
QlinkWarehouseConfig config = new QlinkWarehouseConfig();
config.setBaseUrl("http://localhost:8080");
config.setAppKey("your-app-key");
config.setAppSecret("your-app-secret");
config.setConnectTimeout(5000); // 连接超时时间(毫秒)
config.setReadTimeout(30000); // 读取超时时间(毫秒)
config.setEnableLog(true); // 是否启用日志
config.setRetryCount(3); // 重试次数
config.setRetryInterval(1000); // 重试间隔(毫秒)
QlinkWarehouseClient client = new QlinkWarehouseClient(config);
1.4.2. 环境配置
SDK提供了预定义的环境配置:
// 开发环境配置
QlinkWarehouseConfig devConfig = QlinkWarehouseConfig.createDevConfig(appKey, appSecret);
// 测试环境配置
QlinkWarehouseConfig testConfig = QlinkWarehouseConfig.createTestConfig(appKey, appSecret);
// 生产环境配置
QlinkWarehouseConfig prodConfig = QlinkWarehouseConfig.createProdConfig(appKey, appSecret);
1.5. API 接口说明
1.5.1. 初始化仓库列表
方法: initWarehouses(List<String> warehouseKeys)
参数:
warehouseKeys
: 仓库key数组
返回: QlinkWarehouseResponse<WarehouseInitResponse>
1.5.2. 初始化仓库物流渠道
方法: initChannels(List<String> warehouseKeys, String warehouseCode)
参数:
warehouseKeys
: 仓库key数组warehouseCode
: 仓库编码
返回: QlinkWarehouseResponse<WarehouseInitChannelsResponse>
1.5.3. 创建仓库订单
方法: createOrder(WarehouseCreateOrderRequest createOrderRequest)
参数:
createOrderRequest
: 创建订单请求对象
返回: QlinkWarehouseResponse<WarehouseCreateOrderResponse>
1.5.4. 查询仓库订单
方法: getOrder(WarehouseGetOrderRequest getOrderRequest)
参数:
getOrderRequest
: 查询订单请求对象
返回: QlinkWarehouseResponse<WarehouseGetOrderResponse>
1.5.5. 取消仓库订单
方法: cancelOrder(WarehouseCancelOrderRequest cancelOrderRequest)
参数:
cancelOrderRequest
: 取消订单请求对象
返回: QlinkWarehouseResponse<WarehouseCancelOrderResponse>
1.5.6. 库存同步
方法: syncInventory(WarehouseSyncInventoryRequest syncInventoryRequest)
参数:
syncInventoryRequest
: 库存同步请求对象
返回: QlinkWarehouseResponse<WarehouseSyncInventoryResponse>
1.5.7. 创建入库单
方法: createAsnOrder(WarehouseCreateAsnOrderRequest createAsnOrderRequest)
参数:
createAsnOrderRequest
: 创建入库单请求对象
返回: QlinkWarehouseResponse<WarehouseCreateAsnOrderResponse>
1.5.8. 查询入库单列表
方法: getAsnList(WarehouseGetAsnListRequest getAsnListRequest)
参数:
getAsnListRequest
: 查询入库单请求对象
返回: QlinkWarehouseResponse<WarehouseGetAsnListResponse>
1.5.9. 取消入库单
方法: cancelAsnOrder(WarehouseCancelAsnOrderRequest cancelAsnOrderRequest)
参数:
cancelAsnOrderRequest
: 取消入库单请求对象
返回: QlinkWarehouseResponse<WarehouseCancelAsnOrderResponse>
1.5.10. 商品下发仓库
方法: insertSkuInfo(WarehouseInsertSkuInfoRequest insertSkuInfoRequest)
参数:
insertSkuInfoRequest
: 商品信息请求对象
返回: QlinkWarehouseResponse<WarehouseInsertSkuInfoResponse>
1.6. 错误处理
所有方法都会返回 QlinkWarehouseResponse<T>
对象,包含以下字段:
success
: 是否成功code
: 响应代码errorMsg
: 错误信息result
: 响应结果
QlinkWarehouseResponse<WarehouseInitResponse> response = client.initWarehouses(warehouseKeys);
if (response.isSuccess()) {
// 处理成功响应
WarehouseInitResponse result = response.getResult();
// ...
} else {
// 处理错误
String errorMsg = response.getErrorMsg();
String code = response.getCode();
// ...
}
1.7. 配置说明
1.7.1. 签名算法
SDK 使用简单的签名算法,可以根据实际需求修改 generateSign
方法:
private String generateSign(QlinkWarehouseRequest<?> request) {
// 自定义签名算法
String signContent = request.getAppKey() + request.getMethod() +
JSON.toJSONString(request.getContent()) + appSecret;
return java.util.Base64.getEncoder().encodeToString(signContent.getBytes());
}
1.7.2. HTTP 配置
SDK 使用 Apache HttpClient 发送请求,可以通过修改 HttpUtil
来调整超时时间等配置。
1.7.3. 日志配置
可以通过配置类控制日志输出:
QlinkWarehouseConfig config = new QlinkWarehouseConfig();
config.setEnableLog(true); // 启用详细日志
config.setEnableLog(false); // 关闭详细日志
1.8. 注意事项
- 安全性: 请妥善保管
appKey
和appSecret
,不要泄露给第三方 - 网络: 确保网络连接正常,SDK 会处理网络异常
- 日志: SDK 会记录详细的请求和响应日志,便于调试
- 版本: 请使用与服务器端匹配的SDK版本
- 配置: 建议使用配置类来管理SDK的配置参数
- 工厂类: 推荐使用工厂类来创建客户端,更加便捷和安全
1.9. 完整示例
参考 QlinkWarehouseClientExample.java
文件,其中包含了所有API的完整使用示例。
1.10. 技术支持
如有问题,请联系开发团队或查看项目文档。