Commit 993e1323 by fanjiaxin

推客分佣单入库

parent b0ee19e7
Pipeline #75499 failed with stages
in 26 seconds
package com.netease.yanxuan.wx.store.sharer.biz.job;
import com.netease.mail.yanxuan.dschedule.core.biz.model.ReturnT;
import com.netease.mail.yanxuan.dschedule.core.handler.IJobHandler;
import com.netease.mail.yanxuan.dschedule.core.handler.annotation.JobHandler;
import com.netease.yanxuan.wx.store.sharer.biz.service.ICommissionOrderService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* @Description 微信小店佣金订单数据同步失败重试任务
* @Author fanjiaxin
* @Date 2025/3/27 19:08
*/
@Slf4j
@RequiredArgsConstructor
@Component
@JobHandler("weChatCommissionOrderFailRetryJob")
public class WeChatCommissionOrderFailRetryJob extends IJobHandler {
private final ICommissionOrderService iCommissionOrderService;
@Override
public ReturnT<String> execute(String... strings) {
log.info("[op:weChatCommissionOrderFailRetryJob] start...");
iCommissionOrderService.doCommissionOrderFailRetry();
log.info("[op:weChatCommissionOrderFailRetryJob] end...");
return ReturnT.SUCCESS;
}
}
package com.netease.yanxuan.wx.store.sharer.biz.job;
import com.netease.mail.yanxuan.dschedule.core.biz.model.ReturnT;
import com.netease.mail.yanxuan.dschedule.core.handler.IJobHandler;
import com.netease.mail.yanxuan.dschedule.core.handler.annotation.JobHandler;
import com.netease.yanxuan.wx.store.sharer.biz.service.ICommissionOrderService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* @Description 微信小店佣金单数据同步任务
* @Author fanjiaxin
* @Date 2025/3/27 19:08
*/
@Slf4j
@RequiredArgsConstructor
@Component
@JobHandler("weChatCommissionOrderSyncJob")
public class WeChatCommissionOrderSyncJob extends IJobHandler {
private final ICommissionOrderService iCommissionOrderService;
@Override
public ReturnT<String> execute(String... strings) {
log.info("[op:weChatCommissionOrderSyncJob] start...");
Long syncStartTimestamp = iCommissionOrderService.getLatestCommissionSyncTimestamp();
long syncEndTimestamp = System.currentTimeMillis() / 1000;
iCommissionOrderService.doCommissionOrderSync(syncStartTimestamp, syncEndTimestamp);
log.info("[op:weChatCommissionOrderSyncJob] end...");
return ReturnT.SUCCESS;
}
}
package com.netease.yanxuan.wx.store.sharer.biz.service;
/**
* @Description 订单-业务层
* @Author fanjiaxin
* @Date 2025/3/10 12:28
*/
public interface ICommissionOrderService {
/**
* 获取最新分佣单同步时间戳
*/
Long getLatestCommissionSyncTimestamp();
/**
* 佣金订单列表同步
*/
void doCommissionOrderSync(Long startTime, Long endTime);
/**
* 佣金订单失败重试
*/
void doCommissionOrderFailRetry();
}
package com.netease.yanxuan.wx.store.sharer.dal.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.netease.yanxuan.wx.store.sharer.dal.meta.model.po.SharerOrderBuyer;
/**
* 推客佣金单买家表Mapper
*/
public interface SharerOrderBuyerMapper extends BaseMapper<SharerOrderBuyer> {
}
\ No newline at end of file
package com.netease.yanxuan.wx.store.sharer.dal.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.netease.yanxuan.wx.store.sharer.dal.meta.model.po.SharerOrderCommissionFinder;
/**
* 推客佣金单分佣视频号达人表Mapper
*/
public interface SharerOrderCommissionFinderMapper extends BaseMapper<SharerOrderCommissionFinder> {
}
\ No newline at end of file
package com.netease.yanxuan.wx.store.sharer.dal.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.netease.yanxuan.wx.store.sharer.dal.meta.model.po.SharerOrderCommission;
/**
* 推客佣金单分佣表Mapper
*/
public interface SharerOrderCommissionMapper extends BaseMapper<SharerOrderCommission> {
}
\ No newline at end of file
package com.netease.yanxuan.wx.store.sharer.dal.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.netease.yanxuan.wx.store.sharer.dal.meta.model.po.SharerOrderCommissionPromoterAgency;
/**
* 推客佣金单分佣推客机构表Mapper
*/
public interface SharerOrderCommissionPromoterAgencyMapper extends BaseMapper<SharerOrderCommissionPromoterAgency> {
}
\ No newline at end of file
package com.netease.yanxuan.wx.store.sharer.dal.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.netease.yanxuan.wx.store.sharer.dal.meta.model.po.SharerOrderCommissionSharer;
/**
* 推客佣金单分佣推客表Mapper
*/
public interface SharerOrderCommissionSharerMapper extends BaseMapper<SharerOrderCommissionSharer> {
}
\ No newline at end of file
package com.netease.yanxuan.wx.store.sharer.dal.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.netease.yanxuan.wx.store.sharer.dal.meta.model.po.SharerOrderCommissionSubAgency;
/**
* 推客佣金单分佣帮卖机构表Mapper
*/
public interface SharerOrderCommissionSubAgencyMapper extends BaseMapper<SharerOrderCommissionSubAgency> {
}
\ No newline at end of file
package com.netease.yanxuan.wx.store.sharer.dal.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.netease.yanxuan.wx.store.sharer.dal.meta.model.po.SharerOrderCommissionTalent;
/**
* 推客佣金单分佣达人表Mapper
*/
public interface SharerOrderCommissionTalentMapper extends BaseMapper<SharerOrderCommissionTalent> {
}
\ No newline at end of file
package com.netease.yanxuan.wx.store.sharer.dal.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.netease.yanxuan.wx.store.sharer.dal.meta.model.po.SharerOrder;
/**
* 推客佣金单表Mapper
*/
public interface SharerOrderMapper extends BaseMapper<SharerOrder> {
}
\ No newline at end of file
package com.netease.yanxuan.wx.store.sharer.dal.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.netease.yanxuan.wx.store.sharer.dal.meta.model.po.SharerOrderProduct;
/**
* 推客佣金单商品表Mapper
*/
public interface SharerOrderProductMapper extends BaseMapper<SharerOrderProduct> {
}
\ No newline at end of file
package com.netease.yanxuan.wx.store.sharer.dal.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.netease.yanxuan.wx.store.sharer.dal.meta.model.po.SharerOrderSyncFail;
/**
* 推客佣金单同步失败表Mapper
*/
public interface SharerOrderSyncFailMapper extends BaseMapper<SharerOrderSyncFail> {
}
\ No newline at end of file
package com.netease.yanxuan.wx.store.sharer.dal.meta.model.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* 推客佣金单表
*/
@Data
@TableName("SHARER_ORDER")
public class SharerOrder {
/**
* 主键ID
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 订单号
*/
private String orderId;
/**
* 商品skuid
*/
private String skuId;
/**
* 佣金单状态
*/
private String commissionStatus;
/**
* 订单状态
*/
private String orderStatus;
/**
* 订单创建时间
*/
private Date orderCreateTime;
/**
* 订单更新时间
*/
private Date orderUpdateTime;
/**
* 创建时间
*/
private Date createTime;
}
\ No newline at end of file
package com.netease.yanxuan.wx.store.sharer.dal.meta.model.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* 推客佣金单买家表
*/
@Data
@TableName("SHARER_ORDER_BUYER")
public class SharerOrderBuyer {
/**
* 主键ID
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 佣金单ID
*/
private Long sharerOrderId;
/**
* 购买者的openid
*/
private String openId;
/**
* 购买者的unionid
*/
private String unionId;
}
\ No newline at end of file
package com.netease.yanxuan.wx.store.sharer.dal.meta.model.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* 推客佣金单分佣表
*/
@Data
@TableName("SHARER_ORDER_COMMSSION")
public class SharerOrderCommission {
/**
* 主键ID
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 佣金单ID
*/
private Long sharerOrderId;
/**
* 服务费率[0, 1000000]
*/
private Integer serviceRatio;
/**
* 服务费金额
*/
private Integer serviceAmount;
/**
* 服务费结算时间
*/
private Date profitShardingSucTime;
/**
* 0-橱窗带货,1-推客带货
*/
private Integer promotionChannel;
/**
* 作为推客的时候,推广的一些参数
*/
private String promotionInfo;
}
\ No newline at end of file
package com.netease.yanxuan.wx.store.sharer.dal.meta.model.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* 推客佣金单分佣视频号达人表
*/
@Data
@TableName("SHARER_ORDER_COMMSSION_FINDER")
public class SharerOrderCommissionFinder {
/**
* 主键ID
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 佣金单ID
*/
private Long sharerOrderId;
/**
* 佣金单分佣ID
*/
private Long sharerOrderCommissionId;
/**
* 视频号昵称
*/
private String nickname;
/**
* 佣金率[0, 1000000]
*/
private Integer ratio;
/**
* 佣金
*/
private Integer amount;
/**
* 视频号openfinderid
*/
private String openfinderid;
}
\ No newline at end of file
package com.netease.yanxuan.wx.store.sharer.dal.meta.model.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* 推客佣金单分佣推客机构表
*/
@Data
@TableName("SHARER_ORDER_COMMSSION_PROMOTER_AGENCY")
public class SharerOrderCommissionPromoterAgency {
/**
* 主键ID
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 佣金单ID
*/
private Long sharerOrderId;
/**
* 佣金单分佣ID
*/
private Long sharerOrderCommissionId;
/**
* 推客机构appid
*/
private String appid;
/**
* 推客机构昵称
*/
private String nickname;
/**
* 推客机构服务费率[0, 1000000]
*/
private Integer ratio;
/**
* 推客机构服务费
*/
private Integer amount;
/**
* 推客机构服务费结算时间
*/
private Date profitShardingSucTime;
}
\ No newline at end of file
package com.netease.yanxuan.wx.store.sharer.dal.meta.model.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* 推客佣金单分佣推客表
*/
@Data
@TableName("SHARER_ORDER_COMMSSION_SHARER")
public class SharerOrderCommissionSharer {
/**
* 主键ID
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 佣金单ID
*/
private Long sharerOrderId;
/**
* 佣金单分佣ID
*/
private Long sharerOrderCommissionId;
/**
* 推客appid
*/
private String sharerAppid;
/**
* 推客昵称
*/
private String nickname;
/**
* 推客佣金率[0, 1000000]
*/
private Integer ratio;
/**
* 推客佣金
*/
private Integer amount;
/**
* 推客的opensharerid
*/
private String opensharerid;
}
\ No newline at end of file
package com.netease.yanxuan.wx.store.sharer.dal.meta.model.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* 推客佣金单分佣帮卖机构表
*/
@Data
@TableName("SHARER_ORDER_COMMSSION_SUB_AGENCY")
public class SharerOrderCommissionSubAgency {
/**
* 主键ID
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 佣金单ID
*/
private Long sharerOrderId;
/**
* 佣金单分佣ID
*/
private Long sharerOrderCommissionId;
/**
* 帮卖机构appid
*/
private String appid;
/**
* 帮卖机构昵称
*/
private String nickname;
/**
* 帮卖机构服务费率[0, 1000000]
*/
private Integer ratio;
/**
* 帮卖机构服务费
*/
private Integer amount;
/**
* 帮卖机构服务费结算时间
*/
private Date profitShardingSucTime;
}
\ No newline at end of file
package com.netease.yanxuan.wx.store.sharer.dal.meta.model.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* 推客佣金单分佣达人表
*/
@Data
@TableName("SHARER_ORDER_COMMSSION_TALENT")
public class SharerOrderCommissionTalent {
/**
* 主键ID
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 佣金单ID
*/
private Long sharerOrderId;
/**
* 佣金单分佣ID
*/
private Long sharerOrderCommissionId;
/**
* 新带货达人appid
*/
private String talent_appid;
/**
* 达人昵称
*/
private String nickname;
/**
* 达人佣金率[0, 1000000]
*/
private Integer ratio;
/**
* 达人佣金
*/
private Integer amount;
/**
* 带货助手的opentalentid
*/
private String opentalentid;
}
\ No newline at end of file
package com.netease.yanxuan.wx.store.sharer.dal.meta.model.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* 推客佣金单商品表
*/
@Data
@TableName("SHARER_ORDER_PRODUCT")
public class SharerOrderProduct {
/**
* 主键ID
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 佣金单ID
*/
private Long sharerOrderId;
/**
* 店铺ID
*/
private String shopAppid;
/**
* 商品id
*/
private String productId;
/**
* sku小图
*/
private String thumbImg;
/**
* 可分佣金额
*/
private Integer actualPayment;
/**
* 商品标题
*/
private String title;
}
\ No newline at end of file
package com.netease.yanxuan.wx.store.sharer.dal.meta.model.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* 推客佣金单同步失败表
*/
@Data
@TableName("SHARER_ORDER_SYNC_FAIL")
public class SharerOrderSyncFail {
/**
* 主键ID
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 订单号
*/
private String orderId;
/**
* 商品skuid
*/
private String skuId;
/**
* 重试次数
*/
private Integer retryCount;
/**
* 失败信息
*/
private String failMsg;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
}
\ No newline at end of file
......@@ -68,4 +68,17 @@ public class WeChatApi {
* 设置推客的单个商品的分佣比例信息
*/
public static final String SET_SHARER_PRODUCT_COMMISSION_INFO = "/channels/ec/promoter/set_sharer_product_commission_info";
// -------------------------------------- 分佣单 --------------------------------------
/**
* 获取分佣单列表
*/
public static final String GET_COMMISSION_ORDER_LIST = "/channels/ec/league/headsupplier/order/list/get";
/**
* 获取分佣单详情
*/
public static final String GET_COMMISSION_ORDER_DETAIL = "/channels/ec/league/headsupplier/order/get";
}
package com.netease.yanxuan.wx.store.sharer.integration.handler.impl;
import com.alibaba.fastjson.JSONObject;
import com.netease.yanxuan.wx.store.sharer.integration.config.WeChatConfig;
import com.netease.yanxuan.wx.store.sharer.integration.constant.WeChatApi;
import com.netease.yanxuan.wx.store.sharer.integration.core.WeChatContextHolder;
import com.netease.yanxuan.wx.store.sharer.integration.handler.IWeChatRequest;
import com.netease.yanxuan.wx.store.sharer.integration.handler.WeChatRestTemplateHandler;
import com.netease.yanxuan.wx.store.sharer.integration.meta.model.bo.WeChatCommissionOrderDetailBO;
import com.netease.yanxuan.wx.store.sharer.integration.meta.model.vo.WeChatCommissionOrderDetailVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpMethod;
import org.springframework.stereotype.Service;
/**
* @Description 微信小店-分佣单详情请求
* @Author fanjiaxin
* @Date 2025/3/11 17:33
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class WeChatCommissionOrderDetailRequest implements IWeChatRequest {
private final WeChatContextHolder weChatContextHolder;
private final WeChatRestTemplateHandler weChatRestTemplateHandler;
private final WeChatConfig weChatConfig;
@Override
public HttpMethod getRequestMethod() {
return HttpMethod.POST;
}
@Override
public String getRequestUrl() {
return weChatConfig.getUrl() + WeChatApi.GET_COMMISSION_ORDER_DETAIL
+ "?" + WeChatApi.WECHAT_REQUEST_TOKEN_FIELD_NAME + "="
+ weChatContextHolder.getShopAccessToken();
}
/**
* 处理
*/
public WeChatCommissionOrderDetailVO handle(String orderId, String skuId) {
WeChatCommissionOrderDetailBO params = WeChatCommissionOrderDetailBO.builder()
.order_id(orderId)
.sku_id(skuId)
.build();
log.info("[op:WeChatCommissionOrderDetailRequest.handle] requestParam={}", JSONObject.toJSONString(params));
WeChatCommissionOrderDetailVO res = weChatRestTemplateHandler.execute(getRequestUrl(), getRequestMethod(),
params, WeChatCommissionOrderDetailVO.class);
log.info("[op:WeChatCommissionOrderDetailRequest.res] res={}", JSONObject.toJSONString(res));
return res;
}
}
package com.netease.yanxuan.wx.store.sharer.integration.handler.impl;
import com.alibaba.fastjson.JSONObject;
import com.netease.yanxuan.wx.store.sharer.integration.config.WeChatConfig;
import com.netease.yanxuan.wx.store.sharer.integration.constant.WeChatApi;
import com.netease.yanxuan.wx.store.sharer.integration.core.WeChatContextHolder;
import com.netease.yanxuan.wx.store.sharer.integration.handler.IWeChatRequest;
import com.netease.yanxuan.wx.store.sharer.integration.handler.WeChatRestTemplateHandler;
import com.netease.yanxuan.wx.store.sharer.integration.meta.model.bo.WeChatCommissionOrderListBO;
import com.netease.yanxuan.wx.store.sharer.integration.meta.model.bo.WeChatTimeRangeBO;
import com.netease.yanxuan.wx.store.sharer.integration.meta.model.vo.WeChatCommissionOrderListVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpMethod;
import org.springframework.stereotype.Service;
/**
* @Description 微信小店-分佣单列表请求
* @Author fanjiaxin
* @Date 2025/3/11 17:33
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class WeChatCommissionOrderListRequest implements IWeChatRequest {
private final WeChatContextHolder weChatContextHolder;
private final WeChatRestTemplateHandler weChatRestTemplateHandler;
private final WeChatConfig weChatConfig;
@Override
public HttpMethod getRequestMethod() {
return HttpMethod.POST;
}
@Override
public String getRequestUrl() {
return weChatConfig.getUrl() + WeChatApi.GET_COMMISSION_ORDER_LIST
+ "?" + WeChatApi.WECHAT_REQUEST_TOKEN_FIELD_NAME + "="
+ weChatContextHolder.getShopAccessToken();
}
/**
* 处理
*/
public WeChatCommissionOrderListVO handle(String shopAppid, Long startTime, Long endTime, String nextKey, Integer pageSize) {
WeChatCommissionOrderListBO params = WeChatCommissionOrderListBO.builder()
.appid(shopAppid)
.create_time_range(WeChatTimeRangeBO.builder().start_time(startTime).end_time(endTime).build())
.next_key(nextKey)
.page_size(pageSize)
.build();
log.info("[op:WeChatCommissionOrderListRequest.handle] requestParam={}", JSONObject.toJSONString(params));
WeChatCommissionOrderListVO res = weChatRestTemplateHandler.execute(getRequestUrl(), getRequestMethod(),
params, WeChatCommissionOrderListVO.class);
log.info("[op:WeChatCommissionOrderListRequest.res] res={}", JSONObject.toJSONString(res));
return res;
}
}
package com.netease.yanxuan.wx.store.sharer.integration.meta.model.bo;
import lombok.Builder;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 分佣单详情-业务对象
* @Author fanjiaxin
* @Date 2025/3/11 18:43
*/
@Data
@Builder
public class WeChatCommissionOrderDetailBO implements Serializable {
private static final long serialVersionUID = 1996751915518651231L;
/**
* 订单ID
*/
private String order_id;
/**
* 商品SKU ID
*/
private String sku_id;
}
package com.netease.yanxuan.wx.store.sharer.integration.meta.model.bo;
import lombok.Builder;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 分佣单列表-业务对象
* @Author fanjiaxin
* @Date 2025/3/11 18:43
*/
@Data
@Builder
public class WeChatCommissionOrderListBO implements Serializable {
private static final long serialVersionUID = 1996751915518651231L;
/**
* 佣金单所属小店appid
*/
private String appid;
/**
* 创建时间范围
*/
private WeChatTimeRangeBO create_time_range;
/**
* 分页参数,第一页为空,后面返回前面一页返回的数据
*/
private String next_key;
/**
* 一页获取多少个推客,最大 30
*/
private Integer page_size;
}
package com.netease.yanxuan.wx.store.sharer.integration.meta.model.bo;
import lombok.Builder;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 时间范围-业务对象
* @Author fanjiaxin
* @Date 2025/3/11 18:43
*/
@Data
@Builder
public class WeChatTimeRangeBO implements Serializable {
private static final long serialVersionUID = 1996751915518651231L;
/**
* 开始时间,秒级时间戳
*/
private Long start_time;
/**
* 结束时间,秒级时间戳
*/
private Long end_time;
}
package com.netease.yanxuan.wx.store.sharer.integration.meta.model.vo;
import lombok.Data;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
* @Description 分佣单列表项-视图对象
* @Author fanjiaxin
* @Date 2025/5/11 19:05
*/
@Data
public class WeChatCommissionOrderDetailVO extends WeChatCoreVO {
private static final long serialVersionUID = 8529644543147459802L;
/**
* 订单号
*/
private String order_id;
/**
* 商品skuid
*/
private Long sku_id;
/**
* 秒级时间戳
*/
private Long create_time;
/**
* 秒级时间戳
*/
private Long update_time;
/**
* 佣金单状态,枚举值详情请参考 CommissionOrderStatus
*/
private Integer status;
/**
* 订单详情,结构体详情请参考OrderDetail
*/
private OrderDetailVO order_detail;
@Data
public class OrderDetailVO {
/**
* 小店商家信息,结构体详情请参考BizInfo
*/
private BizInfoVO shop_info;
/**
* 佣金单商品信息,结构体详情请参考 ProductInfo
*/
private ProductInfoVO product_info;
/**
* 订单信息,结构体详情请参考 OrderInfo
*/
private OrderInfoVO order_info;
/**
* 分佣信息,结构体详情请参考 CommissionInfo
*/
private CommissionInfoVO commission_info;
/**
* 买家信息,结构体详情请参考 BuyerInfo
*/
private BuyerInfoVO buyer_info;
}
@Data
public class BizInfoVO {
/**
* 所属小店appid
*/
private String appid;
}
@Data
public class ProductInfoVO {
/**
* 商品id
*/
private String product_id;
/**
* sku小图
*/
private String thumb_img;
/**
* 可分佣金额
*/
private Integer actual_payment;
/**
* 商品标题
*/
private String title;
}
@Data
public class OrderInfoVO {
/**
* 订单状态,枚举值详情请参考OrderStatus
*/
private Integer status;
}
@Data
public class CommissionInfoVO {
/**
* 视频号达人信息,结构体详情请参考 FinderInfo
*/
private FinderInfoVO finder_info;
/**
* 服务费率[0, 1000000]
*/
private Integer service_ratio;
/**
* 服务费金额
*/
private Integer service_amount;
/**
* 服务费结算时间
*/
private Long profit_sharding_suc_time;
/**
* 0-橱窗带货,1-推客带货
*/
private Integer promotion_channel;
/**
* 推客分佣信息,结构体详情请参考 SharerInfo
*/
private SharerInfoVO sharer_info;
/**
* 新带货达人信息,结构体详情请参考 TalentInfo
*/
private TalentInfoVO talent_info;
/**
* 作为推客的时候,推广的一些参数,结构体详情请参考 PromotionInfo
*/
private PromotionInfoVO promotion_info;
/**
* 帮卖机构分佣,结构体详情请参考 AgencyInfo
*/
private AgencyInfoVO sub_agency_info;
/**
* 推客机构分佣,结构体详情请参考 AgencyInfo
*/
private AgencyInfoVO promoter_agency_info;
}
@Data
public class BuyerInfoVO {
/**
* 购买者的openid
*/
private String open_id;
/**
* 购买者的unionid
*/
private String union_id;
}
@Data
public class FinderInfoVO {
/**
* 视频号昵称
*/
private String nickname;
/**
* 佣金率[0, 1000000]
*/
private Integer ratio;
/**
* 佣金
*/
private Integer amount;
/**
* 视频号openfinderid
*/
private String openfinderid;
}
@Data
public class SharerInfoVO {
/**
* 推客appid
*/
private String sharer_appid;
/**
* 推客昵称
*/
private String nickname;
/**
* 佣金率[0, 1000000]
*/
private Integer ratio;
/**
* 佣金
*/
private Integer amount;
/**
* 推客的opensharerid
*/
private String opensharerid;
}
@Data
public class TalentInfoVO {
/**
* 新带货达人appid
*/
private String talent_appid;
/**
* 达人昵称
*/
private String nickname;
/**
* 佣金率[0, 1000000]
*/
private Integer ratio;
/**
* 佣金
*/
private Integer amount;
/**
* 带货助手的opentalentid
*/
private String opentalentid;
}
@Data
public class AgencyInfoVO {
/**
* 机构appid
*/
private String appid;
/**
* 帮卖机构昵称
*/
private String nickname;
/**
* 服务费率[0, 1000000]
*/
private Integer ratio;
/**
* 服务费
*/
private Integer amount;
/**
* 服务费结算时间
*/
private Long profit_sharding_suc_time;
}
@Data
public class PromotionInfoVO {
/**
* 推客推广的类型 【0:无 3:私域商品推广 4:带货内容推广 6:自营内容推广】
*/
private Integer channel_type;
/**
* 推广渠道来自视频号时的视频号信息
*/
private PromotionFinderInfoVO finder_info;
/**
* 推广渠道来自公众号的公众号信息
*/
private PromotionMpInfoVO mp_info;
/**
* 推广渠道来自带货内容推广时的带货助手信息
*/
private PromotionTalentInfoVO talent_info;
}
@Data
public class PromotionTalentInfoVO {
/**
* 带货助手的appid
*/
private String talent_appid;
/**
* 达人昵称
*/
private String nickname;
/**
* 带货助手的opentalentid
*/
private String opentalentid;
}
@Data
public class PromotionFinderInfoVO {
/**
* 视频号 id
*/
private String finder_id;
/**
* 昵称
*/
private String nickname;
/**
* 视频号的openfinderid
*/
private String openfinderid;
}
@Data
public class PromotionMpInfoVO {
/**
* 公众号的 appid
*/
private String appid;
/**
* 昵称
*/
private String nickname;
}
/**
* 佣金单状态枚举类
*/
@Getter
@RequiredArgsConstructor
public enum CommissionOrderStatus {
WAITING_SETTLEMENT(20, "待结算"),
SETTLED(100, "已结算"),
CANCELED(200, "取消结算");
private final Integer code;
private final String description;
}
/**
* 订单状态枚举类
*/
@Getter
@RequiredArgsConstructor
public enum OrderStatus {
PENDING_PAYMENT(10, "待付款"),
AWAITING_GIFT_RECEIPT(12, "待收礼"),
PENDING_SHIPMENT(20, "待发货"),
PARTIALLY_SHIPPED(21, "部分发货"),
PENDING_DELIVERY(30, "待收货"),
COMPLETED(100, "完成"),
CANCELLED_AFTER_FULL_AFTERSALES(200, "全部商品售后之后,订单取消"),
CANCELLED_DUE_TO_NON_PAYMENT(250, "未付款用户主动取消或超时未付款订单自动取消");
private final Integer code;
private final String description;
}
}
\ No newline at end of file
package com.netease.yanxuan.wx.store.sharer.integration.meta.model.vo;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 分佣单列表项-视图对象
* @Author fanjiaxin
* @Date 2025/5/11 19:05
*/
@Data
public class WeChatCommissionOrderItemVO implements Serializable {
private static final long serialVersionUID = 8529644543147459802L;
/**
* 订单ID
*/
private String order_id;
/**
* 商品SKU ID
*/
private String sku_id;
}
package com.netease.yanxuan.wx.store.sharer.integration.meta.model.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* @Description 分佣单列表-视图对象
* @Author fanjiaxin
* @Date 2025/5/11 19:05
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WeChatCommissionOrderListVO extends WeChatCoreVO {
private static final long serialVersionUID = 8529644543147459802L;
/**
* 是否还有剩余商品
*/
private Boolean has_more;
/**
* 分页参数,第一页为空,后面返回前面一页返回的数据
*/
private String next_key;
/**
* 集合
*/
private List<WeChatCommissionOrderItemVO> list;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment