🆕 #4031 【视频号】新增微信小店代发管理模块:Supplier 关联、自动分配与 Dropship 单据等接口支持
This commit is contained in:
@@ -119,6 +119,13 @@ public interface WxChannelService extends BaseWxChannelService {
|
||||
*/
|
||||
WxLeagueWindowService getLeagueWindowService();
|
||||
|
||||
/**
|
||||
* 代发管理服务
|
||||
*
|
||||
* @return 代发管理服务
|
||||
*/
|
||||
WxChannelSupplierService getSupplierService();
|
||||
|
||||
/**
|
||||
* 优选联盟-团长服务
|
||||
*
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
package me.chanjar.weixin.channel.api;
|
||||
|
||||
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
|
||||
import me.chanjar.weixin.channel.bean.supplier.DistributeTypeResponse;
|
||||
import me.chanjar.weixin.channel.bean.supplier.DropshipAssignRequest;
|
||||
import me.chanjar.weixin.channel.bean.supplier.DropshipDetailResponse;
|
||||
import me.chanjar.weixin.channel.bean.supplier.DropshipListRequest;
|
||||
import me.chanjar.weixin.channel.bean.supplier.DropshipListResponse;
|
||||
import me.chanjar.weixin.channel.bean.supplier.DropshipResponse;
|
||||
import me.chanjar.weixin.channel.bean.supplier.DropshipSearchRequest;
|
||||
import me.chanjar.weixin.channel.bean.supplier.ProductDistributeRequest;
|
||||
import me.chanjar.weixin.channel.bean.supplier.ProductListResponse;
|
||||
import me.chanjar.weixin.channel.bean.supplier.SupplierInfoResponse;
|
||||
import me.chanjar.weixin.channel.bean.supplier.SupplierListResponse;
|
||||
import me.chanjar.weixin.common.error.WxErrorException;
|
||||
|
||||
/**
|
||||
* 视频号小店代发管理服务。
|
||||
*
|
||||
* @author <a href="https://github.com/github-copilot">GitHub Copilot</a>
|
||||
* @see <a href="https://developers.weixin.qq.com/doc/channels/API/supplier/">代发管理接口文档</a>
|
||||
*/
|
||||
public interface WxChannelSupplierService {
|
||||
|
||||
/** 获取供货商列表。 */
|
||||
SupplierListResponse getSupplierList() throws WxErrorException;
|
||||
|
||||
/**
|
||||
* 获取供货商列表。
|
||||
*
|
||||
* @param pageSize 每页数量
|
||||
* @param nextKey 由上次请求返回,记录翻页的上下文。传入时会从上次返回的结果往后翻一页
|
||||
* @return 供货商列表响应
|
||||
* @throws WxErrorException 异常
|
||||
*/
|
||||
SupplierListResponse getSupplierList(Integer pageSize, String nextKey) throws WxErrorException;
|
||||
|
||||
/** 获取分配方式。 */
|
||||
DistributeTypeResponse getDistribute() throws WxErrorException;
|
||||
|
||||
/** 设置全店订单手动分配。 */
|
||||
WxChannelBaseResponse setManuallyDistribute() throws WxErrorException;
|
||||
|
||||
/** 设置全店订单自动分配。 */
|
||||
WxChannelBaseResponse setAllDistribute(String supplierId) throws WxErrorException;
|
||||
|
||||
/** 设置按商品自动分配。 */
|
||||
WxChannelBaseResponse setProductDistribute(ProductDistributeRequest req) throws WxErrorException;
|
||||
|
||||
/** 获取商品对应的自动分配供货商。 */
|
||||
SupplierInfoResponse getProductDefaultDistribute(String productId) throws WxErrorException;
|
||||
|
||||
/** 获取按商品自动分配的商品列表。 */
|
||||
ProductListResponse getProductList(String supplierId) throws WxErrorException;
|
||||
|
||||
/** 分配订单代发。 */
|
||||
DropshipResponse assignOrder(DropshipAssignRequest req) throws WxErrorException;
|
||||
|
||||
/** 取消分配代发单。 */
|
||||
WxChannelBaseResponse cancelDropship(String orderId) throws WxErrorException;
|
||||
|
||||
/** 查询代发单详情。 */
|
||||
DropshipDetailResponse getDropship(String orderId) throws WxErrorException;
|
||||
|
||||
/** 拉取代发单列表。 */
|
||||
DropshipListResponse listDropship(DropshipListRequest req) throws WxErrorException;
|
||||
|
||||
/** 搜索代发单。 */
|
||||
DropshipListResponse searchDropship(DropshipSearchRequest req) throws WxErrorException;
|
||||
}
|
||||
@@ -50,6 +50,7 @@ public abstract class BaseWxChannelServiceImpl<H, P> implements WxChannelService
|
||||
private WxStoreHomePageService homePageService = null;
|
||||
private WxStoreCooperationService cooperationService = null;
|
||||
private WxChannelCompassShopService compassShopService = null;
|
||||
private WxChannelSupplierService supplierService = null;
|
||||
private WxLeagueWindowService leagueWindowService = null;
|
||||
private WxLeagueSupplierService leagueSupplierService = null;
|
||||
private WxLeaguePromoterService leaguePromoterService = null;
|
||||
@@ -395,6 +396,14 @@ public abstract class BaseWxChannelServiceImpl<H, P> implements WxChannelService
|
||||
return compassShopService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized WxChannelSupplierService getSupplierService() {
|
||||
if (supplierService == null) {
|
||||
supplierService = new WxChannelSupplierServiceImpl(this);
|
||||
}
|
||||
return supplierService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized WxLeagueWindowService getLeagueWindowService() {
|
||||
if (leagueWindowService == null) {
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
package me.chanjar.weixin.channel.api.impl;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import me.chanjar.weixin.channel.api.WxChannelSupplierService;
|
||||
import me.chanjar.weixin.channel.bean.base.StreamPageParam;
|
||||
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
|
||||
import me.chanjar.weixin.channel.bean.supplier.DistributeTypeResponse;
|
||||
import me.chanjar.weixin.channel.bean.supplier.DropshipAssignRequest;
|
||||
import me.chanjar.weixin.channel.bean.supplier.DropshipDetailResponse;
|
||||
import me.chanjar.weixin.channel.bean.supplier.DropshipListRequest;
|
||||
import me.chanjar.weixin.channel.bean.supplier.DropshipListResponse;
|
||||
import me.chanjar.weixin.channel.bean.supplier.DropshipResponse;
|
||||
import me.chanjar.weixin.channel.bean.supplier.DropshipSearchRequest;
|
||||
import me.chanjar.weixin.channel.bean.supplier.ProductDistributeRequest;
|
||||
import me.chanjar.weixin.channel.bean.supplier.ProductListResponse;
|
||||
import me.chanjar.weixin.channel.bean.supplier.SupplierInfoResponse;
|
||||
import me.chanjar.weixin.channel.bean.supplier.SupplierListResponse;
|
||||
import me.chanjar.weixin.channel.util.ResponseUtils;
|
||||
import me.chanjar.weixin.common.error.WxErrorException;
|
||||
import me.chanjar.weixin.common.util.json.GsonHelper;
|
||||
|
||||
import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Supplier.ASSIGN_DROPSHIP_URL;
|
||||
import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Supplier.CANCEL_DROPSHIP_URL;
|
||||
import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Supplier.GET_DISTRIBUTE_URL;
|
||||
import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Supplier.GET_DROPSHIP_LIST_URL;
|
||||
import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Supplier.GET_DROPSHIP_URL;
|
||||
import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Supplier.GET_PRODUCT_DEFAULT_DISTRIBUTE_URL;
|
||||
import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Supplier.GET_PRODUCT_LIST_URL;
|
||||
import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Supplier.GET_SUPPLIER_LIST_URL;
|
||||
import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Supplier.SEARCH_DROPSHIP_URL;
|
||||
import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Supplier.SET_ALL_DISTRIBUTION_URL;
|
||||
import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Supplier.SET_MANUALLY_DISTRIBUTE_URL;
|
||||
import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Supplier.SET_PRODUCT_DISTRIBUTE_URL;
|
||||
|
||||
/**
|
||||
* 视频号小店代发管理服务。
|
||||
*
|
||||
* @author <a href="https://github.com/github-copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Slf4j
|
||||
public class WxChannelSupplierServiceImpl implements WxChannelSupplierService {
|
||||
|
||||
private final BaseWxChannelServiceImpl<?, ?> shopService;
|
||||
|
||||
public WxChannelSupplierServiceImpl(BaseWxChannelServiceImpl<?, ?> shopService) {
|
||||
this.shopService = shopService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SupplierListResponse getSupplierList() throws WxErrorException {
|
||||
return getSupplierList(null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SupplierListResponse getSupplierList(Integer pageSize, String nextKey) throws WxErrorException {
|
||||
StreamPageParam param = new StreamPageParam(pageSize, nextKey);
|
||||
String respJson = shopService.post(GET_SUPPLIER_LIST_URL, param);
|
||||
return ResponseUtils.decode(respJson, SupplierListResponse.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DistributeTypeResponse getDistribute() throws WxErrorException {
|
||||
String respJson = shopService.post(GET_DISTRIBUTE_URL, "{}");
|
||||
return ResponseUtils.decode(respJson, DistributeTypeResponse.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxChannelBaseResponse setManuallyDistribute() throws WxErrorException {
|
||||
String respJson = shopService.post(SET_MANUALLY_DISTRIBUTE_URL, "{}");
|
||||
return ResponseUtils.decode(respJson, WxChannelBaseResponse.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxChannelBaseResponse setAllDistribute(String supplierId) throws WxErrorException {
|
||||
JsonObject req = GsonHelper.buildJsonObject("supplier_id", supplierId);
|
||||
String respJson = shopService.post(SET_ALL_DISTRIBUTION_URL, req);
|
||||
return ResponseUtils.decode(respJson, WxChannelBaseResponse.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxChannelBaseResponse setProductDistribute(ProductDistributeRequest req) throws WxErrorException {
|
||||
String respJson = shopService.post(SET_PRODUCT_DISTRIBUTE_URL, req);
|
||||
return ResponseUtils.decode(respJson, WxChannelBaseResponse.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SupplierInfoResponse getProductDefaultDistribute(String productId) throws WxErrorException {
|
||||
JsonObject req = GsonHelper.buildJsonObject("product_id", productId);
|
||||
String respJson = shopService.post(GET_PRODUCT_DEFAULT_DISTRIBUTE_URL, req);
|
||||
return ResponseUtils.decode(respJson, SupplierInfoResponse.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProductListResponse getProductList(String supplierId) throws WxErrorException {
|
||||
JsonObject req = GsonHelper.buildJsonObject("supplier_id", supplierId);
|
||||
String respJson = shopService.post(GET_PRODUCT_LIST_URL, req);
|
||||
return ResponseUtils.decode(respJson, ProductListResponse.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DropshipResponse assignOrder(DropshipAssignRequest req) throws WxErrorException {
|
||||
String respJson = shopService.post(ASSIGN_DROPSHIP_URL, req);
|
||||
return ResponseUtils.decode(respJson, DropshipResponse.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxChannelBaseResponse cancelDropship(String orderId) throws WxErrorException {
|
||||
JsonObject req = GsonHelper.buildJsonObject("order_id", orderId);
|
||||
String respJson = shopService.post(CANCEL_DROPSHIP_URL, req);
|
||||
return ResponseUtils.decode(respJson, WxChannelBaseResponse.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DropshipDetailResponse getDropship(String orderId) throws WxErrorException {
|
||||
JsonObject req = GsonHelper.buildJsonObject("order_id", orderId);
|
||||
String respJson = shopService.post(GET_DROPSHIP_URL, req);
|
||||
return ResponseUtils.decode(respJson, DropshipDetailResponse.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DropshipListResponse listDropship(DropshipListRequest req) throws WxErrorException {
|
||||
String respJson = shopService.post(GET_DROPSHIP_LIST_URL, req);
|
||||
return ResponseUtils.decode(respJson, DropshipListResponse.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DropshipListResponse searchDropship(DropshipSearchRequest req) throws WxErrorException {
|
||||
String respJson = shopService.post(SEARCH_DROPSHIP_URL, req);
|
||||
return ResponseUtils.decode(respJson, DropshipListResponse.class);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package me.chanjar.weixin.channel.bean.supplier;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
|
||||
|
||||
/**
|
||||
* 分配方式响应。
|
||||
*
|
||||
* @author <a href="https://github.com/github-copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class DistributeTypeResponse extends WxChannelBaseResponse {
|
||||
private static final long serialVersionUID = -750860556286328053L;
|
||||
|
||||
@JsonProperty("distribute_type")
|
||||
private Integer distributeType;
|
||||
|
||||
@JsonProperty("supplier_info")
|
||||
private SupplierInfo supplierInfo;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package me.chanjar.weixin.channel.bean.supplier;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import java.io.Serializable;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 代发单分配请求。
|
||||
*
|
||||
* @author <a href="https://github.com/github-copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class DropshipAssignRequest implements Serializable {
|
||||
private static final long serialVersionUID = 6945436332042017565L;
|
||||
|
||||
@JsonProperty("order_id")
|
||||
private String orderId;
|
||||
|
||||
@JsonProperty("supplier_id")
|
||||
private String supplierId;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package me.chanjar.weixin.channel.bean.supplier;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
|
||||
|
||||
/**
|
||||
* 代发单详情响应。
|
||||
*
|
||||
* @author <a href="https://github.com/github-copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class DropshipDetailResponse extends WxChannelBaseResponse {
|
||||
private static final long serialVersionUID = 5548774863400272707L;
|
||||
|
||||
@JsonProperty("dropship_info")
|
||||
private DropshipInfo dropshipInfo;
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package me.chanjar.weixin.channel.bean.supplier;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import java.io.Serializable;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 代发单信息。
|
||||
*
|
||||
* @author <a href="https://github.com/github-copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class DropshipInfo implements Serializable {
|
||||
private static final long serialVersionUID = -7880364210849039278L;
|
||||
|
||||
@JsonProperty("order_id")
|
||||
private String orderId;
|
||||
|
||||
@JsonProperty("supplier_id")
|
||||
private String supplierId;
|
||||
|
||||
@JsonProperty("ds_order_id")
|
||||
private String dropshipId;
|
||||
|
||||
@JsonProperty("status")
|
||||
private Integer status;
|
||||
|
||||
@JsonProperty("create_time")
|
||||
private Long createTime;
|
||||
|
||||
@JsonProperty("update_time")
|
||||
private Long updateTime;
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package me.chanjar.weixin.channel.bean.supplier;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import java.io.Serializable;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 代发单列表请求。
|
||||
*
|
||||
* @author <a href="https://github.com/github-copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class DropshipListRequest implements Serializable {
|
||||
private static final long serialVersionUID = 2638071229335192596L;
|
||||
|
||||
@JsonProperty("supplier_id")
|
||||
private String supplierId;
|
||||
|
||||
@JsonProperty("status")
|
||||
private Integer status;
|
||||
|
||||
@JsonProperty("create_time_start")
|
||||
private Long createTimeStart;
|
||||
|
||||
@JsonProperty("create_time_end")
|
||||
private Long createTimeEnd;
|
||||
|
||||
@JsonProperty("page_size")
|
||||
private Integer pageSize;
|
||||
|
||||
@JsonProperty("next_key")
|
||||
private String nextKey;
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package me.chanjar.weixin.channel.bean.supplier;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import java.util.List;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
|
||||
|
||||
/**
|
||||
* 代发单列表响应。
|
||||
*
|
||||
* @author <a href="https://github.com/github-copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class DropshipListResponse extends WxChannelBaseResponse {
|
||||
private static final long serialVersionUID = -2850183412032417307L;
|
||||
|
||||
@JsonProperty("dropship_list")
|
||||
private List<DropshipInfo> dropshipList;
|
||||
|
||||
@JsonProperty("next_key")
|
||||
private String nextKey;
|
||||
|
||||
@JsonProperty("has_more")
|
||||
private Boolean hasMore;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package me.chanjar.weixin.channel.bean.supplier;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
|
||||
|
||||
/**
|
||||
* 代发单分配响应。
|
||||
*
|
||||
* @author <a href="https://github.com/github-copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class DropshipResponse extends WxChannelBaseResponse {
|
||||
private static final long serialVersionUID = 4376618566823584629L;
|
||||
|
||||
@JsonProperty("order_id")
|
||||
private String orderId;
|
||||
|
||||
@JsonProperty("supplier_id")
|
||||
private String supplierId;
|
||||
|
||||
@JsonProperty("dropship_id")
|
||||
private String dropshipId;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package me.chanjar.weixin.channel.bean.supplier;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 代发单搜索请求。
|
||||
*
|
||||
* @author <a href="https://github.com/github-copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class DropshipSearchRequest extends DropshipListRequest {
|
||||
private static final long serialVersionUID = 3915264648809784742L;
|
||||
|
||||
@JsonProperty("order_id")
|
||||
private String orderId;
|
||||
|
||||
@JsonProperty("dropship_id")
|
||||
private String dropshipId;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package me.chanjar.weixin.channel.bean.supplier;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 按商品自动分配请求。
|
||||
*
|
||||
* @author <a href="https://github.com/github-copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class ProductDistributeRequest implements Serializable {
|
||||
private static final long serialVersionUID = 4201609097231290078L;
|
||||
|
||||
@JsonProperty("supplier_id")
|
||||
private String supplierId;
|
||||
|
||||
@JsonProperty("product_id_list")
|
||||
private List<String> productIdList;
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package me.chanjar.weixin.channel.bean.supplier;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
|
||||
|
||||
/**
|
||||
* 按商品自动分配商品列表响应。
|
||||
*
|
||||
* @author <a href="https://github.com/github-copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class ProductListResponse extends WxChannelBaseResponse {
|
||||
private static final long serialVersionUID = -7096250227033388295L;
|
||||
|
||||
@JsonProperty("product_list")
|
||||
private List<ProductInfo> productList;
|
||||
|
||||
@JsonProperty("next_key")
|
||||
private String nextKey;
|
||||
|
||||
@JsonProperty("has_more")
|
||||
private Boolean hasMore;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public static class ProductInfo implements Serializable {
|
||||
private static final long serialVersionUID = -4482299212575966325L;
|
||||
|
||||
@JsonProperty("product_id")
|
||||
private String productId;
|
||||
|
||||
@JsonProperty("supplier_id")
|
||||
private String supplierId;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package me.chanjar.weixin.channel.bean.supplier;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import java.io.Serializable;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 供货商信息。
|
||||
*
|
||||
* @author <a href="https://github.com/github-copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class SupplierInfo implements Serializable {
|
||||
private static final long serialVersionUID = -6480813119738259476L;
|
||||
|
||||
@JsonProperty("supplier_id")
|
||||
private String supplierId;
|
||||
|
||||
@JsonProperty("supplier_name")
|
||||
private String supplierName;
|
||||
|
||||
@JsonProperty("status")
|
||||
private Integer status;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package me.chanjar.weixin.channel.bean.supplier;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
|
||||
|
||||
/**
|
||||
* 供货商信息响应。
|
||||
*
|
||||
* @author <a href="https://github.com/github-copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class SupplierInfoResponse extends WxChannelBaseResponse {
|
||||
private static final long serialVersionUID = -3071464065836573893L;
|
||||
|
||||
@JsonProperty("supplier_info")
|
||||
private SupplierInfo supplierInfo;
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package me.chanjar.weixin.channel.bean.supplier;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import java.util.List;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
|
||||
|
||||
/**
|
||||
* 供货商列表响应。
|
||||
*
|
||||
* @author <a href="https://github.com/github-copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class SupplierListResponse extends WxChannelBaseResponse {
|
||||
private static final long serialVersionUID = -692609589633695295L;
|
||||
|
||||
@JsonProperty("supplier_list")
|
||||
private List<SupplierInfo> supplierList;
|
||||
|
||||
@JsonProperty("next_key")
|
||||
private String nextKey;
|
||||
|
||||
@JsonProperty("has_more")
|
||||
private Boolean hasMore;
|
||||
}
|
||||
@@ -491,6 +491,34 @@ public class WxChannelApiUrlConstants {
|
||||
String GET_LEAGUE_ITEM_LIST_URL = "https://api.weixin.qq.com/channels/ec/league/item/list/get";
|
||||
}
|
||||
|
||||
/** 代发管理相关接口 */
|
||||
public interface Supplier {
|
||||
/** 获取供货商列表 */
|
||||
String GET_SUPPLIER_LIST_URL = "https://api.weixin.qq.com/channels/ec/supplier/relation/get_supplier_list";
|
||||
/** 获取分配方式 */
|
||||
String GET_DISTRIBUTE_URL = "https://api.weixin.qq.com/channels/ec/supplier/relation/get_distribute";
|
||||
/** 设置全店订单手动分配 */
|
||||
String SET_MANUALLY_DISTRIBUTE_URL = "https://api.weixin.qq.com/channels/ec/supplier/relation/set_manually_distribute";
|
||||
/** 设置全店订单自动分配 */
|
||||
String SET_ALL_DISTRIBUTION_URL = "https://api.weixin.qq.com/channels/ec/supplier/relation/set_all_distribution";
|
||||
/** 设置按商品自动分配 */
|
||||
String SET_PRODUCT_DISTRIBUTE_URL = "https://api.weixin.qq.com/channels/ec/supplier/relation/set_product_distribute";
|
||||
/** 获取商品对应的自动分配供货商 */
|
||||
String GET_PRODUCT_DEFAULT_DISTRIBUTE_URL = "https://api.weixin.qq.com/channels/ec/supplier/relation/get_product_default_distribute";
|
||||
/** 获取按商品自动分配的商品列表 */
|
||||
String GET_PRODUCT_LIST_URL = "https://api.weixin.qq.com/channels/ec/supplier/relation/get_product_list";
|
||||
/** 分配订单代发 */
|
||||
String ASSIGN_DROPSHIP_URL = "https://api.weixin.qq.com/channels/ec/order/dropship/assign";
|
||||
/** 取消分配代发单 */
|
||||
String CANCEL_DROPSHIP_URL = "https://api.weixin.qq.com/channels/ec/order/dropship/cancel";
|
||||
/** 查询代发单详情 */
|
||||
String GET_DROPSHIP_URL = "https://api.weixin.qq.com/channels/ec/order/dropship/get";
|
||||
/** 拉取代发单列表 */
|
||||
String GET_DROPSHIP_LIST_URL = "https://api.weixin.qq.com/channels/ec/order/dropship/list";
|
||||
/** 搜索代发单 */
|
||||
String SEARCH_DROPSHIP_URL = "https://api.weixin.qq.com/channels/ec/order/dropship/search";
|
||||
}
|
||||
|
||||
/** 视频号助手开放接口 */
|
||||
public interface Assistant {
|
||||
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
package me.chanjar.weixin.channel.bean.supplier;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
import static org.testng.Assert.assertFalse;
|
||||
import static org.testng.Assert.assertNotNull;
|
||||
|
||||
import java.util.Arrays;
|
||||
import me.chanjar.weixin.channel.util.JsonUtils;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
/**
|
||||
* @author <a href="https://github.com/github-copilot">GitHub Copilot</a>
|
||||
*/
|
||||
public class WxChannelSupplierBeanTest {
|
||||
|
||||
@Test
|
||||
public void testEncodeProductDistributeRequest() {
|
||||
ProductDistributeRequest request = new ProductDistributeRequest();
|
||||
request.setSupplierId("1001");
|
||||
request.setProductIdList(Arrays.asList("p1", "p2"));
|
||||
|
||||
String json = JsonUtils.encode(request);
|
||||
assertNotNull(json);
|
||||
assertFalse(json.contains("supplierId"));
|
||||
assertFalse(json.contains("productIdList"));
|
||||
ProductDistributeRequest decoded = JsonUtils.decode(json, ProductDistributeRequest.class);
|
||||
assertEquals(decoded.getSupplierId(), "1001");
|
||||
assertEquals(decoded.getProductIdList(), Arrays.asList("p1", "p2"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEncodeDropshipAssignRequest() {
|
||||
DropshipAssignRequest request = new DropshipAssignRequest();
|
||||
request.setOrderId("o1");
|
||||
request.setSupplierId("s1");
|
||||
|
||||
String json = JsonUtils.encode(request);
|
||||
assertNotNull(json);
|
||||
DropshipAssignRequest decoded = JsonUtils.decode(json, DropshipAssignRequest.class);
|
||||
assertEquals(decoded.getOrderId(), "o1");
|
||||
assertEquals(decoded.getSupplierId(), "s1");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDecodeSupplierListResponse() {
|
||||
String json = "{\"errcode\":0,\"errmsg\":\"ok\",\"supplier_list\":[{\"supplier_id\":\"s1\",\"supplier_name\":\"供货商1\",\"status\":1}],\"has_more\":false}";
|
||||
SupplierListResponse response = JsonUtils.decode(json, SupplierListResponse.class);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(response.getErrCode(), 0);
|
||||
assertEquals(response.getSupplierList().size(), 1);
|
||||
assertEquals(response.getSupplierList().get(0).getSupplierId(), "s1");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDecodeDropshipInfo() {
|
||||
DropshipInfo info = JsonUtils.decode("{\"ds_order_id\":\"d1\"}", DropshipInfo.class);
|
||||
|
||||
assertNotNull(info);
|
||||
assertEquals(info.getDropshipId(), "d1");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user