🆕 #4027 【视频号】实现微信小店带货助手相关接口
This commit is contained in:
@@ -189,4 +189,11 @@ public interface WxChannelService extends BaseWxChannelService {
|
||||
*/
|
||||
WxChannelQicService getQicService();
|
||||
|
||||
/**
|
||||
* 微信小店-带货助手服务
|
||||
*
|
||||
* @return 带货助手服务
|
||||
*/
|
||||
WxTalentService getTalentService();
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
package me.chanjar.weixin.channel.api;
|
||||
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentOrderDetailParam;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentOrderDetailResponse;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentOrderListParam;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentOrderListResponse;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentWindowProductDetailParam;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentWindowProductDetailResponse;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentWindowProductListParam;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentWindowProductListResponse;
|
||||
import me.chanjar.weixin.common.error.WxErrorException;
|
||||
|
||||
/**
|
||||
* 微信小店-带货助手服务接口
|
||||
*
|
||||
* @author <a href="https://github.com/features/copilot">GitHub Copilot</a>
|
||||
*/
|
||||
public interface WxTalentService {
|
||||
|
||||
/**
|
||||
* <a href="https://developers.weixin.qq.com/doc/store/talent/openapi/order/api_get_order_list.html">获取佣金单列表</a>
|
||||
*
|
||||
* @param param 查询参数
|
||||
* @return 佣金单列表
|
||||
* @throws WxErrorException 接口调用异常
|
||||
*/
|
||||
TalentOrderListResponse getOrderList(TalentOrderListParam param) throws WxErrorException;
|
||||
|
||||
/**
|
||||
* <a href="https://developers.weixin.qq.com/doc/store/talent/openapi/order/api_get_order_detail.html">获取佣金单详情</a>
|
||||
*
|
||||
* @param param 查询参数
|
||||
* @return 佣金单详情
|
||||
* @throws WxErrorException 接口调用异常
|
||||
*/
|
||||
TalentOrderDetailResponse getOrderDetail(TalentOrderDetailParam param) throws WxErrorException;
|
||||
|
||||
/**
|
||||
* <a href="https://developers.weixin.qq.com/doc/store/talent/openapi/window/api_get_product_list.html">获取达人橱窗商品列表</a>
|
||||
*
|
||||
* @param param 查询参数
|
||||
* @return 橱窗商品列表
|
||||
* @throws WxErrorException 接口调用异常
|
||||
*/
|
||||
TalentWindowProductListResponse getWindowProductList(TalentWindowProductListParam param) throws WxErrorException;
|
||||
|
||||
/**
|
||||
* <a href="https://developers.weixin.qq.com/doc/store/talent/openapi/window/api_get_product_detail.html">获取达人橱窗商品详情</a>
|
||||
*
|
||||
* @param param 查询参数
|
||||
* @return 橱窗商品详情
|
||||
* @throws WxErrorException 接口调用异常
|
||||
*/
|
||||
TalentWindowProductDetailResponse getWindowProductDetail(TalentWindowProductDetailParam param)
|
||||
throws WxErrorException;
|
||||
}
|
||||
@@ -61,6 +61,7 @@ public abstract class BaseWxChannelServiceImpl<H, P> implements WxChannelService
|
||||
private WxChannelCompassFinderService compassFinderService = null;
|
||||
private WxChannelLiveDashboardService liveDashboardService = null;
|
||||
private WxChannelQicService qicService = null;
|
||||
private WxTalentService talentService = null;
|
||||
|
||||
protected WxChannelConfig config;
|
||||
private int retrySleepMillis = 1000;
|
||||
@@ -482,4 +483,12 @@ public abstract class BaseWxChannelServiceImpl<H, P> implements WxChannelService
|
||||
return qicService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized WxTalentService getTalentService() {
|
||||
if (talentService == null) {
|
||||
talentService = new WxTalentServiceImpl(this);
|
||||
}
|
||||
return talentService;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
package me.chanjar.weixin.channel.api.impl;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import me.chanjar.weixin.channel.api.WxTalentService;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentOrderDetailParam;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentOrderDetailResponse;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentOrderListParam;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentOrderListResponse;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentWindowProductDetailParam;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentWindowProductDetailResponse;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentWindowProductListParam;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentWindowProductListResponse;
|
||||
import me.chanjar.weixin.channel.util.ResponseUtils;
|
||||
import me.chanjar.weixin.common.error.WxErrorException;
|
||||
|
||||
import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Talent.GET_ORDER_DETAIL_URL;
|
||||
import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Talent.GET_ORDER_LIST_URL;
|
||||
import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Talent.GET_WINDOW_PRODUCT_DETAIL_URL;
|
||||
import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Talent.GET_WINDOW_PRODUCT_LIST_URL;
|
||||
|
||||
/**
|
||||
* 微信小店-带货助手服务实现
|
||||
*
|
||||
* @author <a href="https://github.com/features/copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class WxTalentServiceImpl implements WxTalentService {
|
||||
|
||||
/** 微信商店服务 */
|
||||
private final BaseWxChannelServiceImpl<?, ?> shopService;
|
||||
|
||||
@Override
|
||||
public TalentOrderListResponse getOrderList(TalentOrderListParam param) throws WxErrorException {
|
||||
String resJson = shopService.post(GET_ORDER_LIST_URL, param);
|
||||
return ResponseUtils.decode(resJson, TalentOrderListResponse.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TalentOrderDetailResponse getOrderDetail(TalentOrderDetailParam param) throws WxErrorException {
|
||||
String resJson = shopService.post(GET_ORDER_DETAIL_URL, param);
|
||||
return ResponseUtils.decode(resJson, TalentOrderDetailResponse.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TalentWindowProductListResponse getWindowProductList(TalentWindowProductListParam param)
|
||||
throws WxErrorException {
|
||||
String resJson = shopService.post(GET_WINDOW_PRODUCT_LIST_URL, param);
|
||||
return ResponseUtils.decode(resJson, TalentWindowProductListResponse.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TalentWindowProductDetailResponse getWindowProductDetail(TalentWindowProductDetailParam param)
|
||||
throws WxErrorException {
|
||||
String resJson = shopService.post(GET_WINDOW_PRODUCT_DETAIL_URL, param);
|
||||
return ResponseUtils.decode(resJson, TalentWindowProductDetailResponse.class);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package me.chanjar.weixin.channel.bean.talent;
|
||||
|
||||
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/features/copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class TalentOrderDetailParam implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 8741285036412736219L;
|
||||
|
||||
/** 订单号,可从获取佣金单列表接口获得 */
|
||||
@JsonProperty("order_id")
|
||||
private String orderId;
|
||||
|
||||
/** 商品skuid,可从获取佣金单列表接口获得 */
|
||||
@JsonProperty("sku_id")
|
||||
private String skuId;
|
||||
|
||||
/** 订单额外参数【在订单列表里面返回的参数回传】 */
|
||||
@JsonProperty("special_id")
|
||||
private String specialId;
|
||||
}
|
||||
@@ -0,0 +1,203 @@
|
||||
package me.chanjar.weixin.channel.bean.talent;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import java.io.Serializable;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
|
||||
|
||||
/**
|
||||
* 带货助手-获取佣金单详情 响应
|
||||
*
|
||||
* @author <a href="https://github.com/features/copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class TalentOrderDetailResponse extends WxChannelBaseResponse {
|
||||
|
||||
private static final long serialVersionUID = 2174806923145876312L;
|
||||
|
||||
/** 订单基础信息 */
|
||||
@JsonProperty("base_info")
|
||||
private BaseInfo baseInfo;
|
||||
|
||||
/** 订单佣金信息 */
|
||||
@JsonProperty("commission_info")
|
||||
private CommissionInfo commissionInfo;
|
||||
|
||||
/** 下单通道信息 */
|
||||
@JsonProperty("channel_info")
|
||||
private ChannelInfo channelInfo;
|
||||
|
||||
/** 内容推广推客机构信息 */
|
||||
@JsonProperty("promotion_head_supplier_info")
|
||||
private PromotionHeadSupplierInfo promotionHeadSupplierInfo;
|
||||
|
||||
/** 商品信息 */
|
||||
@JsonProperty("product_info")
|
||||
private ProductInfo productInfo;
|
||||
|
||||
/** 订单基础信息 */
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public static class BaseInfo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 6382947162830498251L;
|
||||
|
||||
/** 订单id */
|
||||
@JsonProperty("order_id")
|
||||
private String orderId;
|
||||
|
||||
/** 商品spuid */
|
||||
@JsonProperty("spu_id")
|
||||
private String spuId;
|
||||
|
||||
/** 商品skuid */
|
||||
@JsonProperty("sku_id")
|
||||
private String skuId;
|
||||
|
||||
/** 特殊id【针对本地生活】 */
|
||||
@JsonProperty("special_id")
|
||||
private String specialId;
|
||||
|
||||
/**
|
||||
* 订单状态:1=待支付, 2=待发货, 3=已发货, 4=已收货, 5=售后中, 6=已完成, 7=已取消, 8=已退款, 9=部分退款, 10=待使用
|
||||
*/
|
||||
@JsonProperty("order_status")
|
||||
private Integer orderStatus;
|
||||
|
||||
/** 实际支付金额【单位:分】 */
|
||||
@JsonProperty("actual_payment")
|
||||
private String actualPayment;
|
||||
|
||||
/** 订单创建时间 */
|
||||
@JsonProperty("order_create_time")
|
||||
private Long orderCreateTime;
|
||||
|
||||
/** 订单更新时间 */
|
||||
@JsonProperty("order_update_time")
|
||||
private Long orderUpdateTime;
|
||||
|
||||
/** 下单用户 */
|
||||
@JsonProperty("buyer_info")
|
||||
private BuyerInfo buyerInfo;
|
||||
|
||||
/** 订单支付时间 */
|
||||
@JsonProperty("order_pay_time")
|
||||
private Long orderPayTime;
|
||||
|
||||
/** 订单的分佣基数【单位:分】 */
|
||||
@JsonProperty("settle_payment")
|
||||
private String settlePayment;
|
||||
}
|
||||
|
||||
/** 下单用户信息 */
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public static class BuyerInfo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 4729638451027364819L;
|
||||
|
||||
/** 下单用户的openid */
|
||||
@JsonProperty("open_id")
|
||||
private String openId;
|
||||
|
||||
/** 下单用户的unionid */
|
||||
@JsonProperty("union_id")
|
||||
private String unionId;
|
||||
}
|
||||
|
||||
/** 订单佣金信息 */
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public static class CommissionInfo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -3819264037182640581L;
|
||||
|
||||
/** 佣金单状态:1=待结算, 2=已结算, 3=取消结算, 4=结算异常 */
|
||||
@JsonProperty("state")
|
||||
private Integer state;
|
||||
|
||||
/** 佣金比例 */
|
||||
@JsonProperty("ratio")
|
||||
private String ratio;
|
||||
|
||||
/** 预期结算时间 */
|
||||
@JsonProperty("expect_settle_time")
|
||||
private Long expectSettleTime;
|
||||
|
||||
/** 预期结算金额 */
|
||||
@JsonProperty("expect_settlement")
|
||||
private String expectSettlement;
|
||||
|
||||
/** 实际结算时间 */
|
||||
@JsonProperty("actual_settle_time")
|
||||
private Long actualSettleTime;
|
||||
|
||||
/** 实际结算金额 */
|
||||
@JsonProperty("actual_settlement")
|
||||
private String actualSettlement;
|
||||
}
|
||||
|
||||
/** 下单通道信息 */
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public static class ChannelInfo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 7364918204736159023L;
|
||||
|
||||
/** 渠道类型:1=视频号, 2=公众号 */
|
||||
@JsonProperty("channel_type")
|
||||
private Integer channelType;
|
||||
|
||||
/** 渠道id */
|
||||
@JsonProperty("channel_id")
|
||||
private String channelId;
|
||||
|
||||
/** 渠道名称 */
|
||||
@JsonProperty("channel_name")
|
||||
private String channelName;
|
||||
}
|
||||
|
||||
/** 内容推广推客机构信息 */
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public static class PromotionHeadSupplierInfo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1826374950183647291L;
|
||||
|
||||
/** 机构id */
|
||||
@JsonProperty("id")
|
||||
private String id;
|
||||
|
||||
/** 机构名称 */
|
||||
@JsonProperty("name")
|
||||
private String name;
|
||||
|
||||
/** 佣金单比例 */
|
||||
@JsonProperty("ratio")
|
||||
private String ratio;
|
||||
|
||||
/** 佣金 */
|
||||
@JsonProperty("fee")
|
||||
private String fee;
|
||||
}
|
||||
|
||||
/** 商品信息 */
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public static class ProductInfo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -4920183645872916370L;
|
||||
|
||||
/** 商品的标题 */
|
||||
@JsonProperty("title")
|
||||
private String title;
|
||||
|
||||
/** 商品的头图 */
|
||||
@JsonProperty("thumb_img")
|
||||
private String thumbImg;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package me.chanjar.weixin.channel.bean.talent;
|
||||
|
||||
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/features/copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class TalentOrderListParam implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -6218342185316399261L;
|
||||
|
||||
/** 佣金单创建时间范围之开始时间【和更新时间范围二选一】 */
|
||||
@JsonProperty("create_time_gt")
|
||||
private Long createTimeGt;
|
||||
|
||||
/** 佣金单创建时间范围之结束时间【和更新时间范围二选一】 */
|
||||
@JsonProperty("create_time_lt")
|
||||
private Long createTimeLt;
|
||||
|
||||
/** 订单 ID 过滤 */
|
||||
@JsonProperty("order_id")
|
||||
private String orderId;
|
||||
|
||||
/** 商品 id 过滤 */
|
||||
@JsonProperty("spu_id")
|
||||
private String spuId;
|
||||
|
||||
/** 佣金单更新时间范围之开始时间【和创建时间范围二选一】 */
|
||||
@JsonProperty("update_time_gt")
|
||||
private Long updateTimeGt;
|
||||
|
||||
/** 佣金单更新时间范围之结束时间【和创建时间范围二选一】 */
|
||||
@JsonProperty("update_time_lt")
|
||||
private Long updateTimeLt;
|
||||
|
||||
/** 单页佣金单数(不超过10) */
|
||||
@JsonProperty("page_size")
|
||||
private Integer pageSize;
|
||||
|
||||
/** 由上次请求返回,顺序翻页时需要传入, 会从上次返回的结果往后翻一页 */
|
||||
@JsonProperty("next_key")
|
||||
private String nextKey;
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package me.chanjar.weixin.channel.bean.talent;
|
||||
|
||||
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/features/copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class TalentOrderListResponse extends WxChannelBaseResponse {
|
||||
|
||||
private static final long serialVersionUID = 3541802319654186172L;
|
||||
|
||||
/** 佣金单信息列表 */
|
||||
@JsonProperty("order_list")
|
||||
private List<OrderInfo> orderList;
|
||||
|
||||
/** 是否还有剩余订单 */
|
||||
@JsonProperty("has_more")
|
||||
private Boolean hasMore;
|
||||
|
||||
/** 本次翻页的上下文,用于顺序翻页请求 */
|
||||
@JsonProperty("next_key")
|
||||
private String nextKey;
|
||||
|
||||
/** 佣金单基础信息 */
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public static class OrderInfo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 5261736494628827543L;
|
||||
|
||||
/** 订单id */
|
||||
@JsonProperty("order_id")
|
||||
private String orderId;
|
||||
|
||||
/** skuid */
|
||||
@JsonProperty("sku_id")
|
||||
private String skuId;
|
||||
|
||||
/** 佣金单特殊标识【目前主要用于本地生活】 */
|
||||
@JsonProperty("special_id")
|
||||
private String specialId;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package me.chanjar.weixin.channel.bean.talent;
|
||||
|
||||
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/features/copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class TalentWindowProductDetailParam implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 3849271605183749261L;
|
||||
|
||||
/** 橱窗商品ID(可以从"获取达人橱窗商品列表"接口获取) */
|
||||
@JsonProperty("product_id")
|
||||
private String productId;
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package me.chanjar.weixin.channel.bean.talent;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import java.io.Serializable;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
|
||||
|
||||
/**
|
||||
* 带货助手-获取达人橱窗商品详情 响应
|
||||
*
|
||||
* @author <a href="https://github.com/features/copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class TalentWindowProductDetailResponse extends WxChannelBaseResponse {
|
||||
|
||||
private static final long serialVersionUID = 1634829710537264918L;
|
||||
|
||||
/** 橱窗商品详情 */
|
||||
@JsonProperty("product")
|
||||
private ProductDetail product;
|
||||
|
||||
/** 橱窗商品详情 */
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public static class ProductDetail implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 7283640192847516039L;
|
||||
|
||||
/** 橱窗商品ID */
|
||||
@JsonProperty("product_id")
|
||||
private String productId;
|
||||
|
||||
/** 商品来源店铺的appid */
|
||||
@JsonProperty("appid")
|
||||
private String appid;
|
||||
|
||||
/** 商品在货源店铺的商品ID,对于带货商品会返回 */
|
||||
@JsonProperty("out_product_id")
|
||||
private String outProductId;
|
||||
|
||||
/** 商品标题 */
|
||||
@JsonProperty("title")
|
||||
private String title;
|
||||
|
||||
/** 商品头图url */
|
||||
@JsonProperty("img_url")
|
||||
private String imgUrl;
|
||||
|
||||
/** 商品所属叶子类目(品类)ID */
|
||||
@JsonProperty("leaf_category_id")
|
||||
private Long leafCategoryId;
|
||||
|
||||
/** 商品状态:1=生效中,2=被禁止售卖 */
|
||||
@JsonProperty("status")
|
||||
private Integer status;
|
||||
|
||||
/** 价格区间最小值(单位分,销售价) */
|
||||
@JsonProperty("selling_price")
|
||||
private Long sellingPrice;
|
||||
|
||||
/** 剩余库存 */
|
||||
@JsonProperty("stock")
|
||||
private Long stock;
|
||||
|
||||
/** 销量 */
|
||||
@JsonProperty("sales")
|
||||
private Long sales;
|
||||
|
||||
/** 是否在橱窗设置对外隐藏 */
|
||||
@JsonProperty("is_hide")
|
||||
private Boolean isHide;
|
||||
|
||||
/** 用于在小程序跳转小店场景添加商品时传递跟佣信息 */
|
||||
@JsonProperty("product_promotion_link")
|
||||
private String productPromotionLink;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package me.chanjar.weixin.channel.bean.talent;
|
||||
|
||||
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/features/copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class TalentWindowProductListParam implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 7419836250174638291L;
|
||||
|
||||
/** 单页商品数(不超过500) */
|
||||
@JsonProperty("page_size")
|
||||
private Integer pageSize;
|
||||
|
||||
/** 页面下标,下标从1开始(不可以与 lastBuffer 一起填写) */
|
||||
@JsonProperty("page_index")
|
||||
private Integer pageIndex;
|
||||
|
||||
/** 由上次请求返回,顺序翻页时需要传入(不可以与 pageIndex 一起填写) */
|
||||
@JsonProperty("last_buffer")
|
||||
private String lastBuffer;
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package me.chanjar.weixin.channel.bean.talent;
|
||||
|
||||
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/features/copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class TalentWindowProductListResponse extends WxChannelBaseResponse {
|
||||
|
||||
private static final long serialVersionUID = 8263047195826340712L;
|
||||
|
||||
/** 橱窗商品列表 */
|
||||
@JsonProperty("products")
|
||||
private List<ProductInfo> products;
|
||||
|
||||
/** 本次翻页的上下文,用于顺序翻页请求 */
|
||||
@JsonProperty("last_buffer")
|
||||
private String lastBuffer;
|
||||
|
||||
/** 橱窗商品基础信息 */
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public static class ProductInfo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 6142837490516284039L;
|
||||
|
||||
/** 橱窗商品id */
|
||||
@JsonProperty("product_id")
|
||||
private String productId;
|
||||
|
||||
/** 对于自营商品会返回,代表商品来源店铺的appid */
|
||||
@JsonProperty("appid")
|
||||
private String appid;
|
||||
|
||||
/**
|
||||
* 商品来源:1=来源店铺的自营商品,2=来源选品中心的带货商品
|
||||
*/
|
||||
@JsonProperty("product_source")
|
||||
private Integer productSource;
|
||||
|
||||
/**
|
||||
* 对于带货商品会返回,代表商品在货源小店中的商品id
|
||||
*/
|
||||
@JsonProperty("out_product_id")
|
||||
private String outProductId;
|
||||
}
|
||||
}
|
||||
@@ -595,6 +595,32 @@ public class WxChannelApiUrlConstants {
|
||||
String GET_SALE_PROFILE_DATA_URL = "https://api.weixin.qq.com/channels/ec/compass/finder/sale/profile/data/get";
|
||||
}
|
||||
|
||||
/**
|
||||
* 带货助手API
|
||||
*/
|
||||
public interface Talent {
|
||||
|
||||
/**
|
||||
* <a href="https://developers.weixin.qq.com/doc/store/talent/openapi/order/api_get_order_list.html">获取佣金单列表</a>
|
||||
*/
|
||||
String GET_ORDER_LIST_URL = "https://api.weixin.qq.com/channels/ec/talent/get_order_list";
|
||||
|
||||
/**
|
||||
* <a href="https://developers.weixin.qq.com/doc/store/talent/openapi/order/api_get_order_detail.html">获取佣金单详情</a>
|
||||
*/
|
||||
String GET_ORDER_DETAIL_URL = "https://api.weixin.qq.com/channels/ec/talent/get_order_detail";
|
||||
|
||||
/**
|
||||
* <a href="https://developers.weixin.qq.com/doc/store/talent/openapi/window/api_get_product_list.html">获取达人橱窗商品列表</a>
|
||||
*/
|
||||
String GET_WINDOW_PRODUCT_LIST_URL = "https://api.weixin.qq.com/channels/ec/talent/window/product/list/get";
|
||||
|
||||
/**
|
||||
* <a href="https://developers.weixin.qq.com/doc/store/talent/openapi/window/api_get_product_detail.html">获取达人橱窗商品详情</a>
|
||||
*/
|
||||
String GET_WINDOW_PRODUCT_DETAIL_URL = "https://api.weixin.qq.com/channels/ec/talent/window/product/get";
|
||||
}
|
||||
|
||||
/**
|
||||
* 罗盘商家版API
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
package me.chanjar.weixin.channel.api.impl;
|
||||
|
||||
import static org.testng.Assert.assertNotNull;
|
||||
import static org.testng.Assert.assertTrue;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import me.chanjar.weixin.channel.api.WxChannelService;
|
||||
import me.chanjar.weixin.channel.api.WxTalentService;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentOrderDetailParam;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentOrderDetailResponse;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentOrderListParam;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentOrderListResponse;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentWindowProductDetailParam;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentWindowProductDetailResponse;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentWindowProductListParam;
|
||||
import me.chanjar.weixin.channel.bean.talent.TalentWindowProductListResponse;
|
||||
import me.chanjar.weixin.channel.test.ApiTestModule;
|
||||
import me.chanjar.weixin.common.error.WxErrorException;
|
||||
import org.testng.annotations.Guice;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
/**
|
||||
* 带货助手服务测试
|
||||
*
|
||||
* @author <a href="https://github.com/features/copilot">GitHub Copilot</a>
|
||||
*/
|
||||
@Guice(modules = ApiTestModule.class)
|
||||
public class WxTalentServiceImplTest {
|
||||
|
||||
@Inject
|
||||
private WxChannelService channelService;
|
||||
|
||||
@Test
|
||||
public void testGetOrderList() throws WxErrorException {
|
||||
WxTalentService talentService = channelService.getTalentService();
|
||||
TalentOrderListParam param = new TalentOrderListParam();
|
||||
TalentOrderListResponse response = talentService.getOrderList(param);
|
||||
assertNotNull(response);
|
||||
assertTrue(response.isSuccess());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetOrderDetail() throws WxErrorException {
|
||||
WxTalentService talentService = channelService.getTalentService();
|
||||
TalentOrderDetailParam param = new TalentOrderDetailParam();
|
||||
param.setOrderId("");
|
||||
TalentOrderDetailResponse response = talentService.getOrderDetail(param);
|
||||
assertNotNull(response);
|
||||
assertTrue(response.isSuccess());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetWindowProductList() throws WxErrorException {
|
||||
WxTalentService talentService = channelService.getTalentService();
|
||||
TalentWindowProductListParam param = new TalentWindowProductListParam();
|
||||
TalentWindowProductListResponse response = talentService.getWindowProductList(param);
|
||||
assertNotNull(response);
|
||||
assertTrue(response.isSuccess());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetWindowProductDetail() throws WxErrorException {
|
||||
WxTalentService talentService = channelService.getTalentService();
|
||||
TalentWindowProductDetailParam param = new TalentWindowProductDetailParam();
|
||||
param.setProductId("");
|
||||
TalentWindowProductDetailResponse response = talentService.getWindowProductDetail(param);
|
||||
assertNotNull(response);
|
||||
assertTrue(response.isSuccess());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user