apps = new HashMap<>();
+
+ /**
+ * 存储策略
+ */
+ private final ConfigStorage configStorage = new ConfigStorage();
+
+ @Data
+ @NoArgsConstructor
+ public static class ConfigStorage implements Serializable {
+ private static final long serialVersionUID = - 5152619132544179942L;
+
+ /**
+ * 存储类型.
+ */
+ private StorageType type = StorageType.MEMORY;
+
+ /**
+ * 指定key前缀.
+ */
+ private String keyPrefix = "wx:store:multi";
+
+ /**
+ * redis连接配置.
+ */
+ private final WxStoreMultiRedisProperties redis = new WxStoreMultiRedisProperties();
+
+ /**
+ * http客户端类型.
+ */
+ private HttpClientType httpClientType = HttpClientType.HTTP_CLIENT;
+
+ /**
+ * http代理主机.
+ */
+ private String httpProxyHost;
+
+ /**
+ * http代理端口.
+ */
+ private Integer httpProxyPort;
+
+ /**
+ * http代理用户名.
+ */
+ private String httpProxyUsername;
+
+ /**
+ * http代理密码.
+ */
+ private String httpProxyPassword;
+
+ /**
+ * http 请求最大重试次数
+ *
+ * {@link com.binarywang.wxjava.store.api.WxStoreService#setMaxRetryTimes(int)}
+ * {@link com.binarywang.wxjava.store.api.impl.BaseWxStoreServiceImpl#setMaxRetryTimes(int)}
+ */
+ private int maxRetryTimes = 5;
+
+ /**
+ * http 请求重试间隔
+ *
+ * {@link com.binarywang.wxjava.store.api.WxStoreService#setRetrySleepMillis(int)}
+ * {@link com.binarywang.wxjava.store.api.impl.BaseWxStoreServiceImpl#setRetrySleepMillis(int)}
+ */
+ private int retrySleepMillis = 1000;
+ }
+}
diff --git a/solon-plugins/wx-java-store-multi-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/properties/WxStoreMultiRedisProperties.java b/solon-plugins/wx-java-store-multi-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/properties/WxStoreMultiRedisProperties.java
new file mode 100644
index 0000000000..1df12ab720
--- /dev/null
+++ b/solon-plugins/wx-java-store-multi-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/properties/WxStoreMultiRedisProperties.java
@@ -0,0 +1,63 @@
+package com.binarywang.solon.wxjava.store.properties;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * Redis配置
+ *
+ * @author Winnie
+ * @date 2024/9/13
+ */
+@Data
+@NoArgsConstructor
+public class WxStoreMultiRedisProperties implements Serializable {
+ private static final long serialVersionUID = 9061055444734277357L;
+
+ /**
+ * 主机地址.
+ */
+ private String host = "127.0.0.1";
+
+ /**
+ * 端口号.
+ */
+ private int port = 6379;
+
+ /**
+ * 密码.
+ */
+ private String password;
+
+ /**
+ * 超时.
+ */
+ private int timeout = 2000;
+
+ /**
+ * 数据库.
+ */
+ private int database = 0;
+
+ /**
+ * 最大活动连接数
+ */
+ private Integer maxActive;
+
+ /**
+ * 最大空闲连接数
+ */
+ private Integer maxIdle;
+
+ /**
+ * 最小空闲连接数
+ */
+ private Integer minIdle;
+
+ /**
+ * 最大等待时间
+ */
+ private Integer maxWaitMillis;
+}
diff --git a/solon-plugins/wx-java-store-multi-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/properties/WxStoreSingleProperties.java b/solon-plugins/wx-java-store-multi-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/properties/WxStoreSingleProperties.java
new file mode 100644
index 0000000000..47c31fe886
--- /dev/null
+++ b/solon-plugins/wx-java-store-multi-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/properties/WxStoreSingleProperties.java
@@ -0,0 +1,43 @@
+package com.binarywang.solon.wxjava.store.properties;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 微信小店相关配置属性
+ *
+ * @author Winnie
+ * @date 2024/9/13
+ */
+@Data
+@NoArgsConstructor
+public class WxStoreSingleProperties implements Serializable {
+ private static final long serialVersionUID = 5306630351265124825L;
+
+ /**
+ * 设置微信小店的 appid.
+ */
+ private String appId;
+
+ /**
+ * 设置微信小店的 secret.
+ */
+ private String secret;
+
+ /**
+ * 设置微信小店的 token.
+ */
+ private String token;
+
+ /**
+ * 设置微信小店的 EncodingAESKey.
+ */
+ private String aesKey;
+
+ /**
+ * 是否使用稳定版 Access Token
+ */
+ private boolean useStableAccessToken = false;
+}
diff --git a/solon-plugins/wx-java-store-multi-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/service/WxStoreMultiServices.java b/solon-plugins/wx-java-store-multi-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/service/WxStoreMultiServices.java
new file mode 100644
index 0000000000..f059819909
--- /dev/null
+++ b/solon-plugins/wx-java-store-multi-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/service/WxStoreMultiServices.java
@@ -0,0 +1,26 @@
+package com.binarywang.solon.wxjava.store.service;
+
+import com.binarywang.wxjava.store.api.WxStoreService;
+
+/**
+ * 视频号 {@link WxStoreService} 所有实例存放类.
+ *
+ * @author Winnie
+ * @date 2024/9/13
+ */
+public interface WxStoreMultiServices {
+ /**
+ * 通过租户 Id 获取 WxStoreService
+ *
+ * @param tenantId 租户 Id
+ * @return WxStoreService
+ */
+ WxStoreService getWxStoreService(String tenantId);
+
+ /**
+ * 根据租户 Id,从列表中移除一个 WxStoreService 实例
+ *
+ * @param tenantId 租户 Id
+ */
+ void removeWxStoreService(String tenantId);
+}
diff --git a/solon-plugins/wx-java-store-multi-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/service/WxStoreMultiServicesImpl.java b/solon-plugins/wx-java-store-multi-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/service/WxStoreMultiServicesImpl.java
new file mode 100644
index 0000000000..daa6cb1305
--- /dev/null
+++ b/solon-plugins/wx-java-store-multi-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/service/WxStoreMultiServicesImpl.java
@@ -0,0 +1,36 @@
+package com.binarywang.solon.wxjava.store.service;
+
+import com.binarywang.wxjava.store.api.WxStoreService;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * 视频号 {@link WxStoreMultiServices} 实现
+ *
+ * @author Winnie
+ * @date 2024/9/13
+ */
+public class WxStoreMultiServicesImpl implements WxStoreMultiServices {
+ private final Map services = new ConcurrentHashMap<>();
+
+ @Override
+ public WxStoreService getWxStoreService(String tenantId) {
+ return this.services.get(tenantId);
+ }
+
+ /**
+ * 根据租户 Id,添加一个 WxStoreService 到列表
+ *
+ * @param tenantId 租户 Id
+ * @param wxStoreService WxStoreService 实例
+ */
+ public void addWxStoreService(String tenantId, WxStoreService wxStoreService) {
+ this.services.put(tenantId, wxStoreService);
+ }
+
+ @Override
+ public void removeWxStoreService(String tenantId) {
+ this.services.remove(tenantId);
+ }
+}
diff --git a/solon-plugins/wx-java-store-multi-solon-plugin/src/main/resources/META-INF/solon/wx-java-multi-store-solon-plugin.properties b/solon-plugins/wx-java-store-multi-solon-plugin/src/main/resources/META-INF/solon/wx-java-multi-store-solon-plugin.properties
new file mode 100644
index 0000000000..bee1c44b01
--- /dev/null
+++ b/solon-plugins/wx-java-store-multi-solon-plugin/src/main/resources/META-INF/solon/wx-java-multi-store-solon-plugin.properties
@@ -0,0 +1,2 @@
+solon.plugin=com.binarywang.solon.wxjava.store.integration.WxStoreMultiPluginImpl
+solon.plugin.priority=10
diff --git a/solon-plugins/wx-java-store-multi-solon-plugin/src/test/java/features/test/LoadTest.java b/solon-plugins/wx-java-store-multi-solon-plugin/src/test/java/features/test/LoadTest.java
new file mode 100644
index 0000000000..d049f5a51a
--- /dev/null
+++ b/solon-plugins/wx-java-store-multi-solon-plugin/src/test/java/features/test/LoadTest.java
@@ -0,0 +1,15 @@
+package features.test;
+
+import org.junit.jupiter.api.Test;
+import org.noear.solon.test.SolonTest;
+
+/**
+ * @author noear 2024/9/4 created
+ */
+@SolonTest
+public class LoadTest {
+ @Test
+ public void load(){
+
+ }
+}
diff --git a/solon-plugins/wx-java-store-multi-solon-plugin/src/test/resources/app.properties b/solon-plugins/wx-java-store-multi-solon-plugin/src/test/resources/app.properties
new file mode 100644
index 0000000000..f55dafd6db
--- /dev/null
+++ b/solon-plugins/wx-java-store-multi-solon-plugin/src/test/resources/app.properties
@@ -0,0 +1,36 @@
+# 视频号配置
+## 应用 1 配置(必填)
+wx.store.apps.tenantId1.app-id=appId
+wx.store.apps.tenantId1.secret=secret
+## 选填
+wx.store.apps.tenantId1.use-stable-access-token=false
+wx.store.apps.tenantId1.token=
+wx.store.apps.tenantId1.aes-key=
+## 应用 2 配置(必填)
+wx.store.apps.tenantId2.app-id=@appId
+wx.store.apps.tenantId2.secret=@secret
+## 选填
+wx.store.apps.tenantId2.use-stable-access-token=false
+wx.store.apps.tenantId2.token=
+wx.store.apps.tenantId2.aes-key=
+
+# ConfigStorage 配置(选填)
+## 配置类型: memory(默认), jedis, redisson, redis_template
+wx.store.config-storage.type=memory
+## 相关redis前缀配置: wx:store:multi(默认)
+wx.store.config-storage.key-prefix=wx:store:multi
+wx.store.config-storage.redis.host=127.0.0.1
+wx.store.config-storage.redis.port=6379
+wx.store.config-storage.redis.password=123456
+
+# http 客户端配置(选填)
+## # http客户端类型: http_client(默认)
+wx.store.config-storage.http-client-type=http_client
+wx.store.config-storage.http-proxy-host=
+wx.store.config-storage.http-proxy-port=
+wx.store.config-storage.http-proxy-username=
+wx.store.config-storage.http-proxy-password=
+## 最大重试次数,默认:5 次,如果小于 0,则为 0
+wx.store.config-storage.max-retry-times=5
+## 重试时间间隔步进,默认:1000 毫秒,如果小于 0,则为 1000
+wx.store.config-storage.retry-sleep-millis=1000
diff --git a/solon-plugins/wx-java-store-solon-plugin/README.md b/solon-plugins/wx-java-store-solon-plugin/README.md
new file mode 100644
index 0000000000..c321c9274b
--- /dev/null
+++ b/solon-plugins/wx-java-store-solon-plugin/README.md
@@ -0,0 +1,91 @@
+# wx-java-store-solon-plugin
+
+## 快速开始
+1. 引入依赖
+ ```xml
+
+
+ com.github.binarywang
+ wx-java-store-solon-plugin
+ ${version}
+
+
+
+
+ redis.clients
+ jedis
+ ${jedis.version}
+
+
+
+
+ org.redisson
+ redisson
+ ${redisson.version}
+
+
+ ```
+2. 添加配置(app.properties)
+ ```properties
+ # 视频号配置(必填)
+ ## 微信小店的appId和secret
+ wx.store.app-id=@appId
+ wx.store.secret=@secret
+ # 视频号配置 选填
+ ## 设置微信小店消息服务器配置的token
+ wx.store.token=@token
+ ## 设置微信小店消息服务器配置的EncodingAESKey
+ wx.store.aes-key=
+ ## 支持JSON或者XML格式,默认JSON
+ wx.store.msg-data-format=JSON
+ ## 是否使用稳定版 Access Token
+ wx.store.use-stable-access-token=false
+
+
+ # ConfigStorage 配置(选填)
+ ## 配置类型: memory(默认), jedis, redisson, redis_template
+ wx.store.config-storage.type=memory
+ ## 相关redis前缀配置: wx:store(默认)
+ wx.store.config-storage.key-prefix=wx:store
+ wx.store.config-storage.redis.host=127.0.0.1
+ wx.store.config-storage.redis.port=6379
+ wx.store.config-storage.redis.password=123456
+
+
+ # http 客户端配置(选填)
+ ## # http客户端类型: http_client(默认)
+ wx.store.config-storage.http-client-type=http_client
+ wx.store.config-storage.http-proxy-host=
+ wx.store.config-storage.http-proxy-port=
+ wx.store.config-storage.http-proxy-username=
+ wx.store.config-storage.http-proxy-password=
+ ## 最大重试次数,默认:5 次,如果小于 0,则为 0
+ wx.store.config-storage.max-retry-times=5
+ ## 重试时间间隔步进,默认:1000 毫秒,如果小于 0,则为 1000
+ wx.store.config-storage.retry-sleep-millis=1000
+ ```
+3. 自动注入的类型
+- `WxStoreService`
+- `WxStoreConfig`
+4. 使用样例
+
+```java
+import com.binarywang.wxjava.store.api.WxStoreService;
+import com.binarywang.wxjava.store.bean.shop.ShopInfoResponse;
+import com.binarywang.wxjava.store.util.JsonUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+import org.noear.solon.annotation.Inject;
+
+@Component
+public class DemoService {
+ @Inject
+ private WxStoreService wxStoreService;
+
+ public String getShopInfo() throws WxErrorException {
+ // 获取店铺基本信息
+ ShopInfoResponse response = wxStoreService.getBasicService().getShopInfo();
+ // 此处为演示,如果要返回response的结果,建议自己封装一个VO,避免直接返回response
+ return JsonUtils.encode(response);
+ }
+}
+```
diff --git a/solon-plugins/wx-java-store-solon-plugin/pom.xml b/solon-plugins/wx-java-store-solon-plugin/pom.xml
new file mode 100644
index 0000000000..d516f29789
--- /dev/null
+++ b/solon-plugins/wx-java-store-solon-plugin/pom.xml
@@ -0,0 +1,31 @@
+
+
+ wx-java-solon-plugins
+ com.github.binarywang
+ 4.8.6.B
+
+ 4.0.0
+
+ wx-java-store-solon-plugin
+ WxJava - Solon Plugin for Store
+ 微信小店开发的 Solon Plugin
+
+
+
+ com.github.binarywang
+ weixin-java-store
+ ${project.version}
+
+
+ redis.clients
+ jedis
+ provided
+
+
+ org.redisson
+ redisson
+ provided
+
+
+
diff --git a/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/config/WxStoreServiceAutoConfiguration.java b/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/config/WxStoreServiceAutoConfiguration.java
new file mode 100644
index 0000000000..69639a8dca
--- /dev/null
+++ b/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/config/WxStoreServiceAutoConfiguration.java
@@ -0,0 +1,39 @@
+package com.binarywang.solon.wxjava.store.config;
+
+
+import com.binarywang.solon.wxjava.store.properties.WxStoreProperties;
+import com.binarywang.solon.wxjava.store.enums.HttpClientType;
+import lombok.AllArgsConstructor;
+import com.binarywang.wxjava.store.api.WxStoreService;
+import com.binarywang.wxjava.store.api.impl.WxStoreServiceHttpClientImpl;
+import com.binarywang.wxjava.store.api.impl.WxStoreServiceHttpComponentsImpl;
+import com.binarywang.wxjava.store.config.WxStoreConfig;
+import org.noear.solon.annotation.Bean;
+import org.noear.solon.annotation.Condition;
+import org.noear.solon.annotation.Configuration;
+
+/**
+ * 微信小程序平台相关服务自动注册
+ *
+ * @author Zeyes
+ */
+@Configuration
+@AllArgsConstructor
+public class WxStoreServiceAutoConfiguration {
+ private final WxStoreProperties properties;
+
+ /**
+ * Store Service
+ *
+ * @return Store Service
+ */
+ @Bean
+ @Condition(onMissingBean=WxStoreService.class, onBean = WxStoreConfig.class)
+ public WxStoreService wxStoreService(WxStoreConfig wxStoreConfig) {
+ HttpClientType httpClientType = properties.getConfigStorage().getHttpClientType();
+ WxStoreService wxStoreService = httpClientType == HttpClientType.HttpClient
+ ? new WxStoreServiceHttpClientImpl() : new WxStoreServiceHttpComponentsImpl();
+ wxStoreService.setConfig(wxStoreConfig);
+ return wxStoreService;
+ }
+}
diff --git a/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/config/storage/AbstractWxStoreConfigStorageConfiguration.java b/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/config/storage/AbstractWxStoreConfigStorageConfiguration.java
new file mode 100644
index 0000000000..aed018d72a
--- /dev/null
+++ b/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/config/storage/AbstractWxStoreConfigStorageConfiguration.java
@@ -0,0 +1,40 @@
+package com.binarywang.solon.wxjava.store.config.storage;
+
+import com.binarywang.solon.wxjava.store.properties.WxStoreProperties;
+import com.binarywang.wxjava.store.config.impl.WxStoreDefaultConfigImpl;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * @author Zeyes
+ */
+public abstract class AbstractWxStoreConfigStorageConfiguration {
+
+ protected WxStoreDefaultConfigImpl config(WxStoreDefaultConfigImpl config, WxStoreProperties properties) {
+ config.setAppid(StringUtils.trimToNull(properties.getAppid()));
+ config.setSecret(StringUtils.trimToNull(properties.getSecret()));
+ config.setToken(StringUtils.trimToNull(properties.getToken()));
+ config.setAesKey(StringUtils.trimToNull(properties.getAesKey()));
+ config.setMsgDataFormat(StringUtils.trimToNull(properties.getMsgDataFormat()));
+ config.setStableAccessToken(properties.isUseStableAccessToken());
+
+ WxStoreProperties.ConfigStorage configStorageProperties = properties.getConfigStorage();
+ config.setHttpProxyHost(configStorageProperties.getHttpProxyHost());
+ config.setHttpProxyUsername(configStorageProperties.getHttpProxyUsername());
+ config.setHttpProxyPassword(configStorageProperties.getHttpProxyPassword());
+ if (configStorageProperties.getHttpProxyPort() != null) {
+ config.setHttpProxyPort(configStorageProperties.getHttpProxyPort());
+ }
+
+ int maxRetryTimes = configStorageProperties.getMaxRetryTimes();
+ if (configStorageProperties.getMaxRetryTimes() < 0) {
+ maxRetryTimes = 0;
+ }
+ int retrySleepMillis = configStorageProperties.getRetrySleepMillis();
+ if (retrySleepMillis < 0) {
+ retrySleepMillis = 1000;
+ }
+ config.setRetrySleepMillis(retrySleepMillis);
+ config.setMaxRetryTimes(maxRetryTimes);
+ return config;
+ }
+}
diff --git a/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/config/storage/WxStoreInJedisConfigStorageConfiguration.java b/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/config/storage/WxStoreInJedisConfigStorageConfiguration.java
new file mode 100644
index 0000000000..054dd54bdd
--- /dev/null
+++ b/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/config/storage/WxStoreInJedisConfigStorageConfiguration.java
@@ -0,0 +1,74 @@
+package com.binarywang.solon.wxjava.store.config.storage;
+
+
+import com.binarywang.solon.wxjava.store.properties.RedisProperties;
+import com.binarywang.solon.wxjava.store.properties.WxStoreProperties;
+import lombok.RequiredArgsConstructor;
+import com.binarywang.wxjava.store.config.WxStoreConfig;
+import com.binarywang.wxjava.store.config.impl.WxStoreRedisConfigImpl;
+import me.chanjar.weixin.common.redis.JedisWxRedisOps;
+import me.chanjar.weixin.common.redis.WxRedisOps;
+import org.apache.commons.lang3.StringUtils;
+import org.noear.solon.annotation.Bean;
+import org.noear.solon.annotation.Condition;
+import org.noear.solon.annotation.Configuration;
+import org.noear.solon.core.AppContext;
+import redis.clients.jedis.JedisPool;
+import redis.clients.jedis.JedisPoolConfig;
+
+/**
+ * @author Zeyes
+ * @author noear
+ */
+@Configuration
+@Condition(
+ onProperty = "${"+WxStoreProperties.PREFIX + ".configStorage.type} = jedis",
+ onClass = JedisPool.class
+)
+@RequiredArgsConstructor
+public class WxStoreInJedisConfigStorageConfiguration extends AbstractWxStoreConfigStorageConfiguration {
+ private final WxStoreProperties properties;
+ private final AppContext applicationContext;
+
+ @Bean
+ @Condition(onMissingBean=WxStoreConfig.class)
+ public WxStoreConfig wxStoreConfig() {
+ WxStoreRedisConfigImpl config = getWxStoreRedisConfig();
+ return this.config(config, properties);
+ }
+
+ private WxStoreRedisConfigImpl getWxStoreRedisConfig() {
+ RedisProperties redisProperties = properties.getConfigStorage().getRedis();
+ JedisPool jedisPool;
+ if (redisProperties != null && StringUtils.isNotEmpty(redisProperties.getHost())) {
+ jedisPool = getJedisPool();
+ } else {
+ jedisPool = applicationContext.getBean(JedisPool.class);
+ }
+ WxRedisOps redisOps = new JedisWxRedisOps(jedisPool);
+ return new WxStoreRedisConfigImpl(redisOps, properties.getConfigStorage().getKeyPrefix());
+ }
+
+ private JedisPool getJedisPool() {
+ WxStoreProperties.ConfigStorage storage = properties.getConfigStorage();
+ RedisProperties redis = storage.getRedis();
+
+ JedisPoolConfig config = new JedisPoolConfig();
+ if (redis.getMaxActive() != null) {
+ config.setMaxTotal(redis.getMaxActive());
+ }
+ if (redis.getMaxIdle() != null) {
+ config.setMaxIdle(redis.getMaxIdle());
+ }
+ if (redis.getMaxWaitMillis() != null) {
+ config.setMaxWaitMillis(redis.getMaxWaitMillis());
+ }
+ if (redis.getMinIdle() != null) {
+ config.setMinIdle(redis.getMinIdle());
+ }
+ config.setTestOnBorrow(true);
+ config.setTestWhileIdle(true);
+
+ return new JedisPool(config, redis.getHost(), redis.getPort(), redis.getTimeout(), redis.getPassword(), redis.getDatabase());
+ }
+}
diff --git a/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/config/storage/WxStoreInMemoryConfigStorageConfiguration.java b/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/config/storage/WxStoreInMemoryConfigStorageConfiguration.java
new file mode 100644
index 0000000000..eaf95f213f
--- /dev/null
+++ b/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/config/storage/WxStoreInMemoryConfigStorageConfiguration.java
@@ -0,0 +1,29 @@
+package com.binarywang.solon.wxjava.store.config.storage;
+
+
+import com.binarywang.solon.wxjava.store.properties.WxStoreProperties;
+import lombok.RequiredArgsConstructor;
+import com.binarywang.wxjava.store.config.WxStoreConfig;
+import com.binarywang.wxjava.store.config.impl.WxStoreDefaultConfigImpl;
+import org.noear.solon.annotation.Bean;
+import org.noear.solon.annotation.Condition;
+import org.noear.solon.annotation.Configuration;
+
+/**
+ * @author Zeyes
+ */
+@Configuration
+@Condition(
+ onProperty = "${"+WxStoreProperties.PREFIX + ".configStorage.type:memory} = memory"
+)
+@RequiredArgsConstructor
+public class WxStoreInMemoryConfigStorageConfiguration extends AbstractWxStoreConfigStorageConfiguration {
+ private final WxStoreProperties properties;
+
+ @Bean
+ @Condition(onMissingBean = WxStoreConfig.class)
+ public WxStoreConfig wxStoreConfig() {
+ WxStoreDefaultConfigImpl config = new WxStoreDefaultConfigImpl();
+ return this.config(config, properties);
+ }
+}
diff --git a/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/config/storage/WxStoreInRedissonConfigStorageConfiguration.java b/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/config/storage/WxStoreInRedissonConfigStorageConfiguration.java
new file mode 100644
index 0000000000..2558aafa8a
--- /dev/null
+++ b/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/config/storage/WxStoreInRedissonConfigStorageConfiguration.java
@@ -0,0 +1,62 @@
+package com.binarywang.solon.wxjava.store.config.storage;
+
+
+import com.binarywang.solon.wxjava.store.properties.RedisProperties;
+import com.binarywang.solon.wxjava.store.properties.WxStoreProperties;
+import lombok.RequiredArgsConstructor;
+import com.binarywang.wxjava.store.config.WxStoreConfig;
+import com.binarywang.wxjava.store.config.impl.WxStoreRedissonConfigImpl;
+import org.apache.commons.lang3.StringUtils;
+import org.noear.solon.annotation.Bean;
+import org.noear.solon.annotation.Condition;
+import org.noear.solon.annotation.Configuration;
+import org.noear.solon.core.AppContext;
+import org.redisson.Redisson;
+import org.redisson.api.RedissonClient;
+import org.redisson.config.Config;
+import org.redisson.config.TransportMode;
+
+/**
+ * @author Zeyes
+ */
+@Configuration
+@Condition(
+ onProperty = "${"+WxStoreProperties.PREFIX + ".configStorage.type} = redisson",
+ onClass = Redisson.class
+)
+@RequiredArgsConstructor
+public class WxStoreInRedissonConfigStorageConfiguration extends AbstractWxStoreConfigStorageConfiguration {
+ private final WxStoreProperties properties;
+ private final AppContext applicationContext;
+
+ @Bean
+ @Condition(onMissingBean=WxStoreConfig.class)
+ public WxStoreConfig wxStoreConfig() {
+ WxStoreRedissonConfigImpl config = getWxStoreRedissonConfig();
+ return this.config(config, properties);
+ }
+
+ private WxStoreRedissonConfigImpl getWxStoreRedissonConfig() {
+ RedisProperties redisProperties = properties.getConfigStorage().getRedis();
+ RedissonClient redissonClient;
+ if (redisProperties != null && StringUtils.isNotEmpty(redisProperties.getHost())) {
+ redissonClient = getRedissonClient();
+ } else {
+ redissonClient = applicationContext.getBean(RedissonClient.class);
+ }
+ return new WxStoreRedissonConfigImpl(redissonClient, properties.getConfigStorage().getKeyPrefix());
+ }
+
+ private RedissonClient getRedissonClient() {
+ WxStoreProperties.ConfigStorage storage = properties.getConfigStorage();
+ RedisProperties redis = storage.getRedis();
+
+ Config config = new Config();
+ config.useSingleServer()
+ .setAddress("redis://" + redis.getHost() + ":" + redis.getPort())
+ .setDatabase(redis.getDatabase())
+ .setPassword(redis.getPassword());
+ config.setTransportMode(TransportMode.NIO);
+ return Redisson.create(config);
+ }
+}
diff --git a/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/enums/HttpClientType.java b/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/enums/HttpClientType.java
new file mode 100644
index 0000000000..7a5975a37a
--- /dev/null
+++ b/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/enums/HttpClientType.java
@@ -0,0 +1,17 @@
+package com.binarywang.solon.wxjava.store.enums;
+
+/**
+ * httpclient类型
+ *
+ * @author Zeyes
+ */
+public enum HttpClientType {
+ /**
+ * HttpClient.
+ */
+ HttpClient,
+ /**
+ * HttpComponents.
+ */
+ HttpComponents,
+}
diff --git a/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/enums/StorageType.java b/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/enums/StorageType.java
new file mode 100644
index 0000000000..658f8279d9
--- /dev/null
+++ b/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/enums/StorageType.java
@@ -0,0 +1,25 @@
+package com.binarywang.solon.wxjava.store.enums;
+
+/**
+ * storage类型
+ *
+ * @author Zeyes
+ */
+public enum StorageType {
+ /**
+ * 内存
+ */
+ Memory,
+ /**
+ * redis(JedisClient)
+ */
+ Jedis,
+ /**
+ * redis(Redisson)
+ */
+ Redisson,
+ /**
+ * redis(RedisTemplate)
+ */
+ RedisTemplate
+}
diff --git a/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/integration/WxStorePluginImpl.java b/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/integration/WxStorePluginImpl.java
new file mode 100644
index 0000000000..f8dbb12c39
--- /dev/null
+++ b/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/integration/WxStorePluginImpl.java
@@ -0,0 +1,25 @@
+package com.binarywang.solon.wxjava.store.integration;
+
+
+import com.binarywang.solon.wxjava.store.config.WxStoreServiceAutoConfiguration;
+import com.binarywang.solon.wxjava.store.config.storage.WxStoreInJedisConfigStorageConfiguration;
+import com.binarywang.solon.wxjava.store.config.storage.WxStoreInMemoryConfigStorageConfiguration;
+import com.binarywang.solon.wxjava.store.config.storage.WxStoreInRedissonConfigStorageConfiguration;
+import com.binarywang.solon.wxjava.store.properties.WxStoreProperties;
+import org.noear.solon.core.AppContext;
+import org.noear.solon.core.Plugin;
+
+/**
+ * @author noear 2024/9/2 created
+ */
+public class WxStorePluginImpl implements Plugin {
+ @Override
+ public void start(AppContext context) throws Throwable {
+ context.beanMake(WxStoreProperties.class);
+ context.beanMake(WxStoreServiceAutoConfiguration.class);
+
+ context.beanMake(WxStoreInMemoryConfigStorageConfiguration.class);
+ context.beanMake(WxStoreInJedisConfigStorageConfiguration.class);
+ context.beanMake(WxStoreInRedissonConfigStorageConfiguration.class);
+ }
+}
diff --git a/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/properties/RedisProperties.java b/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/properties/RedisProperties.java
new file mode 100644
index 0000000000..5379b1ec26
--- /dev/null
+++ b/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/properties/RedisProperties.java
@@ -0,0 +1,42 @@
+package com.binarywang.solon.wxjava.store.properties;
+
+import lombok.Data;
+
+/**
+ * redis 配置
+ *
+ * @author Zeyes
+ */
+@Data
+public class RedisProperties {
+
+ /**
+ * 主机地址,不填则从solon容器内获取JedisPool
+ */
+ private String host;
+
+ /**
+ * 端口号
+ */
+ private int port = 6379;
+
+ /**
+ * 密码
+ */
+ private String password;
+
+ /**
+ * 超时
+ */
+ private int timeout = 2000;
+
+ /**
+ * 数据库
+ */
+ private int database = 0;
+
+ private Integer maxActive;
+ private Integer maxIdle;
+ private Integer maxWaitMillis;
+ private Integer minIdle;
+}
diff --git a/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/properties/WxStoreProperties.java b/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/properties/WxStoreProperties.java
new file mode 100644
index 0000000000..3575b3ac9f
--- /dev/null
+++ b/solon-plugins/wx-java-store-solon-plugin/src/main/java/com/binarywang/solon/wxjava/store/properties/WxStoreProperties.java
@@ -0,0 +1,114 @@
+package com.binarywang.solon.wxjava.store.properties;
+
+import com.binarywang.solon.wxjava.store.enums.HttpClientType;
+import com.binarywang.solon.wxjava.store.enums.StorageType;
+import lombok.Data;
+import org.noear.solon.annotation.Configuration;
+import org.noear.solon.annotation.Inject;
+
+/**
+ * 属性配置类
+ *
+ * @author Zeyes
+ */
+@Data
+@Configuration
+@Inject("${" + WxStoreProperties.PREFIX +"}")
+public class WxStoreProperties {
+ public static final String PREFIX = "wx.store";
+
+ /**
+ * 设置微信小店的appid
+ */
+ private String appid;
+
+ /**
+ * 设置微信小店的Secret
+ */
+ private String secret;
+
+ /**
+ * 设置微信小店消息服务器配置的token.
+ */
+ private String token;
+
+ /**
+ * 设置微信小店消息服务器配置的EncodingAESKey
+ */
+ private String aesKey;
+
+ /**
+ * 消息格式,XML或者JSON
+ */
+ private String msgDataFormat = "JSON";
+
+ /**
+ * 是否使用稳定版 Access Token
+ */
+ private boolean useStableAccessToken = false;
+
+ /**
+ * 存储策略
+ */
+ private final ConfigStorage configStorage = new ConfigStorage();
+
+ @Data
+ public static class ConfigStorage {
+
+ /**
+ * 存储类型
+ */
+ private StorageType type = StorageType.Memory;
+
+ /**
+ * 指定key前缀
+ */
+ private String keyPrefix = "wh";
+
+ /**
+ * redis连接配置
+ */
+ private final RedisProperties redis = new RedisProperties();
+
+ /**
+ * http客户端类型
+ */
+ private HttpClientType httpClientType = HttpClientType.HttpComponents;
+
+ /**
+ * http代理主机
+ */
+ private String httpProxyHost;
+
+ /**
+ * http代理端口
+ */
+ private Integer httpProxyPort;
+
+ /**
+ * http代理用户名
+ */
+ private String httpProxyUsername;
+
+ /**
+ * http代理密码
+ */
+ private String httpProxyPassword;
+
+ /**
+ * http 请求重试间隔
+ *
+ * {@link com.binarywang.wxjava.store.api.BaseWxStoreService#setRetrySleepMillis(int)}
+ *
+ */
+ private int retrySleepMillis = 1000;
+ /**
+ * http 请求最大重试次数
+ *
+ * {@link com.binarywang.wxjava.store.api.BaseWxStoreService#setMaxRetryTimes(int)}
+ *
+ */
+ private int maxRetryTimes = 5;
+ }
+
+}
diff --git a/solon-plugins/wx-java-store-solon-plugin/src/main/resources/META-INF/solon/wx-java-store-solon-plugin.properties b/solon-plugins/wx-java-store-solon-plugin/src/main/resources/META-INF/solon/wx-java-store-solon-plugin.properties
new file mode 100644
index 0000000000..fd2f516d62
--- /dev/null
+++ b/solon-plugins/wx-java-store-solon-plugin/src/main/resources/META-INF/solon/wx-java-store-solon-plugin.properties
@@ -0,0 +1,2 @@
+solon.plugin=com.binarywang.solon.wxjava.store.integration.WxStorePluginImpl
+solon.plugin.priority=10
diff --git a/solon-plugins/wx-java-store-solon-plugin/src/test/java/features/test/LoadTest.java b/solon-plugins/wx-java-store-solon-plugin/src/test/java/features/test/LoadTest.java
new file mode 100644
index 0000000000..d049f5a51a
--- /dev/null
+++ b/solon-plugins/wx-java-store-solon-plugin/src/test/java/features/test/LoadTest.java
@@ -0,0 +1,15 @@
+package features.test;
+
+import org.junit.jupiter.api.Test;
+import org.noear.solon.test.SolonTest;
+
+/**
+ * @author noear 2024/9/4 created
+ */
+@SolonTest
+public class LoadTest {
+ @Test
+ public void load(){
+
+ }
+}
diff --git a/solon-plugins/wx-java-store-solon-plugin/src/test/resources/app.yml b/solon-plugins/wx-java-store-solon-plugin/src/test/resources/app.yml
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/spring-boot-starters/pom.xml b/spring-boot-starters/pom.xml
index 06e8fe4267..24c45074bb 100644
--- a/spring-boot-starters/pom.xml
+++ b/spring-boot-starters/pom.xml
@@ -32,6 +32,8 @@
wx-java-cp-spring-boot-starter
wx-java-channel-spring-boot-starter
wx-java-channel-multi-spring-boot-starter
+ wx-java-store-spring-boot-starter
+ wx-java-store-multi-spring-boot-starter
diff --git a/spring-boot-starters/wx-java-store-multi-spring-boot-starter/README.md b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/README.md
new file mode 100644
index 0000000000..ecbe645a7b
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/README.md
@@ -0,0 +1,123 @@
+# wx-java-store-multi-spring-boot-starter
+
+## 快速开始
+
+1. 引入依赖
+ ```xml
+
+
+ com.github.binarywang
+ wx-java-store-multi-spring-boot-starter
+ ${version}
+
+
+
+
+ redis.clients
+ jedis
+ ${jedis.version}
+
+
+
+
+ org.redisson
+ redisson
+ ${redisson.version}
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
+
+ ```
+2. 添加配置(application.properties)
+ ```properties
+ # 视频号配置
+ ## 应用 1 配置(必填)
+ wx.store.apps.tenantId1.app-id=@appId
+ wx.store.apps.tenantId1.secret=@secret
+ ## 选填
+ wx.store.apps.tenantId1.use-stable-access-token=false
+ wx.store.apps.tenantId1.token=
+ wx.store.apps.tenantId1.aes-key=
+ ## 应用 2 配置(必填)
+ wx.store.apps.tenantId2.app-id=@appId
+ wx.store.apps.tenantId2.secret=@secret
+ ## 选填
+ wx.store.apps.tenantId2.use-stable-access-token=false
+ wx.store.apps.tenantId2.token=
+ wx.store.apps.tenantId2.aes-key=
+
+ # ConfigStorage 配置(选填)
+ ## 配置类型: memory(默认), jedis, redisson, redis_template
+ wx.store.config-storage.type=memory
+ ## 相关redis前缀配置: wx:store:multi(默认)
+ wx.store.config-storage.key-prefix=wx:store:multi
+ wx.store.config-storage.redis.host=127.0.0.1
+ wx.store.config-storage.redis.port=6379
+ wx.store.config-storage.redis.password=123456
+
+ # redis_template 方式使用spring data redis配置
+ spring.data.redis.database=0
+ spring.data.redis.host=127.0.0.1
+ spring.data.redis.password=123456
+ spring.data.redis.port=6379
+
+ # http 客户端配置(选填)
+ ## # http客户端类型: http_client(默认)
+ wx.store.config-storage.http-client-type=http_client
+ wx.store.config-storage.http-proxy-host=
+ wx.store.config-storage.http-proxy-port=
+ wx.store.config-storage.http-proxy-username=
+ wx.store.config-storage.http-proxy-password=
+ ## 最大重试次数,默认:5 次,如果小于 0,则为 0
+ wx.store.config-storage.max-retry-times=5
+ ## 重试时间间隔步进,默认:1000 毫秒,如果小于 0,则为 1000
+ wx.store.config-storage.retry-sleep-millis=1000
+ ```
+3. 自动注入的类型:`WxStoreMultiServices`
+
+4. 使用样例
+
+ ```java
+ import com.binarywang.spring.starter.wxjava.store.service.WxStoreMultiServices;
+ import com.binarywang.wxjava.store.api.WxStoreService;
+ import com.binarywang.wxjava.store.api.WxFinderLiveService;
+ import com.binarywang.wxjava.store.bean.lead.component.response.FinderAttrResponse;
+ import me.chanjar.weixin.common.error.WxErrorException;
+ import org.springframework.beans.factory.annotation.Autowired;
+ import org.springframework.stereotype.Service;
+
+ @Service
+ public class DemoService {
+ @Autowired
+ private WxStoreMultiServices wxStoreMultiServices;
+
+ public void test() throws WxErrorException {
+ // 应用 1 的 WxStoreService
+ WxStoreService wxStoreService1 = wxStoreMultiServices.getWxStoreService("tenantId1");
+ WxFinderLiveService finderLiveService = wxStoreService1.getFinderLiveService();
+ FinderAttrResponse response1 = finderLiveService.getFinderAttrByAppid();
+ // todo ...
+
+ // 应用 2 的 WxStoreService
+ WxStoreService wxStoreService2 = wxStoreMultiServices.getWxStoreService("tenantId2");
+ WxFinderLiveService finderLiveService2 = wxStoreService2.getFinderLiveService();
+ FinderAttrResponse response2 = finderLiveService2.getFinderAttrByAppid();
+ // todo ...
+
+ // 应用 3 的 WxStoreService
+ WxStoreService wxStoreService3 = wxStoreMultiServices.getWxStoreService("tenantId3");
+ // 判断是否为空
+ if (wxStoreService3 == null) {
+ // todo wxStoreService3 为空,请先配置 tenantId3 微信小店应用参数
+ return;
+ }
+ WxFinderLiveService finderLiveService3 = wxStoreService3.getFinderLiveService();
+ FinderAttrResponse response3 = finderLiveService3.getFinderAttrByAppid();
+ // todo ...
+ }
+ }
+ ```
diff --git a/spring-boot-starters/wx-java-store-multi-spring-boot-starter/pom.xml b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/pom.xml
new file mode 100644
index 0000000000..157073c876
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/pom.xml
@@ -0,0 +1,73 @@
+
+
+
+ wx-java-spring-boot-starters
+ com.github.binarywang
+ 4.8.6.B
+
+ 4.0.0
+
+ wx-java-store-multi-spring-boot-starter
+ WxJava - Spring Boot Starter for Store::支持多账号配置
+ 微信小店开发的 Spring Boot Starter::支持多账号配置
+
+
+
+ com.github.binarywang
+ weixin-java-store
+ ${project.version}
+
+
+ redis.clients
+ jedis
+ provided
+
+
+ org.redisson
+ redisson
+ provided
+
+
+ org.springframework.data
+ spring-data-redis
+ ${spring-data-redis.version}
+ true
+ provided
+
+
+ org.jodd
+ jodd-http
+ provided
+
+
+ com.squareup.okhttp3
+ okhttp
+ provided
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring.boot.version}
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ 2.2.1
+
+
+ attach-sources
+
+ jar-no-fork
+
+
+
+
+
+
+
diff --git a/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/autoconfigure/WxStoreMultiAutoConfiguration.java b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/autoconfigure/WxStoreMultiAutoConfiguration.java
new file mode 100644
index 0000000000..72b51c6cef
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/autoconfigure/WxStoreMultiAutoConfiguration.java
@@ -0,0 +1,15 @@
+package com.binarywang.spring.starter.wxjava.store.autoconfigure;
+
+import com.binarywang.spring.starter.wxjava.store.configuration.WxStoreMultiServiceConfiguration;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+/**
+ * 微信小店自动注册
+ *
+ * @author Winnie
+ * @date 2024/9/13
+ */
+@Configuration
+@Import(WxStoreMultiServiceConfiguration.class)
+public class WxStoreMultiAutoConfiguration {}
diff --git a/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/configuration/WxStoreMultiServiceConfiguration.java b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/configuration/WxStoreMultiServiceConfiguration.java
new file mode 100644
index 0000000000..1a0dfd492a
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/configuration/WxStoreMultiServiceConfiguration.java
@@ -0,0 +1,21 @@
+package com.binarywang.spring.starter.wxjava.store.configuration;
+
+import com.binarywang.spring.starter.wxjava.store.configuration.services.WxStoreInJedisConfiguration;
+import com.binarywang.spring.starter.wxjava.store.configuration.services.WxStoreInMemoryConfiguration;
+import com.binarywang.spring.starter.wxjava.store.configuration.services.WxStoreInRedisTemplateConfiguration;
+import com.binarywang.spring.starter.wxjava.store.configuration.services.WxStoreInRedissonConfiguration;
+import com.binarywang.spring.starter.wxjava.store.properties.WxStoreMultiProperties;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+/**
+ * 微信小店相关服务自动注册
+ *
+ * @author Winnie
+ * @date 2024/9/13
+ */
+@Configuration
+@EnableConfigurationProperties(WxStoreMultiProperties.class)
+@Import({WxStoreInJedisConfiguration.class, WxStoreInMemoryConfiguration.class, WxStoreInRedissonConfiguration.class, WxStoreInRedisTemplateConfiguration.class})
+public class WxStoreMultiServiceConfiguration {}
diff --git a/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/configuration/services/AbstractWxStoreConfiguration.java b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/configuration/services/AbstractWxStoreConfiguration.java
new file mode 100644
index 0000000000..d082348e9f
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/configuration/services/AbstractWxStoreConfiguration.java
@@ -0,0 +1,148 @@
+package com.binarywang.spring.starter.wxjava.store.configuration.services;
+
+import com.binarywang.spring.starter.wxjava.store.enums.HttpClientType;
+import com.binarywang.spring.starter.wxjava.store.properties.WxStoreMultiProperties;
+import com.binarywang.spring.starter.wxjava.store.properties.WxStoreSingleProperties;
+import com.binarywang.spring.starter.wxjava.store.service.WxStoreMultiServices;
+import com.binarywang.spring.starter.wxjava.store.service.WxStoreMultiServicesImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.api.WxStoreService;
+import com.binarywang.wxjava.store.api.impl.WxStoreServiceHttpClientImpl;
+import com.binarywang.wxjava.store.api.impl.WxStoreServiceHttpComponentsImpl;
+import com.binarywang.wxjava.store.api.impl.WxStoreServiceImpl;
+import com.binarywang.wxjava.store.config.WxStoreConfig;
+import com.binarywang.wxjava.store.config.impl.WxStoreDefaultConfigImpl;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * WxStoreConfigStorage 抽象配置类
+ *
+ * @author Winnie
+ * @date 2024/9/13
+ */
+@RequiredArgsConstructor
+@Slf4j
+public abstract class AbstractWxStoreConfiguration {
+ protected WxStoreMultiServices wxStoreMultiServices(WxStoreMultiProperties wxStoreMultiProperties) {
+ Map appsMap = wxStoreMultiProperties.getApps();
+ if (appsMap == null || appsMap.isEmpty()) {
+ log.warn("微信小店应用参数未配置,通过 WxStoreMultiServices#getWxStoreService(\"tenantId\")获取实例将返回空");
+ return new WxStoreMultiServicesImpl();
+ }
+ /**
+ * 校验 appId 是否唯一,避免使用 redis 缓存 token、ticket 时错乱。
+ *
+ * 查看 {@link com.binarywang.wxjava.store.config.impl.WxStoreRedisConfigImpl#setAppid(String)}
+ */
+ Collection apps = appsMap.values();
+ if (apps.size() > 1) {
+ // 校验 appId 是否唯一
+ boolean multi = apps.stream()
+ // 没有 appId,如果不判断是否为空,这里会报 NPE 异常
+ .collect(Collectors.groupingBy(c -> c.getAppId() == null ? 0 : c.getAppId(), Collectors.counting()))
+ .entrySet().stream().anyMatch(e -> e.getValue() > 1);
+ if (multi) {
+ throw new RuntimeException("请确保微信小店配置 appId 的唯一性");
+ }
+ }
+ WxStoreMultiServicesImpl services = new WxStoreMultiServicesImpl();
+
+ Set> entries = appsMap.entrySet();
+ for (Map.Entry entry : entries) {
+ String tenantId = entry.getKey();
+ WxStoreSingleProperties wxStoreSingleProperties = entry.getValue();
+ WxStoreDefaultConfigImpl storage = this.wxStoreConfigStorage(wxStoreMultiProperties);
+ this.configApp(storage, wxStoreSingleProperties);
+ this.configHttp(storage, wxStoreMultiProperties.getConfigStorage());
+ WxStoreService wxStoreService = this.wxStoreService(storage, wxStoreMultiProperties);
+ services.addWxStoreService(tenantId, wxStoreService);
+ }
+ return services;
+ }
+
+ /**
+ * 配置 WxStoreDefaultConfigImpl
+ *
+ * @param wxStoreMultiProperties 参数
+ * @return WxStoreDefaultConfigImpl
+ */
+ protected abstract WxStoreDefaultConfigImpl wxStoreConfigStorage(WxStoreMultiProperties wxStoreMultiProperties);
+
+ public WxStoreService wxStoreService(WxStoreConfig wxStoreConfig, WxStoreMultiProperties wxStoreMultiProperties) {
+ WxStoreMultiProperties.ConfigStorage storage = wxStoreMultiProperties.getConfigStorage();
+ HttpClientType httpClientType = storage.getHttpClientType();
+ WxStoreService wxStoreService;
+ switch (httpClientType) {
+// case OK_HTTP:
+// wxStoreService = new WxStoreServiceOkHttpImpl(false, false);
+// break;
+ case HTTP_CLIENT:
+ wxStoreService = new WxStoreServiceHttpClientImpl();
+ break;
+ case HTTP_COMPONENTS:
+ wxStoreService = new WxStoreServiceHttpComponentsImpl();
+ break;
+ default:
+ wxStoreService = new WxStoreServiceImpl();
+ break;
+ }
+
+ wxStoreService.setConfig(wxStoreConfig);
+ int maxRetryTimes = storage.getMaxRetryTimes();
+ if (maxRetryTimes < 0) {
+ maxRetryTimes = 0;
+ }
+ int retrySleepMillis = storage.getRetrySleepMillis();
+ if (retrySleepMillis < 0) {
+ retrySleepMillis = 1000;
+ }
+ wxStoreService.setRetrySleepMillis(retrySleepMillis);
+ wxStoreService.setMaxRetryTimes(maxRetryTimes);
+ return wxStoreService;
+ }
+
+ private void configApp(WxStoreDefaultConfigImpl config, WxStoreSingleProperties wxStoreSingleProperties) {
+ String appId = wxStoreSingleProperties.getAppId();
+ String appSecret = wxStoreSingleProperties.getSecret();
+ String token = wxStoreSingleProperties.getToken();
+ String aesKey = wxStoreSingleProperties.getAesKey();
+ boolean useStableAccessToken = wxStoreSingleProperties.isUseStableAccessToken();
+
+ config.setAppid(appId);
+ config.setSecret(appSecret);
+ if (StringUtils.isNotBlank(token)) {
+ config.setToken(token);
+ }
+ if (StringUtils.isNotBlank(aesKey)) {
+ config.setAesKey(aesKey);
+ }
+ config.setStableAccessToken(useStableAccessToken);
+ config.setApiHostUrl(StringUtils.trimToNull(wxStoreSingleProperties.getApiHostUrl()));
+ config.setAccessTokenUrl(StringUtils.trimToNull(wxStoreSingleProperties.getAccessTokenUrl()));
+ }
+
+ private void configHttp(WxStoreDefaultConfigImpl config, WxStoreMultiProperties.ConfigStorage storage) {
+ String httpProxyHost = storage.getHttpProxyHost();
+ Integer httpProxyPort = storage.getHttpProxyPort();
+ String httpProxyUsername = storage.getHttpProxyUsername();
+ String httpProxyPassword = storage.getHttpProxyPassword();
+ if (StringUtils.isNotBlank(httpProxyHost)) {
+ config.setHttpProxyHost(httpProxyHost);
+ if (httpProxyPort != null) {
+ config.setHttpProxyPort(httpProxyPort);
+ }
+ if (StringUtils.isNotBlank(httpProxyUsername)) {
+ config.setHttpProxyUsername(httpProxyUsername);
+ }
+ if (StringUtils.isNotBlank(httpProxyPassword)) {
+ config.setHttpProxyPassword(httpProxyPassword);
+ }
+ }
+ }
+}
diff --git a/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/configuration/services/WxStoreInJedisConfiguration.java b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/configuration/services/WxStoreInJedisConfiguration.java
new file mode 100644
index 0000000000..de8d904276
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/configuration/services/WxStoreInJedisConfiguration.java
@@ -0,0 +1,74 @@
+package com.binarywang.spring.starter.wxjava.store.configuration.services;
+
+import com.binarywang.spring.starter.wxjava.store.properties.WxStoreMultiProperties;
+import com.binarywang.spring.starter.wxjava.store.properties.WxStoreMultiRedisProperties;
+import com.binarywang.spring.starter.wxjava.store.service.WxStoreMultiServices;
+import lombok.RequiredArgsConstructor;
+import com.binarywang.wxjava.store.config.impl.WxStoreDefaultConfigImpl;
+import com.binarywang.wxjava.store.config.impl.WxStoreRedisConfigImpl;
+import me.chanjar.weixin.common.redis.JedisWxRedisOps;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import redis.clients.jedis.JedisPool;
+import redis.clients.jedis.JedisPoolConfig;
+
+/**
+ * 自动装配基于 jedis 策略配置
+ *
+ * @author Winnie
+ * @date 2024/9/13
+ */
+@Configuration
+@ConditionalOnProperty(prefix = WxStoreMultiProperties.PREFIX + ".config-storage", name = "type", havingValue = "jedis")
+@RequiredArgsConstructor
+public class WxStoreInJedisConfiguration extends AbstractWxStoreConfiguration {
+ private final WxStoreMultiProperties wxStoreMultiProperties;
+ private final ApplicationContext applicationContext;
+
+ @Bean
+ public WxStoreMultiServices wxStoreMultiServices() {
+ return this.wxStoreMultiServices(wxStoreMultiProperties);
+ }
+
+ @Override
+ protected WxStoreDefaultConfigImpl wxStoreConfigStorage(WxStoreMultiProperties wxStoreMultiProperties) {
+ return this.configRedis(wxStoreMultiProperties);
+ }
+
+ private WxStoreDefaultConfigImpl configRedis(WxStoreMultiProperties wxStoreMultiProperties) {
+ WxStoreMultiRedisProperties wxStoreMultiRedisProperties = wxStoreMultiProperties.getConfigStorage().getRedis();
+ JedisPool jedisPool;
+ if (wxStoreMultiRedisProperties != null && StringUtils.isNotEmpty(wxStoreMultiRedisProperties.getHost())) {
+ jedisPool = getJedisPool(wxStoreMultiProperties);
+ } else {
+ jedisPool = applicationContext.getBean(JedisPool.class);
+ }
+ return new WxStoreRedisConfigImpl(new JedisWxRedisOps(jedisPool), wxStoreMultiProperties.getConfigStorage().getKeyPrefix());
+ }
+
+ private JedisPool getJedisPool(WxStoreMultiProperties wxStoreMultiProperties) {
+ WxStoreMultiProperties.ConfigStorage storage = wxStoreMultiProperties.getConfigStorage();
+ WxStoreMultiRedisProperties redis = storage.getRedis();
+
+ JedisPoolConfig config = new JedisPoolConfig();
+ if (redis.getMaxActive() != null) {
+ config.setMaxTotal(redis.getMaxActive());
+ }
+ if (redis.getMaxIdle() != null) {
+ config.setMaxIdle(redis.getMaxIdle());
+ }
+ if (redis.getMaxWaitMillis() != null) {
+ config.setMaxWaitMillis(redis.getMaxWaitMillis());
+ }
+ if (redis.getMinIdle() != null) {
+ config.setMinIdle(redis.getMinIdle());
+ }
+ config.setTestOnBorrow(true);
+ config.setTestWhileIdle(true);
+
+ return new JedisPool(config, redis.getHost(), redis.getPort(), redis.getTimeout(), redis.getPassword(), redis.getDatabase());
+ }
+}
diff --git a/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/configuration/services/WxStoreInMemoryConfiguration.java b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/configuration/services/WxStoreInMemoryConfiguration.java
new file mode 100644
index 0000000000..999b27d861
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/configuration/services/WxStoreInMemoryConfiguration.java
@@ -0,0 +1,36 @@
+package com.binarywang.spring.starter.wxjava.store.configuration.services;
+
+import com.binarywang.spring.starter.wxjava.store.properties.WxStoreMultiProperties;
+import com.binarywang.spring.starter.wxjava.store.service.WxStoreMultiServices;
+import lombok.RequiredArgsConstructor;
+import com.binarywang.wxjava.store.config.impl.WxStoreDefaultConfigImpl;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 自动装配基于内存策略配置
+ *
+ * @author Winnie
+ * @date 2024/9/13
+ */
+@Configuration
+@ConditionalOnProperty(prefix = WxStoreMultiProperties.PREFIX + ".config-storage", name = "type", havingValue = "memory", matchIfMissing = true)
+@RequiredArgsConstructor
+public class WxStoreInMemoryConfiguration extends AbstractWxStoreConfiguration {
+ private final WxStoreMultiProperties wxStoreMultiProperties;
+
+ @Bean
+ public WxStoreMultiServices wxStoreMultiServices() {
+ return this.wxStoreMultiServices(wxStoreMultiProperties);
+ }
+
+ @Override
+ protected WxStoreDefaultConfigImpl wxStoreConfigStorage(WxStoreMultiProperties wxStoreMultiProperties) {
+ return this.configInMemory();
+ }
+
+ private WxStoreDefaultConfigImpl configInMemory() {
+ return new WxStoreDefaultConfigImpl();
+ }
+}
diff --git a/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/configuration/services/WxStoreInRedisTemplateConfiguration.java b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/configuration/services/WxStoreInRedisTemplateConfiguration.java
new file mode 100644
index 0000000000..03be7e3f75
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/configuration/services/WxStoreInRedisTemplateConfiguration.java
@@ -0,0 +1,42 @@
+package com.binarywang.spring.starter.wxjava.store.configuration.services;
+
+import com.binarywang.spring.starter.wxjava.store.properties.WxStoreMultiProperties;
+import com.binarywang.spring.starter.wxjava.store.service.WxStoreMultiServices;
+import lombok.RequiredArgsConstructor;
+import com.binarywang.wxjava.store.config.impl.WxStoreDefaultConfigImpl;
+import com.binarywang.wxjava.store.config.impl.WxStoreRedisConfigImpl;
+import me.chanjar.weixin.common.redis.RedisTemplateWxRedisOps;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.core.StringRedisTemplate;
+
+/**
+ * 自动装配基于 redisTemplate 策略配置
+ *
+ * @author Winnie
+ * @date 2024/9/13
+ */
+@Configuration
+@ConditionalOnProperty(prefix = WxStoreMultiProperties.PREFIX + ".config-storage", name = "type", havingValue = "redis_template")
+@RequiredArgsConstructor
+public class WxStoreInRedisTemplateConfiguration extends AbstractWxStoreConfiguration {
+ private final WxStoreMultiProperties wxStoreMultiProperties;
+ private final ApplicationContext applicationContext;
+
+ @Bean
+ public WxStoreMultiServices wxStoreMultiServices() {
+ return this.wxStoreMultiServices(wxStoreMultiProperties);
+ }
+
+ @Override
+ protected WxStoreDefaultConfigImpl wxStoreConfigStorage(WxStoreMultiProperties wxStoreMultiProperties) {
+ return this.configRedisTemplate(wxStoreMultiProperties);
+ }
+
+ private WxStoreDefaultConfigImpl configRedisTemplate(WxStoreMultiProperties wxStoreMultiProperties) {
+ StringRedisTemplate redisTemplate = applicationContext.getBean(StringRedisTemplate.class);
+ return new WxStoreRedisConfigImpl(new RedisTemplateWxRedisOps(redisTemplate), wxStoreMultiProperties.getConfigStorage().getKeyPrefix());
+ }
+}
diff --git a/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/configuration/services/WxStoreInRedissonConfiguration.java b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/configuration/services/WxStoreInRedissonConfiguration.java
new file mode 100644
index 0000000000..25a3568cf6
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/configuration/services/WxStoreInRedissonConfiguration.java
@@ -0,0 +1,62 @@
+package com.binarywang.spring.starter.wxjava.store.configuration.services;
+
+import com.binarywang.spring.starter.wxjava.store.properties.WxStoreMultiProperties;
+import com.binarywang.spring.starter.wxjava.store.properties.WxStoreMultiRedisProperties;
+import com.binarywang.spring.starter.wxjava.store.service.WxStoreMultiServices;
+import lombok.RequiredArgsConstructor;
+import com.binarywang.wxjava.store.config.impl.WxStoreDefaultConfigImpl;
+import com.binarywang.wxjava.store.config.impl.WxStoreRedissonConfigImpl;
+import org.apache.commons.lang3.StringUtils;
+import org.redisson.Redisson;
+import org.redisson.api.RedissonClient;
+import org.redisson.config.Config;
+import org.redisson.config.TransportMode;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 自动装配基于 redisson 策略配置
+ *
+ * @author Winnie
+ * @date 2024/9/13
+ */
+@Configuration
+@ConditionalOnProperty(prefix = WxStoreMultiProperties.PREFIX + ".config-storage", name = "type", havingValue = "redisson")
+@RequiredArgsConstructor
+public class WxStoreInRedissonConfiguration extends AbstractWxStoreConfiguration {
+ private final WxStoreMultiProperties wxStoreMultiProperties;
+ private final ApplicationContext applicationContext;
+
+ @Bean
+ public WxStoreMultiServices wxStoreMultiServices() {
+ return this.wxStoreMultiServices(wxStoreMultiProperties);
+ }
+
+ @Override
+ protected WxStoreDefaultConfigImpl wxStoreConfigStorage(WxStoreMultiProperties wxStoreMultiProperties) {
+ return this.configRedisson(wxStoreMultiProperties);
+ }
+
+ private WxStoreDefaultConfigImpl configRedisson(WxStoreMultiProperties wxStoreMultiProperties) {
+ WxStoreMultiRedisProperties redisProperties = wxStoreMultiProperties.getConfigStorage().getRedis();
+ RedissonClient redissonClient;
+ if (redisProperties != null && StringUtils.isNotEmpty(redisProperties.getHost())) {
+ redissonClient = getRedissonClient(wxStoreMultiProperties);
+ } else {
+ redissonClient = applicationContext.getBean(RedissonClient.class);
+ }
+ return new WxStoreRedissonConfigImpl(redissonClient, wxStoreMultiProperties.getConfigStorage().getKeyPrefix());
+ }
+
+ private RedissonClient getRedissonClient(WxStoreMultiProperties wxStoreMultiProperties) {
+ WxStoreMultiProperties.ConfigStorage storage = wxStoreMultiProperties.getConfigStorage();
+ WxStoreMultiRedisProperties redis = storage.getRedis();
+
+ Config config = new Config();
+ config.useSingleServer().setAddress("redis://" + redis.getHost() + ":" + redis.getPort()).setDatabase(redis.getDatabase()).setPassword(redis.getPassword());
+ config.setTransportMode(TransportMode.NIO);
+ return Redisson.create(config);
+ }
+}
diff --git a/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/enums/HttpClientType.java b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/enums/HttpClientType.java
new file mode 100644
index 0000000000..4e8159c600
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/enums/HttpClientType.java
@@ -0,0 +1,23 @@
+package com.binarywang.spring.starter.wxjava.store.enums;
+
+/**
+ * httpclient类型
+ *
+ * @author Winnie
+ * @date 2024/9/13
+ */
+public enum HttpClientType {
+ /**
+ * HttpClient.
+ */
+ HTTP_CLIENT,
+ // WxStoreServiceOkHttpImpl 实现经测试无法正常完成业务固暂不支持OK_HTTP方式
+// /**
+// * OkHttp.
+// */
+// OK_HTTP,
+ /**
+ * HttpComponents.
+ */
+ HTTP_COMPONENTS,
+}
diff --git a/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/enums/StorageType.java b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/enums/StorageType.java
new file mode 100644
index 0000000000..b57d88da75
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/enums/StorageType.java
@@ -0,0 +1,26 @@
+package com.binarywang.spring.starter.wxjava.store.enums;
+
+/**
+ * storage类型
+ *
+ * @author Winnie
+ * @date 2024/9/13
+ */
+public enum StorageType {
+ /**
+ * 内存
+ */
+ MEMORY,
+ /**
+ * redis(JedisClient)
+ */
+ JEDIS,
+ /**
+ * redis(Redisson)
+ */
+ REDISSON,
+ /**
+ * redis(RedisTemplate)
+ */
+ REDIS_TEMPLATE
+}
diff --git a/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/properties/WxStoreMultiProperties.java b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/properties/WxStoreMultiProperties.java
new file mode 100644
index 0000000000..a958753a61
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/properties/WxStoreMultiProperties.java
@@ -0,0 +1,96 @@
+package com.binarywang.spring.starter.wxjava.store.properties;
+
+import com.binarywang.spring.starter.wxjava.store.enums.HttpClientType;
+import com.binarywang.spring.starter.wxjava.store.enums.StorageType;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 微信多视频号接入相关配置属性
+ *
+ * @author Winnie
+ * @date 2024/9/13
+ */
+@Data
+@NoArgsConstructor
+@ConfigurationProperties(WxStoreMultiProperties.PREFIX)
+public class WxStoreMultiProperties implements Serializable {
+ private static final long serialVersionUID = - 8361973118805546037L;
+ public static final String PREFIX = "wx.store";
+
+ private Map apps = new HashMap<>();
+
+ /**
+ * 存储策略
+ */
+ private final ConfigStorage configStorage = new ConfigStorage();
+
+ @Data
+ @NoArgsConstructor
+ public static class ConfigStorage implements Serializable {
+ private static final long serialVersionUID = - 5152619132544179942L;
+
+ /**
+ * 存储类型.
+ */
+ private StorageType type = StorageType.MEMORY;
+
+ /**
+ * 指定key前缀.
+ */
+ private String keyPrefix = "wx:store:multi";
+
+ /**
+ * redis连接配置.
+ */
+ @NestedConfigurationProperty
+ private final WxStoreMultiRedisProperties redis = new WxStoreMultiRedisProperties();
+
+ /**
+ * http客户端类型.
+ */
+ private HttpClientType httpClientType = HttpClientType.HTTP_CLIENT;
+
+ /**
+ * http代理主机.
+ */
+ private String httpProxyHost;
+
+ /**
+ * http代理端口.
+ */
+ private Integer httpProxyPort;
+
+ /**
+ * http代理用户名.
+ */
+ private String httpProxyUsername;
+
+ /**
+ * http代理密码.
+ */
+ private String httpProxyPassword;
+
+ /**
+ * http 请求最大重试次数
+ *
+ * {@link com.binarywang.wxjava.store.api.WxStoreService#setMaxRetryTimes(int)}
+ * {@link com.binarywang.wxjava.store.api.impl.BaseWxStoreServiceImpl#setMaxRetryTimes(int)}
+ */
+ private int maxRetryTimes = 5;
+
+ /**
+ * http 请求重试间隔
+ *
+ * {@link com.binarywang.wxjava.store.api.WxStoreService#setRetrySleepMillis(int)}
+ * {@link com.binarywang.wxjava.store.api.impl.BaseWxStoreServiceImpl#setRetrySleepMillis(int)}
+ */
+ private int retrySleepMillis = 1000;
+ }
+}
diff --git a/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/properties/WxStoreMultiRedisProperties.java b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/properties/WxStoreMultiRedisProperties.java
new file mode 100644
index 0000000000..828325c3bf
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/properties/WxStoreMultiRedisProperties.java
@@ -0,0 +1,63 @@
+package com.binarywang.spring.starter.wxjava.store.properties;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * Redis配置
+ *
+ * @author Winnie
+ * @date 2024/9/13
+ */
+@Data
+@NoArgsConstructor
+public class WxStoreMultiRedisProperties implements Serializable {
+ private static final long serialVersionUID = 9061055444734277357L;
+
+ /**
+ * 主机地址.
+ */
+ private String host = "127.0.0.1";
+
+ /**
+ * 端口号.
+ */
+ private int port = 6379;
+
+ /**
+ * 密码.
+ */
+ private String password;
+
+ /**
+ * 超时.
+ */
+ private int timeout = 2000;
+
+ /**
+ * 数据库.
+ */
+ private int database = 0;
+
+ /**
+ * 最大活动连接数
+ */
+ private Integer maxActive;
+
+ /**
+ * 最大空闲连接数
+ */
+ private Integer maxIdle;
+
+ /**
+ * 最小空闲连接数
+ */
+ private Integer minIdle;
+
+ /**
+ * 最大等待时间
+ */
+ private Integer maxWaitMillis;
+}
diff --git a/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/properties/WxStoreSingleProperties.java b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/properties/WxStoreSingleProperties.java
new file mode 100644
index 0000000000..335147c7b7
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/properties/WxStoreSingleProperties.java
@@ -0,0 +1,55 @@
+package com.binarywang.spring.starter.wxjava.store.properties;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 微信小店相关配置属性
+ *
+ * @author Winnie
+ * @date 2024/9/13
+ */
+@Data
+@NoArgsConstructor
+public class WxStoreSingleProperties implements Serializable {
+ private static final long serialVersionUID = 5306630351265124825L;
+
+ /**
+ * 设置微信小店的 appid.
+ */
+ private String appId;
+
+ /**
+ * 设置微信小店的 secret.
+ */
+ private String secret;
+
+ /**
+ * 设置微信小店的 token.
+ */
+ private String token;
+
+ /**
+ * 设置微信小店的 EncodingAESKey.
+ */
+ private String aesKey;
+
+ /**
+ * 是否使用稳定版 Access Token
+ */
+ private boolean useStableAccessToken = false;
+
+ /**
+ * 自定义API主机地址,用于替换默认的 https://api.weixin.qq.com
+ * 例如:http://proxy.company.com:8080
+ */
+ private String apiHostUrl;
+
+ /**
+ * 自定义获取AccessToken地址,用于向自定义统一服务获取AccessToken
+ * 例如:http://proxy.company.com:8080/oauth/token
+ */
+ private String accessTokenUrl;
+}
diff --git a/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/service/WxStoreMultiServices.java b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/service/WxStoreMultiServices.java
new file mode 100644
index 0000000000..ff5192ac48
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/service/WxStoreMultiServices.java
@@ -0,0 +1,26 @@
+package com.binarywang.spring.starter.wxjava.store.service;
+
+import com.binarywang.wxjava.store.api.WxStoreService;
+
+/**
+ * 视频号 {@link WxStoreService} 所有实例存放类.
+ *
+ * @author Winnie
+ * @date 2024/9/13
+ */
+public interface WxStoreMultiServices {
+ /**
+ * 通过租户 Id 获取 WxStoreService
+ *
+ * @param tenantId 租户 Id
+ * @return WxStoreService
+ */
+ WxStoreService getWxStoreService(String tenantId);
+
+ /**
+ * 根据租户 Id,从列表中移除一个 WxStoreService 实例
+ *
+ * @param tenantId 租户 Id
+ */
+ void removeWxStoreService(String tenantId);
+}
diff --git a/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/service/WxStoreMultiServicesImpl.java b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/service/WxStoreMultiServicesImpl.java
new file mode 100644
index 0000000000..44fe0f947d
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/service/WxStoreMultiServicesImpl.java
@@ -0,0 +1,36 @@
+package com.binarywang.spring.starter.wxjava.store.service;
+
+import com.binarywang.wxjava.store.api.WxStoreService;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * 视频号 {@link WxStoreMultiServices} 实现
+ *
+ * @author Winnie
+ * @date 2024/9/13
+ */
+public class WxStoreMultiServicesImpl implements WxStoreMultiServices {
+ private final Map services = new ConcurrentHashMap<>();
+
+ @Override
+ public WxStoreService getWxStoreService(String tenantId) {
+ return this.services.get(tenantId);
+ }
+
+ /**
+ * 根据租户 Id,添加一个 WxStoreService 到列表
+ *
+ * @param tenantId 租户 Id
+ * @param wxStoreService WxStoreService 实例
+ */
+ public void addWxStoreService(String tenantId, WxStoreService wxStoreService) {
+ this.services.put(tenantId, wxStoreService);
+ }
+
+ @Override
+ public void removeWxStoreService(String tenantId) {
+ this.services.remove(tenantId);
+ }
+}
diff --git a/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/resources/META-INF/spring.factories b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/resources/META-INF/spring.factories
new file mode 100644
index 0000000000..40c16383ac
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,2 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+com.binarywang.spring.starter.wxjava.store.autoconfigure.WxStoreMultiAutoConfiguration
diff --git a/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000000..485736df0a
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-multi-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+com.binarywang.spring.starter.wxjava.store.autoconfigure.WxStoreMultiAutoConfiguration
diff --git a/spring-boot-starters/wx-java-store-spring-boot-starter/README.md b/spring-boot-starters/wx-java-store-spring-boot-starter/README.md
new file mode 100644
index 0000000000..f601db67d1
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-spring-boot-starter/README.md
@@ -0,0 +1,102 @@
+# wx-java-store-spring-boot-starter
+
+## 快速开始
+1. 引入依赖
+ ```xml
+
+
+ com.github.binarywang
+ wx-java-store-spring-boot-starter
+ ${version}
+
+
+
+
+ redis.clients
+ jedis
+ ${jedis.version}
+
+
+
+
+ org.redisson
+ redisson
+ ${redisson.version}
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
+
+ ```
+2. 添加配置(application.properties)
+ ```properties
+ # 视频号配置(必填)
+ ## 微信小店的appId和secret
+ wx.store.app-id=@appId
+ wx.store.secret=@secret
+ # 视频号配置 选填
+ ## 设置微信小店消息服务器配置的token
+ wx.store.token=@token
+ ## 设置微信小店消息服务器配置的EncodingAESKey
+ wx.store.aes-key=
+ ## 支持JSON或者XML格式,默认JSON
+ wx.store.msg-data-format=JSON
+ ## 是否使用稳定版 Access Token
+ wx.store.use-stable-access-token=false
+
+
+ # ConfigStorage 配置(选填)
+ ## 配置类型: memory(默认), jedis, redisson, redis_template
+ wx.store.config-storage.type=memory
+ ## 相关redis前缀配置: wx:store(默认)
+ wx.store.config-storage.key-prefix=wx:store
+ wx.store.config-storage.redis.host=127.0.0.1
+ wx.store.config-storage.redis.port=6379
+ wx.store.config-storage.redis.password=123456
+
+ # redis_template 方式使用spring data redis配置
+ spring.data.redis.database=0
+ spring.data.redis.host=127.0.0.1
+ spring.data.redis.password=123456
+ spring.data.redis.port=6379
+
+ # http 客户端配置(选填)
+ ## # http客户端类型: http_client(默认)
+ wx.store.config-storage.http-client-type=http_client
+ wx.store.config-storage.http-proxy-host=
+ wx.store.config-storage.http-proxy-port=
+ wx.store.config-storage.http-proxy-username=
+ wx.store.config-storage.http-proxy-password=
+ ## 最大重试次数,默认:5 次,如果小于 0,则为 0
+ wx.store.config-storage.max-retry-times=5
+ ## 重试时间间隔步进,默认:1000 毫秒,如果小于 0,则为 1000
+ wx.store.config-storage.retry-sleep-millis=1000
+ ```
+3. 自动注入的类型
+- `WxStoreService`
+- `WxStoreConfig`
+4. 使用样例
+```java
+import com.binarywang.wxjava.store.api.WxStoreService;
+import com.binarywang.wxjava.store.bean.shop.ShopInfoResponse;
+import com.binarywang.wxjava.store.util.JsonUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class DemoService {
+ @Autowired
+ private WxStoreService wxStoreService;
+
+ public String getShopInfo() throws WxErrorException {
+ // 获取店铺基本信息
+ ShopInfoResponse response = wxStoreService.getBasicService().getShopInfo();
+ // 此处为演示,如果要返回response的结果,建议自己封装一个VO,避免直接返回response
+ return JsonUtils.encode(response);
+ }
+}
+```
diff --git a/spring-boot-starters/wx-java-store-spring-boot-starter/pom.xml b/spring-boot-starters/wx-java-store-spring-boot-starter/pom.xml
new file mode 100644
index 0000000000..b59dbae37e
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-spring-boot-starter/pom.xml
@@ -0,0 +1,61 @@
+
+
+ wx-java-spring-boot-starters
+ com.github.binarywang
+ 4.8.6.B
+
+ 4.0.0
+
+ wx-java-store-spring-boot-starter
+ WxJava - Spring Boot Starter for Store
+ 微信小店开发的 Spring Boot Starter
+
+
+
+ com.github.binarywang
+ weixin-java-store
+ ${project.version}
+
+
+ redis.clients
+ jedis
+ provided
+
+
+ org.redisson
+ redisson
+ provided
+
+
+ org.springframework.data
+ spring-data-redis
+ ${spring-data-redis.version}
+ true
+ provided
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring.boot.version}
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ 2.2.1
+
+
+ attach-sources
+
+ jar-no-fork
+
+
+
+
+
+
+
diff --git a/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/WxStoreAutoConfiguration.java b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/WxStoreAutoConfiguration.java
new file mode 100644
index 0000000000..28f7e0b48f
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/WxStoreAutoConfiguration.java
@@ -0,0 +1,20 @@
+package com.binarywang.spring.starter.wxjava.store.config;
+
+import com.binarywang.spring.starter.wxjava.store.properties.WxStoreProperties;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+/**
+ * 自动配置
+ *
+ * @author Zeyes
+ */
+@Configuration
+@EnableConfigurationProperties(WxStoreProperties.class)
+@Import({
+ WxStoreStorageAutoConfiguration.class,
+ WxStoreServiceAutoConfiguration.class
+})
+public class WxStoreAutoConfiguration {
+}
diff --git a/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/WxStoreServiceAutoConfiguration.java b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/WxStoreServiceAutoConfiguration.java
new file mode 100644
index 0000000000..c93857c04e
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/WxStoreServiceAutoConfiguration.java
@@ -0,0 +1,41 @@
+package com.binarywang.spring.starter.wxjava.store.config;
+
+
+import com.binarywang.spring.starter.wxjava.store.properties.WxStoreProperties;
+import com.binarywang.spring.starter.wxjava.store.enums.HttpClientType;
+import lombok.AllArgsConstructor;
+import com.binarywang.wxjava.store.api.WxStoreService;
+import com.binarywang.wxjava.store.api.impl.WxStoreServiceHttpClientImpl;
+import com.binarywang.wxjava.store.api.impl.WxStoreServiceHttpComponentsImpl;
+import com.binarywang.wxjava.store.config.WxStoreConfig;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 微信小程序平台相关服务自动注册
+ *
+ * @author Zeyes
+ */
+@Configuration
+@AllArgsConstructor
+public class WxStoreServiceAutoConfiguration {
+ private final WxStoreProperties properties;
+
+ /**
+ * Store Service
+ *
+ * @return Store Service
+ */
+ @Bean
+ @ConditionalOnMissingBean(WxStoreService.class)
+ @ConditionalOnBean(WxStoreConfig.class)
+ public WxStoreService wxStoreService(WxStoreConfig wxStoreConfig) {
+ HttpClientType httpClientType = properties.getConfigStorage().getHttpClientType();
+ WxStoreService wxStoreService = httpClientType == HttpClientType.HttpClient
+ ? new WxStoreServiceHttpClientImpl() : new WxStoreServiceHttpComponentsImpl();
+ wxStoreService.setConfig(wxStoreConfig);
+ return wxStoreService;
+ }
+}
diff --git a/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/WxStoreStorageAutoConfiguration.java b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/WxStoreStorageAutoConfiguration.java
new file mode 100644
index 0000000000..3867ad8bb6
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/WxStoreStorageAutoConfiguration.java
@@ -0,0 +1,23 @@
+package com.binarywang.spring.starter.wxjava.store.config;
+
+import com.binarywang.spring.starter.wxjava.store.config.storage.WxStoreInJedisConfigStorageConfiguration;
+import com.binarywang.spring.starter.wxjava.store.config.storage.WxStoreInMemoryConfigStorageConfiguration;
+import com.binarywang.spring.starter.wxjava.store.config.storage.WxStoreInRedisTemplateConfigStorageConfiguration;
+import com.binarywang.spring.starter.wxjava.store.config.storage.WxStoreInRedissonConfigStorageConfiguration;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+/**
+ * 微信小程序存储策略自动配置
+ *
+ * @author Zeyes
+ */
+@Configuration
+@Import({
+ WxStoreInMemoryConfigStorageConfiguration.class,
+ WxStoreInJedisConfigStorageConfiguration.class,
+ WxStoreInRedisTemplateConfigStorageConfiguration.class,
+ WxStoreInRedissonConfigStorageConfiguration.class
+})
+public class WxStoreStorageAutoConfiguration {
+}
diff --git a/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/storage/AbstractWxStoreConfigStorageConfiguration.java b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/storage/AbstractWxStoreConfigStorageConfiguration.java
new file mode 100644
index 0000000000..95452d4e47
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/storage/AbstractWxStoreConfigStorageConfiguration.java
@@ -0,0 +1,42 @@
+package com.binarywang.spring.starter.wxjava.store.config.storage;
+
+import com.binarywang.spring.starter.wxjava.store.properties.WxStoreProperties;
+import com.binarywang.wxjava.store.config.impl.WxStoreDefaultConfigImpl;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * @author Zeyes
+ */
+public abstract class AbstractWxStoreConfigStorageConfiguration {
+
+ protected WxStoreDefaultConfigImpl config(WxStoreDefaultConfigImpl config, WxStoreProperties properties) {
+ config.setAppid(StringUtils.trimToNull(properties.getAppid()));
+ config.setSecret(StringUtils.trimToNull(properties.getSecret()));
+ config.setToken(StringUtils.trimToNull(properties.getToken()));
+ config.setAesKey(StringUtils.trimToNull(properties.getAesKey()));
+ config.setMsgDataFormat(StringUtils.trimToNull(properties.getMsgDataFormat()));
+ config.setStableAccessToken(properties.isUseStableAccessToken());
+ config.setApiHostUrl(StringUtils.trimToNull(properties.getApiHostUrl()));
+ config.setAccessTokenUrl(StringUtils.trimToNull(properties.getAccessTokenUrl()));
+
+ WxStoreProperties.ConfigStorage configStorageProperties = properties.getConfigStorage();
+ config.setHttpProxyHost(configStorageProperties.getHttpProxyHost());
+ config.setHttpProxyUsername(configStorageProperties.getHttpProxyUsername());
+ config.setHttpProxyPassword(configStorageProperties.getHttpProxyPassword());
+ if (configStorageProperties.getHttpProxyPort() != null) {
+ config.setHttpProxyPort(configStorageProperties.getHttpProxyPort());
+ }
+
+ int maxRetryTimes = configStorageProperties.getMaxRetryTimes();
+ if (configStorageProperties.getMaxRetryTimes() < 0) {
+ maxRetryTimes = 0;
+ }
+ int retrySleepMillis = configStorageProperties.getRetrySleepMillis();
+ if (retrySleepMillis < 0) {
+ retrySleepMillis = 1000;
+ }
+ config.setRetrySleepMillis(retrySleepMillis);
+ config.setMaxRetryTimes(maxRetryTimes);
+ return config;
+ }
+}
diff --git a/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/storage/WxStoreInJedisConfigStorageConfiguration.java b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/storage/WxStoreInJedisConfigStorageConfiguration.java
new file mode 100644
index 0000000000..c474c5f6bd
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/storage/WxStoreInJedisConfigStorageConfiguration.java
@@ -0,0 +1,73 @@
+package com.binarywang.spring.starter.wxjava.store.config.storage;
+
+
+import com.binarywang.spring.starter.wxjava.store.properties.RedisProperties;
+import com.binarywang.spring.starter.wxjava.store.properties.WxStoreProperties;
+import lombok.RequiredArgsConstructor;
+import com.binarywang.wxjava.store.config.WxStoreConfig;
+import com.binarywang.wxjava.store.config.impl.WxStoreRedisConfigImpl;
+import me.chanjar.weixin.common.redis.JedisWxRedisOps;
+import me.chanjar.weixin.common.redis.WxRedisOps;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import redis.clients.jedis.JedisPool;
+import redis.clients.jedis.JedisPoolConfig;
+
+/**
+ * @author Zeyes
+ */
+@Configuration
+@ConditionalOnProperty(prefix = WxStoreProperties.PREFIX + ".config-storage", name = "type", havingValue = "jedis")
+@ConditionalOnClass({JedisPool.class, JedisPoolConfig.class})
+@RequiredArgsConstructor
+public class WxStoreInJedisConfigStorageConfiguration extends AbstractWxStoreConfigStorageConfiguration {
+ private final WxStoreProperties properties;
+ private final ApplicationContext applicationContext;
+
+ @Bean
+ @ConditionalOnMissingBean(WxStoreConfig.class)
+ public WxStoreConfig wxStoreConfig() {
+ WxStoreRedisConfigImpl config = getWxStoreRedisConfig();
+ return this.config(config, properties);
+ }
+
+ private WxStoreRedisConfigImpl getWxStoreRedisConfig() {
+ RedisProperties redisProperties = properties.getConfigStorage().getRedis();
+ JedisPool jedisPool;
+ if (redisProperties != null && StringUtils.isNotEmpty(redisProperties.getHost())) {
+ jedisPool = getJedisPool();
+ } else {
+ jedisPool = applicationContext.getBean(JedisPool.class);
+ }
+ WxRedisOps redisOps = new JedisWxRedisOps(jedisPool);
+ return new WxStoreRedisConfigImpl(redisOps, properties.getConfigStorage().getKeyPrefix());
+ }
+
+ private JedisPool getJedisPool() {
+ WxStoreProperties.ConfigStorage storage = properties.getConfigStorage();
+ RedisProperties redis = storage.getRedis();
+
+ JedisPoolConfig config = new JedisPoolConfig();
+ if (redis.getMaxActive() != null) {
+ config.setMaxTotal(redis.getMaxActive());
+ }
+ if (redis.getMaxIdle() != null) {
+ config.setMaxIdle(redis.getMaxIdle());
+ }
+ if (redis.getMaxWaitMillis() != null) {
+ config.setMaxWaitMillis(redis.getMaxWaitMillis());
+ }
+ if (redis.getMinIdle() != null) {
+ config.setMinIdle(redis.getMinIdle());
+ }
+ config.setTestOnBorrow(true);
+ config.setTestWhileIdle(true);
+
+ return new JedisPool(config, redis.getHost(), redis.getPort(), redis.getTimeout(), redis.getPassword(), redis.getDatabase());
+ }
+}
diff --git a/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/storage/WxStoreInMemoryConfigStorageConfiguration.java b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/storage/WxStoreInMemoryConfigStorageConfiguration.java
new file mode 100644
index 0000000000..59802c8774
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/storage/WxStoreInMemoryConfigStorageConfiguration.java
@@ -0,0 +1,29 @@
+package com.binarywang.spring.starter.wxjava.store.config.storage;
+
+
+import com.binarywang.spring.starter.wxjava.store.properties.WxStoreProperties;
+import lombok.RequiredArgsConstructor;
+import com.binarywang.wxjava.store.config.WxStoreConfig;
+import com.binarywang.wxjava.store.config.impl.WxStoreDefaultConfigImpl;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author Zeyes
+ */
+@Configuration
+@ConditionalOnProperty(prefix = WxStoreProperties.PREFIX + ".config-storage", name = "type",
+ matchIfMissing = true, havingValue = "memory")
+@RequiredArgsConstructor
+public class WxStoreInMemoryConfigStorageConfiguration extends AbstractWxStoreConfigStorageConfiguration {
+ private final WxStoreProperties properties;
+
+ @Bean
+ @ConditionalOnMissingBean(WxStoreConfig.class)
+ public WxStoreConfig wxStoreConfig() {
+ WxStoreDefaultConfigImpl config = new WxStoreDefaultConfigImpl();
+ return this.config(config, properties);
+ }
+}
diff --git a/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/storage/WxStoreInRedisTemplateConfigStorageConfiguration.java b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/storage/WxStoreInRedisTemplateConfigStorageConfiguration.java
new file mode 100644
index 0000000000..4bbcbb05bc
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/storage/WxStoreInRedisTemplateConfigStorageConfiguration.java
@@ -0,0 +1,40 @@
+package com.binarywang.spring.starter.wxjava.store.config.storage;
+
+import com.binarywang.spring.starter.wxjava.store.properties.WxStoreProperties;
+import lombok.RequiredArgsConstructor;
+import com.binarywang.wxjava.store.config.WxStoreConfig;
+import com.binarywang.wxjava.store.config.impl.WxStoreRedisConfigImpl;
+import me.chanjar.weixin.common.redis.RedisTemplateWxRedisOps;
+import me.chanjar.weixin.common.redis.WxRedisOps;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.core.StringRedisTemplate;
+
+/**
+ * @author Zeyes
+ */
+@Configuration
+@ConditionalOnProperty(prefix = WxStoreProperties.PREFIX + ".config-storage", name = "type", havingValue = "redis_template")
+@ConditionalOnClass(StringRedisTemplate.class)
+@RequiredArgsConstructor
+public class WxStoreInRedisTemplateConfigStorageConfiguration extends AbstractWxStoreConfigStorageConfiguration {
+ private final WxStoreProperties properties;
+ private final ApplicationContext applicationContext;
+
+ @Bean
+ @ConditionalOnMissingBean(WxStoreConfig.class)
+ public WxStoreConfig wxStoreConfig() {
+ WxStoreRedisConfigImpl config = getWxStoreInRedisTemplateConfig();
+ return this.config(config, properties);
+ }
+
+ private WxStoreRedisConfigImpl getWxStoreInRedisTemplateConfig() {
+ StringRedisTemplate redisTemplate = applicationContext.getBean(StringRedisTemplate.class);
+ WxRedisOps redisOps = new RedisTemplateWxRedisOps(redisTemplate);
+ return new WxStoreRedisConfigImpl(redisOps, properties.getConfigStorage().getKeyPrefix());
+ }
+}
diff --git a/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/storage/WxStoreInRedissonConfigStorageConfiguration.java b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/storage/WxStoreInRedissonConfigStorageConfiguration.java
new file mode 100644
index 0000000000..5eacb98d91
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/config/storage/WxStoreInRedissonConfigStorageConfiguration.java
@@ -0,0 +1,62 @@
+package com.binarywang.spring.starter.wxjava.store.config.storage;
+
+
+import com.binarywang.spring.starter.wxjava.store.properties.RedisProperties;
+import com.binarywang.spring.starter.wxjava.store.properties.WxStoreProperties;
+import lombok.RequiredArgsConstructor;
+import com.binarywang.wxjava.store.config.WxStoreConfig;
+import com.binarywang.wxjava.store.config.impl.WxStoreRedissonConfigImpl;
+import org.apache.commons.lang3.StringUtils;
+import org.redisson.Redisson;
+import org.redisson.api.RedissonClient;
+import org.redisson.config.Config;
+import org.redisson.config.TransportMode;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author Zeyes
+ */
+@Configuration
+@ConditionalOnProperty(prefix = WxStoreProperties.PREFIX + ".config-storage", name = "type", havingValue = "redisson")
+@ConditionalOnClass({Redisson.class, RedissonClient.class})
+@RequiredArgsConstructor
+public class WxStoreInRedissonConfigStorageConfiguration extends AbstractWxStoreConfigStorageConfiguration {
+ private final WxStoreProperties properties;
+ private final ApplicationContext applicationContext;
+
+ @Bean
+ @ConditionalOnMissingBean(WxStoreConfig.class)
+ public WxStoreConfig wxStoreConfig() {
+ WxStoreRedissonConfigImpl config = getWxStoreRedissonConfig();
+ return this.config(config, properties);
+ }
+
+ private WxStoreRedissonConfigImpl getWxStoreRedissonConfig() {
+ RedisProperties redisProperties = properties.getConfigStorage().getRedis();
+ RedissonClient redissonClient;
+ if (redisProperties != null && StringUtils.isNotEmpty(redisProperties.getHost())) {
+ redissonClient = getRedissonClient();
+ } else {
+ redissonClient = applicationContext.getBean(RedissonClient.class);
+ }
+ return new WxStoreRedissonConfigImpl(redissonClient, properties.getConfigStorage().getKeyPrefix());
+ }
+
+ private RedissonClient getRedissonClient() {
+ WxStoreProperties.ConfigStorage storage = properties.getConfigStorage();
+ RedisProperties redis = storage.getRedis();
+
+ Config config = new Config();
+ config.useSingleServer()
+ .setAddress("redis://" + redis.getHost() + ":" + redis.getPort())
+ .setDatabase(redis.getDatabase())
+ .setPassword(redis.getPassword());
+ config.setTransportMode(TransportMode.NIO);
+ return Redisson.create(config);
+ }
+}
diff --git a/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/enums/HttpClientType.java b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/enums/HttpClientType.java
new file mode 100644
index 0000000000..5db42200d3
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/enums/HttpClientType.java
@@ -0,0 +1,17 @@
+package com.binarywang.spring.starter.wxjava.store.enums;
+
+/**
+ * httpclient类型
+ *
+ * @author Zeyes
+ */
+public enum HttpClientType {
+ /**
+ * HttpClient.
+ */
+ HttpClient,
+ /**
+ * HttpComponents.
+ */
+ HttpComponents,
+}
diff --git a/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/enums/StorageType.java b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/enums/StorageType.java
new file mode 100644
index 0000000000..21347d0da0
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/enums/StorageType.java
@@ -0,0 +1,25 @@
+package com.binarywang.spring.starter.wxjava.store.enums;
+
+/**
+ * storage类型
+ *
+ * @author Zeyes
+ */
+public enum StorageType {
+ /**
+ * 内存
+ */
+ Memory,
+ /**
+ * redis(JedisClient)
+ */
+ Jedis,
+ /**
+ * redis(Redisson)
+ */
+ Redisson,
+ /**
+ * redis(RedisTemplate)
+ */
+ RedisTemplate
+}
diff --git a/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/properties/RedisProperties.java b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/properties/RedisProperties.java
new file mode 100644
index 0000000000..00d87c3bd9
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/properties/RedisProperties.java
@@ -0,0 +1,42 @@
+package com.binarywang.spring.starter.wxjava.store.properties;
+
+import lombok.Data;
+
+/**
+ * redis 配置
+ *
+ * @author Zeyes
+ */
+@Data
+public class RedisProperties {
+
+ /**
+ * 主机地址,不填则从spring容器内获取JedisPool
+ */
+ private String host;
+
+ /**
+ * 端口号
+ */
+ private int port = 6379;
+
+ /**
+ * 密码
+ */
+ private String password;
+
+ /**
+ * 超时
+ */
+ private int timeout = 2000;
+
+ /**
+ * 数据库
+ */
+ private int database = 0;
+
+ private Integer maxActive;
+ private Integer maxIdle;
+ private Integer maxWaitMillis;
+ private Integer minIdle;
+}
diff --git a/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/properties/WxStoreProperties.java b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/properties/WxStoreProperties.java
new file mode 100644
index 0000000000..26b1e9d4ff
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/store/properties/WxStoreProperties.java
@@ -0,0 +1,126 @@
+package com.binarywang.spring.starter.wxjava.store.properties;
+
+import com.binarywang.spring.starter.wxjava.store.enums.HttpClientType;
+import com.binarywang.spring.starter.wxjava.store.enums.StorageType;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
+
+/**
+ * 属性配置类
+ *
+ * @author Zeyes
+ */
+@Data
+@ConfigurationProperties(prefix = WxStoreProperties.PREFIX)
+public class WxStoreProperties {
+ public static final String PREFIX = "wx.store";
+
+ /**
+ * 设置微信小店的appid
+ */
+ private String appid;
+
+ /**
+ * 设置微信小店的Secret
+ */
+ private String secret;
+
+ /**
+ * 设置微信小店消息服务器配置的token.
+ */
+ private String token;
+
+ /**
+ * 设置微信小店消息服务器配置的EncodingAESKey
+ */
+ private String aesKey;
+
+ /**
+ * 消息格式,XML或者JSON
+ */
+ private String msgDataFormat = "JSON";
+
+ /**
+ * 是否使用稳定版 Access Token
+ */
+ private boolean useStableAccessToken = false;
+
+ /**
+ * 自定义API主机地址,用于替换默认的 https://api.weixin.qq.com
+ * 例如:http://proxy.company.com:8080
+ */
+ private String apiHostUrl;
+
+ /**
+ * 自定义获取AccessToken地址,用于向自定义统一服务获取AccessToken
+ * 例如:http://proxy.company.com:8080/oauth/token
+ */
+ private String accessTokenUrl;
+
+ /**
+ * 存储策略
+ */
+ private final ConfigStorage configStorage = new ConfigStorage();
+
+ @Data
+ public static class ConfigStorage {
+
+ /**
+ * 存储类型
+ */
+ private StorageType type = StorageType.Memory;
+
+ /**
+ * 指定key前缀
+ */
+ private String keyPrefix = "wh";
+
+ /**
+ * redis连接配置
+ */
+ @NestedConfigurationProperty
+ private final RedisProperties redis = new RedisProperties();
+
+ /**
+ * http客户端类型
+ */
+ private HttpClientType httpClientType = HttpClientType.HttpComponents;
+
+ /**
+ * http代理主机
+ */
+ private String httpProxyHost;
+
+ /**
+ * http代理端口
+ */
+ private Integer httpProxyPort;
+
+ /**
+ * http代理用户名
+ */
+ private String httpProxyUsername;
+
+ /**
+ * http代理密码
+ */
+ private String httpProxyPassword;
+
+ /**
+ * http 请求重试间隔
+ *
+ * {@link com.binarywang.wxjava.store.api.BaseWxStoreService#setRetrySleepMillis(int)}
+ *
+ */
+ private int retrySleepMillis = 1000;
+ /**
+ * http 请求最大重试次数
+ *
+ * {@link com.binarywang.wxjava.store.api.BaseWxStoreService#setMaxRetryTimes(int)}
+ *
+ */
+ private int maxRetryTimes = 5;
+ }
+
+}
diff --git a/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/resources/META-INF/spring.factories b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/resources/META-INF/spring.factories
new file mode 100644
index 0000000000..cbf38ae2c2
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,2 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+ com.binarywang.spring.starter.wxjava.store.config.WxStoreAutoConfiguration
diff --git a/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000000..80044c332a
--- /dev/null
+++ b/spring-boot-starters/wx-java-store-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+com.binarywang.spring.starter.wxjava.store.config.WxStoreAutoConfiguration
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelAddressService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelAddressService.java
index 063dd53948..545d30b737 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelAddressService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelAddressService.java
@@ -12,7 +12,9 @@
* 视频号小店 地址管理服务
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreAddressService}。
*/
+@Deprecated
public interface WxChannelAddressService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelAfterSaleService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelAfterSaleService.java
index 89d3c169be..2ff04faf1d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelAfterSaleService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelAfterSaleService.java
@@ -12,7 +12,9 @@
* 视频号小店 售后服务接口
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreAfterSaleService}。
*/
+@Deprecated
public interface WxChannelAfterSaleService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelBasicService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelBasicService.java
index 4d2133a56d..2f1a37f024 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelBasicService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelBasicService.java
@@ -15,7 +15,9 @@
* 基础接口
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreBasicService}。
*/
+@Deprecated
public interface WxChannelBasicService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelBrandService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelBrandService.java
index 905d354955..8a5dda562c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelBrandService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelBrandService.java
@@ -13,7 +13,9 @@
* 视频号小店 品牌服务接口
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreBrandService}。
*/
+@Deprecated
public interface WxChannelBrandService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelCategoryService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelCategoryService.java
index ad86697614..f4129ffc19 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelCategoryService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelCategoryService.java
@@ -14,7 +14,9 @@
*
* @author Zeyes
* @see 新旧类目树差异
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreCategoryService}。
*/
+@Deprecated
public interface WxChannelCategoryService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelCompassShopService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelCompassShopService.java
index aa3a85fa74..e742281289 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelCompassShopService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelCompassShopService.java
@@ -16,7 +16,9 @@
* 视频号/微信小店 罗盘商家版服务
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreCompassShopService}。
*/
+@Deprecated
public interface WxChannelCompassShopService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelCouponService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelCouponService.java
index df59fdc8b9..309ac713a6 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelCouponService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelCouponService.java
@@ -15,7 +15,9 @@
* 视频号小店 优惠券服务
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreCouponService}。
*/
+@Deprecated
public interface WxChannelCouponService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelEwaybillService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelEwaybillService.java
index 714f75b44b..cb96f5e3e0 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelEwaybillService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelEwaybillService.java
@@ -24,7 +24,9 @@
* 视频号小店电子面单服务接口
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreEwaybillService}。
*/
+@Deprecated
public interface WxChannelEwaybillService {
/** 获取可用的标准面单模板。 @return 模板配置 @throws WxErrorException 微信接口调用失败 */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelFavoriteService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelFavoriteService.java
index c1c03cc615..57998a76d1 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelFavoriteService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelFavoriteService.java
@@ -8,7 +8,9 @@
*
* @author GitHub Copilot
* @link 收藏管理接口文档
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreFavoriteService}。
*/
+@Deprecated
public interface WxChannelFavoriteService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelFreightTemplateService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelFreightTemplateService.java
index 188b33464b..0bd617f465 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelFreightTemplateService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelFreightTemplateService.java
@@ -11,7 +11,9 @@
* 视频号小店 运费模板服务接口
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreFreightTemplateService}。
*/
+@Deprecated
public interface WxChannelFreightTemplateService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelFundService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelFundService.java
index cb0f5aab79..7dcb1c76eb 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelFundService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelFundService.java
@@ -24,7 +24,9 @@
* 资金相关服务
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreFundService}。
*/
+@Deprecated
public interface WxChannelFundService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelGiftService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelGiftService.java
index 23655e1905..ffea27a3a5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelGiftService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelGiftService.java
@@ -12,7 +12,9 @@
/**
* 微信小店赠品与买赠活动服务。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreGiftService}。
*/
+@Deprecated
public interface WxChannelGiftService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelKfService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelKfService.java
index 41fb153eb3..e1d28825e8 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelKfService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelKfService.java
@@ -4,7 +4,12 @@
import me.chanjar.weixin.channel.bean.kf.WxChannelKfSendMsgResponse;
import me.chanjar.weixin.common.error.WxErrorException;
-/** 视频号小店商家客服服务。 */
+/**
+ * 视频号小店商家客服服务。
+ *
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreKfService}。
+ */
+@Deprecated
public interface WxChannelKfService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelLimitedDiscountService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelLimitedDiscountService.java
index 40e6776f60..ef333f92f1 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelLimitedDiscountService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelLimitedDiscountService.java
@@ -10,7 +10,9 @@
/**
* 微信小店限时抢购服务。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreLimitedDiscountService}。
*/
+@Deprecated
public interface WxChannelLimitedDiscountService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelOrderService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelOrderService.java
index e2da5c7a5b..c7f43496f2 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelOrderService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelOrderService.java
@@ -26,7 +26,9 @@
*
* @author Zeyes
* @link 订单接口文档
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreOrderService}。
*/
+@Deprecated
public interface WxChannelOrderService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelProductAssistantService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelProductAssistantService.java
index 2f39249f0c..0bb0af5620 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelProductAssistantService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelProductAssistantService.java
@@ -15,7 +15,9 @@
/**
* 微信小店商品辅助功能服务。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreProductAssistantService}。
*/
+@Deprecated
public interface WxChannelProductAssistantService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelProductService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelProductService.java
index fb019eefe5..095a7c482e 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelProductService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelProductService.java
@@ -51,7 +51,9 @@
*
* @author Zeyes
* @see 商品状态流转图
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreProductService}。
*/
+@Deprecated
public interface WxChannelProductService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelProductStockService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelProductStockService.java
index dc2fa4f587..77b012de1f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelProductStockService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelProductStockService.java
@@ -10,7 +10,9 @@
/**
* 微信小店商品库存服务。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreProductStockService}。
*/
+@Deprecated
public interface WxChannelProductStockService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelQicService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelQicService.java
index df783b68c7..e1e6521614 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelQicService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelQicService.java
@@ -10,7 +10,9 @@
/**
* 视频号小店 质检管理接口.
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreQicService}。
*/
+@Deprecated
public interface WxChannelQicService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelService.java
index 5a4c4d3d41..7d18e61c57 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelService.java
@@ -11,7 +11,10 @@ public interface WxChannelService extends BaseWxChannelService {
* 商家客服服务。
*
* @return 商家客服服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getKfService()}。
*/
+ @Deprecated
default WxChannelKfService getKfService() {
throw new UnsupportedOperationException("WxChannelService implementation does not support getKfService()");
}
@@ -20,35 +23,50 @@ default WxChannelKfService getKfService() {
* 基础接口服务
*
* @return 基础接口服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getBasicService()}。
*/
+ @Deprecated
WxChannelBasicService getBasicService();
/**
* 商品类目服务
*
* @return 商品类目服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getCategoryService()}。
*/
+ @Deprecated
WxChannelCategoryService getCategoryService();
/**
* 品牌服务
*
* @return 品牌服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getBrandService()}。
*/
+ @Deprecated
WxChannelBrandService getBrandService();
/**
* 商品服务
*
* @return 商品服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getProductService()}。
*/
+ @Deprecated
WxChannelProductService getProductService();
/**
* 赠品与买赠活动服务
*
* @return 赠品与买赠活动服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getGiftService()}。
*/
+ @Deprecated
default WxChannelGiftService getGiftService() {
throw new UnsupportedOperationException("Gift service is not supported by this implementation");
}
@@ -57,7 +75,10 @@ default WxChannelGiftService getGiftService() {
* 限时抢购服务
*
* @return 限时抢购服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getLimitedDiscountService()}。
*/
+ @Deprecated
default WxChannelLimitedDiscountService getLimitedDiscountService() {
throw new UnsupportedOperationException("Limited discount service is not supported by this implementation");
}
@@ -66,7 +87,10 @@ default WxChannelLimitedDiscountService getLimitedDiscountService() {
* 商品库存服务
*
* @return 商品库存服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getProductStockService()}。
*/
+ @Deprecated
default WxChannelProductStockService getProductStockService() {
throw new UnsupportedOperationException("Product stock service is not supported by this implementation");
}
@@ -75,7 +99,10 @@ default WxChannelProductStockService getProductStockService() {
* 商品辅助功能服务
*
* @return 商品辅助功能服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getProductAssistantService()}。
*/
+ @Deprecated
default WxChannelProductAssistantService getProductAssistantService() {
throw new UnsupportedOperationException("Product assistant service is not supported by this implementation");
}
@@ -84,77 +111,110 @@ default WxChannelProductAssistantService getProductAssistantService() {
* 仓库服务
*
* @return 仓库服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getWarehouseService()}。
*/
+ @Deprecated
WxChannelWarehouseService getWarehouseService();
/**
* 订单服务
*
* @return 订单服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getOrderService()}。
*/
+ @Deprecated
WxChannelOrderService getOrderService();
/**
* 售后服务
*
* @return 售后服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getAfterSaleService()}。
*/
+ @Deprecated
WxChannelAfterSaleService getAfterSaleService();
/**
* 运费模板服务
*
* @return 运费模板服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getFreightTemplateService()}。
*/
+ @Deprecated
WxChannelFreightTemplateService getFreightTemplateService();
/**
* 地址服务
*
* @return 地址服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getAddressService()}。
*/
+ @Deprecated
WxChannelAddressService getAddressService();
/**
* 优惠券服务
*
* @return 优惠券服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getCouponService()}。
*/
+ @Deprecated
WxChannelCouponService getCouponService();
/**
* 分享员服务
*
* @return 分享员服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getSharerService()}。
*/
+ @Deprecated
WxChannelSharerService getSharerService();
/**
* 资金服务
*
* @return 资金服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getFundService()}。
*/
+ @Deprecated
WxChannelFundService getFundService();
/**
* 主页管理服务
*
* @return 主页管理服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getHomePageService()}。
*/
+ @Deprecated
WxStoreHomePageService getHomePageService();
/**
* 合作账号服务
*
* @return 团长合作服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getCooperationService()}。
*/
+ @Deprecated
WxStoreCooperationService getCooperationService();
/**
* 视频号/微信小店 罗盘商家版服务
*
* @return 罗盘商家版服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getCompassShopService()}。
*/
+ @Deprecated
WxChannelCompassShopService getCompassShopService();
/**
@@ -168,7 +228,10 @@ default WxChannelProductAssistantService getProductAssistantService() {
* 代发管理服务
*
* @return 代发管理服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getSupplierService()}。
*/
+ @Deprecated
WxChannelSupplierService getSupplierService();
/**
@@ -217,7 +280,10 @@ default WxChannelProductAssistantService getProductAssistantService() {
* 会员功能
*
* @return 会员服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getVipService()}。
*/
+ @Deprecated
WxChannelVipService getVipService();
/**
@@ -238,7 +304,10 @@ default WxChannelProductAssistantService getProductAssistantService() {
* 质检管理服务.
*
* @return 质检管理服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getQicService()}。
*/
+ @Deprecated
WxChannelQicService getQicService();
/**
@@ -252,14 +321,20 @@ default WxChannelProductAssistantService getProductAssistantService() {
* 收藏管理服务
*
* @return 收藏管理服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getFavoriteService()}。
*/
+ @Deprecated
WxChannelFavoriteService getFavoriteService();
/**
* 电子面单服务
*
* @return 电子面单服务
+
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreService#getEwaybillService()}。
*/
+ @Deprecated
default WxChannelEwaybillService getEwaybillService() {
throw new UnsupportedOperationException("当前 WxChannelService 实现不支持电子面单服务");
}
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelSharerService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelSharerService.java
index 300493158b..c802a23071 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelSharerService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelSharerService.java
@@ -13,7 +13,9 @@
* 视频号小店 分享员服务接口
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreSharerService}。
*/
+@Deprecated
public interface WxChannelSharerService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelSupplierService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelSupplierService.java
index 35e46b6dca..48aa0a97c0 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelSupplierService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelSupplierService.java
@@ -19,7 +19,9 @@
*
* @author GitHub Copilot
* @see 代发管理接口文档
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreSupplierService}。
*/
+@Deprecated
public interface WxChannelSupplierService {
/** 获取供货商列表。 */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelVipService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelVipService.java
index 4100659200..1ca08ff69f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelVipService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelVipService.java
@@ -11,7 +11,9 @@
*
* @author aushiye
* @link 会员功能接口文档
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreVipService}。
*/
+@Deprecated
public interface WxChannelVipService {
/** 拉取用户详情 */
// String VIP_USER_INFO_URL = "https://api.weixin.qq.com/channels/ec/vip/user/info/get";
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelWarehouseService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelWarehouseService.java
index 1bb00885f5..4d9a60a7d0 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelWarehouseService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelWarehouseService.java
@@ -18,7 +18,9 @@
* 视频号小店 区域仓库服务
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreWarehouseService}。
*/
+@Deprecated
public interface WxChannelWarehouseService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxStoreCooperationService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxStoreCooperationService.java
index 96d2ff5f8d..477dfec384 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxStoreCooperationService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxStoreCooperationService.java
@@ -11,7 +11,9 @@
*
* @author Zeyes
* @see 合作账号状态机
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreCooperationService}。
*/
+@Deprecated
public interface WxStoreCooperationService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxStoreHomePageService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxStoreHomePageService.java
index bd11e471b3..5d6d975105 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxStoreHomePageService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxStoreHomePageService.java
@@ -19,7 +19,9 @@
* 微信小店 主页管理相关接口
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxStoreHomePageService}。
*/
+@Deprecated
public interface WxStoreHomePageService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxTalentService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxTalentService.java
index e03cdbf502..c5737443ad 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxTalentService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxTalentService.java
@@ -14,7 +14,9 @@
* 微信小店-带货助手服务接口
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.api.WxTalentService}。
*/
+@Deprecated
public interface WxTalentService {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressAddParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressAddParam.java
index a831de6655..71f7c5b966 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressAddParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressAddParam.java
@@ -12,11 +12,13 @@
* 地址 请求参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.address.AddressAddParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class AddressAddParam implements Serializable {
private static final long serialVersionUID = 6778585213498438738L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressCode.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressCode.java
index c7c885f0ab..9f212daa22 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressCode.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressCode.java
@@ -9,9 +9,11 @@
* 地址编码
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.address.AddressCode}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class AddressCode implements Serializable {
private static final long serialVersionUID = -6782328785056142627L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressCodeResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressCodeResponse.java
index 09ede50c38..df9559fee6 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressCodeResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressCodeResponse.java
@@ -11,10 +11,12 @@
* 地址编码 响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.address.AddressCodeResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class AddressCodeResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -8994407971295563982L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressDetail.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressDetail.java
index 88f4945e20..f3dde94a28 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressDetail.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressDetail.java
@@ -11,10 +11,12 @@
* 用户地址
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.address.AddressDetail}。
*/
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class AddressDetail implements Serializable {
private static final long serialVersionUID = -7839578838482198641L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressIdParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressIdParam.java
index d1eb7e0b46..1306fbf8ed 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressIdParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressIdParam.java
@@ -12,11 +12,13 @@
* 地址id 请求参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.address.AddressIdParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class AddressIdParam implements Serializable {
private static final long serialVersionUID = -7001183932180608746L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressIdResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressIdResponse.java
index f6505efa15..df580bc2e4 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressIdResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressIdResponse.java
@@ -11,11 +11,13 @@
* 地址id 响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.address.AddressIdResponse}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class AddressIdResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -9218327846685744008L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressInfoResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressInfoResponse.java
index 957d0162a8..f77f562e34 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressInfoResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressInfoResponse.java
@@ -10,10 +10,12 @@
* 地址id 响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.address.AddressInfoResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class AddressInfoResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 8203853673226715673L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressListParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressListParam.java
index c62cf39fb8..559d249250 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressListParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressListParam.java
@@ -11,11 +11,13 @@
* 用户地址 列表 请求参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.address.AddressListParam}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class AddressListParam extends OffsetParam {
private static final long serialVersionUID = -4434287264623932176L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressListResponse.java
index b8846f9aa3..b18d399710 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/AddressListResponse.java
@@ -11,10 +11,12 @@
* 地址列表 响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.address.AddressListResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class AddressListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -3997164605170764105L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/OfflineAddressType.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/OfflineAddressType.java
index 81dd169399..12345f2a52 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/OfflineAddressType.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/address/OfflineAddressType.java
@@ -10,10 +10,12 @@
* 线下配送地址类型
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.address.OfflineAddressType}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class OfflineAddressType implements Serializable {
private static final long serialVersionUID = 636850757572901377L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleAcceptExchangeReshipParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleAcceptExchangeReshipParam.java
index 66be1c715d..1f48cbe348 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleAcceptExchangeReshipParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleAcceptExchangeReshipParam.java
@@ -8,9 +8,11 @@
* 售后单换货发货信息
*
* @author Chu
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleAcceptExchangeReshipParam}。
*/
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class AfterSaleAcceptExchangeReshipParam extends AfterSaleIdParam {
private static final long serialVersionUID = -7946679037747710613L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleAcceptParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleAcceptParam.java
index 32ad9154ee..13b0bc2f84 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleAcceptParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleAcceptParam.java
@@ -9,9 +9,11 @@
* 售后单同意信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleAcceptParam}。
*/
@Data
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class AfterSaleAcceptParam extends AfterSaleIdParam {
private static final long serialVersionUID = -4352801757159074950L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleCreateResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleCreateResponse.java
index 64b3b8f4cf..268bf9814f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleCreateResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleCreateResponse.java
@@ -5,8 +5,12 @@
import lombok.EqualsAndHashCode;
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
+/**
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleCreateResponse}。
+ */
@Data
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class AfterSaleCreateResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 2680676438284658410L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleDetail.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleDetail.java
index aa1e7b400f..9c5780b20c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleDetail.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleDetail.java
@@ -10,9 +10,11 @@
* 售后详情
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleDetail}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class AfterSaleDetail implements Serializable {
private static final long serialVersionUID = -8130659179770831047L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleExchangeDeliveryInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleExchangeDeliveryInfo.java
index 277d9d4d89..2fbd7b482d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleExchangeDeliveryInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleExchangeDeliveryInfo.java
@@ -10,9 +10,11 @@
* 换货类型的发货物流信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleExchangeDeliveryInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class AfterSaleExchangeDeliveryInfo implements Serializable {
private static final long serialVersionUID = 3039216368034112038L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleExchangeProductInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleExchangeProductInfo.java
index a73d6ae310..d279d78f56 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleExchangeProductInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleExchangeProductInfo.java
@@ -9,9 +9,11 @@
* 换货商品信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleExchangeProductInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class AfterSaleExchangeProductInfo implements Serializable {
private static final long serialVersionUID = -1341436607011117854L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleGenAfterSaleOrderParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleGenAfterSaleOrderParam.java
index 50928e7cdc..ec2ec1c703 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleGenAfterSaleOrderParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleGenAfterSaleOrderParam.java
@@ -5,9 +5,13 @@
import lombok.Data;
import lombok.EqualsAndHashCode;
+/**
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleGenAfterSaleOrderParam}。
+ */
@Data
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class AfterSaleGenAfterSaleOrderParam extends AfterSaleRefundPriceDiffParam {
private static final long serialVersionUID = -6873909673739068936L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleHandleFastExchangeReceiptParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleHandleFastExchangeReceiptParam.java
index 13c24f3f5d..05af300f2f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleHandleFastExchangeReceiptParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleHandleFastExchangeReceiptParam.java
@@ -6,9 +6,13 @@
import lombok.Data;
import lombok.EqualsAndHashCode;
+/**
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleHandleFastExchangeReceiptParam}。
+ */
@Data
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class AfterSaleHandleFastExchangeReceiptParam extends AfterSaleIdParam {
private static final long serialVersionUID = 5430106715116197677L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleIdParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleIdParam.java
index 1e16a72395..8eec8569ec 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleIdParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleIdParam.java
@@ -12,11 +12,13 @@
* 售后单id信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleIdParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class AfterSaleIdParam implements Serializable {
private static final long serialVersionUID = 4974332291476116540L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleInfo.java
index d465766d75..d7309b0be4 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleInfo.java
@@ -9,9 +9,11 @@
* 售后单信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class AfterSaleInfo implements Serializable {
private static final long serialVersionUID = 6595670817781635247L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleInfoResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleInfoResponse.java
index adedf72f03..c9f31b77d9 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleInfoResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleInfoResponse.java
@@ -10,10 +10,12 @@
* 售后单 响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleInfoResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class AfterSaleInfoResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -752661975153491902L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleListParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleListParam.java
index a477a2c581..86ae7825f3 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleListParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleListParam.java
@@ -12,11 +12,13 @@
* 售后单列表 请求参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleListParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class AfterSaleListParam implements Serializable {
private static final long serialVersionUID = -103549981452112069L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleListResponse.java
index dde39238a7..1fbc115f2c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleListResponse.java
@@ -11,10 +11,12 @@
* 售后单列表 响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleListResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class AfterSaleListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 5033313416948732123L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleMerchantUpdateParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleMerchantUpdateParam.java
index 275577e1df..808091cbe5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleMerchantUpdateParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleMerchantUpdateParam.java
@@ -10,9 +10,11 @@
* 售后单商家协商信息
*
* @author Chu
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleMerchantUpdateParam}。
*/
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class AfterSaleMerchantUpdateParam extends AfterSaleIdParam {
private static final long serialVersionUID = -3672834150982780L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleProductInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleProductInfo.java
index ffcaf320ca..a74283350c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleProductInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleProductInfo.java
@@ -9,9 +9,11 @@
* 售后相关商品信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleProductInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class AfterSaleProductInfo implements Serializable {
private static final long serialVersionUID = 4205179093262757775L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleReason.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleReason.java
index 7c66eff18f..9efb0fc02f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleReason.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleReason.java
@@ -11,9 +11,11 @@
*
* @author lizhengwu
* @date 2024/7/24
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleReason}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class AfterSaleReason implements Serializable {
private static final long serialVersionUID = -3674527884494606230L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleReasonResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleReasonResponse.java
index 7372dea1f1..79d9a6714f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleReasonResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleReasonResponse.java
@@ -13,10 +13,12 @@
*
*
* @author lizhengwu
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleReasonResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode
+@Deprecated
public class AfterSaleReasonResponse extends WxChannelBaseResponse {
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRefundPriceDiffParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRefundPriceDiffParam.java
index e6dfd08449..7949fe98f3 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRefundPriceDiffParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRefundPriceDiffParam.java
@@ -5,8 +5,12 @@
import java.io.Serializable;
import lombok.Data;
+/**
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleRefundPriceDiffParam}。
+ */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class AfterSaleRefundPriceDiffParam implements Serializable {
private static final long serialVersionUID = 3875058376021518123L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRejectExchangeReshipParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRejectExchangeReshipParam.java
index 668ffa11e9..6097ea6fb5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRejectExchangeReshipParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRejectExchangeReshipParam.java
@@ -10,9 +10,11 @@
* 售后单换货拒绝发货信息
*
* @author Chu
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleRejectExchangeReshipParam}。
*/
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class AfterSaleRejectExchangeReshipParam extends AfterSaleIdParam {
private static final long serialVersionUID = -7946679037747710613L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRejectParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRejectParam.java
index 6b19a8058c..3aefc8b4e8 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRejectParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRejectParam.java
@@ -11,9 +11,11 @@
* 售后单拒绝信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleRejectParam}。
*/
@Data
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class AfterSaleRejectParam extends AfterSaleIdParam {
private static final long serialVersionUID = -7507483859864253314L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRejectReason.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRejectReason.java
index 7987153ec0..4f4b70b4e7 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRejectReason.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRejectReason.java
@@ -11,9 +11,11 @@
*
* @author lizhengwu
* @date 2024/7/24
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleRejectReason}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class AfterSaleRejectReason implements Serializable {
private static final long serialVersionUID = -3672834150982780L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRejectReasonResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRejectReasonResponse.java
index 7b50691d00..06c1256c5f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRejectReasonResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRejectReasonResponse.java
@@ -12,10 +12,12 @@
* 售后原因
*
* @author lizhengwu
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleRejectReasonResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode
+@Deprecated
public class AfterSaleRejectReasonResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -7946679037747710613L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleReturnParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleReturnParam.java
index 47e815c8dd..d2a0502c27 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleReturnParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleReturnParam.java
@@ -9,8 +9,10 @@
* 退货信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleReturnParam}。
*/
@Data
+@Deprecated
public class AfterSaleReturnParam implements Serializable {
private static final long serialVersionUID = -1101993925465293521L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleVirtualNumberInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleVirtualNumberInfo.java
index 4366fa5ce9..ab37c18ebc 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleVirtualNumberInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleVirtualNumberInfo.java
@@ -9,9 +9,11 @@
* 虚拟号码信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleVirtualNumberInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class AfterSaleVirtualNumberInfo implements Serializable {
private static final long serialVersionUID = -5756618937333859985L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleVirtualTelNumResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleVirtualTelNumResponse.java
index c78d72e7cb..8a40fdec43 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleVirtualTelNumResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleVirtualTelNumResponse.java
@@ -5,8 +5,12 @@
import lombok.EqualsAndHashCode;
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
+/**
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.AfterSaleVirtualTelNumResponse}。
+ */
@Data
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class AfterSaleVirtualTelNumResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -2715343569103426942L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/ExchangeSkuInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/ExchangeSkuInfo.java
index 696f912ef2..929e3560b6 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/ExchangeSkuInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/ExchangeSkuInfo.java
@@ -5,8 +5,12 @@
import java.io.Serializable;
import lombok.Data;
+/**
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.ExchangeSkuInfo}。
+ */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class ExchangeSkuInfo implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("new_sku_id")
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantModifyParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantModifyParam.java
index 914cd908e9..41be302aed 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantModifyParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantModifyParam.java
@@ -5,9 +5,13 @@
import lombok.Data;
import lombok.EqualsAndHashCode;
+/**
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.GuaranteeMerchantModifyParam}。
+ */
@Data
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class GuaranteeMerchantModifyParam extends GuaranteeOrderIdParam {
private static final long serialVersionUID = 9193536167701367687L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantProofParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantProofParam.java
index e7760deaa7..3501bff266 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantProofParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantProofParam.java
@@ -5,9 +5,13 @@
import lombok.Data;
import lombok.EqualsAndHashCode;
+/**
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.GuaranteeMerchantProofParam}。
+ */
@Data
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class GuaranteeMerchantProofParam extends GuaranteeOrderIdParam {
private static final long serialVersionUID = -2365495841866160967L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeModifyRequest.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeModifyRequest.java
index 0141ac05d5..c6d7786f8c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeModifyRequest.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeModifyRequest.java
@@ -9,11 +9,13 @@
/**
* 商家协商保障单请求参数。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.GuaranteeModifyRequest}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class GuaranteeModifyRequest extends GuaranteeOrderIdParam {
private static final long serialVersionUID = 4268864541609439068L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderIdParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderIdParam.java
index 930e82422a..2fb99a097d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderIdParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderIdParam.java
@@ -10,11 +10,13 @@
/**
* 保障单号参数。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.GuaranteeOrderIdParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class GuaranteeOrderIdParam implements Serializable {
private static final long serialVersionUID = -6638498743123537413L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderInfoResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderInfoResponse.java
index 7b286807a5..c7c2301aec 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderInfoResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderInfoResponse.java
@@ -9,10 +9,12 @@
/**
* 保障单详情响应。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.GuaranteeOrderInfoResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class GuaranteeOrderInfoResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 7354122991247317485L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderListParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderListParam.java
index fbe11f91ef..a5c64c629a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderListParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderListParam.java
@@ -10,10 +10,12 @@
/**
* 保障单列表请求参数。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.GuaranteeOrderListParam}。
*/
@Data
@NoArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class GuaranteeOrderListParam implements Serializable {
private static final long serialVersionUID = 1622570776364341988L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderListResponse.java
index 90daa0cc11..defb95b909 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderListResponse.java
@@ -10,10 +10,12 @@
/**
* 保障单列表响应。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.GuaranteeOrderListResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class GuaranteeOrderListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 9105476087203713187L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderResponse.java
index 6f6256a9db..d3909cf10e 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderResponse.java
@@ -6,8 +6,12 @@
import lombok.EqualsAndHashCode;
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
+/**
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.GuaranteeOrderResponse}。
+ */
@Data
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class GuaranteeOrderResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 3977781489692530604L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeProofRequest.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeProofRequest.java
index 7bd1a95f38..8a6d29b885 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeProofRequest.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeProofRequest.java
@@ -10,11 +10,13 @@
/**
* 商家举证保障单请求参数。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.GuaranteeProofRequest}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class GuaranteeProofRequest extends GuaranteeOrderIdParam {
private static final long serialVersionUID = 6599721896742974275L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeRefuseRequest.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeRefuseRequest.java
index be967ebff7..0e67312cca 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeRefuseRequest.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeRefuseRequest.java
@@ -10,11 +10,13 @@
/**
* 商家拒绝保障单请求参数。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.GuaranteeRefuseRequest}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class GuaranteeRefuseRequest extends GuaranteeOrderIdParam {
private static final long serialVersionUID = -6905594717805091393L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/MerchantUploadInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/MerchantUploadInfo.java
index 805c3a3f6e..1ce46042fe 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/MerchantUploadInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/MerchantUploadInfo.java
@@ -10,9 +10,11 @@
* 商家上传的信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.MerchantUploadInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class MerchantUploadInfo implements Serializable {
private static final long serialVersionUID = 373513419356603563L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/RefundEvidenceParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/RefundEvidenceParam.java
index c81ae042d4..e3cd1dccc9 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/RefundEvidenceParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/RefundEvidenceParam.java
@@ -12,11 +12,13 @@
* 退款凭证信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.RefundEvidenceParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class RefundEvidenceParam implements Serializable {
private static final long serialVersionUID = 2117305897849528009L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/RefundInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/RefundInfo.java
index 73aedf99cf..d87875d7e9 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/RefundInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/RefundInfo.java
@@ -9,9 +9,11 @@
* 退款信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.RefundInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class RefundInfo implements Serializable {
private static final long serialVersionUID = -6994243947898889309L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/RefundResp.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/RefundResp.java
index 83b7039a77..96f639e607 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/RefundResp.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/RefundResp.java
@@ -9,9 +9,11 @@
* 退款结果
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.RefundResp}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class RefundResp implements Serializable {
private static final long serialVersionUID = 6549707043779644156L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/ReturnInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/ReturnInfo.java
index 08238d5484..3f3e0a1066 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/ReturnInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/ReturnInfo.java
@@ -9,9 +9,11 @@
* 用户退货信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.ReturnInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class ReturnInfo implements Serializable {
private static final long serialVersionUID = 1643844664701376892L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/SyncWorkOrderParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/SyncWorkOrderParam.java
index 9416bf021e..4408ec16c3 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/SyncWorkOrderParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/SyncWorkOrderParam.java
@@ -6,8 +6,12 @@
import java.util.List;
import lombok.Data;
+/**
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.after.SyncWorkOrderParam}。
+ */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class SyncWorkOrderParam implements Serializable {
private static final long serialVersionUID = -7336088606071452113L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/AuditApplyResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/AuditApplyResponse.java
index 547207c82b..7963c8ea7b 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/AuditApplyResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/AuditApplyResponse.java
@@ -10,10 +10,12 @@
* 审核提交结果响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.audit.AuditApplyResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class AuditApplyResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -3950614749162384497L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/AuditResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/AuditResponse.java
index 3ef07387d1..af2e31497b 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/AuditResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/AuditResponse.java
@@ -10,10 +10,12 @@
* 审核结果响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.audit.AuditResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class AuditResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 9218713381520774914L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/AuditResult.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/AuditResult.java
index 89aaa8a267..2d0edf0a13 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/AuditResult.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/AuditResult.java
@@ -9,9 +9,11 @@
* 审核结果
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.audit.AuditResult}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class AuditResult implements Serializable {
private static final long serialVersionUID = 1846416634865665240L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/CategoryAuditInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/CategoryAuditInfo.java
index 485092704d..516debd10a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/CategoryAuditInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/CategoryAuditInfo.java
@@ -12,11 +12,13 @@
* 类目审核信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.audit.CategoryAuditInfo}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class CategoryAuditInfo implements Serializable {
private static final long serialVersionUID = -8792967130645424788L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/CategoryAuditRequest.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/CategoryAuditRequest.java
index a311bf0d2f..a3bf73cc09 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/CategoryAuditRequest.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/CategoryAuditRequest.java
@@ -10,10 +10,12 @@
* 类目审核信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.audit.CategoryAuditRequest}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class CategoryAuditRequest implements Serializable {
private static final long serialVersionUID = -1151634735247657643L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/CategoryBrand.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/CategoryBrand.java
index 632096e4d2..058c224004 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/CategoryBrand.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/CategoryBrand.java
@@ -10,10 +10,12 @@
* 分类中的品牌
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.audit.CategoryBrand}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class CategoryBrand implements Serializable {
private static final long serialVersionUID = -5437441266080209907L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/CatsV2.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/CatsV2.java
index b7cc6f39bc..c77ad5fcea 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/CatsV2.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/CatsV2.java
@@ -9,10 +9,12 @@
/**
* 新类目树类目ID
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.audit.CatsV2}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class CatsV2 implements Serializable {
private static final long serialVersionUID = -2484092110142035589L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/ProductAuditInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/ProductAuditInfo.java
index 7693f23ed3..814bcf6755 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/ProductAuditInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/audit/ProductAuditInfo.java
@@ -9,9 +9,11 @@
* 商品审核信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.audit.ProductAuditInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class ProductAuditInfo implements Serializable {
private static final long serialVersionUID = -5264206679057480206L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/AddressInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/AddressInfo.java
index 3c713840a4..df752977b2 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/AddressInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/AddressInfo.java
@@ -10,10 +10,12 @@
* 地址信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.base.AddressInfo}。
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
+@Deprecated
public class AddressInfo implements Serializable {
private static final long serialVersionUID = 6928300709804576100L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/AttrInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/AttrInfo.java
index ca6ce7a750..c50f528a00 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/AttrInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/AttrInfo.java
@@ -10,10 +10,12 @@
* 属性
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.base.AttrInfo}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class AttrInfo implements Serializable {
private static final long serialVersionUID = -790859309885311785L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/OffsetParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/OffsetParam.java
index ebfad1bf21..10dc30d7b3 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/OffsetParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/OffsetParam.java
@@ -12,11 +12,13 @@
* 偏移参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.base.OffsetParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class OffsetParam implements Serializable {
private static final long serialVersionUID = -1268796871980541662L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/PageParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/PageParam.java
index d76e48d3b6..dde4e6bc0c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/PageParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/PageParam.java
@@ -10,10 +10,12 @@
* 分页参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.base.PageParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class PageParam implements Serializable {
private static final long serialVersionUID = -2606033044242617845L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/StreamPageParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/StreamPageParam.java
index 6f3fb76d71..0a1f02f83a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/StreamPageParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/StreamPageParam.java
@@ -10,10 +10,12 @@
* 流式分页参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.base.StreamPageParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class StreamPageParam implements Serializable {
private static final long serialVersionUID = -4098060161712929196L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/TimeRange.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/TimeRange.java
index f681794835..39ae602166 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/TimeRange.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/TimeRange.java
@@ -9,9 +9,11 @@
* 时间范围
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.base.TimeRange}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class TimeRange implements Serializable {
private static final long serialVersionUID = -8149679871789511479L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/WxChannelBaseResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/WxChannelBaseResponse.java
index b20d7f4b33..36732574ed 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/WxChannelBaseResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/base/WxChannelBaseResponse.java
@@ -8,7 +8,9 @@
* 视频号小店 基础响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse}。
*/
+@Deprecated
public class WxChannelBaseResponse implements Serializable {
private static final long serialVersionUID = 3141420881984171781L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BasicBrand.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BasicBrand.java
index 714740f843..63e366943d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BasicBrand.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BasicBrand.java
@@ -9,9 +9,11 @@
* 基础品牌信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.brand.BasicBrand}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class BasicBrand implements Serializable {
private static final long serialVersionUID = -1991771439710177859L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/Brand.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/Brand.java
index 92f4f41acc..37ad02c4af 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/Brand.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/Brand.java
@@ -10,11 +10,13 @@
* 品牌信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.brand.Brand}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class Brand extends BasicBrand {
private static final long serialVersionUID = 4648597514861057019L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandApplicationDetail.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandApplicationDetail.java
index 48575f27cd..ebdbb27e9e 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandApplicationDetail.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandApplicationDetail.java
@@ -10,9 +10,11 @@
* 商标申请信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.brand.BrandApplicationDetail}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class BrandApplicationDetail implements Serializable {
private static final long serialVersionUID = 2145344855482129473L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandApplyListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandApplyListResponse.java
index 16e7f3ae82..7530bd0c78 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandApplyListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandApplyListResponse.java
@@ -11,10 +11,12 @@
* 品牌申请列表响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.brand.BrandApplyListResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class BrandApplyListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 243021267020609148L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandGrantDetail.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandGrantDetail.java
index 6b4826fcd4..4f90819308 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandGrantDetail.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandGrantDetail.java
@@ -10,9 +10,11 @@
* 商标授权信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.brand.BrandGrantDetail}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class BrandGrantDetail implements Serializable {
private static final long serialVersionUID = 3537812707384823606L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandInfo.java
index 799002369d..f7dd7c485d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandInfo.java
@@ -10,10 +10,12 @@
* 品牌信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.brand.BrandInfo}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class BrandInfo extends Brand {
private static final long serialVersionUID = 5464505958132626159L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandInfoResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandInfoResponse.java
index 20536b5a07..573923e209 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandInfoResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandInfoResponse.java
@@ -10,10 +10,12 @@
* 品牌响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.brand.BrandInfoResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class BrandInfoResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 2105745692451683517L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandListResponse.java
index c6cff6f317..4b48368e04 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandListResponse.java
@@ -11,10 +11,12 @@
* 品牌列表响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.brand.BrandListResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class BrandListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -5335449078706304920L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandParam.java
index 05f8d89b42..872dba2409 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandParam.java
@@ -11,11 +11,13 @@
* 品牌参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.brand.BrandParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class BrandParam implements Serializable {
private static final long serialVersionUID = -4894709391464428613L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandRegisterDetail.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandRegisterDetail.java
index 28b417f38c..744b521fd8 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandRegisterDetail.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandRegisterDetail.java
@@ -10,9 +10,11 @@
* 品牌注册信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.brand.BrandRegisterDetail}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class BrandRegisterDetail implements Serializable {
private static final long serialVersionUID = 1169957179510362405L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandSearchParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandSearchParam.java
index e73ed4f54e..e472d03879 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandSearchParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/brand/BrandSearchParam.java
@@ -10,10 +10,12 @@
* 品牌搜索参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.brand.BrandSearchParam}。
*/
@Data
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class BrandSearchParam extends StreamPageParam {
private static final long serialVersionUID = 5961201403338269712L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/AccountCategoryResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/AccountCategoryResponse.java
index 3db7c74cec..ebcd0b5cf1 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/AccountCategoryResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/AccountCategoryResponse.java
@@ -11,10 +11,12 @@
* 分类响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.category.AccountCategoryResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class AccountCategoryResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 3486089711447908477L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/CategoryAndQualificationList.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/CategoryAndQualificationList.java
index c9e973c8b8..ad163fad7a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/CategoryAndQualificationList.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/CategoryAndQualificationList.java
@@ -10,9 +10,11 @@
* 分类资质响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.category.CategoryAndQualificationList}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class CategoryAndQualificationList implements Serializable {
private static final long serialVersionUID = 4245906598437404655L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/CategoryDetailResult.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/CategoryDetailResult.java
index 3188bd3820..44bc6bbc27 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/CategoryDetailResult.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/CategoryDetailResult.java
@@ -9,9 +9,11 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.category.CategoryDetailResult}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class CategoryDetailResult extends WxChannelBaseResponse {
private static final long serialVersionUID = 4657778764371047619L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/CategoryQualification.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/CategoryQualification.java
index 9cac327d6c..75b39381e9 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/CategoryQualification.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/CategoryQualification.java
@@ -10,9 +10,11 @@
* 分类资质信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.category.CategoryQualification}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class CategoryQualification implements Serializable {
private static final long serialVersionUID = 6495550078851408381L;
@@ -30,7 +32,11 @@ public class CategoryQualification implements Serializable {
@Deprecated
private QualificationInfo productInfo;
- /** 品牌资质信息 */
+ /**
+ * 品牌资质信息。
+ *
+ * @deprecated 微信接口仍返回该字段,暂未提供替代字段。
+ */
@JsonProperty("brand_qua")
@Deprecated
private QualificationInfo brandQua;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/CategoryQualificationResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/CategoryQualificationResponse.java
index cbd588ebf9..1ac37c98a2 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/CategoryQualificationResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/CategoryQualificationResponse.java
@@ -11,10 +11,12 @@
* 分类资质响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.category.CategoryQualificationResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class CategoryQualificationResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -7869091908852685830L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/PassCategoryInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/PassCategoryInfo.java
index 82b16c0188..e51e96d019 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/PassCategoryInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/PassCategoryInfo.java
@@ -9,9 +9,11 @@
* 审核通过的分类和资质信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.category.PassCategoryInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class PassCategoryInfo implements Serializable {
private static final long serialVersionUID = 1152077957498898216L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/PassCategoryResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/PassCategoryResponse.java
index 6509321b88..fe8effa7af 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/PassCategoryResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/PassCategoryResponse.java
@@ -11,10 +11,12 @@
* 审核通过的分类和资质信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.category.PassCategoryResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class PassCategoryResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -3674591447273025743L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/QualificationInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/QualificationInfo.java
index efb7249fe3..fee3fddfbe 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/QualificationInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/QualificationInfo.java
@@ -9,9 +9,11 @@
* 资质信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.category.QualificationInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class QualificationInfo implements Serializable {
/** 资质ID */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/RelationCategoryItem.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/RelationCategoryItem.java
index 8e0bd1b0b5..3579fc11c3 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/RelationCategoryItem.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/RelationCategoryItem.java
@@ -10,9 +10,11 @@
* 店铺类目权限列表项
*
* @author chucheng
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.category.RelationCategoryItem}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class RelationCategoryItem implements Serializable {
/** 类目id */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/RelationCategoryRequest.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/RelationCategoryRequest.java
index c514e7d9ca..ef73e59515 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/RelationCategoryRequest.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/RelationCategoryRequest.java
@@ -10,10 +10,12 @@
* 类目权限列表请求参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.category.RelationCategoryRequest}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class RelationCategoryRequest implements Serializable {
private static final long serialVersionUID = -8765432109876543210L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/RelationCategoryResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/RelationCategoryResponse.java
index 4bd1ea96d4..64e4f67186 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/RelationCategoryResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/RelationCategoryResponse.java
@@ -11,10 +11,12 @@
* 店铺的类目权限列表响应
*
* @author chucheng
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.category.RelationCategoryResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class RelationCategoryResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -8473920857463918245L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/ShopCategory.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/ShopCategory.java
index 5dd04582f3..5154efec3b 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/ShopCategory.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/ShopCategory.java
@@ -9,9 +9,11 @@
* 商品类目
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.category.ShopCategory}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class ShopCategory implements Serializable {
/** 类目ID */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/ShopCategoryResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/ShopCategoryResponse.java
index fff7362a7a..ca31e49dfe 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/ShopCategoryResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/category/ShopCategoryResponse.java
@@ -11,10 +11,12 @@
* 分类响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.category.ShopCategoryResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class ShopCategoryResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 3871098948660947422L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/complaint/ComplaintHistory.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/complaint/ComplaintHistory.java
index 84a558b2b1..f34da72f92 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/complaint/ComplaintHistory.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/complaint/ComplaintHistory.java
@@ -10,9 +10,11 @@
* 纠纷历史
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.complaint.ComplaintHistory}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class ComplaintHistory implements Serializable {
private static final long serialVersionUID = -4706637116597650133L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/complaint/ComplaintOrderResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/complaint/ComplaintOrderResponse.java
index a0a8ec1e18..5fc472bb7e 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/complaint/ComplaintOrderResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/complaint/ComplaintOrderResponse.java
@@ -10,9 +10,11 @@
* 纠纷单响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.complaint.ComplaintOrderResponse}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class ComplaintOrderResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 1968530826349555367L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/complaint/ComplaintParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/complaint/ComplaintParam.java
index 0090348efe..925bbf3db6 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/complaint/ComplaintParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/complaint/ComplaintParam.java
@@ -12,11 +12,13 @@
* 纠纷单留言
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.complaint.ComplaintParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class ComplaintParam implements Serializable {
private static final long serialVersionUID = 6146118590005718327L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationData.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationData.java
index 41020f4993..8d825003e2 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationData.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationData.java
@@ -9,9 +9,11 @@
* 合作账号信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.cooperation.CooperationData}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class CooperationData implements Serializable {
private static final long serialVersionUID = 3930010847236599458L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationListResponse.java
index 1b652b64d6..b2f093e779 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationListResponse.java
@@ -11,10 +11,12 @@
* 合作账号列表响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.cooperation.CooperationListResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class CooperationListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 6998637882644598826L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationQrCode.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationQrCode.java
index 272b9802da..6f4d7cc9df 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationQrCode.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationQrCode.java
@@ -9,9 +9,11 @@
* 合作账号二维码数据
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.cooperation.CooperationQrCode}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class CooperationQrCode implements Serializable {
private static final long serialVersionUID = -7096916911986699150L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationQrCodeResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationQrCodeResponse.java
index b18b2b1c85..b1f92059f5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationQrCodeResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationQrCodeResponse.java
@@ -10,10 +10,12 @@
* 合作账号二维码响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.cooperation.CooperationQrCodeResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class CooperationQrCodeResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 6998637882644598826L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationSharerParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationSharerParam.java
index 4ca9bd8344..d93b96f90b 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationSharerParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationSharerParam.java
@@ -11,11 +11,13 @@
* 合作账号参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.cooperation.CooperationSharerParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class CooperationSharerParam implements Serializable {
private static final long serialVersionUID = 5032621997764493109L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationStatus.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationStatus.java
index 5267be6153..84585cf45f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationStatus.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationStatus.java
@@ -9,9 +9,11 @@
* 合作账号状态
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.cooperation.CooperationStatus}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class CooperationStatus implements Serializable {
private static final long serialVersionUID = -7096916911986699150L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationStatusResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationStatusResponse.java
index 6507340c63..3dd6496eb8 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationStatusResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/cooperation/CooperationStatusResponse.java
@@ -10,10 +10,12 @@
* 合作账号状态响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.cooperation.CooperationStatusResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class CooperationStatusResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 6998637882644598826L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/AutoValidInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/AutoValidInfo.java
index 73c09def1e..10e6861add 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/AutoValidInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/AutoValidInfo.java
@@ -9,9 +9,11 @@
* 自动生效信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.AutoValidInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class AutoValidInfo implements Serializable {
private static final long serialVersionUID = 1702505613539861103L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponDetailInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponDetailInfo.java
index 34f76716f9..7b1c0b9623 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponDetailInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponDetailInfo.java
@@ -9,10 +9,12 @@
* 优惠券信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.CouponDetailInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class CouponDetailInfo implements Serializable {
private static final long serialVersionUID = 5994815232349181577L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponIdInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponIdInfo.java
index b787016a09..ef7b0322c4 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponIdInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponIdInfo.java
@@ -10,10 +10,12 @@
* 优惠券id
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.CouponIdInfo}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class CouponIdInfo implements Serializable {
private static final long serialVersionUID = 6284609705855608275L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponIdResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponIdResponse.java
index 7556fa6f11..cb3e87b2d1 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponIdResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponIdResponse.java
@@ -9,10 +9,12 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.CouponIdResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class CouponIdResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -3263189706802013651L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponInfo.java
index cd247f9d71..760ec78c41 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponInfo.java
@@ -6,9 +6,11 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.CouponInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class CouponInfo extends CouponIdInfo {
private static final long serialVersionUID = -5862063828870424262L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponInfoResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponInfoResponse.java
index 801843025e..3157df797a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponInfoResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponInfoResponse.java
@@ -8,10 +8,12 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.CouponInfoResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class CouponInfoResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 5261320058699488529L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponListParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponListParam.java
index 6c7fc03a6e..bc7047e472 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponListParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponListParam.java
@@ -12,10 +12,12 @@
* 获取优惠券ID列表接口的请求参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.CouponListParam}。
*/
@Data
@NoArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class CouponListParam implements Serializable {
private static final long serialVersionUID = 7123047113279657365L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponListResponse.java
index 66d6f63eef..18c1f3ea59 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponListResponse.java
@@ -9,10 +9,12 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.CouponListResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class CouponListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -5330296358041282751L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponParam.java
index fa89b0a1e4..9c47e54530 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponParam.java
@@ -9,10 +9,12 @@
* 优惠券参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.CouponParam}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class CouponParam extends CouponIdInfo {
private static final long serialVersionUID = -3663331372622943337L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponStatusParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponStatusParam.java
index 405ad52400..64d58cbf08 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponStatusParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/CouponStatusParam.java
@@ -7,10 +7,12 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.CouponStatusParam}。
*/
@Data
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class CouponStatusParam extends CouponIdInfo {
private static final long serialVersionUID = -7108348049925634704L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/DiscountCondition.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/DiscountCondition.java
index e249455526..4cac13356e 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/DiscountCondition.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/DiscountCondition.java
@@ -10,9 +10,11 @@
* 折扣条件
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.DiscountCondition}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class DiscountCondition implements Serializable {
private static final long serialVersionUID = 3250293381093835082L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/DiscountInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/DiscountInfo.java
index 7988e47ce6..5c7efc1e1d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/DiscountInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/DiscountInfo.java
@@ -9,9 +9,11 @@
* 优惠信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.DiscountInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class DiscountInfo implements Serializable {
private static final long serialVersionUID = 3660070880545144112L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/ExtInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/ExtInfo.java
index 69cf3dc073..1c36bebec2 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/ExtInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/ExtInfo.java
@@ -9,9 +9,11 @@
* 额外信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.ExtInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class ExtInfo implements Serializable {
private static final long serialVersionUID = 9053035437087423233L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/PromoteInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/PromoteInfo.java
index 75d48e6d3e..7cdb5c1d8a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/PromoteInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/PromoteInfo.java
@@ -9,9 +9,11 @@
* 推广信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.PromoteInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class PromoteInfo implements Serializable {
private static final long serialVersionUID = -3030639750899957382L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/ReceiveInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/ReceiveInfo.java
index 9a602ac390..2f4c861843 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/ReceiveInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/ReceiveInfo.java
@@ -9,9 +9,11 @@
* 领取信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.ReceiveInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class ReceiveInfo implements Serializable {
private static final long serialVersionUID = 755956808504040633L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/StockInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/StockInfo.java
index 07aaf4a1ec..652440b82a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/StockInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/StockInfo.java
@@ -9,9 +9,11 @@
* 库存信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.StockInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class StockInfo implements Serializable {
private static final long serialVersionUID = -6078383881065929862L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCoupon.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCoupon.java
index 06436a9e73..804ed8d93e 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCoupon.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCoupon.java
@@ -9,10 +9,12 @@
* 用户优惠券
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.UserCoupon}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class UserCoupon extends UserCouponIdInfo {
private static final long serialVersionUID = -4777537717885622888L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCouponIdInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCouponIdInfo.java
index d68d881c98..8d9ef4a1d5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCouponIdInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCouponIdInfo.java
@@ -8,9 +8,11 @@
* 用户优惠券id
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.UserCouponIdInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class UserCouponIdInfo extends CouponIdInfo {
private static final long serialVersionUID = -8285585134793264542L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCouponIdParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCouponIdParam.java
index aa2eb15421..9340f0fc90 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCouponIdParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCouponIdParam.java
@@ -6,8 +6,10 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.UserCouponIdParam}。
*/
@Data
+@Deprecated
public class UserCouponIdParam implements Serializable {
private static final long serialVersionUID = 3967276158727848348L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCouponListParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCouponListParam.java
index f14f5d7f6e..67963a72b8 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCouponListParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCouponListParam.java
@@ -8,11 +8,13 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.UserCouponListParam}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class UserCouponListParam extends CouponListParam {
private static final long serialVersionUID = -1056132009327357435L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCouponListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCouponListResponse.java
index 2c3582e678..5019c4f5d2 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCouponListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCouponListResponse.java
@@ -9,10 +9,12 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.UserCouponListResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class UserCouponListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 5201633937239352879L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCouponResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCouponResponse.java
index aeb9d89afb..ab5fbc7b89 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCouponResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserCouponResponse.java
@@ -8,10 +8,12 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.UserCouponResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class UserCouponResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 1434098386857953234L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserExtInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserExtInfo.java
index 18962361ec..8b0ddc09a1 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserExtInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/UserExtInfo.java
@@ -9,9 +9,11 @@
* 用户优惠券附加信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.UserExtInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class UserExtInfo implements Serializable {
private static final long serialVersionUID = 8304922825230343409L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/ValidInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/ValidInfo.java
index 10df794324..b33a90667a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/ValidInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/coupon/ValidInfo.java
@@ -9,9 +9,11 @@
* 优惠券有效信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.coupon.ValidInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class ValidInfo implements Serializable {
private static final long serialVersionUID = -4550516248380285635L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/DeliveryCompanyInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/DeliveryCompanyInfo.java
index 349d70cbb1..c9c3ca1986 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/DeliveryCompanyInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/DeliveryCompanyInfo.java
@@ -9,9 +9,11 @@
* 快递公司信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.delivery.DeliveryCompanyInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class DeliveryCompanyInfo implements Serializable {
private static final long serialVersionUID = 4225666604513570564L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/DeliveryCompanyResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/DeliveryCompanyResponse.java
index d74a9439ea..55745dd98c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/DeliveryCompanyResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/DeliveryCompanyResponse.java
@@ -10,9 +10,11 @@
* 快递公司列表响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.delivery.DeliveryCompanyResponse}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class DeliveryCompanyResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -7695903997951385166L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/DeliveryInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/DeliveryInfo.java
index 23ab8dad2c..fe7442a07c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/DeliveryInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/DeliveryInfo.java
@@ -10,9 +10,11 @@
* 物流信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.delivery.DeliveryInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class DeliveryInfo implements Serializable {
private static final long serialVersionUID = -6205626967305385248L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/DeliverySendParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/DeliverySendParam.java
index f486032bc4..aa0125d9d1 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/DeliverySendParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/DeliverySendParam.java
@@ -13,11 +13,13 @@
* 订单发货信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.delivery.DeliverySendParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class DeliverySendParam implements Serializable {
private static final long serialVersionUID = 4555821308266899135L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/FreightProductInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/FreightProductInfo.java
index 2a7c7dd3c6..23e4aef3e3 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/FreightProductInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/FreightProductInfo.java
@@ -10,9 +10,11 @@
* 包裹中商品信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.delivery.FreightProductInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class FreightProductInfo implements Serializable {
private static final long serialVersionUID = -3751269707150372172L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/FreshInspectParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/FreshInspectParam.java
index a6db90f2f9..bc0c4a959b 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/FreshInspectParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/FreshInspectParam.java
@@ -13,11 +13,13 @@
* 商品打包信息 参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.delivery.FreshInspectParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class FreshInspectParam implements Serializable {
private static final long serialVersionUID = -1635894867602084789L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/PackageAuditInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/PackageAuditInfo.java
index bbb4e6c484..9acee665e5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/PackageAuditInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/delivery/PackageAuditInfo.java
@@ -11,10 +11,12 @@
* 商品打包信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.delivery.PackageAuditInfo}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class PackageAuditInfo implements Serializable {
private static final long serialVersionUID = 1118087167138310282L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/AccountInfoResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/AccountInfoResponse.java
index 4a460bcc6d..e7b590d596 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/AccountInfoResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/AccountInfoResponse.java
@@ -4,7 +4,9 @@
* 电子面单网点/账号信息响应。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.ewaybill.AccountInfoResponse}。
*/
+@Deprecated
public class AccountInfoResponse extends AbstractEwaybillResponse {
private static final long serialVersionUID = 5682783958522805959L;
}
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/AddSubOrderRequest.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/AddSubOrderRequest.java
index 2e0b90e1f8..d8be0cb0b3 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/AddSubOrderRequest.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/AddSubOrderRequest.java
@@ -4,7 +4,9 @@
* 电子面单子件追加请求。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.ewaybill.AddSubOrderRequest}。
*/
+@Deprecated
public class AddSubOrderRequest extends AbstractEwaybillRequest {
private static final long serialVersionUID = 4250200603210217269L;
}
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/BatchPrintOrderRequest.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/BatchPrintOrderRequest.java
index a06d26b875..2cca5cf1d5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/BatchPrintOrderRequest.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/BatchPrintOrderRequest.java
@@ -5,8 +5,12 @@
import lombok.Data;
import lombok.NoArgsConstructor;
+/**
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.ewaybill.BatchPrintOrderRequest}。
+ */
@Data
@NoArgsConstructor
+@Deprecated
public class BatchPrintOrderRequest {
@JsonProperty("req_list") private List reqList;
}
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/CreateOrderRequest.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/CreateOrderRequest.java
index 87e8bad3cd..9fef758eae 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/CreateOrderRequest.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/CreateOrderRequest.java
@@ -4,7 +4,9 @@
* 电子面单取号请求。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.ewaybill.CreateOrderRequest}。
*/
+@Deprecated
public class CreateOrderRequest extends AbstractEwaybillRequest {
private static final long serialVersionUID = 2521225918646916853L;
}
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/CreateOrderResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/CreateOrderResponse.java
index 89eafa012d..4260e42696 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/CreateOrderResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/CreateOrderResponse.java
@@ -4,7 +4,9 @@
* 电子面单取号响应。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.ewaybill.CreateOrderResponse}。
*/
+@Deprecated
public class CreateOrderResponse extends AbstractEwaybillResponse {
private static final long serialVersionUID = 9115454170108519187L;
}
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/DeliveryListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/DeliveryListResponse.java
index eef815afc1..736ac03943 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/DeliveryListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/DeliveryListResponse.java
@@ -4,7 +4,9 @@
* 开通快递公司列表响应。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.ewaybill.DeliveryListResponse}。
*/
+@Deprecated
public class DeliveryListResponse extends AbstractEwaybillResponse {
private static final long serialVersionUID = 494164885034906535L;
}
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/EwaybillOrderIdParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/EwaybillOrderIdParam.java
index 81a099f9ff..b252e9b2b5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/EwaybillOrderIdParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/EwaybillOrderIdParam.java
@@ -5,9 +5,13 @@
import lombok.Data;
import lombok.NoArgsConstructor;
+/**
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.ewaybill.EwaybillOrderIdParam}。
+ */
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class EwaybillOrderIdParam {
@JsonProperty("ewaybill_order_id")
private String ewaybillOrderId;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/OrderDetailResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/OrderDetailResponse.java
index 4717bdcd6a..111fe8bf98 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/OrderDetailResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/OrderDetailResponse.java
@@ -4,7 +4,9 @@
* 面单详情响应。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.ewaybill.OrderDetailResponse}。
*/
+@Deprecated
public class OrderDetailResponse extends AbstractEwaybillResponse {
private static final long serialVersionUID = -2406734055149395916L;
}
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/PreCreateRequest.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/PreCreateRequest.java
index b76d4f8c38..b129d29be8 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/PreCreateRequest.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/PreCreateRequest.java
@@ -4,7 +4,9 @@
* 电子面单预取号请求。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.ewaybill.PreCreateRequest}。
*/
+@Deprecated
public class PreCreateRequest extends AbstractEwaybillRequest {
private static final long serialVersionUID = 3761501770378571724L;
}
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/PreCreateResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/PreCreateResponse.java
index ded9e53dab..d51d3d9085 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/PreCreateResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/PreCreateResponse.java
@@ -4,7 +4,9 @@
* 电子面单预取号响应。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.ewaybill.PreCreateResponse}。
*/
+@Deprecated
public class PreCreateResponse extends AbstractEwaybillResponse {
private static final long serialVersionUID = -6302826807350860584L;
}
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/PrintContentParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/PrintContentParam.java
index 3ef3e240bd..3b94bb1197 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/PrintContentParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/PrintContentParam.java
@@ -7,10 +7,13 @@
import lombok.Data;
import lombok.NoArgsConstructor;
-/** 获取电子面单打印报文请求参数。 */
+/** 获取电子面单打印报文请求参数。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.ewaybill.PrintContentParam}。
+*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class PrintContentParam implements Serializable {
private static final long serialVersionUID = 6898522842175667816L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/PrintContentResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/PrintContentResponse.java
index 6a66ffca15..12314a1d84 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/PrintContentResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/PrintContentResponse.java
@@ -4,7 +4,9 @@
* 打印报文响应。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.ewaybill.PrintContentResponse}。
*/
+@Deprecated
public class PrintContentResponse extends AbstractEwaybillResponse {
private static final long serialVersionUID = 1097526332493027364L;
}
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/PrintOrderRequest.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/PrintOrderRequest.java
index 14be4f62ca..e069867cc0 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/PrintOrderRequest.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/PrintOrderRequest.java
@@ -4,8 +4,12 @@
import lombok.Data;
import lombok.NoArgsConstructor;
+/**
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.ewaybill.PrintOrderRequest}。
+ */
@Data
@NoArgsConstructor
+@Deprecated
public class PrintOrderRequest extends EwaybillOrderIdParam {
@JsonProperty("delivery_id") private String deliveryId;
@JsonProperty("waybill_id") private String waybillId;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateCodeParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateCodeParam.java
index ae062ea74d..242f483f13 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateCodeParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateCodeParam.java
@@ -6,10 +6,13 @@
import lombok.Data;
import lombok.NoArgsConstructor;
-/** 面单标准模板编码请求参数。 */
+/** 面单标准模板编码请求参数。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.ewaybill.TemplateCodeParam}。
+*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class TemplateCodeParam implements Serializable {
private static final long serialVersionUID = 4473438799300843172L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateConfigResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateConfigResponse.java
index f97a7ef52f..363f80c790 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateConfigResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateConfigResponse.java
@@ -4,7 +4,9 @@
* 面单标准模板响应。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.ewaybill.TemplateConfigResponse}。
*/
+@Deprecated
public class TemplateConfigResponse extends AbstractEwaybillResponse {
private static final long serialVersionUID = 6779567498624326386L;
}
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateCreateRequest.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateCreateRequest.java
index 382f355645..49faf9d7f0 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateCreateRequest.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateCreateRequest.java
@@ -4,7 +4,9 @@
* 新增面单模板请求。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.ewaybill.TemplateCreateRequest}。
*/
+@Deprecated
public class TemplateCreateRequest extends AbstractEwaybillRequest {
private static final long serialVersionUID = 2974771986022948202L;
}
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateIdParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateIdParam.java
index 5289c45231..d45e1490cd 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateIdParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateIdParam.java
@@ -10,10 +10,12 @@
* 模板ID请求参数。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.ewaybill.TemplateIdParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class TemplateIdParam implements Serializable {
private static final long serialVersionUID = -2397006631686547550L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateIdResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateIdResponse.java
index 878ef5b25c..a4c70f15d9 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateIdResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateIdResponse.java
@@ -9,10 +9,12 @@
* 面单模板ID响应。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.ewaybill.TemplateIdResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class TemplateIdResponse extends AbstractEwaybillResponse {
private static final long serialVersionUID = -6756111662032438585L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateInfoResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateInfoResponse.java
index 62d50dc148..c7a344fab3 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateInfoResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateInfoResponse.java
@@ -4,7 +4,9 @@
* 面单模板信息响应。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.ewaybill.TemplateInfoResponse}。
*/
+@Deprecated
public class TemplateInfoResponse extends AbstractEwaybillResponse {
private static final long serialVersionUID = 5718279884380636289L;
}
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateUpdateRequest.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateUpdateRequest.java
index 752aea3043..29836b5df1 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateUpdateRequest.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/TemplateUpdateRequest.java
@@ -4,7 +4,9 @@
* 更新面单模板请求。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.ewaybill.TemplateUpdateRequest}。
*/
+@Deprecated
public class TemplateUpdateRequest extends AbstractEwaybillRequest {
private static final long serialVersionUID = -6201137374059216895L;
}
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/WaybillIdParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/WaybillIdParam.java
index a62821d32c..47485945b7 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/WaybillIdParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/WaybillIdParam.java
@@ -10,10 +10,12 @@
* 运单ID请求参数。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.ewaybill.WaybillIdParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class WaybillIdParam implements Serializable {
private static final long serialVersionUID = -7601452772833268240L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/WaybillIdsParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/WaybillIdsParam.java
index 49129280bf..a17e3a17ed 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/WaybillIdsParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/ewaybill/WaybillIdsParam.java
@@ -11,10 +11,12 @@
* 批量运单ID请求参数。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.ewaybill.WaybillIdsParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class WaybillIdsParam implements Serializable {
private static final long serialVersionUID = -9030594599179993010L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/favorite/FavoriteCountResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/favorite/FavoriteCountResponse.java
index 9acdf93d75..f7fb7920b7 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/favorite/FavoriteCountResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/favorite/FavoriteCountResponse.java
@@ -10,10 +10,12 @@
* 店铺收藏人数 响应
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.favorite.FavoriteCountResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class FavoriteCountResponse extends WxChannelBaseResponse {
/** 店铺首页收藏用户数 */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/AddressInfoList.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/AddressInfoList.java
index 4d8c7ec4a5..9a59c4e6ba 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/AddressInfoList.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/AddressInfoList.java
@@ -11,9 +11,11 @@
* 地址列表
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.freight.AddressInfoList}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class AddressInfoList implements Serializable {
private static final long serialVersionUID = 5923805297331862706L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/AllConditionFreeDetail.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/AllConditionFreeDetail.java
index fd9aee451d..ca0d768582 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/AllConditionFreeDetail.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/AllConditionFreeDetail.java
@@ -12,9 +12,11 @@
* 计费规则列表
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.freight.AllConditionFreeDetail}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class AllConditionFreeDetail implements Serializable {
private static final long serialVersionUID = -1649520737632417036L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/AllFreightCalcMethod.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/AllFreightCalcMethod.java
index 2c5523ebe4..acaae8aa45 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/AllFreightCalcMethod.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/AllFreightCalcMethod.java
@@ -10,8 +10,10 @@
* 具体计费方法,默认运费,指定地区运费等
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.freight.AllFreightCalcMethod}。
*/
@Data
+@Deprecated
public class AllFreightCalcMethod implements Serializable {
private static final long serialVersionUID = 6330919525271991949L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/ConditionFreeDetail.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/ConditionFreeDetail.java
index cd0b76990d..60f36f4a51 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/ConditionFreeDetail.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/ConditionFreeDetail.java
@@ -9,10 +9,12 @@
* 计费规则
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.freight.ConditionFreeDetail}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class ConditionFreeDetail extends AddressInfoList {
private static final long serialVersionUID = 9204578767029379142L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/FreightCalcMethod.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/FreightCalcMethod.java
index aab949bc44..bae909f189 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/FreightCalcMethod.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/FreightCalcMethod.java
@@ -9,10 +9,12 @@
* 运费计算方法
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.freight.FreightCalcMethod}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class FreightCalcMethod extends AddressInfoList {
private static final long serialVersionUID = -8857987538121721376L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/FreightTemplate.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/FreightTemplate.java
index e28f90ad41..4431b06da9 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/FreightTemplate.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/FreightTemplate.java
@@ -10,9 +10,11 @@
* 运费模板
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.freight.FreightTemplate}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class FreightTemplate implements Serializable {
private static final long serialVersionUID = -7876281924385999053L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/NotSendArea.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/NotSendArea.java
index 1c480fc227..ef03dadce3 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/NotSendArea.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/NotSendArea.java
@@ -8,10 +8,12 @@
* 不发货区域
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.freight.NotSendArea}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class NotSendArea extends AddressInfoList {
private static final long serialVersionUID = -1836467830293286560L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/TemplateAddParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/TemplateAddParam.java
index 9c400533bf..06729c0c58 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/TemplateAddParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/TemplateAddParam.java
@@ -12,11 +12,13 @@
* 运费模板 请求参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.freight.TemplateAddParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class TemplateAddParam implements Serializable {
private static final long serialVersionUID = 2602919369418149309L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/TemplateIdResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/TemplateIdResponse.java
index e895d066cb..dc4afa6a24 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/TemplateIdResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/TemplateIdResponse.java
@@ -10,10 +10,12 @@
* 运费模板 列表 响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.freight.TemplateIdResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class TemplateIdResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 5179651364165620640L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/TemplateInfoResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/TemplateInfoResponse.java
index f37e3dc2d1..068fc0e1b1 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/TemplateInfoResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/TemplateInfoResponse.java
@@ -10,10 +10,12 @@
* 运费模板 响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.freight.TemplateInfoResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class TemplateInfoResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -8381510839783330617L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/TemplateListParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/TemplateListParam.java
index 628d907eb1..eb9b38733b 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/TemplateListParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/TemplateListParam.java
@@ -10,10 +10,12 @@
* 运费模板 列表 请求参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.freight.TemplateListParam}。
*/
@Data
@JsonInclude(Include.NON_NULL)
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class TemplateListParam extends OffsetParam {
private static final long serialVersionUID = -6716154891499581562L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/TemplateListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/TemplateListResponse.java
index a6fcd7d3e3..6c80c9e29c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/TemplateListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/freight/TemplateListResponse.java
@@ -11,10 +11,12 @@
* 运费模板 列表 响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.freight.TemplateListResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class TemplateListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 5375602442595264719L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/AccountInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/AccountInfo.java
index f6248f96ba..f18cac098e 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/AccountInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/AccountInfo.java
@@ -10,10 +10,12 @@
* 账户信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.AccountInfo}。
*/
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class AccountInfo implements Serializable {
private static final long serialVersionUID = -2107134853480093451L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/AccountInfoParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/AccountInfoParam.java
index ec6010bd07..22588b58c4 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/AccountInfoParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/AccountInfoParam.java
@@ -11,11 +11,13 @@
* 账户信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.AccountInfoParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class AccountInfoParam implements Serializable {
private static final long serialVersionUID = 1689204583402779134L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/AccountInfoResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/AccountInfoResponse.java
index b54a34a2e7..7d109368d7 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/AccountInfoResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/AccountInfoResponse.java
@@ -9,9 +9,11 @@
* 账户信息响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.AccountInfoResponse}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class AccountInfoResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -8316068503468969533L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/BalanceInfoResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/BalanceInfoResponse.java
index def7e86675..a0036f42be 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/BalanceInfoResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/BalanceInfoResponse.java
@@ -9,9 +9,11 @@
* 账户余额信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.BalanceInfoResponse}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class BalanceInfoResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 4480496860612566921L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/FlowListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/FlowListResponse.java
index 9306b4516a..754f8d6e83 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/FlowListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/FlowListResponse.java
@@ -10,9 +10,11 @@
* 流水列表响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.FlowListResponse}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class FlowListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 8017827444308973489L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/FlowRelatedInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/FlowRelatedInfo.java
index 4edecbb3b1..f63c2f4501 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/FlowRelatedInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/FlowRelatedInfo.java
@@ -9,9 +9,11 @@
* 流水关联信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.FlowRelatedInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class FlowRelatedInfo implements Serializable {
private static final long serialVersionUID = 3757839018198212504L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/FundsFlow.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/FundsFlow.java
index 9b01e820fa..1a86cda290 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/FundsFlow.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/FundsFlow.java
@@ -10,9 +10,11 @@
* 资金流水
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.FundsFlow}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class FundsFlow implements Serializable {
private static final long serialVersionUID = -2785498655066305510L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/FundsFlowResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/FundsFlowResponse.java
index 7db351263f..fc97729287 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/FundsFlowResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/FundsFlowResponse.java
@@ -10,10 +10,12 @@
* 资金流水响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.FundsFlowResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class FundsFlowResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -1130785908352355914L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/FundsListParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/FundsListParam.java
index b5312e3a2a..3c74b768c5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/FundsListParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/FundsListParam.java
@@ -9,9 +9,11 @@
* 资金流水参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.FundsListParam}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class FundsListParam implements Serializable {
private static final long serialVersionUID = 2998955690332382229L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/WithdrawDetailResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/WithdrawDetailResponse.java
index a1e726fb51..98fb74ad8e 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/WithdrawDetailResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/WithdrawDetailResponse.java
@@ -10,10 +10,12 @@
* 提现详情响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.WithdrawDetailResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class WithdrawDetailResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 1473346677401168323L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/WithdrawListParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/WithdrawListParam.java
index a44b68567d..3fed419347 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/WithdrawListParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/WithdrawListParam.java
@@ -10,10 +10,12 @@
* 提现列表参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.WithdrawListParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class WithdrawListParam implements Serializable {
private static final long serialVersionUID = -672422656564313999L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/WithdrawListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/WithdrawListResponse.java
index b1dabc2a4b..2013bf7bc4 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/WithdrawListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/WithdrawListResponse.java
@@ -10,9 +10,11 @@
* 提现列表响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.WithdrawListResponse}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class WithdrawListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -7950467108750325235L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/WithdrawSubmitParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/WithdrawSubmitParam.java
index 65b8cdd12c..2245ca67b1 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/WithdrawSubmitParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/WithdrawSubmitParam.java
@@ -10,10 +10,12 @@
* 提现提交参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.WithdrawSubmitParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class WithdrawSubmitParam implements Serializable {
private static final long serialVersionUID = 5801338663530567830L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/WithdrawSubmitResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/WithdrawSubmitResponse.java
index 0002b158d2..c4dab15d71 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/WithdrawSubmitResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/WithdrawSubmitResponse.java
@@ -10,10 +10,12 @@
* 提现提交响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.WithdrawSubmitResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class WithdrawSubmitResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -8269579250564427758L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankCityInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankCityInfo.java
index 04a69a8e87..d4b443de98 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankCityInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankCityInfo.java
@@ -9,9 +9,11 @@
* 银行城市信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.bank.BankCityInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class BankCityInfo implements Serializable {
private static final long serialVersionUID = 374087891799491196L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankCityResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankCityResponse.java
index 5cb148c79b..cc86f566f7 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankCityResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankCityResponse.java
@@ -11,10 +11,12 @@
* 银行城市信息响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.bank.BankCityResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class BankCityResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -6212360101083304631L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankInfo.java
index 1bb58badb4..13aae59d4b 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankInfo.java
@@ -9,9 +9,11 @@
* 银行信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.bank.BankInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class BankInfo implements Serializable {
private static final long serialVersionUID = -4837989875996346711L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankInfoResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankInfoResponse.java
index 499d9fcbb5..8b35b1982f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankInfoResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankInfoResponse.java
@@ -11,10 +11,12 @@
* 银行信息响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.bank.BankInfoResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class BankInfoResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 8583893898929290526L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankListResponse.java
index 9517859c42..6c9a1c36c4 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankListResponse.java
@@ -11,10 +11,12 @@
* 银行信息响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.bank.BankListResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class BankListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 7912035853286944260L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankProvinceInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankProvinceInfo.java
index 955a25e8ad..22969119a1 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankProvinceInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankProvinceInfo.java
@@ -9,9 +9,11 @@
* 银行省份信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.bank.BankProvinceInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class BankProvinceInfo implements Serializable {
private static final long serialVersionUID = -3409931656361300144L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankProvinceResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankProvinceResponse.java
index f509d24304..68bbf0f3c6 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankProvinceResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankProvinceResponse.java
@@ -10,9 +10,11 @@
* 银行省份信息响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.bank.BankProvinceResponse}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class BankProvinceResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -6187805847136359892L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankSearchParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankSearchParam.java
index abc9c1ec77..b368241f06 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankSearchParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BankSearchParam.java
@@ -11,11 +11,13 @@
* 银行查询参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.bank.BankSearchParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class BankSearchParam implements Serializable {
private static final long serialVersionUID = 6070269209439188188L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BranchInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BranchInfo.java
index c4cec9bc76..c3564f8516 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BranchInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BranchInfo.java
@@ -9,9 +9,11 @@
* 分店信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.bank.BranchInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class BranchInfo implements Serializable {
private static final long serialVersionUID = -2744729367131146892L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BranchInfoResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BranchInfoResponse.java
index c7cfda4646..6280efdc65 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BranchInfoResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BranchInfoResponse.java
@@ -11,10 +11,12 @@
* 支行信息响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.bank.BranchInfoResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class BranchInfoResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -1419832502854175767L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BranchSearchParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BranchSearchParam.java
index 47527efe1e..2103740d3d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BranchSearchParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/bank/BranchSearchParam.java
@@ -10,10 +10,12 @@
* 银行支行信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.bank.BranchSearchParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class BranchSearchParam implements Serializable {
private static final long serialVersionUID = -8800316690160248833L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/qrcode/QrCheckResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/qrcode/QrCheckResponse.java
index e1a52ab9a3..d57bc039c0 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/qrcode/QrCheckResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/qrcode/QrCheckResponse.java
@@ -10,10 +10,12 @@
* 二维码校验响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.qrcode.QrCheckResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class QrCheckResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -3860756719827268969L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/qrcode/QrCodeResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/qrcode/QrCodeResponse.java
index d6c015c0cd..5fb75e7a60 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/qrcode/QrCodeResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/fund/qrcode/QrCodeResponse.java
@@ -10,10 +10,12 @@
* 二维码响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.fund.qrcode.QrCodeResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class QrCodeResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 4521008628337929496L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/background/BackgroundApplyResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/background/BackgroundApplyResponse.java
index b0d8769874..5ac7ec67db 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/background/BackgroundApplyResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/background/BackgroundApplyResponse.java
@@ -10,10 +10,12 @@
* 提交背景图申请 结果
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.background.BackgroundApplyResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class BackgroundApplyResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -5627456997199822109L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/background/BackgroundApplyResult.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/background/BackgroundApplyResult.java
index 45ca4ac1dd..af964a5c5c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/background/BackgroundApplyResult.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/background/BackgroundApplyResult.java
@@ -9,9 +9,11 @@
* 背景图审核信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.background.BackgroundApplyResult}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class BackgroundApplyResult implements Serializable {
private static final long serialVersionUID = 3154900058221168732L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/background/BackgroundGetResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/background/BackgroundGetResponse.java
index a0fbf33a80..24caf72ad0 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/background/BackgroundGetResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/background/BackgroundGetResponse.java
@@ -10,10 +10,12 @@
* 背景图返回结果
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.background.BackgroundGetResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class BackgroundGetResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -9158761351220981959L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerApplyDetail.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerApplyDetail.java
index e9e58057fd..0dee3613a3 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerApplyDetail.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerApplyDetail.java
@@ -11,10 +11,12 @@
* 精选展示位申请详情
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.banner.BannerApplyDetail}。
*/
@Data
@NoArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class BannerApplyDetail implements Serializable {
private static final long serialVersionUID = -4622897527243343862L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerApplyInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerApplyInfo.java
index 651c5c76fe..f48a398c32 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerApplyInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerApplyInfo.java
@@ -10,9 +10,11 @@
* 精选展示位申请信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.banner.BannerApplyInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class BannerApplyInfo implements Serializable {
private static final long serialVersionUID = 72190625450999960L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerApplyParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerApplyParam.java
index 04c7abc2a7..1914e8e4d5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerApplyParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerApplyParam.java
@@ -12,11 +12,13 @@
* 精选展示位申请参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.banner.BannerApplyParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class BannerApplyParam implements Serializable {
private static final long serialVersionUID = 9083668032979490150L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerApplyResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerApplyResponse.java
index f83f119d13..f20d3d102d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerApplyResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerApplyResponse.java
@@ -10,10 +10,12 @@
* 提交精选展位申请 结果
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.banner.BannerApplyResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class BannerApplyResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -2194587734444499201L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerGetResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerGetResponse.java
index 1c6a920636..b1bebb2c65 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerGetResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerGetResponse.java
@@ -10,10 +10,12 @@
* 精选展位返回结果
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.banner.BannerGetResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class BannerGetResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -1563254921362215934L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerInfo.java
index 24b501a97d..b90ec8e2c6 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerInfo.java
@@ -12,10 +12,12 @@
* 精选展示位
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.banner.BannerInfo}。
*/
@Data
@NoArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class BannerInfo implements Serializable {
private static final long serialVersionUID = -2003175482038217418L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerItem.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerItem.java
index 9a5cad9649..0aea2cbfba 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerItem.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerItem.java
@@ -11,10 +11,12 @@
* 精选展示位明细
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.banner.BannerItem}。
*/
@Data
@NoArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class BannerItem implements Serializable {
private static final long serialVersionUID = 6982412458700854481L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerItemDetail.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerItemDetail.java
index b5cfb4a38c..27a6c49763 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerItemDetail.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerItemDetail.java
@@ -11,10 +11,12 @@
* 精选展示位明细中的明细
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.banner.BannerItemDetail}。
*/
@Data
@NoArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class BannerItemDetail implements Serializable {
private static final long serialVersionUID = 5975434996207526173L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerItemFinder.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerItemFinder.java
index 735a2038da..398f069596 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerItemFinder.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerItemFinder.java
@@ -11,10 +11,12 @@
* 精选展示位明细中的视频号数据
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.banner.BannerItemFinder}。
*/
@Data
@NoArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class BannerItemFinder implements Serializable {
private static final long serialVersionUID = -7397790079913284012L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerItemOfficialAccount.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerItemOfficialAccount.java
index 0488829642..6bc73483a8 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerItemOfficialAccount.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerItemOfficialAccount.java
@@ -11,10 +11,12 @@
* 精选展示位明细中的公众号数据
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.banner.BannerItemOfficialAccount}。
*/
@Data
@NoArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class BannerItemOfficialAccount implements Serializable {
private static final long serialVersionUID = -5596947592282082891L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerItemProduct.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerItemProduct.java
index 87a51823f0..6c94eaa4e9 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerItemProduct.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/banner/BannerItemProduct.java
@@ -11,10 +11,12 @@
* 精选展示位明细中的商品
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.banner.BannerItemProduct}。
*/
@Data
@NoArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class BannerItemProduct implements Serializable {
private static final long serialVersionUID = 8034487065591522594L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/CatTreeNode.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/CatTreeNode.java
index c545b8637f..ede5ae02ba 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/CatTreeNode.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/CatTreeNode.java
@@ -10,10 +10,12 @@
* 主页分类信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.tree.CatTreeNode}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class CatTreeNode implements Serializable {
private static final long serialVersionUID = 3154219180098003510L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/LevelTreeInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/LevelTreeInfo.java
index 104588202e..53e6d89388 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/LevelTreeInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/LevelTreeInfo.java
@@ -11,10 +11,12 @@
* 分类信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.tree.LevelTreeInfo}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class LevelTreeInfo implements Serializable {
/** 一级分类 */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/OneLevelTreeNode.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/OneLevelTreeNode.java
index 76499c86e7..cbd2d99724 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/OneLevelTreeNode.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/OneLevelTreeNode.java
@@ -11,11 +11,13 @@
* 一级分类
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.tree.OneLevelTreeNode}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class OneLevelTreeNode extends CatTreeNode {
/** 二级分类 */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeAuditResult.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeAuditResult.java
index b85dda46dd..f9fb9c6714 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeAuditResult.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeAuditResult.java
@@ -10,9 +10,11 @@
* 展示在店铺主页的商品分类
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.tree.TreeAuditResult}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class TreeAuditResult implements Serializable {
private static final long serialVersionUID = 8142657614529852121L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeAuditResultDetail.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeAuditResultDetail.java
index 92df865061..ec757a38c0 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeAuditResultDetail.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeAuditResultDetail.java
@@ -9,9 +9,11 @@
* 分类审核结果
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.tree.TreeAuditResultDetail}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class TreeAuditResultDetail implements Serializable {
private static final long serialVersionUID = -6085892397971684732L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductEditInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductEditInfo.java
index d7dd831c3d..4b81f0e465 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductEditInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductEditInfo.java
@@ -11,10 +11,12 @@
* 添加/删除分类关联的商品 参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.tree.TreeProductEditInfo}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class TreeProductEditInfo implements Serializable {
private static final long serialVersionUID = -5596947592282082891L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductEditParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductEditParam.java
index fb42162ca6..b9bd244e81 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductEditParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductEditParam.java
@@ -10,10 +10,12 @@
* 添加/删除分类关联的商品 参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.tree.TreeProductEditParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class TreeProductEditParam implements Serializable {
private static final long serialVersionUID = -4906016235749892703L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductListInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductListInfo.java
index a37e784d14..2c71419314 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductListInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductListInfo.java
@@ -10,10 +10,12 @@
* 查询分类关联的商品 参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.tree.TreeProductListInfo}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class TreeProductListInfo implements Serializable {
private static final long serialVersionUID = 2774682583380930076L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductListParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductListParam.java
index 7bb6a700e2..f7a20389ae 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductListParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductListParam.java
@@ -10,10 +10,12 @@
* 查询分类关联的商品 参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.tree.TreeProductListParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class TreeProductListParam implements Serializable {
private static final long serialVersionUID = -8444106841479328711L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductListResponse.java
index ed0081d70c..40a24473e1 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductListResponse.java
@@ -10,10 +10,12 @@
* 资金流水响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.tree.TreeProductListResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class TreeProductListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 4566848209585635054L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductListResult.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductListResult.java
index 6e0fdfea6c..3e9e683d63 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductListResult.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeProductListResult.java
@@ -10,9 +10,11 @@
* 资金流水响应 结果
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.tree.TreeProductListResult}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class TreeProductListResult implements Serializable {
private static final long serialVersionUID = 4566848209585635054L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeShowGetResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeShowGetResponse.java
index f3784c48fb..25b90706d8 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeShowGetResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeShowGetResponse.java
@@ -8,10 +8,12 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.tree.TreeShowGetResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class TreeShowGetResponse extends WxChannelBaseResponse {
/** resp */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeShowInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeShowInfo.java
index 09da2c5b0c..e3fb0cedee 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeShowInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeShowInfo.java
@@ -11,10 +11,12 @@
* 分类展示信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.tree.TreeShowInfo}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class TreeShowInfo implements Serializable {
/** 分类树 */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeShowParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeShowParam.java
index 7277c528f4..f6b691370d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeShowParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeShowParam.java
@@ -10,10 +10,12 @@
* 设置展示在店铺主页的商品分类 参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.tree.TreeShowParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class TreeShowParam implements Serializable {
private static final long serialVersionUID = -1577647561992899360L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeShowSetResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeShowSetResponse.java
index ad65332644..3545cbaa24 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeShowSetResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/tree/TreeShowSetResponse.java
@@ -8,10 +8,12 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.tree.TreeShowSetResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class TreeShowSetResponse extends WxChannelBaseResponse {
/** resp */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/window/WindowProductIndexParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/window/WindowProductIndexParam.java
index fcc16bd0f6..24be27cd3c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/window/WindowProductIndexParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/window/WindowProductIndexParam.java
@@ -10,10 +10,12 @@
* 主页商品排序参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.window.WindowProductIndexParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class WindowProductIndexParam implements Serializable {
private static final long serialVersionUID = 1370480140179330908L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/window/WindowProductListParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/window/WindowProductListParam.java
index 9245df9887..5533aade3b 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/window/WindowProductListParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/window/WindowProductListParam.java
@@ -10,10 +10,12 @@
* 获取主页展示商品列表 参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.window.WindowProductListParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class WindowProductListParam implements Serializable {
/** 每页数量(默认10,不超过30) */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/window/WindowProductSetting.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/window/WindowProductSetting.java
index 725470b912..5eaeef813e 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/window/WindowProductSetting.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/window/WindowProductSetting.java
@@ -11,11 +11,13 @@
* 主页商品配置 返回结果 / 设置请求参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.window.WindowProductSetting}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class WindowProductSetting implements Serializable {
private static final long serialVersionUID = -5931781905709862287L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/window/WindowProductSettingResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/window/WindowProductSettingResponse.java
index 495910e37d..fc17890a44 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/window/WindowProductSettingResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/home/window/WindowProductSettingResponse.java
@@ -11,10 +11,12 @@
* 主页商品配置列表
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.home.window.WindowProductSettingResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class WindowProductSettingResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 1L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/image/ChannelImageInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/image/ChannelImageInfo.java
index 3e12c7e830..e02febe01c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/image/ChannelImageInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/image/ChannelImageInfo.java
@@ -9,9 +9,11 @@
* 微信图片信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.image.StoreImageInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class ChannelImageInfo implements Serializable {
private static final long serialVersionUID = 8883519290965944530L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/image/ChannelImageResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/image/ChannelImageResponse.java
index 903af375af..91409d509c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/image/ChannelImageResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/image/ChannelImageResponse.java
@@ -8,9 +8,11 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.image.StoreImageResponse}。
*/
@Data
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class ChannelImageResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -4163511427507976489L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/image/QualificationFileId.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/image/QualificationFileId.java
index 905720a8dc..5b834f455d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/image/QualificationFileId.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/image/QualificationFileId.java
@@ -10,10 +10,12 @@
* 资质文件id
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.image.QualificationFileId}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class QualificationFileId implements Serializable {
private static final long serialVersionUID = -546135264746778249L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/image/QualificationFileResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/image/QualificationFileResponse.java
index 5a4332885c..296232d2e0 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/image/QualificationFileResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/image/QualificationFileResponse.java
@@ -10,10 +10,12 @@
* 资质文件id响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.image.QualificationFileResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class QualificationFileResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 5172377567441096813L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/image/UploadImageResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/image/UploadImageResponse.java
index f1625bd3c4..7a64b3323a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/image/UploadImageResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/image/UploadImageResponse.java
@@ -10,10 +10,12 @@
* 微信图片信息响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.image.UploadImageResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class UploadImageResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -609315696774437877L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/kf/WxChannelKfCosUploadResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/kf/WxChannelKfCosUploadResponse.java
index e5261dbf66..83e58d4423 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/kf/WxChannelKfCosUploadResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/kf/WxChannelKfCosUploadResponse.java
@@ -6,10 +6,13 @@
import lombok.NoArgsConstructor;
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
-/** 客服素材上传响应。 */
+/** 客服素材上传响应。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.kf.WxStoreKfCosUploadResponse}。
+*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class WxChannelKfCosUploadResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 1L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/kf/WxChannelKfSendMsgParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/kf/WxChannelKfSendMsgParam.java
index 0653c5edca..221f1b3113 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/kf/WxChannelKfSendMsgParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/kf/WxChannelKfSendMsgParam.java
@@ -5,9 +5,12 @@
import lombok.Data;
import lombok.NoArgsConstructor;
-/** 发送客服消息请求参数。 */
+/** 发送客服消息请求参数。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.kf.WxStoreKfSendMsgParam}。
+*/
@Data
@NoArgsConstructor
+@Deprecated
public class WxChannelKfSendMsgParam implements Serializable {
private static final long serialVersionUID = 1L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/kf/WxChannelKfSendMsgResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/kf/WxChannelKfSendMsgResponse.java
index 570e309fa3..bd65b3d65f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/kf/WxChannelKfSendMsgResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/kf/WxChannelKfSendMsgResponse.java
@@ -6,10 +6,13 @@
import lombok.NoArgsConstructor;
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
-/** 发送客服消息响应。 */
+/** 发送客服消息响应。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.kf.WxStoreKfSendMsgResponse}。
+*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class WxChannelKfSendMsgResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 1L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitSku.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitSku.java
index 29ffbf921e..53b6a98c89 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitSku.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitSku.java
@@ -8,10 +8,12 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.limit.LimitSku}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class LimitSku implements Serializable {
private static final long serialVersionUID = -1819737633227427482L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitSkuUpdate.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitSkuUpdate.java
index 98c14a4024..33d1a23ff6 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitSkuUpdate.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitSkuUpdate.java
@@ -7,9 +7,11 @@
/**
* 限时抢购任务的 SKU 更新信息。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.limit.LimitSkuUpdate}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class LimitSkuUpdate implements Serializable {
private static final long serialVersionUID = 4209672674401016015L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskAddResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskAddResponse.java
index 35ea00d68d..deda13b9d1 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskAddResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskAddResponse.java
@@ -8,10 +8,12 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.limit.LimitTaskAddResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class LimitTaskAddResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -4742165348862157618L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskInfo.java
index aefc4b8136..0e9cde57bc 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskInfo.java
@@ -8,9 +8,11 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.limit.LimitTaskInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class LimitTaskInfo implements Serializable {
private static final long serialVersionUID = 3032226931637189351L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskListParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskListParam.java
index d608c8231e..71ea390796 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskListParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskListParam.java
@@ -6,8 +6,10 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.limit.LimitTaskListParam}。
*/
@Data
+@Deprecated
public class LimitTaskListParam extends StreamPageParam {
private static final long serialVersionUID = -7227161890365102302L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskListResponse.java
index 688fd158dc..8cf0837e52 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskListResponse.java
@@ -9,10 +9,12 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.limit.LimitTaskListResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class LimitTaskListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 3604657299385130217L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskParam.java
index b89c072944..77ee8398c3 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskParam.java
@@ -10,10 +10,12 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.limit.LimitTaskParam}。
*/
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class LimitTaskParam implements Serializable {
private static final long serialVersionUID = 3885409806249022528L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskUpdateParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskUpdateParam.java
index 40c7650cea..8197ee3bcd 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskUpdateParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskUpdateParam.java
@@ -8,9 +8,11 @@
/**
* 更新限时抢购任务请求参数。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.limit.LimitTaskUpdateParam}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class LimitTaskUpdateParam implements Serializable {
private static final long serialVersionUID = 7277247203887803045L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskUpdateResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskUpdateResponse.java
index 73afc8247e..067c313bb5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskUpdateResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/limit/LimitTaskUpdateResponse.java
@@ -8,10 +8,12 @@
/**
* 更新限时抢购任务响应。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.limit.LimitTaskUpdateResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class LimitTaskUpdateResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 4429517792042527433L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/after/AfterSaleMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/after/AfterSaleMessage.java
index 52beec7932..90f4749977 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/after/AfterSaleMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/after/AfterSaleMessage.java
@@ -12,11 +12,13 @@
* 售后消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.after.AfterSaleMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class AfterSaleMessage extends WxChannelMessage {
private static final long serialVersionUID = -7263404451639198126L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/after/AfterSaleStatusInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/after/AfterSaleStatusInfo.java
index 06fd349da8..780b069dad 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/after/AfterSaleStatusInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/after/AfterSaleStatusInfo.java
@@ -10,9 +10,11 @@
* 售后信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.after.AfterSaleStatusInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class AfterSaleStatusInfo implements Serializable {
private static final long serialVersionUID = -7309656340583314591L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/after/ComplaintInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/after/ComplaintInfo.java
index adb0b7b392..2922af5b6c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/after/ComplaintInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/after/ComplaintInfo.java
@@ -10,9 +10,11 @@
* 纠纷信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.after.ComplaintInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class ComplaintInfo implements Serializable {
private static final long serialVersionUID = 3988395560953978239L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/after/ComplaintMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/after/ComplaintMessage.java
index e10a9b365a..49966a0829 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/after/ComplaintMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/after/ComplaintMessage.java
@@ -12,11 +12,13 @@
* 纠纷消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.after.ComplaintMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class ComplaintMessage extends WxChannelMessage {
private static final long serialVersionUID = 5358093415172409157L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/CouponActionInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/CouponActionInfo.java
index f7a55ce0fb..de66480bee 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/CouponActionInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/CouponActionInfo.java
@@ -10,9 +10,11 @@
* 优惠券操作消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.coupon.CouponActionInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class CouponActionInfo implements Serializable {
private static final long serialVersionUID = -4456716511656569552L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/CouponActionMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/CouponActionMessage.java
index 7433b7a6c2..3832d92ff7 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/CouponActionMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/CouponActionMessage.java
@@ -13,11 +13,13 @@
* 卡券操作 消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.coupon.CouponActionMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class CouponActionMessage extends WxChannelMessage {
private static final long serialVersionUID = 4910461800721504462L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/CouponReceiveMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/CouponReceiveMessage.java
index 448d815a58..5c0d81f3f4 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/CouponReceiveMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/CouponReceiveMessage.java
@@ -14,11 +14,13 @@
* 用户领券 消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.coupon.CouponReceiveMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class CouponReceiveMessage extends WxChannelMessage {
private static final long serialVersionUID = 5121347165246528730L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/UserCouponActionInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/UserCouponActionInfo.java
index 1356c47fca..04b1785d77 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/UserCouponActionInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/UserCouponActionInfo.java
@@ -10,9 +10,11 @@
* 用户优惠券操作消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.coupon.UserCouponActionInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class UserCouponActionInfo implements Serializable {
private static final long serialVersionUID = -5948836918972669529L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/UserCouponExpireMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/UserCouponExpireMessage.java
index 26370e5142..1ec71967eb 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/UserCouponExpireMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/UserCouponExpireMessage.java
@@ -13,11 +13,13 @@
* 用户卡券过期 消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.coupon.UserCouponExpireMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class UserCouponExpireMessage extends WxChannelMessage {
private static final long serialVersionUID = -2557475297107588372L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/UserCouponUseMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/UserCouponUseMessage.java
index 7b436743c3..7cff51fef9 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/UserCouponUseMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/coupon/UserCouponUseMessage.java
@@ -13,11 +13,13 @@
* 用户卡券使用 消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.coupon.UserCouponUseMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class UserCouponUseMessage extends WxChannelMessage {
private static final long serialVersionUID = -1051142666438578628L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/AccountNotifyMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/AccountNotifyMessage.java
index b5a02ac834..4f03523979 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/AccountNotifyMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/AccountNotifyMessage.java
@@ -12,11 +12,13 @@
* 账户变更通知 消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.fund.AccountNotifyMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class AccountNotifyMessage extends WxChannelMessage {
private static final long serialVersionUID = 3846692537729725664L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/BankNotifyInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/BankNotifyInfo.java
index 44ef398f8b..39f5afb217 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/BankNotifyInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/BankNotifyInfo.java
@@ -10,9 +10,11 @@
* 账户信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.fund.BankNotifyInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class BankNotifyInfo implements Serializable {
private static final long serialVersionUID = 4192569196686180014L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/QrNotifyInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/QrNotifyInfo.java
index 83b466f07e..6a68488d0f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/QrNotifyInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/QrNotifyInfo.java
@@ -10,9 +10,11 @@
* 提现二维码回调 消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.fund.QrNotifyInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class QrNotifyInfo implements Serializable {
private static final long serialVersionUID = 2470016408300157273L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/QrNotifyMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/QrNotifyMessage.java
index 56e906a641..199223418f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/QrNotifyMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/QrNotifyMessage.java
@@ -12,11 +12,13 @@
* 提现二维码回调 消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.fund.QrNotifyMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class QrNotifyMessage extends WxChannelMessage {
private static final long serialVersionUID = -4705790895359679423L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/WithdrawNotifyInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/WithdrawNotifyInfo.java
index 810f40c95c..ff6ef9bdeb 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/WithdrawNotifyInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/WithdrawNotifyInfo.java
@@ -10,9 +10,11 @@
* 提现通知信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.fund.WithdrawNotifyInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class WithdrawNotifyInfo implements Serializable {
private static final long serialVersionUID = 2987401114254821956L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/WithdrawNotifyMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/WithdrawNotifyMessage.java
index ff45e73ec6..86a72d91e6 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/WithdrawNotifyMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/fund/WithdrawNotifyMessage.java
@@ -12,11 +12,13 @@
* 账户变更通知 消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.fund.WithdrawNotifyMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class WithdrawNotifyMessage extends WxChannelMessage {
private static final long serialVersionUID = -2504086242143523430L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderCancelInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderCancelInfo.java
index 8ff3ead54e..a8ed7ec36c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderCancelInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderCancelInfo.java
@@ -10,10 +10,12 @@
* 订单取消信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.order.OrderCancelInfo}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class OrderCancelInfo extends OrderIdInfo {
private static final long serialVersionUID = -8022876997578127873L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderCancelMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderCancelMessage.java
index 8e6b33c2ee..148d7406c4 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderCancelMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderCancelMessage.java
@@ -12,11 +12,13 @@
* 订单取消消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.order.OrderCancelMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class OrderCancelMessage extends WxChannelMessage {
private static final long serialVersionUID = 5389546516473919310L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderConfirmInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderConfirmInfo.java
index bd212092a5..de5d6b904b 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderConfirmInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderConfirmInfo.java
@@ -10,10 +10,12 @@
* 订单确认收货信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.order.OrderConfirmInfo}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class OrderConfirmInfo extends OrderIdInfo {
private static final long serialVersionUID = -2569494642832261346L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderConfirmMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderConfirmMessage.java
index dda35041b2..95c4246fd1 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderConfirmMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderConfirmMessage.java
@@ -12,11 +12,13 @@
* 订单确认收货消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.order.OrderConfirmMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class OrderConfirmMessage extends WxChannelMessage {
private static final long serialVersionUID = 4219477394934480425L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderDeliveryInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderDeliveryInfo.java
index ca3d26736a..5f09b43995 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderDeliveryInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderDeliveryInfo.java
@@ -10,10 +10,12 @@
* 订单发货信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.order.OrderDeliveryInfo}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class OrderDeliveryInfo extends OrderIdInfo {
private static final long serialVersionUID = 117962754344887556L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderDeliveryMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderDeliveryMessage.java
index 25d79e2c4d..2bc081207a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderDeliveryMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderDeliveryMessage.java
@@ -12,11 +12,13 @@
* 订单发货消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.order.OrderDeliveryMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class OrderDeliveryMessage extends WxChannelMessage {
private static final long serialVersionUID = -1440834047566984402L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderExtInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderExtInfo.java
index b4986f35c4..1458e42014 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderExtInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderExtInfo.java
@@ -10,10 +10,12 @@
* 订单其他信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.order.OrderExtInfo}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class OrderExtInfo extends OrderIdInfo {
private static final long serialVersionUID = 4723533858047219828L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderExtMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderExtMessage.java
index c5ede6c6bd..0a3880ff5d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderExtMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderExtMessage.java
@@ -12,11 +12,13 @@
* 订单状态消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.order.OrderExtMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class OrderExtMessage extends WxChannelMessage {
private static final long serialVersionUID = -3183077256476798756L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderIdInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderIdInfo.java
index b9ac33b376..d71346f19b 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderIdInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderIdInfo.java
@@ -10,9 +10,11 @@
* 订单id信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.order.OrderIdInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class OrderIdInfo implements Serializable {
private static final long serialVersionUID = 5547544436235032051L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderIdMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderIdMessage.java
index 398c29bde4..4f152d5c78 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderIdMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderIdMessage.java
@@ -12,11 +12,13 @@
* 订单id消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.order.OrderIdMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class OrderIdMessage extends WxChannelMessage {
private static final long serialVersionUID = 3793987364799712798L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderPayInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderPayInfo.java
index d916c14a21..3617a3fef5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderPayInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderPayInfo.java
@@ -10,10 +10,12 @@
* 订单支付信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.order.OrderPayInfo}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class OrderPayInfo extends OrderIdInfo {
private static final long serialVersionUID = -3502786073769735831L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderPayMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderPayMessage.java
index ee1f458aba..689e6d1f2a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderPayMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderPayMessage.java
@@ -12,11 +12,13 @@
* 订单支付成功消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.order.OrderPayMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class OrderPayMessage extends WxChannelMessage {
private static final long serialVersionUID = 1083018549119427808L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderSettleInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderSettleInfo.java
index b4f48b6fb8..8876f36167 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderSettleInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderSettleInfo.java
@@ -10,10 +10,12 @@
* 订单结算信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.order.OrderSettleInfo}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class OrderSettleInfo extends OrderIdInfo {
private static final long serialVersionUID = -1817955568383872053L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderSettleMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderSettleMessage.java
index 2d3d1d96d6..e0241d2944 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderSettleMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderSettleMessage.java
@@ -12,11 +12,13 @@
* 订单结算消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.order.OrderSettleMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class OrderSettleMessage extends WxChannelMessage {
private static final long serialVersionUID = -4001189226630840548L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderStatusMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderStatusMessage.java
index 4a06ccc99c..3d72a02ede 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderStatusMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/order/OrderStatusMessage.java
@@ -13,11 +13,13 @@
* 订单状态消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.order.OrderStatusMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class OrderStatusMessage extends WxChannelMessage {
private static final long serialVersionUID = -356717038344749283L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/product/BrandMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/product/BrandMessage.java
index 9a7c021c9d..0524d7c75b 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/product/BrandMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/product/BrandMessage.java
@@ -13,11 +13,13 @@
* 品牌消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.product.BrandMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class BrandMessage extends WxChannelMessage {
private static final long serialVersionUID = -3773902704930003105L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/product/CategoryAuditMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/product/CategoryAuditMessage.java
index f6d696d5c1..bf51aedf7d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/product/CategoryAuditMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/product/CategoryAuditMessage.java
@@ -13,11 +13,13 @@
* 类目审核消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.product.CategoryAuditMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class CategoryAuditMessage extends WxChannelMessage {
private static final long serialVersionUID = 3192582751919917223L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/product/SpuAuditMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/product/SpuAuditMessage.java
index 569b53781e..1314aacbfc 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/product/SpuAuditMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/product/SpuAuditMessage.java
@@ -13,11 +13,13 @@
* SPU审核消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.product.SpuAuditMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class SpuAuditMessage extends WxChannelMessage {
private static final long serialVersionUID = 1763291928383078102L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/product/SpuStatusMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/product/SpuStatusMessage.java
index 7fb9f272e8..a1d6194818 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/product/SpuStatusMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/product/SpuStatusMessage.java
@@ -13,11 +13,13 @@
* SPU状态消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.product.SpuStatusMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class SpuStatusMessage extends WxChannelMessage {
private static final long serialVersionUID = 6872830451279856492L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/product/SpuStockMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/product/SpuStockMessage.java
index 96feac5a4a..fb6e0483c5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/product/SpuStockMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/product/SpuStockMessage.java
@@ -13,11 +13,13 @@
* SPU库存不足消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.product.SpuStockMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class SpuStockMessage extends WxChannelMessage {
private static final long serialVersionUID = 2250860804161527363L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/sharer/SharerChangeMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/sharer/SharerChangeMessage.java
index 8b2036693e..ea75585411 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/sharer/SharerChangeMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/sharer/SharerChangeMessage.java
@@ -13,11 +13,13 @@
* https://developers.weixin.qq.com/doc/channels/API/sharer/callback/channels_ec_sharer_change.html
*
* @author sd-hxf
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.sharer.SharerChangeMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class SharerChangeMessage extends WxChannelMessage {
private static final long serialVersionUID = 4219477394934480421L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/store/CloseStoreMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/store/CloseStoreMessage.java
index 2a43483354..ec694318cb 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/store/CloseStoreMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/store/CloseStoreMessage.java
@@ -16,11 +16,13 @@
* 小店注销消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.store.CloseStoreMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class CloseStoreMessage extends WxChannelMessage {
private static final long serialVersionUID = 7619787772418774020L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/store/NicknameUpdateMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/store/NicknameUpdateMessage.java
index e6665497e0..59a765ff86 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/store/NicknameUpdateMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/store/NicknameUpdateMessage.java
@@ -16,11 +16,13 @@
* 小店修改名称消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.store.NicknameUpdateMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class NicknameUpdateMessage extends WxChannelMessage {
private static final long serialVersionUID = 7619787772418774020L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/supplier/SupplierItemInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/supplier/SupplierItemInfo.java
index 49bbb0548b..07ba22d8ba 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/supplier/SupplierItemInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/supplier/SupplierItemInfo.java
@@ -11,9 +11,11 @@
* 团长商品变更信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.supplier.SupplierItemInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class SupplierItemInfo implements Serializable {
private static final long serialVersionUID = -1971161027976024360L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/supplier/SupplierItemMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/supplier/SupplierItemMessage.java
index 2403aa0c60..c083658b5a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/supplier/SupplierItemMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/supplier/SupplierItemMessage.java
@@ -12,11 +12,13 @@
* 团长商品变更 消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.supplier.SupplierItemMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class SupplierItemMessage extends WxChannelMessage {
private static final long serialVersionUID = -4520611382070764349L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/CouponInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/CouponInfo.java
index 4305d4738d..df83d2ae86 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/CouponInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/CouponInfo.java
@@ -12,11 +12,13 @@
* 优惠券信息
*
* @author asushiye
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.vip.CouponInfo}。
*/
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@NoArgsConstructor
+@Deprecated
public class CouponInfo implements Serializable {
private static final long serialVersionUID = -3659710836197413932L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/ExchangeInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/ExchangeInfo.java
index 4cec52af02..b76ec09125 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/ExchangeInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/ExchangeInfo.java
@@ -12,11 +12,13 @@
* 积分兑换
*
* @author asushiye
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.vip.ExchangeInfo}。
*/
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@NoArgsConstructor
+@Deprecated
public class ExchangeInfo implements Serializable {
private static final long serialVersionUID = -5692646625631036694L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/ExchangeInfoMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/ExchangeInfoMessage.java
index 6cb98225bd..ae4684b348 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/ExchangeInfoMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/ExchangeInfoMessage.java
@@ -12,12 +12,14 @@
* 积分兑换消息
*
* @author asushiye
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.vip.ExchangeInfoMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class ExchangeInfoMessage extends WxChannelMessage {
private static final long serialVersionUID = 2926346100146724110L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/ProductInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/ProductInfo.java
index 451a1e19b5..2d97d8eed2 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/ProductInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/ProductInfo.java
@@ -12,11 +12,13 @@
* 商品信息
*
* @author asushiye
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.vip.ProductInfo}。
*/
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@NoArgsConstructor
+@Deprecated
public class ProductInfo implements Serializable {
private static final long serialVersionUID = -3037180342360944232L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/UserInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/UserInfo.java
index f21c83c168..af921de924 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/UserInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/UserInfo.java
@@ -12,11 +12,13 @@
* 用户信息
*
* @author asushiye
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.vip.UserInfo}。
*/
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@NoArgsConstructor
+@Deprecated
public class UserInfo implements Serializable {
private static final long serialVersionUID = 1239486732464880985L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/UserInfoMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/UserInfoMessage.java
index 439edd0951..5b4f5b725e 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/UserInfoMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/vip/UserInfoMessage.java
@@ -12,12 +12,14 @@
* 用户信息消息
*
* @author asushiye
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.vip.UserInfoMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class UserInfoMessage extends WxChannelMessage {
private static final long serialVersionUID = 6926608689621530622L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/voucher/VoucherInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/voucher/VoucherInfo.java
index 1b5a926205..031073e8a9 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/voucher/VoucherInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/voucher/VoucherInfo.java
@@ -8,9 +8,11 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.voucher.VoucherInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class VoucherInfo implements Serializable {
private static final long serialVersionUID = 6007964849358969438L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/voucher/VoucherMessage.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/voucher/VoucherMessage.java
index 941828969d..732d0cbeb5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/voucher/VoucherMessage.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/message/voucher/VoucherMessage.java
@@ -13,11 +13,13 @@
* 发放团购优惠成功消息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.message.voucher.VoucherMessage}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
+@Deprecated
public class VoucherMessage extends WxChannelMessage {
private static final long serialVersionUID = 975858675917036089L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/AfterSaleDetail.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/AfterSaleDetail.java
index 5401a588bf..0cbf7598f2 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/AfterSaleDetail.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/AfterSaleDetail.java
@@ -10,9 +10,11 @@
* 售后信息详情
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.AfterSaleDetail}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class AfterSaleDetail implements Serializable {
private static final long serialVersionUID = -3786573982841041144L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/AfterSaleOrderInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/AfterSaleOrderInfo.java
index 118feba35b..7f29f0af07 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/AfterSaleOrderInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/AfterSaleOrderInfo.java
@@ -9,9 +9,11 @@
* 售后信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.AfterSaleOrderInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class AfterSaleOrderInfo implements Serializable {
private static final long serialVersionUID = 3938545222231426455L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/ChangeOrderInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/ChangeOrderInfo.java
index f6485085bb..3b9cd5fafd 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/ChangeOrderInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/ChangeOrderInfo.java
@@ -9,9 +9,11 @@
* 订单修改信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.ChangeOrderInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class ChangeOrderInfo implements Serializable {
private static final long serialVersionUID = 4932726847720452340L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/ChangeSkuInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/ChangeSkuInfo.java
index b40a497755..ea7a0f110c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/ChangeSkuInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/ChangeSkuInfo.java
@@ -8,9 +8,11 @@
/**
* 更换sku信息
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.ChangeSkuInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class ChangeSkuInfo implements Serializable {
private static final long serialVersionUID = 8783442929429377519L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/DecodeAddressInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/DecodeAddressInfo.java
index 3aa6622eeb..8240514c96 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/DecodeAddressInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/DecodeAddressInfo.java
@@ -10,10 +10,12 @@
* 解码地址数据
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.DecodeAddressInfo}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class DecodeAddressInfo extends AddressInfo {
/** 虚拟发货订单联系方式,在发货方式为无需快递(deliver_method=1)时返回 */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/DecodeSensitiveInfoResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/DecodeSensitiveInfoResponse.java
index c0431a8fd6..f151864599 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/DecodeSensitiveInfoResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/DecodeSensitiveInfoResponse.java
@@ -10,10 +10,12 @@
* 解码订单包含的敏感数据响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.DecodeSensitiveInfoResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class DecodeSensitiveInfoResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 935829924760021624L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/DeliveryProductInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/DeliveryProductInfo.java
index 5427a49839..d2f44516a7 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/DeliveryProductInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/DeliveryProductInfo.java
@@ -11,9 +11,11 @@
* 发货物流信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.DeliveryProductInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class DeliveryProductInfo implements Serializable {
private static final long serialVersionUID = -8110532854439612471L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/DeliveryUpdateParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/DeliveryUpdateParam.java
index 6aca6feed4..34595bacf5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/DeliveryUpdateParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/DeliveryUpdateParam.java
@@ -12,10 +12,12 @@
* 修改物流参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.DeliveryUpdateParam}。
*/
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class DeliveryUpdateParam implements Serializable {
/** 订单ID */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/DropshipInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/DropshipInfo.java
index 9c5340376d..54ee531fd0 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/DropshipInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/DropshipInfo.java
@@ -8,9 +8,11 @@
/**
* 代发相关信息
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.DropshipInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class DropshipInfo implements Serializable {
private static final long serialVersionUID = -4562618835611282016L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/FreeGiftInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/FreeGiftInfo.java
index b2612cfccd..7a7642565b 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/FreeGiftInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/FreeGiftInfo.java
@@ -9,9 +9,11 @@
/**
* 赠品信息
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.FreeGiftInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class FreeGiftInfo implements Serializable {
private static final long serialVersionUID = 2024061212345678901L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/MainProductInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/MainProductInfo.java
index 6e47393c6b..efd7c97110 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/MainProductInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/MainProductInfo.java
@@ -8,9 +8,11 @@
/**
* 赠品对应的主品信息
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.MainProductInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class MainProductInfo implements Serializable {
private static final long serialVersionUID = 2024061212345678901L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderAddressInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderAddressInfo.java
index 1af5aee49e..148e2be5e1 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderAddressInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderAddressInfo.java
@@ -10,10 +10,12 @@
* 地址信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderAddressInfo}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class OrderAddressInfo extends AddressInfo {
private static final long serialVersionUID = 3062707865189774795L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderAddressParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderAddressParam.java
index 55eb6a8655..2fbb11195c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderAddressParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderAddressParam.java
@@ -13,11 +13,13 @@
* 订单地址参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderAddressParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class OrderAddressParam implements Serializable {
private static final long serialVersionUID = 2277618297276466650L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderAgentInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderAgentInfo.java
index 548e36dd49..25f19cfeb7 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderAgentInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderAgentInfo.java
@@ -9,9 +9,11 @@
* 授权账号信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderAgentInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class OrderAgentInfo implements Serializable {
private static final long serialVersionUID = 6396067079343033841L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderCommissionInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderCommissionInfo.java
index f3cab1f4bf..c2b983a853 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderCommissionInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderCommissionInfo.java
@@ -9,9 +9,11 @@
* 分佣信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderCommissionInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class OrderCommissionInfo implements Serializable {
private static final long serialVersionUID = -3046852309683467272L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderCompensationDeliveryParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderCompensationDeliveryParam.java
index 760762adef..4b6c36113a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderCompensationDeliveryParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderCompensationDeliveryParam.java
@@ -14,11 +14,13 @@
* 订单补发货 请求参数
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderCompensationDeliveryParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class OrderCompensationDeliveryParam implements Serializable {
private static final long serialVersionUID = 1L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderCouponInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderCouponInfo.java
index 34f2d670d0..6ed69983a5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderCouponInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderCouponInfo.java
@@ -9,9 +9,11 @@
* 卡券信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderCouponInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class OrderCouponInfo implements Serializable {
private static final long serialVersionUID = -2033350505767196339L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderCustomInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderCustomInfo.java
index 88981c6ccc..e67cdb053a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderCustomInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderCustomInfo.java
@@ -9,9 +9,11 @@
* 商品定制信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderCustomInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class OrderCustomInfo implements Serializable {
private static final long serialVersionUID = 6681266835402157651L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderDeliveryInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderDeliveryInfo.java
index ebe6bb8dc2..ea5a5fb060 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderDeliveryInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderDeliveryInfo.java
@@ -10,9 +10,11 @@
* 物流信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderDeliveryInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class OrderDeliveryInfo implements Serializable {
private static final long serialVersionUID = -5348922760017557397L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderDetailInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderDetailInfo.java
index 4d96023be1..8abe26f4fd 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderDetailInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderDetailInfo.java
@@ -10,9 +10,11 @@
* 订单详细数据
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderDetailInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class OrderDetailInfo implements Serializable {
private static final long serialVersionUID = 3916307299998005676L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderExtInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderExtInfo.java
index a846311c61..eb7f131213 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderExtInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderExtInfo.java
@@ -10,9 +10,11 @@
* 订单备注信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderExtInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class OrderExtInfo implements Serializable {
private static final long serialVersionUID = 4568097877621455429L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderGreetingCardInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderGreetingCardInfo.java
index 6b0c37033f..10087a1af5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderGreetingCardInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderGreetingCardInfo.java
@@ -9,9 +9,11 @@
* 订单商品贺卡信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderGreetingCardInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class OrderGreetingCardInfo implements Serializable {
private static final long serialVersionUID = -6391443179945240242L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderIdParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderIdParam.java
index f1e92e1339..c3dd768279 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderIdParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderIdParam.java
@@ -12,11 +12,13 @@
* 订单id参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderIdParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class OrderIdParam implements Serializable {
private static final long serialVersionUID = -8616582197963359789L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderInfo.java
index 00222d8487..b3754a0acd 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderInfo.java
@@ -9,9 +9,11 @@
* 视频号小店订单
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class OrderInfo implements Serializable {
private static final long serialVersionUID = -4562618835611282016L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderInfoParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderInfoParam.java
index e7a8c9a2b8..c26c888ddf 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderInfoParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderInfoParam.java
@@ -10,11 +10,13 @@
/**
* 获取订单详情参数
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderInfoParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class OrderInfoParam implements Serializable {
private static final long serialVersionUID = 42L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderInfoResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderInfoResponse.java
index 0b6fd53c17..da9514c10a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderInfoResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderInfoResponse.java
@@ -10,10 +10,12 @@
* 订单信息响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderInfoResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class OrderInfoResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 935829924760021624L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderListParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderListParam.java
index a84da3d2e8..2a589b3324 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderListParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderListParam.java
@@ -13,11 +13,13 @@
* 获取订单列表参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderListParam}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class OrderListParam extends StreamPageParam {
private static final long serialVersionUID = 3780097459964746890L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderListResponse.java
index 454abc59d9..cfa98a8190 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderListResponse.java
@@ -11,10 +11,12 @@
* 订单列表 响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderListResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class OrderListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -6198624448684807852L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderPayInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderPayInfo.java
index 7a9f367d76..20b09a8f2d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderPayInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderPayInfo.java
@@ -9,9 +9,11 @@
* 支付信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderPayInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class OrderPayInfo implements Serializable {
private static final long serialVersionUID = -5085386252699113948L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderPriceInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderPriceInfo.java
index 50eac04e50..eb36a7c9f5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderPriceInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderPriceInfo.java
@@ -10,9 +10,11 @@
* 商店订单价格信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderPriceInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class OrderPriceInfo implements Serializable {
private static final long serialVersionUID = 5216506688949493432L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderPriceParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderPriceParam.java
index 30f74501c4..bc832829b8 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderPriceParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderPriceParam.java
@@ -11,9 +11,11 @@
* 订单价格参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderPriceParam}。
*/
@Data
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class OrderPriceParam implements Serializable {
private static final long serialVersionUID = -7925819981481556218L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderProductExtraService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderProductExtraService.java
index ff413a9646..b95732696a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderProductExtraService.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderProductExtraService.java
@@ -10,9 +10,11 @@
* 商品额外服务信息
*
* @author 北鹤M
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderProductExtraService}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class OrderProductExtraService implements Serializable {
private static final long serialVersionUID = -8752053507170277156L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderProductInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderProductInfo.java
index e5c37e3cba..99736b5358 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderProductInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderProductInfo.java
@@ -13,9 +13,11 @@
* 订单商品信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderProductInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class OrderProductInfo implements Serializable {
private static final long serialVersionUID = -2193536732955185928L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderRefundInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderRefundInfo.java
index 9e3ae522f8..40e55b280b 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderRefundInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderRefundInfo.java
@@ -9,9 +9,11 @@
* 订单退款信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderRefundInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class OrderRefundInfo implements Serializable {
private static final long serialVersionUID = -7257910073388645919L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderRemarkParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderRemarkParam.java
index 707ec0d96b..ce06eea211 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderRemarkParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderRemarkParam.java
@@ -10,10 +10,12 @@
* 订单备注
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderRemarkParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class OrderRemarkParam implements Serializable {
private static final long serialVersionUID = 2285714780419948468L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSearchCondition.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSearchCondition.java
index a4c8373cec..a325c72e53 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSearchCondition.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSearchCondition.java
@@ -11,10 +11,12 @@
* 订单 搜索条件
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderSearchCondition}。
*/
@Data
@NoArgsConstructor
@JsonInclude(Include.NON_EMPTY)
+@Deprecated
public class OrderSearchCondition implements Serializable {
private static final long serialVersionUID = 5492584333971883140L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSearchParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSearchParam.java
index 2f56747d19..7e3332b4b8 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSearchParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSearchParam.java
@@ -9,10 +9,12 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderSearchParam}。
*/
@Data
@NoArgsConstructor
@JsonInclude(Include.NON_EMPTY)
+@Deprecated
public class OrderSearchParam extends StreamPageParam {
private static final long serialVersionUID = 5737520097455135218L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSettleInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSettleInfo.java
index bd31931444..0a06d9e57a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSettleInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSettleInfo.java
@@ -11,9 +11,11 @@
* 结算信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderSettleInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class OrderSettleInfo implements Serializable {
private static final long serialVersionUID = 2140632631448343656L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSharerInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSharerInfo.java
index 7ed41d2edf..75caf153b2 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSharerInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSharerInfo.java
@@ -11,9 +11,11 @@
* 分享信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderSharerInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class OrderSharerInfo implements Serializable {
private static final long serialVersionUID = 7183259072254660971L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSkuDeliverInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSkuDeliverInfo.java
index 6dd46c9a39..d1cf4d2713 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSkuDeliverInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSkuDeliverInfo.java
@@ -10,9 +10,11 @@
* 商品发货信息
*
* @author 北鹤M
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderSkuDeliverInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class OrderSkuDeliverInfo implements Serializable {
private static final long serialVersionUID = 4075897806362929800L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSkuShareInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSkuShareInfo.java
index 7912e53348..c4d5a59eef 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSkuShareInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSkuShareInfo.java
@@ -10,9 +10,11 @@
* Sku层分享信息
*
* @author 北鹤M
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderSkuShareInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class OrderSkuShareInfo implements Serializable {
private static final long serialVersionUID = 705312408112124476L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSourceInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSourceInfo.java
index 8d5e5aaef0..d3646307b7 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSourceInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/OrderSourceInfo.java
@@ -9,9 +9,11 @@
* 订单带货来源信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.OrderSourceInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class OrderSourceInfo implements Serializable {
private static final long serialVersionUID = 3131907659419977296L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PreShipmentChangeSkuRejectParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PreShipmentChangeSkuRejectParam.java
index cd26719e62..77bebf1339 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PreShipmentChangeSkuRejectParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PreShipmentChangeSkuRejectParam.java
@@ -12,11 +12,13 @@
* 拒绝待发货前更换SKU请求 请求参数
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.PreShipmentChangeSkuRejectParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class PreShipmentChangeSkuRejectParam implements Serializable {
private static final long serialVersionUID = 1L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PreShipmentChangeSkuResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PreShipmentChangeSkuResponse.java
index 5aff82bd07..5bb2a14f9f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PreShipmentChangeSkuResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PreShipmentChangeSkuResponse.java
@@ -10,10 +10,12 @@
* 获取待发货前更换SKU待处理请求 响应
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.PreShipmentChangeSkuResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class PreShipmentChangeSkuResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 1L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PresentNoteAddParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PresentNoteAddParam.java
index 1e0ea0e484..78c1541fe0 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PresentNoteAddParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PresentNoteAddParam.java
@@ -12,11 +12,13 @@
* 礼物订单新增备注信息 请求参数
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.PresentNoteAddParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class PresentNoteAddParam implements Serializable {
private static final long serialVersionUID = 1L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PresentSubOrderResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PresentSubOrderResponse.java
index f550a47a6d..1d77777e0a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PresentSubOrderResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PresentSubOrderResponse.java
@@ -11,10 +11,12 @@
* 获取礼物单的子单列表 响应
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.PresentSubOrderResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class PresentSubOrderResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 1L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PrivateNumberAddPhoneParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PrivateNumberAddPhoneParam.java
index ec0d558e57..971cc57a1f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PrivateNumberAddPhoneParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PrivateNumberAddPhoneParam.java
@@ -12,11 +12,13 @@
* 添加待认证手机号 请求参数
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.PrivateNumberAddPhoneParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class PrivateNumberAddPhoneParam implements Serializable {
private static final long serialVersionUID = 1L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PrivateNumberGetPhoneResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PrivateNumberGetPhoneResponse.java
index 4a531a1137..c96bc59b52 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PrivateNumberGetPhoneResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PrivateNumberGetPhoneResponse.java
@@ -11,10 +11,12 @@
* 获取小店手机号认证状态 响应
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.PrivateNumberGetPhoneResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class PrivateNumberGetPhoneResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 1L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PrivateNumberPhoneInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PrivateNumberPhoneInfo.java
index e0dda182d5..70bade5c15 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PrivateNumberPhoneInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PrivateNumberPhoneInfo.java
@@ -9,9 +9,11 @@
* 手机号认证信息
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.PrivateNumberPhoneInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class PrivateNumberPhoneInfo implements Serializable {
private static final long serialVersionUID = 1L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PrivateNumberSendVerifyCodeParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PrivateNumberSendVerifyCodeParam.java
index 0698d29a77..148b609eec 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PrivateNumberSendVerifyCodeParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/PrivateNumberSendVerifyCodeParam.java
@@ -12,11 +12,13 @@
* 获取短信验证码 请求参数
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.PrivateNumberSendVerifyCodeParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class PrivateNumberSendVerifyCodeParam implements Serializable {
private static final long serialVersionUID = 1L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/QualityInsepctInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/QualityInsepctInfo.java
index 64c1102bb2..496a6f163c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/QualityInsepctInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/QualityInsepctInfo.java
@@ -9,9 +9,11 @@
* 质检信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.QualityInsepctInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class QualityInsepctInfo implements Serializable {
private static final long serialVersionUID = 8109819414306253475L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/RealNumberViewAuditResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/RealNumberViewAuditResponse.java
index 4ffa77bce1..a741ba9d48 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/RealNumberViewAuditResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/RealNumberViewAuditResponse.java
@@ -10,10 +10,12 @@
* 查看订单真实号审核状态 响应
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.RealNumberViewAuditResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class RealNumberViewAuditResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 1L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/RechargeInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/RechargeInfo.java
index 452dd0677c..e79a8c2616 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/RechargeInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/RechargeInfo.java
@@ -9,9 +9,11 @@
* 虚拟商品充值账户信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.RechargeInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class RechargeInfo implements Serializable {
/** 虚拟商品充值账号,当account_type=qq或phone_number或mail的时候返回 */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/TelNumberExtInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/TelNumberExtInfo.java
index 1d9e8b7914..da33224c99 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/TelNumberExtInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/TelNumberExtInfo.java
@@ -7,8 +7,10 @@
* 联系方式信息
*
* @author imyzt
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.TelNumberExtInfo}。
*/
@Data
+@Deprecated
public class TelNumberExtInfo {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/VirtualNumberInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/VirtualNumberInfo.java
index 217908e27c..504dda40c2 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/VirtualNumberInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/VirtualNumberInfo.java
@@ -9,9 +9,11 @@
* 虚拟号信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.VirtualNumberInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class VirtualNumberInfo implements Serializable {
private static final long serialVersionUID = -372834823737476644L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/VirtualTelNumberResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/VirtualTelNumberResponse.java
index 92f09b59ab..c271315ed8 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/VirtualTelNumberResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/order/VirtualTelNumberResponse.java
@@ -10,10 +10,12 @@
* 兑换虚拟号 返回结果
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.order.VirtualTelNumberResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class VirtualTelNumberResponse extends WxChannelBaseResponse {
/** 虚拟号码 */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/AddProductThirdPartySourceParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/AddProductThirdPartySourceParam.java
index 6f258358b6..29cba6d5e1 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/AddProductThirdPartySourceParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/AddProductThirdPartySourceParam.java
@@ -5,8 +5,11 @@
import java.io.Serializable;
import lombok.Data;
-/** 新增第三方货源信息请求参数. */
+/** 新增第三方货源信息请求参数.
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.AddProductThirdPartySourceParam}。
+*/
@Data
+@Deprecated
public class AddProductThirdPartySourceParam implements Serializable {
private static final long serialVersionUID = -5784320217481497742L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/AddProductThirdPartySourceResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/AddProductThirdPartySourceResponse.java
index aec4cef996..d9709486da 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/AddProductThirdPartySourceResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/AddProductThirdPartySourceResponse.java
@@ -5,9 +5,12 @@
import lombok.EqualsAndHashCode;
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
-/** 新增第三方货源信息响应. */
+/** 新增第三方货源信息响应.
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.AddProductThirdPartySourceResponse}。
+*/
@Data
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class AddProductThirdPartySourceResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -7528226120383065861L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/AfterSaleInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/AfterSaleInfo.java
index 693ea68657..064237b6f2 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/AfterSaleInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/AfterSaleInfo.java
@@ -8,9 +8,11 @@
/**
* 商品售后信息
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.AfterSaleInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class AfterSaleInfo implements Serializable {
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/DescriptionInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/DescriptionInfo.java
index b97473e3d3..1e84d3587a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/DescriptionInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/DescriptionInfo.java
@@ -10,9 +10,11 @@
* 商品详情
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.DescriptionInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class DescriptionInfo implements Serializable {
private static final long serialVersionUID = 3402153796734747882L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExpressInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExpressInfo.java
index 0c21d9610e..4b85278cb5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExpressInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExpressInfo.java
@@ -10,10 +10,12 @@
* 运费信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ExpressInfo}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class ExpressInfo implements Serializable {
private static final long serialVersionUID = 3274035362148612426L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExternalProductMappingNewParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExternalProductMappingNewParam.java
index d78ac8d313..fbfb2511c6 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExternalProductMappingNewParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExternalProductMappingNewParam.java
@@ -5,8 +5,11 @@
import java.util.List;
import lombok.Data;
-/** 商品属性映射及推荐请求参数. */
+/** 商品属性映射及推荐请求参数.
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ExternalProductMappingNewParam}。
+*/
@Data
+@Deprecated
public class ExternalProductMappingNewParam implements Serializable {
private static final long serialVersionUID = -7982070319116550518L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExternalProductMappingNewResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExternalProductMappingNewResponse.java
index 8342071a4b..21f26e3406 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExternalProductMappingNewResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExternalProductMappingNewResponse.java
@@ -8,9 +8,12 @@
import lombok.EqualsAndHashCode;
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
-/** 商品属性映射及推荐响应. */
+/** 商品属性映射及推荐响应.
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ExternalProductMappingNewResponse}。
+*/
@Data
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class ExternalProductMappingNewResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 4536547956225312823L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExternalProductMappingParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExternalProductMappingParam.java
index 849ec64aed..a4ed9df310 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExternalProductMappingParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExternalProductMappingParam.java
@@ -4,8 +4,11 @@
import java.io.Serializable;
import lombok.Data;
-/** 站内外商品属性映射请求参数. */
+/** 站内外商品属性映射请求参数.
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ExternalProductMappingParam}。
+*/
@Data
+@Deprecated
public class ExternalProductMappingParam implements Serializable {
private static final long serialVersionUID = 3288069294712374035L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExternalProductMappingResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExternalProductMappingResponse.java
index 8899edcfdf..69426bf806 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExternalProductMappingResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExternalProductMappingResponse.java
@@ -6,9 +6,12 @@
import lombok.EqualsAndHashCode;
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
-/** 站内外商品属性映射响应. */
+/** 站内外商品属性映射响应.
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ExternalProductMappingResponse}。
+*/
@Data
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class ExternalProductMappingResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -8356596972896906087L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExtraServiceInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExtraServiceInfo.java
index 4e9559c565..14ca39b3d2 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExtraServiceInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ExtraServiceInfo.java
@@ -7,9 +7,11 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ExtraServiceInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class ExtraServiceInfo implements Serializable {
private static final long serialVersionUID = -5517806977282063174L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftActivityAddParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftActivityAddParam.java
index 89a226efc2..c3ffb6bb3c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftActivityAddParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftActivityAddParam.java
@@ -10,10 +10,12 @@
* 创建买赠活动参数
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.GiftActivityAddParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class GiftActivityAddParam implements Serializable {
private static final long serialVersionUID = -3332952823917162308L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftActivityAddResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftActivityAddResponse.java
index e8648246b5..0381abed34 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftActivityAddResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftActivityAddResponse.java
@@ -10,10 +10,12 @@
* 创建买赠活动响应
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.GiftActivityAddResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class GiftActivityAddResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -4527079816331082871L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftActivityInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftActivityInfo.java
index f185fe02bc..00da46652a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftActivityInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftActivityInfo.java
@@ -10,9 +10,11 @@
* 买赠活动信息
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.GiftActivityInfo}。
*/
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class GiftActivityInfo implements Serializable {
private static final long serialVersionUID = 3970308144375119175L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftProductAddResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftProductAddResponse.java
index 1548f2293f..2101f4630d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftProductAddResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftProductAddResponse.java
@@ -10,10 +10,12 @@
* 添加赠品响应
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.GiftProductAddResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class GiftProductAddResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -5971026809157610975L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftProductGetResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftProductGetResponse.java
index 07bb99004c..6398aa4e6f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftProductGetResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftProductGetResponse.java
@@ -10,10 +10,12 @@
* 赠品详情响应
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.GiftProductGetResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class GiftProductGetResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 5331169221157446692L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftProductInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftProductInfo.java
index 732d0b2c2d..f2fe5fb06f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftProductInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftProductInfo.java
@@ -4,7 +4,9 @@
* 赠品商品信息
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.GiftProductInfo}。
*/
+@Deprecated
public class GiftProductInfo extends SpuUpdateInfo {
private static final long serialVersionUID = -4366133550331058445L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftProductListParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftProductListParam.java
index 696e6fcc20..2df26e1307 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftProductListParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftProductListParam.java
@@ -9,9 +9,11 @@
* 赠品列表查询参数
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.GiftProductListParam}。
*/
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class GiftProductListParam extends StreamPageParam {
private static final long serialVersionUID = 7583500622060651067L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftProductListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftProductListResponse.java
index 21923b9fd3..21d7050589 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftProductListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/GiftProductListResponse.java
@@ -11,10 +11,12 @@
* 赠品列表响应
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.GiftProductListResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class GiftProductListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -2734111694780970778L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/LimitInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/LimitInfo.java
index 389773d5e7..063e3006ac 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/LimitInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/LimitInfo.java
@@ -10,10 +10,12 @@
* 限时购信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.LimitInfo}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class LimitInfo implements Serializable {
private static final long serialVersionUID = -4670198322237114719L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductAuditQuotaResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductAuditQuotaResponse.java
index 2f17d0e180..3870ea97a9 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductAuditQuotaResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductAuditQuotaResponse.java
@@ -6,9 +6,12 @@
import lombok.EqualsAndHashCode;
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
-/** 商品提审限额响应. */
+/** 商品提审限额响应.
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ProductAuditQuotaResponse}。
+*/
@Data
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class ProductAuditQuotaResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -6242837308752181147L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductAuditStrategyInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductAuditStrategyInfo.java
index 5bcdcacb84..047f4e46f6 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductAuditStrategyInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductAuditStrategyInfo.java
@@ -4,8 +4,11 @@
import java.io.Serializable;
import lombok.Data;
-/** 商品上架策略信息. */
+/** 商品上架策略信息.
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ProductAuditStrategyInfo}。
+*/
@Data
+@Deprecated
public class ProductAuditStrategyInfo implements Serializable {
private static final long serialVersionUID = -2747596416115475981L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductAuditStrategyResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductAuditStrategyResponse.java
index 92684bcba0..e89a6f9b7d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductAuditStrategyResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductAuditStrategyResponse.java
@@ -5,9 +5,12 @@
import lombok.EqualsAndHashCode;
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
-/** 商品上架策略响应. */
+/** 商品上架策略响应.
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ProductAuditStrategyResponse}。
+*/
@Data
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class ProductAuditStrategyResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -1074784511408331849L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductAuditStrategySetParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductAuditStrategySetParam.java
index b07ff314e5..708d55bc5d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductAuditStrategySetParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductAuditStrategySetParam.java
@@ -4,8 +4,11 @@
import java.io.Serializable;
import lombok.Data;
-/** 设置商品上架策略请求参数. */
+/** 设置商品上架策略请求参数.
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ProductAuditStrategySetParam}。
+*/
@Data
+@Deprecated
public class ProductAuditStrategySetParam implements Serializable {
private static final long serialVersionUID = 7542738744842032508L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductBrandRecommendParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductBrandRecommendParam.java
index 1fbdc0bb05..3b9c18e776 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductBrandRecommendParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductBrandRecommendParam.java
@@ -5,8 +5,11 @@
import java.util.List;
import lombok.Data;
-/** 商品品牌推荐请求参数. */
+/** 商品品牌推荐请求参数.
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ProductBrandRecommendParam}。
+*/
@Data
+@Deprecated
public class ProductBrandRecommendParam implements Serializable {
private static final long serialVersionUID = 6462717198206491138L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductBrandRecommendResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductBrandRecommendResponse.java
index 59344058f6..71fa9acfd5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductBrandRecommendResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductBrandRecommendResponse.java
@@ -5,9 +5,12 @@
import lombok.EqualsAndHashCode;
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
-/** 商品品牌推荐响应. */
+/** 商品品牌推荐响应.
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ProductBrandRecommendResponse}。
+*/
@Data
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class ProductBrandRecommendResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 4350605866373432810L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductCategoryClassifyParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductCategoryClassifyParam.java
index 2e0a452434..b6edd454e5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductCategoryClassifyParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductCategoryClassifyParam.java
@@ -5,8 +5,11 @@
import java.util.List;
import lombok.Data;
-/** 商品类目推荐请求参数. */
+/** 商品类目推荐请求参数.
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ProductCategoryClassifyParam}。
+*/
@Data
+@Deprecated
public class ProductCategoryClassifyParam implements Serializable {
private static final long serialVersionUID = 4665563979720739777L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductCategoryClassifyResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductCategoryClassifyResponse.java
index acf31b7f23..e8eaef31e8 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductCategoryClassifyResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductCategoryClassifyResponse.java
@@ -7,9 +7,12 @@
import lombok.EqualsAndHashCode;
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
-/** 商品类目推荐响应. */
+/** 商品类目推荐响应.
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ProductCategoryClassifyResponse}。
+*/
@Data
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class ProductCategoryClassifyResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 8258747142248203374L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductCategoryPreCheckParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductCategoryPreCheckParam.java
index aab6474724..6e6c19ef1a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductCategoryPreCheckParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductCategoryPreCheckParam.java
@@ -4,8 +4,11 @@
import java.io.Serializable;
import lombok.Data;
-/** 发品前校验请求参数. */
+/** 发品前校验请求参数.
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ProductCategoryPreCheckParam}。
+*/
@Data
+@Deprecated
public class ProductCategoryPreCheckParam implements Serializable {
private static final long serialVersionUID = 5155253060483296766L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductCategoryPreCheckResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductCategoryPreCheckResponse.java
index 42a8221a70..0f8963462f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductCategoryPreCheckResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductCategoryPreCheckResponse.java
@@ -6,9 +6,12 @@
import lombok.EqualsAndHashCode;
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
-/** 发品前校验响应. */
+/** 发品前校验响应.
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ProductCategoryPreCheckResponse}。
+*/
@Data
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class ProductCategoryPreCheckResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 7136603000806024499L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductQuaInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductQuaInfo.java
index b411ebe80f..210104e5a5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductQuaInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductQuaInfo.java
@@ -11,10 +11,12 @@
* 商品资质信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ProductQuaInfo}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class ProductQuaInfo implements Serializable {
private static final long serialVersionUID = -71766140204505768L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductSaleLimitInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductSaleLimitInfo.java
index 9c067cc329..ca03c62c37 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductSaleLimitInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductSaleLimitInfo.java
@@ -10,10 +10,12 @@
* 商品销售库存限制
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ProductSaleLimitInfo}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class ProductSaleLimitInfo implements Serializable {
/** 是否受到管控,商品存在售卖限制时,固定返回1 */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductSchemeParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductSchemeParam.java
index f63774c329..6f1916c2c1 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductSchemeParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductSchemeParam.java
@@ -4,8 +4,11 @@
import java.io.Serializable;
import lombok.Data;
-/** 获取商品移动应用跳转 scheme 码请求参数. */
+/** 获取商品移动应用跳转 scheme 码请求参数.
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ProductSchemeParam}。
+*/
@Data
+@Deprecated
public class ProductSchemeParam implements Serializable {
private static final long serialVersionUID = 613832623081127830L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductSchemeResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductSchemeResponse.java
index d44c6b4a13..873f743a68 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductSchemeResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductSchemeResponse.java
@@ -4,9 +4,12 @@
import lombok.EqualsAndHashCode;
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
-/** 获取商品移动应用跳转 scheme 码响应. */
+/** 获取商品移动应用跳转 scheme 码响应.
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ProductSchemeResponse}。
+*/
@Data
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class ProductSchemeResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 7310433919100539990L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductStockFlowParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductStockFlowParam.java
index 1354705bdb..5456a3084f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductStockFlowParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductStockFlowParam.java
@@ -5,8 +5,11 @@
import java.util.List;
import lombok.Data;
-/** 获取库存流水请求参数. */
+/** 获取库存流水请求参数.
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ProductStockFlowParam}。
+*/
@Data
+@Deprecated
public class ProductStockFlowParam implements Serializable {
private static final long serialVersionUID = -407227347279113050L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductStockFlowResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductStockFlowResponse.java
index d94df28e8e..36004a614e 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductStockFlowResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductStockFlowResponse.java
@@ -8,9 +8,12 @@
import lombok.EqualsAndHashCode;
import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse;
-/** 获取库存流水响应. */
+/** 获取库存流水响应.
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ProductStockFlowResponse}。
+*/
@Data
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class ProductStockFlowResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 7600529379926896515L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductTimingSaleParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductTimingSaleParam.java
index bb0e173965..c068ef2857 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductTimingSaleParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/ProductTimingSaleParam.java
@@ -4,8 +4,11 @@
import java.io.Serializable;
import lombok.Data;
-/** 商品立即开售请求参数. */
+/** 商品立即开售请求参数.
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.ProductTimingSaleParam}。
+*/
@Data
+@Deprecated
public class ProductTimingSaleParam implements Serializable {
private static final long serialVersionUID = -7185451543781817487L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuDeliverInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuDeliverInfo.java
index d1f10dc5f8..b61a15cf4e 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuDeliverInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuDeliverInfo.java
@@ -9,9 +9,11 @@
* sku发货信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.SkuDeliverInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class SkuDeliverInfo implements Serializable {
private static final long serialVersionUID = 8046963723772755406L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuFastInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuFastInfo.java
index b37dfe472c..0cdd42f40c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuFastInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuFastInfo.java
@@ -10,10 +10,12 @@
* 免审商品更新Sku数据
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.SkuFastInfo}。
*/
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class SkuFastInfo implements Serializable {
/** sku_id */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuInfo.java
index 956b188c22..f5a6d5a4bd 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuInfo.java
@@ -10,8 +10,10 @@
* SKU信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.SkuInfo}。
*/
@Data
+@Deprecated
public class SkuInfo implements Serializable {
private static final long serialVersionUID = -8734396136299597845L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockBatchList.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockBatchList.java
index 71f995692f..d7b32dbb0b 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockBatchList.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockBatchList.java
@@ -10,9 +10,11 @@
* spu库存列表
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.SkuStockBatchList}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class SkuStockBatchList implements Serializable {
private static final long serialVersionUID = -8082428962162052815L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockBatchParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockBatchParam.java
index 93b5cca798..619fb684ef 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockBatchParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockBatchParam.java
@@ -10,10 +10,12 @@
/**
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.SkuStockBatchParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class SkuStockBatchParam implements Serializable {
private static final long serialVersionUID = 3706326762056220559L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockBatchResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockBatchResponse.java
index eb188bdc79..17758700ad 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockBatchResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockBatchResponse.java
@@ -10,10 +10,12 @@
* 批量查询sku库存响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.SkuStockBatchResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class SkuStockBatchResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 7745444061881828137L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockInfo.java
index a480d3249b..188345a669 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockInfo.java
@@ -10,9 +10,11 @@
* 商品库存
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.SkuStockInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class SkuStockInfo implements Serializable {
private static final long serialVersionUID = 4719729125885685958L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockParam.java
index cf7374e75e..1fec8b0466 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockParam.java
@@ -8,10 +8,12 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.SkuStockParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class SkuStockParam implements Serializable {
private static final long serialVersionUID = -5542939078361208816L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockResponse.java
index 683aece146..6a18d017e4 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SkuStockResponse.java
@@ -10,10 +10,12 @@
* 库存信息响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.SkuStockResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class SkuStockResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -2156342792354605826L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuCategory.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuCategory.java
index 8adc311f95..0b09b17b36 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuCategory.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuCategory.java
@@ -9,9 +9,11 @@
* 商品类目id
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.SpuCategory}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class SpuCategory implements Serializable {
private static final long serialVersionUID = -8500610555473351789L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuFastInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuFastInfo.java
index 23b1135ba5..c477490fad 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuFastInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuFastInfo.java
@@ -11,10 +11,12 @@
* 商品免审更新参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.SpuFastInfo}。
*/
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class SpuFastInfo implements Serializable {
/** 商品ID */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuGetResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuGetResponse.java
index ff15cbf0cb..7a417fc537 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuGetResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuGetResponse.java
@@ -10,10 +10,12 @@
* 商品信息 响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.SpuGetResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class SpuGetResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -8955745006296226140L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuInfo.java
index 9b2224db94..e39cf91698 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuInfo.java
@@ -13,10 +13,12 @@
* Spu信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.SpuInfo}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class SpuInfo extends SpuSimpleInfo {
private static final long serialVersionUID = -1183209029245287297L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuListParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuListParam.java
index 775bdf990d..52dbb363c9 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuListParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuListParam.java
@@ -10,9 +10,11 @@
* 商品列表查询参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.SpuListParam}。
*/
@Data
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class SpuListParam extends StreamPageParam {
private static final long serialVersionUID = -242932365961748404L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuListResponse.java
index 421725c04b..7ee387d62c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuListResponse.java
@@ -11,10 +11,12 @@
* 商品列表信息 响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.SpuListResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class SpuListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -7448819335418389308L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuSimpleInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuSimpleInfo.java
index 3e84bb1492..388f68861f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuSimpleInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuSimpleInfo.java
@@ -8,9 +8,11 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.SpuSimpleInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class SpuSimpleInfo implements Serializable {
private static final long serialVersionUID = 5583726432139404883L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuSizeChart.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuSizeChart.java
index 4e34ccfac8..1af8f68341 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuSizeChart.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuSizeChart.java
@@ -10,9 +10,11 @@
* 尺码表信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.SpuSizeChart}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class SpuSizeChart implements Serializable {
private static final long serialVersionUID = -5019617420608575610L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuSizeChartItem.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuSizeChartItem.java
index 7ea4d0a66b..230a672e3c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuSizeChartItem.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuSizeChartItem.java
@@ -10,9 +10,11 @@
* 尺码表
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.SpuSizeChartItem}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class SpuSizeChartItem implements Serializable {
private static final long serialVersionUID = -3757716378584654974L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuStockInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuStockInfo.java
index 4564f069b8..7215e236da 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuStockInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuStockInfo.java
@@ -10,9 +10,11 @@
* SPU库存信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.SpuStockInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class SpuStockInfo implements Serializable {
/** 商品ID */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuUpdateInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuUpdateInfo.java
index f6214c5d78..cd64813030 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuUpdateInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuUpdateInfo.java
@@ -10,11 +10,13 @@
* 商品更新数据
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.SpuUpdateInfo}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class SpuUpdateInfo extends SpuInfo {
/** 添加完成后是否立即上架。1:是;0:否;默认0 */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuUpdateResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuUpdateResponse.java
index 815ee4412c..9b65abd91d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuUpdateResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/SpuUpdateResponse.java
@@ -10,10 +10,12 @@
* 商品信息 响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.SpuUpdateResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class SpuUpdateResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -7072796795527767292L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/TimingOnSaleInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/TimingOnSaleInfo.java
index 29270d426c..042cf028a5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/TimingOnSaleInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/TimingOnSaleInfo.java
@@ -11,10 +11,12 @@
* 商品待开售信息
*
* @author chu
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.TimingOnSaleInfo}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class TimingOnSaleInfo implements Serializable {
/** 状态枚举 0-没有待开售;1-待开售 */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/WarehouseStockInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/WarehouseStockInfo.java
index b0235534bb..5621084fde 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/WarehouseStockInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/WarehouseStockInfo.java
@@ -9,9 +9,11 @@
* 区域库存
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.WarehouseStockInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class WarehouseStockInfo implements Serializable {
private static final long serialVersionUID = 3184902895765107425L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/BeginTimingSaleParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/BeginTimingSaleParam.java
index 2a624ec434..782758c6ce 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/BeginTimingSaleParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/BeginTimingSaleParam.java
@@ -7,9 +7,11 @@
/**
* 商品立即开售参数。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.assistant.BeginTimingSaleParam}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class BeginTimingSaleParam implements Serializable {
private static final long serialVersionUID = -1525220756273987016L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/CancelTimingSaleParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/CancelTimingSaleParam.java
index 25980a1489..3a0570f6d2 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/CancelTimingSaleParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/CancelTimingSaleParam.java
@@ -7,9 +7,11 @@
/**
* 取消商品开售参数。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.assistant.CancelTimingSaleParam}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class CancelTimingSaleParam implements Serializable {
private static final long serialVersionUID = -3750831026611057323L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/CategoryPreCheckParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/CategoryPreCheckParam.java
index ee93066660..40316cf440 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/CategoryPreCheckParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/CategoryPreCheckParam.java
@@ -7,9 +7,11 @@
/**
* 发品前校验参数。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.assistant.CategoryPreCheckParam}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class CategoryPreCheckParam implements Serializable {
private static final long serialVersionUID = 3616569394767815856L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/CategoryPreCheckResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/CategoryPreCheckResponse.java
index 8559f2b0e2..bc50e54add 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/CategoryPreCheckResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/CategoryPreCheckResponse.java
@@ -9,10 +9,12 @@
/**
* 发品前校验响应。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.assistant.CategoryPreCheckResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class CategoryPreCheckResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 8912798390684239592L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ExternalAttribute.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ExternalAttribute.java
index e173a85d02..b01cf6e1c6 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ExternalAttribute.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ExternalAttribute.java
@@ -7,9 +7,11 @@
/**
* 商品属性键值对。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.assistant.ExternalAttribute}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class ExternalAttribute implements Serializable {
private static final long serialVersionUID = -8639178782951125101L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ExternalProductMappingNewParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ExternalProductMappingNewParam.java
index 89e0be65cd..dc0720187d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ExternalProductMappingNewParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ExternalProductMappingNewParam.java
@@ -8,9 +8,11 @@
/**
* 商品属性映射及推荐参数。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.assistant.ExternalProductMappingNewParam}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class ExternalProductMappingNewParam implements Serializable {
private static final long serialVersionUID = -4942505655791636645L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ExternalProductMappingNewResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ExternalProductMappingNewResponse.java
index 87b09e03b4..800babe05a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ExternalProductMappingNewResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ExternalProductMappingNewResponse.java
@@ -9,10 +9,12 @@
/**
* 商品属性映射及推荐响应。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.assistant.ExternalProductMappingNewResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class ExternalProductMappingNewResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -6192580254142696913L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ExternalProductMappingParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ExternalProductMappingParam.java
index c31e0f0f2d..50ad9e4649 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ExternalProductMappingParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ExternalProductMappingParam.java
@@ -7,9 +7,11 @@
/**
* 站内外商品属性映射参数。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.assistant.ExternalProductMappingParam}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class ExternalProductMappingParam implements Serializable {
private static final long serialVersionUID = 1944528166283981889L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ExternalProductMappingResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ExternalProductMappingResponse.java
index e97d4a94d0..6f36b8ed1d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ExternalProductMappingResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ExternalProductMappingResponse.java
@@ -9,10 +9,12 @@
/**
* 站内外商品属性映射响应。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.assistant.ExternalProductMappingResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class ExternalProductMappingResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -2267639791023044849L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ProductBrandRecommendParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ProductBrandRecommendParam.java
index 36a47bfc40..78ed7f7c48 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ProductBrandRecommendParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ProductBrandRecommendParam.java
@@ -8,9 +8,11 @@
/**
* 商品品牌推荐参数。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.assistant.ProductBrandRecommendParam}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class ProductBrandRecommendParam implements Serializable {
private static final long serialVersionUID = 4516219198778673928L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ProductBrandRecommendResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ProductBrandRecommendResponse.java
index b7c0081085..9fe72c3596 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ProductBrandRecommendResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/assistant/ProductBrandRecommendResponse.java
@@ -8,10 +8,12 @@
/**
* 商品品牌推荐响应。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.assistant.ProductBrandRecommendResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class ProductBrandRecommendResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -7903894941180639923L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/link/ProductH5UrlResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/link/ProductH5UrlResponse.java
index 0dee49f165..b2c1a73993 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/link/ProductH5UrlResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/link/ProductH5UrlResponse.java
@@ -10,10 +10,12 @@
* 商品H5短链 结果
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.link.ProductH5UrlResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class ProductH5UrlResponse extends WxChannelBaseResponse {
/** 商品H5短链 */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/link/ProductQrCodeResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/link/ProductQrCodeResponse.java
index a6876b78f1..14964145fb 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/link/ProductQrCodeResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/link/ProductQrCodeResponse.java
@@ -10,10 +10,12 @@
* 商品二维码 结果
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.link.ProductQrCodeResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class ProductQrCodeResponse extends WxChannelBaseResponse {
/** 商品二维码 */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/link/ProductTagLinkResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/link/ProductTagLinkResponse.java
index 59712130d8..e315468fdc 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/link/ProductTagLinkResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/link/ProductTagLinkResponse.java
@@ -10,10 +10,12 @@
* 商品口令 结果
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.link.ProductTagLinkResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class ProductTagLinkResponse extends WxChannelBaseResponse {
/** 商品口令 */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/stock/StockFlowExtInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/stock/StockFlowExtInfo.java
index c08e35c477..7b556ab785 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/stock/StockFlowExtInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/stock/StockFlowExtInfo.java
@@ -7,9 +7,11 @@
/**
* 库存流水额外信息。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.stock.StockFlowExtInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class StockFlowExtInfo implements Serializable {
private static final long serialVersionUID = 1170328051641116647L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/stock/StockFlowInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/stock/StockFlowInfo.java
index a15b0018ea..bf4ca89a14 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/stock/StockFlowInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/stock/StockFlowInfo.java
@@ -7,9 +7,11 @@
/**
* 库存流水信息。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.stock.StockFlowInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class StockFlowInfo implements Serializable {
private static final long serialVersionUID = 4094168882102603379L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/stock/StockFlowParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/stock/StockFlowParam.java
index cacd2ca3e6..ec61666cdc 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/stock/StockFlowParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/stock/StockFlowParam.java
@@ -8,9 +8,11 @@
/**
* 获取库存流水请求参数。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.stock.StockFlowParam}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class StockFlowParam implements Serializable {
private static final long serialVersionUID = -7882480822919984178L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/stock/StockFlowResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/stock/StockFlowResponse.java
index 4f779b64ab..ba1598eb63 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/stock/StockFlowResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/product/stock/StockFlowResponse.java
@@ -10,10 +10,12 @@
/**
* 获取库存流水响应。
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.product.stock.StockFlowResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class StockFlowResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -7420844779570799705L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/qic/InspectCodeResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/qic/InspectCodeResponse.java
index 63ee4f0e88..f98510d7e4 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/qic/InspectCodeResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/qic/InspectCodeResponse.java
@@ -9,9 +9,13 @@
import java.io.Serializable;
import java.util.List;
+/**
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.qic.InspectCodeResponse}。
+ */
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class InspectCodeResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -6242555695898612990L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/qic/InspectConfigResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/qic/InspectConfigResponse.java
index b2aa17d6ca..7b5ccb917d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/qic/InspectConfigResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/qic/InspectConfigResponse.java
@@ -8,9 +8,13 @@
import java.io.Serializable;
+/**
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.qic.InspectConfigResponse}。
+ */
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class InspectConfigResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 6463651966377955876L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/qic/RegisterLogisticsRequest.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/qic/RegisterLogisticsRequest.java
index 37932c2153..ade0b05b67 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/qic/RegisterLogisticsRequest.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/qic/RegisterLogisticsRequest.java
@@ -8,9 +8,13 @@
import java.io.Serializable;
import java.util.List;
+/**
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.qic.RegisterLogisticsRequest}。
+ */
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class RegisterLogisticsRequest implements Serializable {
private static final long serialVersionUID = 4346443649534209624L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/qic/SubmitConfigResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/qic/SubmitConfigResponse.java
index 8fdc691d50..5d3706f5d1 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/qic/SubmitConfigResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/qic/SubmitConfigResponse.java
@@ -9,9 +9,13 @@
import java.io.Serializable;
import java.util.List;
+/**
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.qic.SubmitConfigResponse}。
+ */
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class SubmitConfigResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 2456553692263326158L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/qic/SubmitInspectRequest.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/qic/SubmitInspectRequest.java
index 4382298c00..90daf16e9d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/qic/SubmitInspectRequest.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/qic/SubmitInspectRequest.java
@@ -7,9 +7,13 @@
import java.io.Serializable;
+/**
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.qic.SubmitInspectRequest}。
+ */
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class SubmitInspectRequest implements Serializable {
private static final long serialVersionUID = 6396115469552098613L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/FinderSceneInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/FinderSceneInfo.java
index 76d54d90c9..f9ad50d455 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/FinderSceneInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/FinderSceneInfo.java
@@ -9,9 +9,11 @@
* 视频号场景信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.sharer.FinderSceneInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class FinderSceneInfo implements Serializable {
private static final long serialVersionUID = 5298261857489231549L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerBindResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerBindResponse.java
index 4a0f8f2bb4..13b3d99117 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerBindResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerBindResponse.java
@@ -10,10 +10,12 @@
* 分享员绑定响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.sharer.SharerBindResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class SharerBindResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 7078787380791500161L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerInfo.java
index 73aaeddbd4..8754282aba 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerInfo.java
@@ -10,9 +10,11 @@
* 分享员信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.sharer.SharerInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class SharerInfo implements Serializable {
private static final long serialVersionUID = -4373597470611742887L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerInfoResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerInfoResponse.java
index 554109c1a9..576fc68b23 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerInfoResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerInfoResponse.java
@@ -11,10 +11,12 @@
* 分享员信息响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.sharer.SharerInfoResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class SharerInfoResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 1090517907546557929L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerListParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerListParam.java
index 97ab2797b8..2175ea377e 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerListParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerListParam.java
@@ -9,10 +9,12 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.sharer.SharerListParam}。
*/
@Data
@EqualsAndHashCode(callSuper = true)
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class SharerListParam extends PageParam {
private static final long serialVersionUID = -2454284952706596246L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerOrder.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerOrder.java
index 682753e64f..b0f0dbda15 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerOrder.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerOrder.java
@@ -9,9 +9,11 @@
* 分享员订单
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.sharer.SharerOrder}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class SharerOrder implements Serializable {
private static final long serialVersionUID = 1528673402572025670L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerOrderParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerOrderParam.java
index 5ada6e3bcf..0bf4b9a59e 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerOrderParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerOrderParam.java
@@ -10,11 +10,13 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.sharer.SharerOrderParam}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class SharerOrderParam extends PageParam {
private static final long serialVersionUID = 5240085870008898601L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerOrderResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerOrderResponse.java
index c84da4114b..4443f9c3b6 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerOrderResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerOrderResponse.java
@@ -11,10 +11,12 @@
* 分享员订单响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.sharer.SharerOrderResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class SharerOrderResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 2807417719466178508L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerSearchParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerSearchParam.java
index a2669775cb..776cfa8416 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerSearchParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerSearchParam.java
@@ -8,9 +8,11 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.sharer.SharerSearchParam}。
*/
@Data
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class SharerSearchParam implements Serializable {
private static final long serialVersionUID = -6763899740755735718L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerSearchResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerSearchResponse.java
index 52631521df..e6ff8f1280 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerSearchResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerSearchResponse.java
@@ -10,10 +10,12 @@
* 分享员绑定响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.sharer.SharerSearchResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class SharerSearchResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -5346019069466917659L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerUnbindParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerUnbindParam.java
index cd8f21d409..3461a09e8a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerUnbindParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerUnbindParam.java
@@ -11,11 +11,13 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.sharer.SharerUnbindParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class SharerUnbindParam implements Serializable {
private static final long serialVersionUID = -4515654492511136037L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerUnbindResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerUnbindResponse.java
index 9166bc0b58..61b11b2451 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerUnbindResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/sharer/SharerUnbindResponse.java
@@ -11,10 +11,12 @@
* 分享员解绑响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.sharer.SharerUnbindResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class SharerUnbindResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -2395560383862569445L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopH5UrlResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopH5UrlResponse.java
index 5700073c05..e134b4d35d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopH5UrlResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopH5UrlResponse.java
@@ -10,10 +10,12 @@
* 店铺H5链接 响应
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.shop.ShopH5UrlResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class ShopH5UrlResponse extends WxChannelBaseResponse {
/** 店铺H5链接 */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopInfo.java
index 12b4c684c6..c615834402 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopInfo.java
@@ -9,9 +9,11 @@
* 店铺信息
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.shop.ShopInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class ShopInfo implements Serializable {
/** 店铺名称 */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopInfoResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopInfoResponse.java
index b4317ad3c0..f80c670031 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopInfoResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopInfoResponse.java
@@ -9,9 +9,11 @@
* 店铺基本信息响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.shop.ShopInfoResponse}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class ShopInfoResponse extends WxChannelBaseResponse {
@JsonProperty("info")
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopQrCodeResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopQrCodeResponse.java
index 1859f2e3f4..891ff294f7 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopQrCodeResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopQrCodeResponse.java
@@ -10,10 +10,12 @@
* 店铺二维码 响应
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.shop.ShopQrCodeResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class ShopQrCodeResponse extends WxChannelBaseResponse {
/** 店铺二维码链接 */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopTagLinkResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopTagLinkResponse.java
index 8b82d21106..3e97172bb9 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopTagLinkResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopTagLinkResponse.java
@@ -10,10 +10,12 @@
* 店铺口令 响应
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.shop.ShopTagLinkResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class ShopTagLinkResponse extends WxChannelBaseResponse {
/** 店铺微信口令 */
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DistributeTypeResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DistributeTypeResponse.java
index 3537892b12..addfffa6ce 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DistributeTypeResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DistributeTypeResponse.java
@@ -10,10 +10,12 @@
* 分配方式响应。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.supplier.DistributeTypeResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class DistributeTypeResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -750860556286328053L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipAssignRequest.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipAssignRequest.java
index 3fa3904a57..a3446de13b 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipAssignRequest.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipAssignRequest.java
@@ -10,10 +10,12 @@
* 代发单分配请求。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.supplier.DropshipAssignRequest}。
*/
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class DropshipAssignRequest implements Serializable {
private static final long serialVersionUID = 6945436332042017565L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipDetailResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipDetailResponse.java
index a2cd0f983e..83f2ea9c7f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipDetailResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipDetailResponse.java
@@ -10,10 +10,12 @@
* 代发单详情响应。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.supplier.DropshipDetailResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class DropshipDetailResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 5548774863400272707L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipInfo.java
index b2a0594073..40cff87fa8 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipInfo.java
@@ -10,10 +10,12 @@
* 代发单信息。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.supplier.DropshipInfo}。
*/
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class DropshipInfo implements Serializable {
private static final long serialVersionUID = -7880364210849039278L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipListRequest.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipListRequest.java
index ad89ad7cd5..a56c31af63 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipListRequest.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipListRequest.java
@@ -10,10 +10,12 @@
* 代发单列表请求。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.supplier.DropshipListRequest}。
*/
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class DropshipListRequest implements Serializable {
private static final long serialVersionUID = 2638071229335192596L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipListResponse.java
index 2665f8ef15..feb2f3b52f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipListResponse.java
@@ -11,10 +11,12 @@
* 代发单列表响应。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.supplier.DropshipListResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class DropshipListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -2850183412032417307L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipResponse.java
index 65a529e865..21076e6967 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipResponse.java
@@ -10,10 +10,12 @@
* 代发单分配响应。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.supplier.DropshipResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class DropshipResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 4376618566823584629L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipSearchRequest.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipSearchRequest.java
index c658a3c16d..e5c8e7b93f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipSearchRequest.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/DropshipSearchRequest.java
@@ -10,11 +10,13 @@
* 代发单搜索请求。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.supplier.DropshipSearchRequest}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class DropshipSearchRequest extends DropshipListRequest {
private static final long serialVersionUID = 3915264648809784742L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/ProductDistributeRequest.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/ProductDistributeRequest.java
index c1018d2255..cf45096e22 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/ProductDistributeRequest.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/ProductDistributeRequest.java
@@ -11,10 +11,12 @@
* 按商品自动分配请求。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.supplier.ProductDistributeRequest}。
*/
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class ProductDistributeRequest implements Serializable {
private static final long serialVersionUID = 4201609097231290078L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/ProductListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/ProductListResponse.java
index f585ab0969..6fbd16d974 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/ProductListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/ProductListResponse.java
@@ -12,10 +12,12 @@
* 按商品自动分配商品列表响应。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.supplier.ProductListResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class ProductListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -7096250227033388295L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/SupplierInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/SupplierInfo.java
index 0944107c19..b05701eace 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/SupplierInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/SupplierInfo.java
@@ -10,10 +10,12 @@
* 供货商信息。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.supplier.SupplierInfo}。
*/
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class SupplierInfo implements Serializable {
private static final long serialVersionUID = -6480813119738259476L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/SupplierInfoResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/SupplierInfoResponse.java
index 7f138a5929..e84cf9e495 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/SupplierInfoResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/SupplierInfoResponse.java
@@ -10,10 +10,12 @@
* 供货商信息响应。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.supplier.SupplierInfoResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class SupplierInfoResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -3071464065836573893L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/SupplierListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/SupplierListResponse.java
index 6bab0615a7..a09043ba6f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/SupplierListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/supplier/SupplierListResponse.java
@@ -11,10 +11,12 @@
* 供货商列表响应。
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.supplier.SupplierListResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class SupplierListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -692609589633695295L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentOrderDetailParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentOrderDetailParam.java
index 8f37fa0eb2..d75a7eb9d9 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentOrderDetailParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentOrderDetailParam.java
@@ -10,10 +10,12 @@
* 带货助手-获取佣金单详情 请求参数
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.talent.TalentOrderDetailParam}。
*/
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class TalentOrderDetailParam implements Serializable {
private static final long serialVersionUID = 8741285036412736219L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentOrderDetailResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentOrderDetailResponse.java
index 1e0f2d2c28..2aac1293a5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentOrderDetailResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentOrderDetailResponse.java
@@ -11,10 +11,12 @@
* 带货助手-获取佣金单详情 响应
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.talent.TalentOrderDetailResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class TalentOrderDetailResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 2174806923145876312L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentOrderListParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentOrderListParam.java
index a780d92be5..db14ea041b 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentOrderListParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentOrderListParam.java
@@ -10,10 +10,12 @@
* 带货助手-获取佣金单列表 请求参数
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.talent.TalentOrderListParam}。
*/
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class TalentOrderListParam implements Serializable {
private static final long serialVersionUID = -6218342185316399261L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentOrderListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentOrderListResponse.java
index 8393ba656a..e0ba1880ab 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentOrderListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentOrderListResponse.java
@@ -12,10 +12,12 @@
* 带货助手-获取佣金单列表 响应
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.talent.TalentOrderListResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class TalentOrderListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 3541802319654186172L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentWindowProductDetailParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentWindowProductDetailParam.java
index 5f7bca423e..3ff6575e8f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentWindowProductDetailParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentWindowProductDetailParam.java
@@ -10,10 +10,12 @@
* 带货助手-获取达人橱窗商品详情 请求参数
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.talent.TalentWindowProductDetailParam}。
*/
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class TalentWindowProductDetailParam implements Serializable {
private static final long serialVersionUID = 3849271605183749261L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentWindowProductDetailResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentWindowProductDetailResponse.java
index c41f2f1de5..3f7802ff2c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentWindowProductDetailResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentWindowProductDetailResponse.java
@@ -11,10 +11,12 @@
* 带货助手-获取达人橱窗商品详情 响应
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.talent.TalentWindowProductDetailResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class TalentWindowProductDetailResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 1634829710537264918L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentWindowProductListParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentWindowProductListParam.java
index bb6e77bb7f..cfd2c87b30 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentWindowProductListParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentWindowProductListParam.java
@@ -10,10 +10,12 @@
* 带货助手-获取达人橱窗商品列表 请求参数
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.talent.TalentWindowProductListParam}。
*/
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class TalentWindowProductListParam implements Serializable {
private static final long serialVersionUID = 7419836250174638291L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentWindowProductListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentWindowProductListResponse.java
index 5c90977a05..5eb0c48f3b 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentWindowProductListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/talent/TalentWindowProductListResponse.java
@@ -12,10 +12,12 @@
* 带货助手-获取达人橱窗商品列表 响应
*
* @author GitHub Copilot
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.talent.TalentWindowProductListResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class TalentWindowProductListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 8263047195826340712L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/token/StableTokenParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/token/StableTokenParam.java
index 8bcacb649b..ef29b9e0d9 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/token/StableTokenParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/token/StableTokenParam.java
@@ -12,11 +12,13 @@
* 稳定版access_token,请求参数
*
* @author asushiye
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.token.StableTokenParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class StableTokenParam implements Serializable {
private static final long serialVersionUID = 6849364823232834171L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/ScoreInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/ScoreInfo.java
index ac2d2f9763..016eee01cd 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/ScoreInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/ScoreInfo.java
@@ -11,9 +11,11 @@
*
* @author asushiye
*
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.vip.ScoreInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class ScoreInfo implements Serializable {
private static final long serialVersionUID = -3290653233070826576L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/UserGradeInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/UserGradeInfo.java
index b015773480..7054795645 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/UserGradeInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/UserGradeInfo.java
@@ -11,9 +11,11 @@
*
* @author asushiye
*
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.vip.UserGradeInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class UserGradeInfo implements Serializable {
private static final long serialVersionUID = -8040963202754069865L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/UserInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/UserInfo.java
index 1104d532f1..39a7f56157 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/UserInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/UserInfo.java
@@ -11,9 +11,11 @@
*
* @author asushiye
*
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.vip.UserInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class UserInfo implements Serializable {
private static final long serialVersionUID = 8523354700203385190L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipGradeParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipGradeParam.java
index 5f5004f35c..178ad35c20 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipGradeParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipGradeParam.java
@@ -12,12 +12,14 @@
* @author : zhenyun.su
* @since : 2023/10/8
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.vip.VipGradeParam}。
*/
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@AllArgsConstructor
+@Deprecated
public class VipGradeParam implements Serializable {
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipInfo.java
index 64eafbc3a4..05e7156f05 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipInfo.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipInfo.java
@@ -22,9 +22,11 @@
* "experience_value": "100"
* }
* }
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.vip.VipInfo}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class VipInfo implements Serializable {
private static final long serialVersionUID = -215590991862774701L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipInfoParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipInfoParam.java
index 09c28f5510..bc36c52522 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipInfoParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipInfoParam.java
@@ -11,12 +11,14 @@
/**
* @author : zhenyun.su
* @since : 2023/10/8
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.vip.VipInfoParam}。
*/
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@AllArgsConstructor
+@Deprecated
public class VipInfoParam implements Serializable {
private static final long serialVersionUID = -4196252299609288196L;
@JsonProperty("openid")
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipInfoResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipInfoResponse.java
index 3411eef038..921cb0bf77 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipInfoResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipInfoResponse.java
@@ -8,10 +8,12 @@
/**
* @author : zhenyun.su
* @since : 2023/10/8
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.vip.VipInfoResponse}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class VipInfoResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -2439510304690862381L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipListParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipListParam.java
index d23c41fcd5..246451355b 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipListParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipListParam.java
@@ -11,12 +11,14 @@
/**
* @author : zhenyun.su
* @since : 2023/10/8
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.vip.VipListParam}。
*/
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@AllArgsConstructor
+@Deprecated
public class VipListParam implements Serializable {
private static final long serialVersionUID = 7503422865410116202L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipListResponse.java
index 0e213f8d19..a1ef9a0401 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipListResponse.java
@@ -10,10 +10,12 @@
/**
* @author : zhenyun.su
* @since : 2023/10/8
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.vip.VipListResponse}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class VipListResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -8127372979925053579L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipOpenIdParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipOpenIdParam.java
index 8f52ded878..b83b6424db 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipOpenIdParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipOpenIdParam.java
@@ -11,12 +11,14 @@
/**
* @author : zhenyun.su
* @since : 2023/10/8
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.vip.VipOpenIdParam}。
*/
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@AllArgsConstructor
+@Deprecated
public class VipOpenIdParam implements Serializable {
private static final long serialVersionUID = -7924178026258012317L;
@JsonProperty("openid")
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipScoreParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipScoreParam.java
index 51b679f393..31ce81d3a6 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipScoreParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipScoreParam.java
@@ -17,12 +17,14 @@
* "remark": "备注",
* "request_id": "REQUEST_ID"
* }
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.vip.VipScoreParam}。
*/
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@AllArgsConstructor
+@Deprecated
public class VipScoreParam implements Serializable {
private static final long serialVersionUID = -4122983978977407168L;
@JsonProperty("openid")
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipScoreResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipScoreResponse.java
index da356db74f..feb1a5e7eb 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipScoreResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/vip/VipScoreResponse.java
@@ -8,10 +8,12 @@
/**
* @author : zhenyun.su
* @since : 2023/10/8
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.vip.VipScoreResponse}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class VipScoreResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -7252972818862693546L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/LocationPriorityResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/LocationPriorityResponse.java
index 5959cb746d..c880f95d6e 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/LocationPriorityResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/LocationPriorityResponse.java
@@ -11,10 +11,12 @@
* 仓库优先级响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.warehouse.LocationPriorityResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class LocationPriorityResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = -4037484169497319150L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/PriorityLocationParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/PriorityLocationParam.java
index 0b304487a7..8b10224743 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/PriorityLocationParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/PriorityLocationParam.java
@@ -10,10 +10,12 @@
* 带优先级的仓库区域
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.warehouse.PriorityLocationParam}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class PriorityLocationParam extends WarehouseLocation {
private static final long serialVersionUID = -3087702364669180903L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/StockGetParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/StockGetParam.java
index 99e00a4801..992f69b1d5 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/StockGetParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/StockGetParam.java
@@ -8,10 +8,12 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.warehouse.StockGetParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class StockGetParam implements Serializable {
private static final long serialVersionUID = -4144913434092446664L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/UpdateLocationParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/UpdateLocationParam.java
index 5b71c0a4b4..acb803886f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/UpdateLocationParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/UpdateLocationParam.java
@@ -11,10 +11,12 @@
* 仓库区域
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.warehouse.UpdateLocationParam}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class UpdateLocationParam implements Serializable {
private static final long serialVersionUID = 6102771485047925091L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/Warehouse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/Warehouse.java
index 7ca07e637f..966c34bbc4 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/Warehouse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/Warehouse.java
@@ -10,9 +10,11 @@
* 仓库
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.warehouse.Warehouse}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class Warehouse implements Serializable {
private static final long serialVersionUID = -2322154583471063637L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseIdsResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseIdsResponse.java
index 57c989a56b..8f0b7c11bc 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseIdsResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseIdsResponse.java
@@ -11,9 +11,11 @@
* 仓库id列表响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.warehouse.WarehouseIdsResponse}。
*/
@Data
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class WarehouseIdsResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 3974529583232187473L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseLocation.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseLocation.java
index 33309522bb..e7a3fe4a73 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseLocation.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseLocation.java
@@ -10,10 +10,12 @@
* 仓库区域
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.warehouse.WarehouseLocation}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Deprecated
public class WarehouseLocation implements Serializable {
private static final long serialVersionUID = 1626579682640060352L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseLocationParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseLocationParam.java
index 2b64e55dea..7041c7117b 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseLocationParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseLocationParam.java
@@ -6,9 +6,11 @@
/**
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.warehouse.WarehouseLocationParam}。
*/
@Data
@JsonInclude(Include.NON_NULL)
+@Deprecated
public class WarehouseLocationParam extends WarehouseLocation {
private static final long serialVersionUID = 3347484433136057123L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseParam.java
index 77ac1a8134..945d0ae22f 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseParam.java
@@ -9,11 +9,13 @@
* 仓库
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.warehouse.WarehouseParam}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class WarehouseParam extends Warehouse {
private static final long serialVersionUID = -3412047348380785225L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseResponse.java
index fa96771d67..d1fefff56a 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseResponse.java
@@ -9,9 +9,11 @@
* 仓库响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.warehouse.WarehouseResponse}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class WarehouseResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 3206095869486573824L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseStockParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseStockParam.java
index 5a4354504d..27ecec523c 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseStockParam.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseStockParam.java
@@ -9,9 +9,11 @@
* 库存参数
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.warehouse.WarehouseStockParam}。
*/
@Data
@NoArgsConstructor
+@Deprecated
public class WarehouseStockParam extends SkuStockParam {
private static final long serialVersionUID = -5121207621628542490L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseStockResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseStockResponse.java
index 64d0d2b5b0..28de28565d 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseStockResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/warehouse/WarehouseStockResponse.java
@@ -9,8 +9,10 @@
* 仓库库存响应
*
* @author Zeyes
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.warehouse.WarehouseStockResponse}。
*/
@Data
+@Deprecated
public class WarehouseStockResponse extends WxChannelBaseResponse {
private static final long serialVersionUID = 1810645965041317763L;
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/window/request/AddWindowProductRequest.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/window/request/AddWindowProductRequest.java
index b069826d17..f877b52aed 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/window/request/AddWindowProductRequest.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/window/request/AddWindowProductRequest.java
@@ -11,11 +11,13 @@
* 上架商品到橱窗
* @author imyzt
* @date 2024/01/27
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.window.request.AddWindowProductRequest}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class AddWindowProductRequest {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/window/request/GetWindowProductListRequest.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/window/request/GetWindowProductListRequest.java
index 9558f784f8..8ecd3cbe9b 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/window/request/GetWindowProductListRequest.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/window/request/GetWindowProductListRequest.java
@@ -11,11 +11,13 @@
* 获取账号收集的留资数据详情
* @author imyzt
* @date 2024/01/27
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.window.request.GetWindowProductListRequest}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class GetWindowProductListRequest {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/window/request/WindowProductRequest.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/window/request/WindowProductRequest.java
index dc68c12df3..d248d117d3 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/window/request/WindowProductRequest.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/window/request/WindowProductRequest.java
@@ -11,11 +11,13 @@
* 橱窗商品
* @author imyzt
* @date 2024/01/27
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.window.request.WindowProductRequest}。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
+@Deprecated
public class WindowProductRequest {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/window/response/GetWindowProductListResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/window/response/GetWindowProductListResponse.java
index de81e0f3a8..f0609f1d77 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/window/response/GetWindowProductListResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/window/response/GetWindowProductListResponse.java
@@ -13,10 +13,12 @@
* 获取账号收集的留资数据详情
* @author imyzt
* @date 2024/01/27
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.window.response.GetWindowProductListResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class GetWindowProductListResponse extends WxChannelBaseResponse {
/**
diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/window/response/GetWindowProductResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/window/response/GetWindowProductResponse.java
index 9127ee9856..d33715e3d1 100644
--- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/window/response/GetWindowProductResponse.java
+++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/window/response/GetWindowProductResponse.java
@@ -11,10 +11,12 @@
* 获取橱窗商品详情
* @author imyzt
* @date 2024/01/27
+ * @deprecated 请迁移至 {@link com.binarywang.wxjava.store.bean.window.response.GetWindowProductResponse}。
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@Deprecated
public class GetWindowProductResponse extends WxChannelBaseResponse {
/**
diff --git a/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/WxChannelStoreCompatibilityTest.java b/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/WxChannelStoreCompatibilityTest.java
new file mode 100644
index 0000000000..22de36f993
--- /dev/null
+++ b/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/WxChannelStoreCompatibilityTest.java
@@ -0,0 +1,29 @@
+package me.chanjar.weixin.channel.api;
+
+import java.lang.reflect.Method;
+import me.chanjar.weixin.channel.bean.address.AddressAddParam;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+/**
+ * Verifies that the store split keeps the legacy channel API available for existing consumers.
+ */
+public class WxChannelStoreCompatibilityTest {
+
+ @Test
+ public void shouldKeepLegacyStoreApisAndModelsDeprecated() throws NoSuchMethodException {
+ Method productService = WxChannelService.class.getMethod("getProductService");
+
+ Assert.assertEquals(productService.getReturnType(), WxChannelProductService.class);
+ Assert.assertTrue(productService.isAnnotationPresent(Deprecated.class));
+ Assert.assertTrue(AddressAddParam.class.isAnnotationPresent(Deprecated.class));
+ }
+
+ @Test
+ public void shouldKeepChannelOnlyApisAvailableWithoutDeprecation() throws NoSuchMethodException {
+ Method finderLiveService = WxChannelService.class.getMethod("getFinderLiveService");
+
+ Assert.assertEquals(finderLiveService.getReturnType(), WxFinderLiveService.class);
+ Assert.assertFalse(finderLiveService.isAnnotationPresent(Deprecated.class));
+ }
+}
diff --git a/weixin-java-channel/src/test/resources/testng.xml b/weixin-java-channel/src/test/resources/testng.xml
index 579acb3252..0552b4dbc5 100644
--- a/weixin-java-channel/src/test/resources/testng.xml
+++ b/weixin-java-channel/src/test/resources/testng.xml
@@ -4,6 +4,7 @@
+
diff --git a/weixin-java-store/pom.xml b/weixin-java-store/pom.xml
new file mode 100644
index 0000000000..76df7eb5b8
--- /dev/null
+++ b/weixin-java-store/pom.xml
@@ -0,0 +1,130 @@
+
+
+ 4.0.0
+
+ com.github.binarywang
+ wx-java
+ 4.8.6.B
+
+
+ weixin-java-store
+ WxJava - Weixin Store Java SDK
+ 微信小店 Java SDK
+
+
+
+ com.github.binarywang
+ weixin-java-common
+ ${project.version}
+
+
+ org.jodd
+ jodd-http
+ provided
+
+
+ org.apache.httpcomponents
+ httpclient
+
+
+ org.apache.httpcomponents
+ httpmime
+
+
+ org.apache.httpcomponents.client5
+ httpclient5
+ provided
+
+
+ com.fasterxml.jackson.core
+ jackson-core
+ 2.18.8
+
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+ 2.18.8
+
+
+ com.fasterxml.jackson.dataformat
+ jackson-dataformat-xml
+ 2.18.8
+ true
+
+
+ org.bouncycastle
+ bcpkix-jdk18on
+
+
+ org.projectlombok
+ lombok
+
+
+ org.redisson
+ redisson
+
+
+ com.squareup.okhttp3
+ okhttp
+ provided
+
+
+ org.testng
+ testng
+ test
+
+
+ org.mockito
+ mockito-core
+ test
+
+
+ ch.qos.logback
+ logback-classic
+ test
+
+
+ com.google.inject
+ guice
+ test
+
+
+ org.eclipse.jetty
+ jetty-server
+ test
+
+
+ org.eclipse.jetty
+ jetty-servlet
+ test
+
+
+ org.assertj
+ assertj-guava
+ test
+
+
+ redis.clients
+ jedis
+
+
+ com.github.jedis-lock
+ jedis-lock
+ true
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ ${maven.test.skip}
+
+
+
+
+
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/BaseWxStoreMessageService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/BaseWxStoreMessageService.java
new file mode 100644
index 0000000000..65d2887015
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/BaseWxStoreMessageService.java
@@ -0,0 +1,540 @@
+package com.binarywang.wxjava.store.api;
+
+import java.util.Map;
+import com.binarywang.wxjava.store.bean.message.after.AfterSaleMessage;
+import com.binarywang.wxjava.store.bean.message.after.ComplaintMessage;
+import com.binarywang.wxjava.store.bean.message.coupon.CouponActionMessage;
+import com.binarywang.wxjava.store.bean.message.coupon.CouponReceiveMessage;
+import com.binarywang.wxjava.store.bean.message.coupon.UserCouponExpireMessage;
+import com.binarywang.wxjava.store.bean.message.fund.AccountNotifyMessage;
+import com.binarywang.wxjava.store.bean.message.fund.QrNotifyMessage;
+import com.binarywang.wxjava.store.bean.message.fund.WithdrawNotifyMessage;
+import com.binarywang.wxjava.store.bean.message.order.OrderCancelMessage;
+import com.binarywang.wxjava.store.bean.message.order.OrderConfirmMessage;
+import com.binarywang.wxjava.store.bean.message.order.OrderDeliveryMessage;
+import com.binarywang.wxjava.store.bean.message.order.OrderExtMessage;
+import com.binarywang.wxjava.store.bean.message.order.OrderIdMessage;
+import com.binarywang.wxjava.store.bean.message.order.OrderPayMessage;
+import com.binarywang.wxjava.store.bean.message.order.OrderSettleMessage;
+import com.binarywang.wxjava.store.bean.message.order.OrderStatusMessage;
+import com.binarywang.wxjava.store.bean.message.product.BrandMessage;
+import com.binarywang.wxjava.store.bean.message.product.CategoryAuditMessage;
+import com.binarywang.wxjava.store.bean.message.product.SpuAuditMessage;
+import com.binarywang.wxjava.store.bean.message.product.SpuStockMessage;
+import com.binarywang.wxjava.store.bean.message.store.CloseStoreMessage;
+import com.binarywang.wxjava.store.bean.message.store.NicknameUpdateMessage;
+import com.binarywang.wxjava.store.bean.message.supplier.SupplierItemMessage;
+import com.binarywang.wxjava.store.bean.message.vip.ExchangeInfoMessage;
+import com.binarywang.wxjava.store.bean.message.vip.UserInfoMessage;
+import com.binarywang.wxjava.store.bean.message.voucher.VoucherMessage;
+import com.binarywang.wxjava.store.message.WxStoreMessage;
+import com.binarywang.wxjava.store.message.WxStoreMessageRouterRule;
+import me.chanjar.weixin.common.session.WxSessionManager;
+
+/**
+ * @author Zeyes
+ */
+public interface BaseWxStoreMessageService {
+
+ /**
+ * 路由微信消息
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param service 服务实例
+ * @return Object
+ */
+ Object route(final WxStoreMessage message, final String content, final String appId,
+ final WxStoreService service);
+
+ /**
+ * 添加一条规则进入路由器
+ *
+ * @param rule 规则
+ */
+ void addRule(WxStoreMessageRouterRule extends WxStoreMessage> rule);
+
+ /**
+ * 订单下单
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void orderNew(final OrderIdMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 订单取消
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void orderCancel(OrderCancelMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 订单支付成功
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void orderPay(OrderPayMessage message, final String content, final String appId, final Map context,
+ final WxSessionManager sessionManager);
+
+ /**
+ * 订单待发货
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void orderWaitShipping(OrderIdMessage message, final String content, final String appId, final Map context,
+ final WxSessionManager sessionManager);
+
+ /**
+ * 订单发货
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void orderDelivery(OrderDeliveryMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 订单确认收货
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void orderConfirm(OrderConfirmMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 订单结算成功
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void orderSettle(OrderSettleMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 订单其他信息更新
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void orderExtInfoUpdate(OrderExtMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 订单状态更新
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void orderStatusUpdate(OrderStatusMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 商品审核结果
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void spuAudit(SpuAuditMessage message, final String content, final String appId, final Map context,
+ final WxSessionManager sessionManager);
+
+ /**
+ * 商品系统下架通知
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void spuStatusUpdate(SpuAuditMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 商品更新通知
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void spuUpdate(SpuAuditMessage message, final String content, final String appId, final Map context,
+ final WxSessionManager sessionManager);
+
+ /**
+ * 商品库存不足通知
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void stockNoEnough(SpuStockMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 类目审核结果
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void categoryAudit(CategoryAuditMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 品牌更新
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void brandUpdate(BrandMessage message, final String content, final String appId, final Map context,
+ final WxSessionManager sessionManager);
+
+ /**
+ * 售后单状态更新
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void afterSaleStatusUpdate(AfterSaleMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 纠纷回调
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void complaintNotify(ComplaintMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 用户领券通知
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void couponReceive(CouponReceiveMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 创建优惠券通知
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void couponCreate(CouponActionMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 优惠券删除通知
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void couponDelete(CouponActionMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 优惠券过期通知
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void couponExpire(CouponActionMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 更新优惠券信息通知
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void couponUpdate(CouponActionMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 优惠券作废通知
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void couponInvalid(CouponActionMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 用户优惠券过期通知
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void userCouponExpire(UserCouponExpireMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 用户优惠券使用通知
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void userCouponUse(UserCouponExpireMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 用户优惠券返还通知
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void userCouponUnuse(UserCouponExpireMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 发放团购优惠成功回调
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void voucherSendSucc(VoucherMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+ /**
+ * 结算账户变更回调
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void accountNotify(AccountNotifyMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 提现回调
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void withdrawNotify(WithdrawNotifyMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 提现二维码回调
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void qrNotify(QrNotifyMessage message, final String content, final String appId, final Map context,
+ final WxSessionManager sessionManager);
+
+ /**
+ * 团长商品变更
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void supplierItemUpdate(SupplierItemMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+
+ /**
+ * 用户加入会员.
+ *
+ * @param message the message
+ * @param content the content
+ * @param appId the app id
+ * @param context the context
+ * @param sessionManager the session manager
+ */
+ public void vipJoin(UserInfoMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 用户注销会员.
+ *
+ * @param message the message
+ * @param content the content
+ * @param appId the app id
+ * @param context the context
+ * @param sessionManager the session manager
+ */
+ void vipClose(UserInfoMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 用户等级更新.
+ *
+ * @param message the message
+ * @param content the content
+ * @param appId the app id
+ * @param context the context
+ * @param sessionManager the session manager
+ */
+ void vipGradeUpdate(UserInfoMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 用户积分更新.
+ *
+ * @param message the message
+ * @param content the content
+ * @param appId the app id
+ * @param context the context
+ * @param sessionManager the session manager
+ */
+ void vipScoreUpdate(UserInfoMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 用户积分兑换
+ *
+ * @param message the message
+ * @param content the content
+ * @param appId the app id
+ * @param context the context
+ * @param sessionManager the session manager
+ */
+ void vipScoreExchange(ExchangeInfoMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 小店注销
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void closeStore(CloseStoreMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+
+ /**
+ * 小店修改名称
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ */
+ void updateNickname(NicknameUpdateMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+ /**
+ * 默认消息处理
+ *
+ * @param message 消息
+ * @param content 消息原始内容
+ * @param appId appId
+ * @param context 上下文
+ * @param sessionManager session管理器
+ * @return Object
+ */
+ Object defaultMessageHandler(WxStoreMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+
+
+ /**
+ * 分享员变更
+ *
+ * @param message the message
+ * @param content the content
+ * @param appId the app id
+ * @param context the context
+ * @param sessionManager the session manager
+ */
+ void sharerChange(WxStoreMessage message, final String content, final String appId,
+ final Map context, final WxSessionManager sessionManager);
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/BaseWxStoreService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/BaseWxStoreService.java
new file mode 100644
index 0000000000..4574e4cf57
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/BaseWxStoreService.java
@@ -0,0 +1,135 @@
+package com.binarywang.wxjava.store.api;
+
+import com.binarywang.wxjava.store.config.WxStoreConfig;
+import me.chanjar.weixin.common.error.WxErrorException;
+import me.chanjar.weixin.common.service.WxService;
+import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor;
+import me.chanjar.weixin.common.util.http.RequestExecutor;
+import me.chanjar.weixin.common.util.http.RequestHttp;
+
+/**
+ * The interface Wx Store service
+ *
+ * @author Zeyes
+ */
+public interface BaseWxStoreService extends WxService {
+
+ /**
+ *
+ * 验证消息的确来自微信服务器.
+ * 详情请见: http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319&token=&lang=zh_CN
+ *
+ *
+ * @param timestamp the timestamp
+ * @param nonce the nonce
+ * @param signature the signature
+ * @return the boolean
+ */
+ boolean checkSignature(String timestamp, String nonce, String signature);
+
+ /**
+ * 获取access_token, 不强制刷新access_token.
+ *
+ * @return the access token
+ *
+ * @throws WxErrorException the wx error exception
+ * @see #getAccessToken(boolean) #getAccessToken(boolean)
+ */
+ String getAccessToken() throws WxErrorException;
+
+ /**
+ *
+ * 获取access_token,本方法线程安全.
+ * 且在多线程同时刷新时只刷新一次,避免超出2000次/日的调用次数上限
+ * 使用【稳定版接口】获取access_token时,限制【20次/日】,连续使用该模式时,请保证调用时间隔至少为30s,否则不会刷新
+ *
+ * 程序员在非必要情况下尽量不要主动调用此方法
+ *
+ * 详情请见: http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183&token=&lang=zh_CN
+ *
+ *
+ * @param forceRefresh 强制刷新
+ * @return the access token
+ *
+ * @throws WxErrorException the wx error exception
+ */
+ String getAccessToken(boolean forceRefresh) throws WxErrorException;
+
+ /**
+ *
+ * Service没有实现某个API的时候,可以用这个,
+ * 比{@link #get}和{@link #post}方法更灵活,可以自己构造RequestExecutor用来处理不同的参数和不同的返回类型。
+ * 可以参考,{@link MediaUploadRequestExecutor}的实现方法
+ *
+ *
+ * @param .
+ * @param .
+ * @param executor 执行器
+ * @param uri 接口请求地址
+ * @param data 参数或请求数据
+ * @return . t
+ *
+ * @throws WxErrorException the wx error exception
+ */
+ T execute(RequestExecutor executor, String uri, E data) throws WxErrorException;
+
+ /**
+ * 执行器
+ *
+ * @param .
+ * @param .
+ * @param executor 执行器
+ * @param uri 接口请求地址
+ * @param data 参数或请求数据
+ * @return T
+ *
+ * @throws WxErrorException the wx error exception
+ */
+ T executeWithoutLog(RequestExecutor executor, String uri, E data) throws WxErrorException;
+
+ /**
+ *
+ * 设置当微信系统响应系统繁忙时,要等待多少 retrySleepMillis(ms) * 2^(重试次数 - 1) 再发起重试.
+ * 默认:1000ms
+ *
+ *
+ * @param retrySleepMillis 重试等待毫秒数
+ */
+ void setRetrySleepMillis(int retrySleepMillis);
+
+ /**
+ *
+ * 设置当微信系统响应系统繁忙时,最大重试次数.
+ * 默认:5次
+ *
+ *
+ * @param maxRetryTimes 最大重试次数
+ */
+ void setMaxRetryTimes(int maxRetryTimes);
+
+ /**
+ * WxStoreConfig对象
+ *
+ * @return WxMaConfig WxStoreConfig
+ */
+ WxStoreConfig getConfig();
+
+ /**
+ * 注入 {@link WxStoreConfig} 的实现.
+ *
+ * @param config config
+ */
+ void setConfig(WxStoreConfig config);
+
+ /**
+ * 初始化http请求对象.
+ */
+ void initHttp();
+
+ /**
+ * 请求http请求相关信息.
+ *
+ * @return . request http
+ */
+ RequestHttp, ?> getRequestHttp();
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreAddressService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreAddressService.java
new file mode 100644
index 0000000000..10968c73b5
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreAddressService.java
@@ -0,0 +1,68 @@
+package com.binarywang.wxjava.store.api;
+
+
+import com.binarywang.wxjava.store.bean.address.AddressDetail;
+import com.binarywang.wxjava.store.bean.address.AddressIdResponse;
+import com.binarywang.wxjava.store.bean.address.AddressInfoResponse;
+import com.binarywang.wxjava.store.bean.address.AddressListResponse;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 地址管理服务
+ *
+ * @author Zeyes
+ */
+public interface WxStoreAddressService {
+
+ /**
+ * 获取地址列表
+ *
+ * @param offset 起始位置
+ * @param limit 拉取个数
+ * @return 列表
+ *
+ * @throws WxErrorException 异常
+ */
+ AddressListResponse listAddress(Integer offset, Integer limit) throws WxErrorException;
+
+ /**
+ * 获取地址详情
+ *
+ * @param addressId 地址id
+ * @return 地址详情
+ *
+ * @throws WxErrorException 异常
+ */
+ AddressInfoResponse getAddress(String addressId) throws WxErrorException;
+
+ /**
+ * 添加地址
+ *
+ * @param addressDetail 地址
+ * @return AddressIdResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ AddressIdResponse addAddress(AddressDetail addressDetail) throws WxErrorException;
+
+ /**
+ * 更新地址
+ *
+ * @param addressDetail 地址
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse updateAddress(AddressDetail addressDetail) throws WxErrorException;
+
+ /**
+ * 删除地址
+ *
+ * @param addressId 地址id
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse deleteAddress(String addressId) throws WxErrorException;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreAfterSaleService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreAfterSaleService.java
new file mode 100644
index 0000000000..e6a6b4969f
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreAfterSaleService.java
@@ -0,0 +1,274 @@
+package com.binarywang.wxjava.store.api;
+
+
+import java.util.List;
+
+import com.binarywang.wxjava.store.bean.after.*;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.complaint.ComplaintOrderResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 售后服务接口
+ *
+ * @author Zeyes
+ */
+public interface WxStoreAfterSaleService {
+
+ /**
+ * 获取售后单列表
+ *
+ * @param beginCreateTime 订单创建启始时间 unix时间戳
+ * @param endCreateTime 订单创建结束时间,end_create_time减去begin_create_time不得大于24小时
+ * @param nextKey 翻页参数,从第二页开始传,来源于上一页的返回值
+ * @return 售后单列表
+ *
+ * @throws WxErrorException 异常
+ * @deprecated 使用 {@link WxStoreAfterSaleService#listIds(AfterSaleListParam)}
+ */
+ @Deprecated
+ AfterSaleListResponse listIds(Long beginCreateTime, Long endCreateTime, String nextKey)
+ throws WxErrorException;
+
+ /**
+ * 获取售后单列表
+ *
+ * @param param 参数
+ * @return 售后单列表
+ *
+ * @throws WxErrorException 异常
+ */
+ AfterSaleListResponse listIds(AfterSaleListParam param) throws WxErrorException;
+
+ /**
+ * 获取售后单详情
+ *
+ * @param afterSaleOrderId 售后单号
+ * @return 售后单信息
+ *
+ * @throws WxErrorException 异常
+ */
+ AfterSaleInfoResponse get(String afterSaleOrderId) throws WxErrorException;
+
+ /**
+ * 同意售后
+ * 文档地址 https://developers.weixin.qq.com/doc/channels/API/aftersale/acceptapply.html
+ *
+ * @param afterSaleOrderId 售后单号
+ * @param addressId 同意退货时传入地址id
+ * @param acceptType 1. 同意退货退款,并通知用户退货; 2. 确认收到货并退款给用户。 如果不填则将根据当前的售后单状态自动选择相应操作。对于仅退款的情况,由于只存在一种同意的场景,无需填写此字段。
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse accept(String afterSaleOrderId, String addressId, Integer acceptType) throws WxErrorException;
+
+ /**
+ * 拒绝售后
+ * 文档地址 https://developers.weixin.qq.com/doc/channels/API/aftersale/rejectapply.html
+ *
+ * @param afterSaleOrderId 售后单号
+ * @param rejectReason 拒绝原因
+ * @param rejectReasonType 拒绝原因枚举值
+ * @see #getRejectReason()
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse reject(String afterSaleOrderId, String rejectReason, Integer rejectReasonType) throws WxErrorException;
+
+ /**
+ * 拒绝售后(支持拒绝凭证)
+ * 文档地址 https://developers.weixin.qq.com/doc/channels/API/aftersale/rejectapply.html
+ *
+ * @param afterSaleOrderId 售后单号
+ * @param rejectReason 拒绝原因
+ * @param rejectReasonType 拒绝原因枚举值
+ * @param rejectCertificates 拒绝凭证图片列表,可使用图片上传接口获取media_id
+ * @see #getRejectReason()
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse reject(String afterSaleOrderId, String rejectReason, Integer rejectReasonType,
+ List rejectCertificates) throws WxErrorException;
+
+ /**
+ * 上传退款凭证
+ *
+ * @param afterSaleOrderId 售后单号
+ * @param desc 退款凭证描述
+ * @param certificates 退款凭证图片列表
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse uploadRefundEvidence(String afterSaleOrderId, String desc, List certificates)
+ throws WxErrorException;
+
+ /**
+ * 商家补充纠纷单留言
+ *
+ * @param complaintId 纠纷单号
+ * @param content 留言内容,最多500字
+ * @param mediaIds 图片media_id列表,所有留言总图片数量最多20张
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse addComplaintMaterial(String complaintId, String content, List mediaIds)
+ throws WxErrorException;
+
+ /**
+ * 商家举证
+ *
+ * @param complaintId 纠纷单号
+ * @param content 举证内容,最多500字
+ * @param mediaIds 图片media_id列表,所有留言总图片数量最多20张
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse addComplaintEvidence(String complaintId, String content, List mediaIds)
+ throws WxErrorException;
+
+ /**
+ * 获取纠纷单
+ *
+ * @param complaintId 纠纷单号
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ ComplaintOrderResponse getComplaint(String complaintId) throws WxErrorException;
+
+
+ /**
+ * 获取全量售后原因
+ * 文档地址:https://developers.weixin.qq.com/doc/channels/API/aftersale/getaftersalereason.html
+ *
+ * @return 售后原因
+ *
+ * @throws WxErrorException 异常
+ */
+ AfterSaleReasonResponse getAllReason() throws WxErrorException;
+
+ /**
+ * 获取拒绝售后原因
+ * 文档地址:https://developers.weixin.qq.com/doc/channels/API/aftersale/getrejectreason.html
+ *
+ * @return 拒绝售后原因
+ *
+ * @throws WxErrorException 异常
+ */
+ AfterSaleRejectReasonResponse getRejectReason() throws WxErrorException;
+
+ /**
+ * 换货发货
+ * 文档地址:https://developers.weixin.qq.com/doc/store/shop/API/channels-shop-aftersale/api_acceptexchangereship.html
+ *
+ * @param afterSaleOrderId 售后单号
+ * @param waybillId 快递单号
+ * @param deliveryId 快递公司id
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse acceptExchangeReship(String afterSaleOrderId, String waybillId, String deliveryId) throws WxErrorException;
+
+ /**
+ * 换货拒绝发货
+ * 文档地址:https://developers.weixin.qq.com/doc/store/shop/API/channels-shop-aftersale/api_rejectexchangereship.html
+ *
+ * @param afterSaleOrderId 售后单号
+ * @param rejectReason 拒绝原因具体描述 ,可使用默认描述,也可以自定义描述
+ * @param rejectReasonType 拒绝原因枚举值
+ * @param rejectCertificates 退款凭证,可使用图片上传接口获取media_id(数据类型填0)
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse rejectExchangeReship(String afterSaleOrderId, String rejectReason, Integer rejectReasonType, List rejectCertificates) throws WxErrorException;
+
+ /**
+ * 商家协商
+ * 文档地址:https://developers.weixin.qq.com/doc/store/shop/API/channels-shop-aftersale/api_merchantupdateaftersale.html
+ * @param param 参数
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse merchantUpdateAfterSale(AfterSaleMerchantUpdateParam param) throws WxErrorException;
+
+ /**
+ * 获取保障单列表。
+ * 文档地址:https://developers.weixin.qq.com/doc/channels/API/channels-shop-aftersale/guarantee/api_searchguaranteeorder
+ *
+ * @param param 查询参数
+ * @return 保障单列表
+ * @throws WxErrorException 异常
+ */
+ default GuaranteeOrderListResponse listGuaranteeOrder(GuaranteeOrderListParam param) throws WxErrorException {
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * 获取保障单详情。
+ * 文档地址:https://developers.weixin.qq.com/doc/channels/API/channels-shop-aftersale/guarantee/api_getguaranteeorder
+ *
+ * @param guaranteeOrderId 保障单号
+ * @return 保障单详情
+ * @throws WxErrorException 异常
+ */
+ default GuaranteeOrderInfoResponse getGuaranteeOrder(String guaranteeOrderId) throws WxErrorException {
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * 同意保障单申请。
+ * 文档地址:https://developers.weixin.qq.com/doc/channels/API/channels-shop-aftersale/guarantee/api_merchantacceptguarantee
+ *
+ * @param guaranteeOrderId 保障单号
+ * @return 响应结果
+ * @throws WxErrorException 异常
+ */
+ default WxStoreBaseResponse acceptGuarantee(String guaranteeOrderId) throws WxErrorException {
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * 商家协商保障单。
+ * 文档地址:https://developers.weixin.qq.com/doc/channels/API/channels-shop-aftersale/guarantee/api_merchantmodifyguarantee
+ *
+ * @param request 协商参数
+ * @return 响应结果
+ * @throws WxErrorException 异常
+ */
+ default WxStoreBaseResponse modifyGuarantee(GuaranteeModifyRequest request) throws WxErrorException {
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * 商家举证保障单。
+ * 文档地址:https://developers.weixin.qq.com/doc/channels/API/channels-shop-aftersale/guarantee/api_merchantproofguarantee
+ *
+ * @param request 举证参数
+ * @return 响应结果
+ * @throws WxErrorException 异常
+ */
+ default WxStoreBaseResponse proofGuarantee(GuaranteeProofRequest request) throws WxErrorException {
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * 拒绝保障单申请。
+ * 文档地址:https://developers.weixin.qq.com/doc/channels/API/channels-shop-aftersale/guarantee/api_merchantrefuseguarantee
+ *
+ * @param request 拒绝参数
+ * @return 响应结果
+ * @throws WxErrorException 异常
+ */
+ default WxStoreBaseResponse refuseGuarantee(GuaranteeRefuseRequest request) throws WxErrorException {
+ throw new UnsupportedOperationException();
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreBasicService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreBasicService.java
new file mode 100644
index 0000000000..6210a9acbe
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreBasicService.java
@@ -0,0 +1,102 @@
+package com.binarywang.wxjava.store.api;
+
+import java.io.File;
+import com.binarywang.wxjava.store.bean.address.AddressCodeResponse;
+import com.binarywang.wxjava.store.bean.image.StoreImageInfo;
+import com.binarywang.wxjava.store.bean.image.StoreImageResponse;
+import com.binarywang.wxjava.store.bean.image.QualificationFileResponse;
+import com.binarywang.wxjava.store.bean.shop.ShopH5UrlResponse;
+import com.binarywang.wxjava.store.bean.shop.ShopInfoResponse;
+import com.binarywang.wxjava.store.bean.shop.ShopQrCodeResponse;
+import com.binarywang.wxjava.store.bean.shop.ShopTagLinkResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 基础接口
+ *
+ * @author Zeyes
+ */
+public interface WxStoreBasicService {
+
+ /**
+ * 获取店铺基本信息
+ *
+ * @return 店铺基本信息
+ */
+ ShopInfoResponse getShopInfo() throws WxErrorException;
+
+ /**
+ * 获取店铺H5链接
+ *
+ * @return 店铺H5链接
+ * @throws WxErrorException 异常
+ */
+ ShopH5UrlResponse getShopH5Url() throws WxErrorException;
+
+ /**
+ * 获取店铺二维码
+ *
+ * @param qrcodeType 二维码类型,1:二维码;2:标准物料;3:送礼物物料
+ * @return 店铺二维码
+ * @throws WxErrorException 异常
+ */
+ ShopQrCodeResponse getShopQrCode(int qrcodeType) throws WxErrorException;
+
+ /**
+ * 获取店铺口令
+ *
+ * @return 店铺口令
+ * @throws WxErrorException 异常
+ */
+ ShopTagLinkResponse getShopTagLink() throws WxErrorException;
+
+ /**
+ * 上传图片
+ *
+ * @param respType 0:media_id和pay_media_id;1:图片链接(商品信息相关图片请务必使用此参数得到链接)
+ * @param imgUrl 图片url
+ * @return 图片信息
+ *
+ * @throws WxErrorException 异常
+ */
+ StoreImageInfo uploadImg(int respType, String imgUrl) throws WxErrorException;
+
+ /**
+ * 上传图片
+ *
+ * @param respType 0:media_id和pay_media_id;1:图片链接(商品信息相关图片请务必使用此参数得到链接)
+ * @param file 图片文件
+ * @param height 图片的高,单位:像素
+ * @param width 图片的宽,单位:像素
+ * @return 图片信息
+ *
+ * @throws WxErrorException 异常
+ */
+ StoreImageInfo uploadImg(int respType, File file, int height, int width) throws WxErrorException;
+
+ /**
+ * 上传资质图片
+ *
+ * @param file 资质图片
+ * @return 结果
+ *
+ * @throws WxErrorException 异常
+ */
+ QualificationFileResponse uploadQualificationFile(File file) throws WxErrorException;
+
+ /**
+ * 根据media_id获取图片
+ *
+ * @param mediaId media_id
+ * @return 图片下载结果;调用方使用完 {@link StoreImageResponse#getFile()} 后必须删除该临时文件
+ */
+ StoreImageResponse getImg(String mediaId) throws WxErrorException;
+
+ /**
+ * 获取地址编码(最多获取4级)
+ *
+ * @param code 地址行政编码,不填或者填0时,拉取全国的省级行政编码
+ * @return AddressCodeResponse
+ */
+ AddressCodeResponse getAddressCode(Integer code) throws WxErrorException;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreBrandService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreBrandService.java
new file mode 100644
index 0000000000..e356f84da3
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreBrandService.java
@@ -0,0 +1,103 @@
+package com.binarywang.wxjava.store.api;
+
+
+import com.binarywang.wxjava.store.bean.audit.AuditApplyResponse;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.brand.Brand;
+import com.binarywang.wxjava.store.bean.brand.BrandApplyListResponse;
+import com.binarywang.wxjava.store.bean.brand.BrandInfoResponse;
+import com.binarywang.wxjava.store.bean.brand.BrandListResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 品牌服务接口
+ *
+ * @author Zeyes
+ */
+public interface WxStoreBrandService {
+
+ /**
+ * 获取品牌库列表
+ *
+ * @param pageSize 每页数量(默认10, 不超过50)
+ * @param nextKey 由上次请求返回, 记录翻页的上下文, 传入时会从上次返回的结果往后翻一页, 不传默认拉取第一页数据
+ * @return 品牌库列表
+ *
+ * @throws WxErrorException 异常
+ */
+ BrandListResponse listAllBrand(Integer pageSize, String nextKey) throws WxErrorException;
+
+ /**
+ * 新增品牌资质
+ *
+ * @param brand 品牌参数
+ * @return 审核id
+ *
+ * @throws WxErrorException 异常
+ */
+ AuditApplyResponse addBrandApply(Brand brand) throws WxErrorException;
+
+ /**
+ * 修改品牌资质
+ *
+ * @param brand 品牌参数
+ * @return 审核id
+ *
+ * @throws WxErrorException 异常
+ */
+ AuditApplyResponse updateBrandApply(Brand brand) throws WxErrorException;
+
+ /**
+ * 撤回品牌资质审核
+ *
+ * @param brandId 品牌id
+ * @param auditId 审核id
+ * @return 审核id
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse cancelBrandApply(String brandId, String auditId) throws WxErrorException;
+
+ /**
+ * 删除品牌资质
+ *
+ * @param brandId 品牌id
+ * @return 结果
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse deleteBrandApply(String brandId) throws WxErrorException;
+
+ /**
+ * 获取品牌资质申请详情
+ *
+ * @param brandId 品牌id
+ * @return 品牌信息
+ *
+ * @throws WxErrorException 异常
+ */
+ BrandInfoResponse getBrandApply(String brandId) throws WxErrorException;
+
+ /**
+ * 获取品牌资质申请列表
+ *
+ * @param pageSize 每页数量(默认10, 不超过50)
+ * @param nextKey 由上次请求返回, 记录翻页的上下文, 传入时会从上次返回的结果往后翻一页, 不传默认拉取第一页数据
+ * @param status 审核单状态, 不填默认拉全部商品
+ * @return 品牌列表
+ *
+ * @throws WxErrorException 异常
+ */
+ BrandApplyListResponse listBrandApply(Integer pageSize, String nextKey, Integer status) throws WxErrorException;
+
+ /**
+ * 获取生效中的品牌资质列表
+ *
+ * @param pageSize 每页数量(默认10, 不超过50)
+ * @param nextKey 由上次请求返回, 记录翻页的上下文, 传入时会从上次返回的结果往后翻一页, 不传默认拉取第一页数据
+ * @return 品牌列表
+ *
+ * @throws WxErrorException 异常
+ */
+ BrandApplyListResponse listValidBrandApply(Integer pageSize, String nextKey) throws WxErrorException;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreCategoryService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreCategoryService.java
new file mode 100644
index 0000000000..11e71408e5
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreCategoryService.java
@@ -0,0 +1,132 @@
+package com.binarywang.wxjava.store.api;
+
+import java.io.File;
+import java.util.List;
+import com.binarywang.wxjava.store.bean.audit.AuditApplyResponse;
+import com.binarywang.wxjava.store.bean.audit.AuditResponse;
+import com.binarywang.wxjava.store.bean.audit.CategoryAuditInfo;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.category.*;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 商品类目相关接口
+ *
+ * @author Zeyes
+ * @see 新旧类目树差异
+ */
+public interface WxStoreCategoryService {
+
+ /**
+ * 获取所有的类目
+ *
+ * @return 所有类目以及资质信息
+ *
+ * @throws WxErrorException 异常
+ */
+ CategoryQualificationResponse listAllCategory() throws WxErrorException;
+
+ /**
+ * 获取商品类目列表(全量) 有频率限制
+ *
+ * @param fCatId 类目父id
+ * @return 类目列表
+ *
+ * @throws WxErrorException 异常
+ * @deprecated 接口返回更新,请使用 {@link #listAvailableCategories(String)}
+ */
+ @Deprecated
+ List listAvailableCategory(String fCatId) throws WxErrorException;
+
+ /**
+ * 获取可用的子类目详情
+ *
+ * 1.f_cat_id 为旧类目树中的非叶子类目,仅设置 cat_list 字段。
+ * 2.f_cat_id 为新类目树中的非叶子类目,仅设置 cat_list_v2 字段。
+ * 3.f_cat_id 为0,同时设置 cat_list 和 cat_list_v2 字段
+ *
+ * @param fCatId 父类目ID,可先填0获取根部类目
+ * @return 类目列表
+ * @throws WxErrorException 异常
+ */
+ ShopCategoryResponse listAvailableCategories(String fCatId) throws WxErrorException;
+
+ /**
+ * 获取类目信息
+ *
+ * @param id 三级类目id
+ * @return 类目信息
+ *
+ * @throws WxErrorException 异常
+ */
+ CategoryDetailResult getCategoryDetail(String id) throws WxErrorException;
+
+ /**
+ * 上传类目资质
+ *
+ * @param level1 一级类目ID
+ * @param level2 二级类目ID
+ * @param level3 三级类目ID
+ * @param certificate 资质材料,图片mediaid,图片类型,最多不超过10张
+ * @return 审核id
+ *
+ * @throws WxErrorException 异常
+ * @see WxStoreBasicService#uploadQualificationFile(File)
+ * @deprecated 请使用 {@link #addCategory(CategoryAuditInfo)}
+ */
+ @Deprecated
+ AuditApplyResponse addCategory(String level1, String level2, String level3, List certificate)
+ throws WxErrorException;
+
+ /**
+ * 上传类目资质
+ *
+ * @param info 类目资质信息
+ * @return 审核id
+ *
+ * @throws WxErrorException 异常
+ * @see WxStoreBasicService#uploadQualificationFile(File)
+ */
+ AuditApplyResponse addCategory(CategoryAuditInfo info) throws WxErrorException;
+
+ /**
+ * 取消类目提审
+ *
+ * @param auditId 提交审核时返回的id
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse cancelCategoryAudit(String auditId) throws WxErrorException;
+
+ /**
+ * 查询类目审核结果
+ *
+ * @param auditId 审核id
+ * @return 审核结果
+ *
+ * @throws WxErrorException 异常
+ */
+ AuditResponse getAudit(String auditId) throws WxErrorException;
+
+ /**
+ * 获取账号申请通过的类目和资质信息
+ *
+ * @return 类目和资质信息
+ *
+ * @throws WxErrorException 异常
+ */
+ PassCategoryResponse listPassCategory() throws WxErrorException;
+
+ /**
+ * 获取店铺的类目权限列表
+ *
+ * @param isFilterStatus 是否按状态筛选
+ * @param status 类目状态(当 isFilterStatus 为 true 时有效)
+ * @return 类目权限列表
+ *
+ * @throws WxErrorException 异常
+ */
+ RelationCategoryResponse listRelationCategory(Boolean isFilterStatus, Integer status) throws WxErrorException;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreCompassShopService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreCompassShopService.java
new file mode 100644
index 0000000000..69e1fbdfd0
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreCompassShopService.java
@@ -0,0 +1,126 @@
+package com.binarywang.wxjava.store.api;
+
+import com.binarywang.wxjava.store.bean.compass.shop.FinderAuthListResponse;
+import com.binarywang.wxjava.store.bean.compass.shop.FinderListResponse;
+import com.binarywang.wxjava.store.bean.compass.shop.FinderOverallResponse;
+import com.binarywang.wxjava.store.bean.compass.shop.FinderProductListResponse;
+import com.binarywang.wxjava.store.bean.compass.shop.FinderProductOverallResponse;
+import com.binarywang.wxjava.store.bean.compass.shop.ShopLiveListResponse;
+import com.binarywang.wxjava.store.bean.compass.shop.ShopOverallResponse;
+import com.binarywang.wxjava.store.bean.compass.shop.ShopProductDataResponse;
+import com.binarywang.wxjava.store.bean.compass.shop.ShopProductListResponse;
+import com.binarywang.wxjava.store.bean.compass.shop.ShopSaleProfileDataResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 罗盘商家版服务
+ *
+ * @author Zeyes
+ */
+public interface WxStoreCompassShopService {
+
+ /**
+ * 获取电商概览数据
+ *
+ * @param ds 日期,格式 yyyyMMdd
+ * @return 电商概览数据
+ *
+ * @throws WxErrorException 异常
+ */
+ ShopOverallResponse getShopOverall(String ds) throws WxErrorException;
+
+ /**
+ * 获取授权视频号列表
+ *
+ * @return 获取授权视频号列表
+ *
+ * @throws WxErrorException 异常
+ */
+ FinderAuthListResponse getFinderAuthorizationList() throws WxErrorException;
+
+ /**
+ * 获取带货达人列表
+ *
+ * @param ds 日期,格式 yyyyMMdd
+ * @return 带货达人列表
+ *
+ * @throws WxErrorException 异常
+ */
+ FinderListResponse getFinderList(String ds) throws WxErrorException;
+
+ /**
+ * 获取带货数据概览
+ *
+ * @param ds 日期,格式 yyyyMMdd
+ * @return 带货数据概览
+ *
+ * @throws WxErrorException 异常
+ */
+ FinderOverallResponse getFinderOverall(String ds) throws WxErrorException;
+
+ /**
+ * 获取带货达人商品列表
+ *
+ * @param ds 日期,格式YYYYMMDD
+ * @param finderId 视频号ID
+ * @return 带货达人商品列表
+ *
+ * @throws WxErrorException 异常
+ */
+ FinderProductListResponse getFinderProductList(String ds, String finderId) throws WxErrorException;
+
+ /**
+ * 获取带货达人详情
+ *
+ * @param ds 日期,格式YYYYMMDD
+ * @param finderId 视频号ID
+ * @return 带货达人详情
+ *
+ * @throws WxErrorException 异常
+ */
+ FinderProductOverallResponse getFinderProductOverall(String ds, String finderId) throws WxErrorException;
+
+ /**
+ * 获取店铺开播列表
+ *
+ * @param ds 日期,格式YYYYMMDD
+ * @param finderId 视频号ID
+ * @return 店铺开播列表
+ *
+ * @throws WxErrorException 异常
+ */
+ ShopLiveListResponse getShopLiveList(String ds, String finderId) throws WxErrorException;
+
+ /**
+ * 获取商品详细信息
+ *
+ * @param ds 日期,格式YYYYMMDD
+ * @param productId 商品id
+ * @return 商品详细信息
+ *
+ * @throws WxErrorException 异常
+ */
+ ShopProductDataResponse getShopProductData(String ds, String productId) throws WxErrorException;
+
+ /**
+ * 获取商品列表
+ *
+ * @param ds 日期,格式YYYYMMDD
+ * @return 商品列表
+ *
+ * @throws WxErrorException 异常
+ */
+ ShopProductListResponse getShopProductList(String ds) throws WxErrorException;
+
+ /**
+ * 获取店铺人群数据
+ *
+ * @param ds 日期,格式 yyyyMMdd
+ * @param type 用户类型,1商品曝光用户 2商品点击用户 3购买用户 4首购用户 5复购用户
+ * @return 店铺人群数据
+ *
+ * @throws WxErrorException 异常
+ */
+ ShopSaleProfileDataResponse getShopSaleProfileData(String ds, Integer type) throws WxErrorException;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreCooperationService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreCooperationService.java
new file mode 100644
index 0000000000..46c168622a
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreCooperationService.java
@@ -0,0 +1,70 @@
+package com.binarywang.wxjava.store.api;
+
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.cooperation.CooperationListResponse;
+import com.binarywang.wxjava.store.bean.cooperation.CooperationQrCodeResponse;
+import com.binarywang.wxjava.store.bean.cooperation.CooperationStatusResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 合作账号相关接口
+ *
+ * @author Zeyes
+ * @see 合作账号状态机
+ */
+public interface WxStoreCooperationService {
+
+ /**
+ * 获取合作账号列表
+ *
+ * @param sharerType 合作账号类型 2公众号 3小程序
+ * @return 合作账号列表
+ *
+ * @throws WxErrorException 异常
+ */
+ CooperationListResponse listCooperation(Integer sharerType) throws WxErrorException;
+
+ /**
+ * 获取合作账号状态
+ *
+ * @param sharerId 合作账号id 公众号: gh_开头id 小程序: appid
+ * @param sharerType 合作账号类型 2公众号 3小程序
+ * @return 合作账号状态
+ *
+ * @throws WxErrorException 异常
+ */
+ CooperationStatusResponse getCooperationStatus(String sharerId, Integer sharerType) throws WxErrorException;
+
+ /**
+ * 生成合作账号邀请二维码
+ *
+ * @param sharerId 合作账号id 公众号: gh_开头id 小程序: appid
+ * @param sharerType 合作账号类型 2公众号 3小程序
+ * @return 二维码
+ *
+ * @throws WxErrorException 异常
+ */
+ CooperationQrCodeResponse generateQrCode(String sharerId, Integer sharerType) throws WxErrorException;
+
+ /**
+ * 取消合作账号邀请
+ *
+ * @param sharerId 合作账号id 公众号: gh_开头id 小程序: appid
+ * @param sharerType 合作账号类型 2公众号 3小程序
+ * @return WxStoreBaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse cancelInvitation(String sharerId, Integer sharerType) throws WxErrorException;
+
+ /**
+ * 解绑合作账号
+ *
+ * @param sharerId 合作账号id 公众号: gh_开头id 小程序: appid
+ * @param sharerType 合作账号类型 2公众号 3小程序
+ * @return WxStoreBaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse unbind(String sharerId, Integer sharerType) throws WxErrorException;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreCouponService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreCouponService.java
new file mode 100644
index 0000000000..010fab1991
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreCouponService.java
@@ -0,0 +1,92 @@
+package com.binarywang.wxjava.store.api;
+
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.coupon.CouponIdResponse;
+import com.binarywang.wxjava.store.bean.coupon.CouponInfoResponse;
+import com.binarywang.wxjava.store.bean.coupon.CouponListParam;
+import com.binarywang.wxjava.store.bean.coupon.CouponListResponse;
+import com.binarywang.wxjava.store.bean.coupon.CouponParam;
+import com.binarywang.wxjava.store.bean.coupon.UserCouponListParam;
+import com.binarywang.wxjava.store.bean.coupon.UserCouponListResponse;
+import com.binarywang.wxjava.store.bean.coupon.UserCouponResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 优惠券服务
+ *
+ * @author Zeyes
+ */
+public interface WxStoreCouponService {
+
+ /**
+ * 创建优惠券
+ *
+ * @param coupon 优惠券
+ * @return 优惠券ID
+ *
+ * @throws WxErrorException 异常
+ */
+ CouponIdResponse createCoupon(CouponParam coupon) throws WxErrorException;
+
+ /**
+ * 更新优惠券
+ *
+ * @param coupon 优惠券
+ * @return 优惠券ID
+ *
+ * @throws WxErrorException 异常
+ */
+ CouponIdResponse updateCoupon(CouponParam coupon) throws WxErrorException;
+
+ /**
+ * 更新优惠券状态
+ *
+ * @param couponId 优惠券ID
+ * @param status 状态 2生效 4已作废 5删除 {@link com.binarywang.wxjava.store.enums.WxCouponStatus}
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse updateCouponStatus(String couponId, Integer status) throws WxErrorException;
+
+ /**
+ * 获取优惠券详情
+ *
+ * @param couponId 优惠券ID
+ * @return CouponInfoResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ CouponInfoResponse getCoupon(String couponId) throws WxErrorException;
+
+ /**
+ * 获取优惠券ID列表
+ *
+ * @param param 条件参数
+ * @return 优惠券ID列表
+ *
+ * @throws WxErrorException 异常
+ */
+ CouponListResponse getCouponList(CouponListParam param) throws WxErrorException;
+
+ /**
+ * 获取用户优惠券
+ *
+ * @param openId 用户openid
+ * @param userCouponId 用户优惠券ID
+ * @return UserCouponResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ UserCouponResponse getUserCoupon(String openId, String userCouponId) throws WxErrorException;
+
+ /**
+ * 获取用户优惠券ID列表
+ *
+ * @param param 条件参数
+ * @return UserCouponListResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ UserCouponListResponse getUserCouponList(UserCouponListParam param) throws WxErrorException;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreEwaybillService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreEwaybillService.java
new file mode 100644
index 0000000000..533de1afbb
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreEwaybillService.java
@@ -0,0 +1,78 @@
+package com.binarywang.wxjava.store.api;
+
+import java.util.List;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.ewaybill.AccountInfoResponse;
+import com.binarywang.wxjava.store.bean.ewaybill.AddSubOrderRequest;
+import com.binarywang.wxjava.store.bean.ewaybill.CreateOrderRequest;
+import com.binarywang.wxjava.store.bean.ewaybill.CreateOrderResponse;
+import com.binarywang.wxjava.store.bean.ewaybill.DeliveryListResponse;
+import com.binarywang.wxjava.store.bean.ewaybill.PrintOrderRequest;
+import com.binarywang.wxjava.store.bean.ewaybill.BatchPrintOrderRequest;
+import com.binarywang.wxjava.store.bean.ewaybill.OrderDetailResponse;
+import com.binarywang.wxjava.store.bean.ewaybill.PreCreateRequest;
+import com.binarywang.wxjava.store.bean.ewaybill.PreCreateResponse;
+import com.binarywang.wxjava.store.bean.ewaybill.PrintContentResponse;
+import com.binarywang.wxjava.store.bean.ewaybill.TemplateConfigResponse;
+import com.binarywang.wxjava.store.bean.ewaybill.TemplateCreateRequest;
+import com.binarywang.wxjava.store.bean.ewaybill.TemplateIdResponse;
+import com.binarywang.wxjava.store.bean.ewaybill.TemplateInfoResponse;
+import com.binarywang.wxjava.store.bean.ewaybill.TemplateUpdateRequest;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店电子面单服务接口
+ *
+ * @author GitHub Copilot
+ */
+public interface WxStoreEwaybillService {
+
+ /** 获取可用的标准面单模板。 @return 模板配置 @throws WxErrorException 微信接口调用失败 */
+ TemplateConfigResponse getTemplateConfig() throws WxErrorException;
+
+ /** 创建商家面单模板。 @param req 官方模板创建字段 @return 新模板 ID @throws WxErrorException 调用失败 */
+ TemplateIdResponse createTemplate(TemplateCreateRequest req) throws WxErrorException;
+
+ /** 删除商家面单模板。 @param templateId 模板 ID @return 操作结果 @throws WxErrorException 调用失败 */
+ WxStoreBaseResponse deleteTemplate(String templateId) throws WxErrorException;
+
+ /** 更新商家面单模板。 @param req 官方模板更新字段 @return 操作结果 @throws WxErrorException 调用失败 */
+ WxStoreBaseResponse updateTemplate(TemplateUpdateRequest req) throws WxErrorException;
+
+ /** 查询标准模板信息。 @param templateCode 标准模板编码 @return 模板详情 @throws WxErrorException 调用失败 */
+ TemplateInfoResponse getTemplate(String templateCode) throws WxErrorException;
+
+ /** 按模板 ID 查询商家模板。 @param templateId 模板 ID @return 模板详情 @throws WxErrorException 调用失败 */
+ TemplateInfoResponse getTemplateById(String templateId) throws WxErrorException;
+
+ /** 查询已开通电子面单的网点和账号。 @return 账号信息 @throws WxErrorException 调用失败 */
+ AccountInfoResponse getAccount() throws WxErrorException;
+
+ /** 查询已开通电子面单的快递公司。 @return 快递公司列表 @throws WxErrorException 调用失败 */
+ DeliveryListResponse getDeliveryList() throws WxErrorException;
+
+ /** 预取电子面单号。 @param req 官方预取号字段 @return 预取号结果 @throws WxErrorException 调用失败 */
+ PreCreateResponse preCreateOrder(PreCreateRequest req) throws WxErrorException;
+
+ /** 获取电子面单号。 @param req 官方取号字段,含收寄件信息 @return 面单号结果 @throws WxErrorException 调用失败 */
+ CreateOrderResponse createOrder(CreateOrderRequest req) throws WxErrorException;
+
+ /** 追加电子面单子件。 @param req 官方子件字段 @return 操作结果 @throws WxErrorException 调用失败 */
+ WxStoreBaseResponse addSubOrder(AddSubOrderRequest req) throws WxErrorException;
+
+ /** 取消电子面单下单。 @param waybillId 运单 ID @return 操作结果 @throws WxErrorException 调用失败 */
+ WxStoreBaseResponse cancelOrder(PrintOrderRequest req) throws WxErrorException;
+
+ /** 查询电子面单详情。 @param waybillId 运单 ID @return 面单详情 @throws WxErrorException 调用失败 */
+ OrderDetailResponse getOrder(String ewaybillOrderId) throws WxErrorException;
+
+ /** 获取打印报文。 @param waybillIds 运单 ID 列表 @param templateId 可选模板 ID @return 打印内容 @throws WxErrorException 调用失败 */
+ PrintContentResponse getPrintContent(String ewaybillOrderId, String templateId)
+ throws WxErrorException;
+
+ /** 通知单个运单打印成功。 @param waybillId 运单 ID @return 操作结果 @throws WxErrorException 调用失败 */
+ WxStoreBaseResponse printOrder(PrintOrderRequest req) throws WxErrorException;
+
+ /** 批量通知运单打印成功。 @param waybillIds 运单 ID 列表 @return 操作结果 @throws WxErrorException 调用失败 */
+ WxStoreBaseResponse batchPrintOrder(BatchPrintOrderRequest req) throws WxErrorException;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreFavoriteService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreFavoriteService.java
new file mode 100644
index 0000000000..82779e32f8
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreFavoriteService.java
@@ -0,0 +1,21 @@
+package com.binarywang.wxjava.store.api;
+
+import com.binarywang.wxjava.store.bean.favorite.FavoriteCountResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 收藏管理接口
+ *
+ * @author GitHub Copilot
+ * @link 收藏管理接口文档
+ */
+public interface WxStoreFavoriteService {
+
+ /**
+ * 获取店铺收藏的人数
+ *
+ * @return 店铺收藏人数响应
+ * @throws WxErrorException 异常
+ */
+ FavoriteCountResponse getFavoriteCount() throws WxErrorException;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreFreightTemplateService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreFreightTemplateService.java
new file mode 100644
index 0000000000..6fce17f7d4
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreFreightTemplateService.java
@@ -0,0 +1,57 @@
+package com.binarywang.wxjava.store.api;
+
+
+import com.binarywang.wxjava.store.bean.freight.FreightTemplate;
+import com.binarywang.wxjava.store.bean.freight.TemplateIdResponse;
+import com.binarywang.wxjava.store.bean.freight.TemplateInfoResponse;
+import com.binarywang.wxjava.store.bean.freight.TemplateListResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 运费模板服务接口
+ *
+ * @author Zeyes
+ */
+public interface WxStoreFreightTemplateService {
+
+ /**
+ * 获取运费模板列表
+ *
+ * @param offset 起始位置
+ * @param limit 拉取个数
+ * @return 列表
+ *
+ * @throws WxErrorException 异常
+ */
+ TemplateListResponse listTemplate(Integer offset, Integer limit) throws WxErrorException;
+
+ /**
+ * 获取运费模板
+ *
+ * @param templateId 模板id
+ * @return 运费模板
+ *
+ * @throws WxErrorException 异常
+ */
+ TemplateInfoResponse getTemplate(String templateId) throws WxErrorException;
+
+ /**
+ * 添加运费模板
+ *
+ * @param template 运费模板
+ * @return TemplateIdResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ TemplateIdResponse addTemplate(FreightTemplate template) throws WxErrorException;
+
+ /**
+ * 更新运费模板
+ *
+ * @param template 运费模板
+ * @return TemplateIdResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ TemplateIdResponse updateTemplate(FreightTemplate template) throws WxErrorException;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreFundService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreFundService.java
new file mode 100644
index 0000000000..520b5cc712
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreFundService.java
@@ -0,0 +1,189 @@
+package com.binarywang.wxjava.store.api;
+
+
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.fund.AccountInfo;
+import com.binarywang.wxjava.store.bean.fund.AccountInfoResponse;
+import com.binarywang.wxjava.store.bean.fund.BalanceInfoResponse;
+import com.binarywang.wxjava.store.bean.fund.FlowListResponse;
+import com.binarywang.wxjava.store.bean.fund.FundsFlowResponse;
+import com.binarywang.wxjava.store.bean.fund.FundsListParam;
+import com.binarywang.wxjava.store.bean.fund.WithdrawDetailResponse;
+import com.binarywang.wxjava.store.bean.fund.WithdrawListResponse;
+import com.binarywang.wxjava.store.bean.fund.WithdrawSubmitResponse;
+import com.binarywang.wxjava.store.bean.fund.bank.BankCityResponse;
+import com.binarywang.wxjava.store.bean.fund.bank.BankInfoResponse;
+import com.binarywang.wxjava.store.bean.fund.bank.BankListResponse;
+import com.binarywang.wxjava.store.bean.fund.bank.BankProvinceResponse;
+import com.binarywang.wxjava.store.bean.fund.bank.BranchInfoResponse;
+import com.binarywang.wxjava.store.bean.fund.qrcode.QrCheckResponse;
+import com.binarywang.wxjava.store.bean.fund.qrcode.QrCodeResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 资金相关服务
+ *
+ * @author Zeyes
+ */
+public interface WxStoreFundService {
+
+ /**
+ * 获取账户余额
+ *
+ * @return 账户余额
+ *
+ * @throws WxErrorException 异常
+ */
+ BalanceInfoResponse getBalance() throws WxErrorException;
+
+ /**
+ * 获取结算账户
+ *
+ * @return 结算账户
+ *
+ * @throws WxErrorException 异常
+ */
+ AccountInfoResponse getBankAccount() throws WxErrorException;
+
+ /**
+ * 获取资金流水详情
+ *
+ * @param flowId 资金流水号
+ * @return 资金流水详情
+ *
+ * @throws WxErrorException 异常
+ */
+ FundsFlowResponse getFundsFlowDetail(String flowId) throws WxErrorException;
+
+ /**
+ * 获取资金流水列表
+ *
+ * @param param 资金流水列表参数
+ * @return 资金流水列表
+ *
+ * @throws WxErrorException 异常
+ */
+ FlowListResponse listFundsFlow(FundsListParam param) throws WxErrorException;
+
+ /**
+ * 获取提现记录
+ *
+ * @param withdrawId 提现单号
+ * @return 提现记录
+ *
+ * @throws WxErrorException 异常
+ */
+ WithdrawDetailResponse getWithdrawDetail(String withdrawId) throws WxErrorException;
+
+ /**
+ * 获取提现记录列表
+ *
+ * @param pageNum 页码
+ * @param pageSize 每页大小
+ * @param startTime 开始时间
+ * @param endTime 结束时间
+ * @return 提现记录列表
+ *
+ * @throws WxErrorException 异常
+ */
+ WithdrawListResponse listWithdraw(Integer pageNum, Integer pageSize, Long startTime, Long endTime)
+ throws WxErrorException;
+
+ /**
+ * 修改结算账户
+ *
+ * @param accountInfo 结算账户信息
+ * @return 修改结果
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse setBankAccount(AccountInfo accountInfo) throws WxErrorException;
+
+ /***
+ * 商户提现
+ *
+ * @param amount 提现金额(单位:分)
+ * @param remark 提现备注
+ * @param bankMemo 银行附言
+ * @return 提现结果
+ * @throws WxErrorException 异常
+ */
+ WithdrawSubmitResponse submitWithdraw(Integer amount, String remark, String bankMemo) throws WxErrorException;
+
+ /**
+ * 根据卡号查银行信息
+ *
+ * @param accountNumber 卡号
+ * @return 银行信息
+ *
+ * @throws WxErrorException 异常
+ */
+ BankInfoResponse getBankInfoByCardNo(String accountNumber) throws WxErrorException;
+
+ /**
+ * 搜索银行列表
+ *
+ * @param offset 偏移量
+ * @param limit 每页数据大小
+ * @param keywords 银行关键字
+ * @param bankType 银行类型(1:对私银行,2:对公银行; 默认对公)
+ * @return 银行列表
+ *
+ * @throws WxErrorException 异常
+ */
+ BankListResponse searchBankList(Integer offset, Integer limit, String keywords, Integer bankType)
+ throws WxErrorException;
+
+ /**
+ * 查询城市列表
+ *
+ * @param provinceCode 省份编码
+ * @return 城市列表
+ *
+ * @throws WxErrorException 异常
+ */
+ BankCityResponse searchCityList(String provinceCode) throws WxErrorException;
+
+ /**
+ * 查询大陆银行省份列表
+ *
+ * @return 省份列表
+ *
+ * @throws WxErrorException 异常
+ */
+ BankProvinceResponse getProvinceList() throws WxErrorException;
+
+ /**
+ * 查询支行列表
+ *
+ * @param bankCode 银行编码
+ * @param cityCode 城市编码
+ * @param offset 偏移量
+ * @param limit 每页数据大小
+ * @return 支行列表
+ *
+ * @throws WxErrorException 异常
+ */
+ BranchInfoResponse searchBranchList(String bankCode, String cityCode, Integer offset, Integer limit)
+ throws WxErrorException;
+
+ /**
+ * 获取二维码
+ *
+ * @param qrcodeTicket 二维码ticket
+ * @return 二维码响应
+ *
+ * @throws WxErrorException 异常
+ */
+ QrCodeResponse getQrCode(String qrcodeTicket) throws WxErrorException;
+
+ /**
+ * 查询扫码状态
+ *
+ * @param qrcodeTicket 二维码ticket
+ * @return 扫码状态
+ *
+ * @throws WxErrorException 异常
+ */
+ QrCheckResponse checkQrStatus(String qrcodeTicket) throws WxErrorException;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreGiftService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreGiftService.java
new file mode 100644
index 0000000000..eff2e8fecb
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreGiftService.java
@@ -0,0 +1,102 @@
+package com.binarywang.wxjava.store.api;
+
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.product.GiftActivityAddResponse;
+import com.binarywang.wxjava.store.bean.product.GiftActivityInfo;
+import com.binarywang.wxjava.store.bean.product.GiftProductAddResponse;
+import com.binarywang.wxjava.store.bean.product.GiftProductGetResponse;
+import com.binarywang.wxjava.store.bean.product.GiftProductInfo;
+import com.binarywang.wxjava.store.bean.product.GiftProductListParam;
+import com.binarywang.wxjava.store.bean.product.GiftProductListResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店赠品与买赠活动服务。
+ */
+public interface WxStoreGiftService {
+
+ /**
+ * 添加非卖商品。
+ *
+ * @param info 赠品信息
+ * @return 添加赠品响应
+ * @throws WxErrorException 异常
+ */
+ GiftProductAddResponse addGiftProduct(GiftProductInfo info) throws WxErrorException;
+
+ /**
+ * 更新非卖商品。
+ *
+ * @param info 赠品信息
+ * @return 操作响应
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse updateGiftProduct(GiftProductInfo info) throws WxErrorException;
+
+ /**
+ * 在售商品转赠品。
+ *
+ * @param productId 商品ID
+ * @return 操作响应
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse setProductAsGift(String productId) throws WxErrorException;
+
+ /**
+ * 获取赠品。
+ *
+ * @param productId 赠品商品ID
+ * @return 赠品详情响应
+ * @throws WxErrorException 异常
+ */
+ GiftProductGetResponse getGiftProduct(String productId) throws WxErrorException;
+
+ /**
+ * 获取赠品列表。
+ *
+ * @param param 查询参数
+ * @return 赠品列表
+ * @throws WxErrorException 异常
+ */
+ GiftProductListResponse listGiftProduct(GiftProductListParam param) throws WxErrorException;
+
+ /**
+ * 更新赠品库存。
+ *
+ * @param productId 赠品商品ID
+ * @param skuId 赠品sku_id
+ * @param diffType 修改类型 1增加 2减少 3设置
+ * @param num 增加、减少或者设置的库存值
+ * @return 操作响应
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse updateGiftStock(String productId, String skuId, Integer diffType, Integer num)
+ throws WxErrorException;
+
+ /**
+ * 创建赠品活动。
+ *
+ * @param info 活动信息
+ * @return 创建赠品活动响应
+ * @throws WxErrorException 异常
+ */
+ GiftActivityAddResponse addGiftActivity(GiftActivityInfo info) throws WxErrorException;
+
+ /**
+ * 删除赠品活动。
+ *
+ * @param activityId 活动ID
+ * @return 操作响应
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse deleteGiftActivity(String activityId) throws WxErrorException;
+
+ /**
+ * 停止赠品活动。
+ *
+ * @param activityId 活动ID
+ * @return 操作响应
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse stopGiftActivity(String activityId) throws WxErrorException;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreHomePageService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreHomePageService.java
new file mode 100644
index 0000000000..794c662431
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreHomePageService.java
@@ -0,0 +1,188 @@
+package com.binarywang.wxjava.store.api;
+
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.home.background.BackgroundApplyResponse;
+import com.binarywang.wxjava.store.bean.home.background.BackgroundGetResponse;
+import com.binarywang.wxjava.store.bean.home.banner.BannerApplyResponse;
+import com.binarywang.wxjava.store.bean.home.banner.BannerGetResponse;
+import com.binarywang.wxjava.store.bean.home.banner.BannerInfo;
+import com.binarywang.wxjava.store.bean.home.tree.TreeProductEditInfo;
+import com.binarywang.wxjava.store.bean.home.tree.TreeProductListInfo;
+import com.binarywang.wxjava.store.bean.home.tree.TreeProductListResponse;
+import com.binarywang.wxjava.store.bean.home.tree.TreeShowGetResponse;
+import com.binarywang.wxjava.store.bean.home.tree.TreeShowInfo;
+import com.binarywang.wxjava.store.bean.home.tree.TreeShowSetResponse;
+import com.binarywang.wxjava.store.bean.home.window.WindowProductSettingResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 主页管理相关接口
+ *
+ * @author Zeyes
+ */
+public interface WxStoreHomePageService {
+
+ /**
+ * 添加分类关联的商品
+ *
+ * @param info 商品分类以及商品id
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse addTreeProduct(TreeProductEditInfo info) throws WxErrorException;
+
+ /**
+ * 删除分类关联的商品
+ *
+ * @param info 商品分类以及商品id
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse delTreeProduct(TreeProductEditInfo info) throws WxErrorException;
+
+ /**
+ * 获取分类关联的商品ID列表
+ *
+ * @param info 分类id、分页大小、分页上下文
+ * @return 商品id、分页上下文
+ *
+ * @throws WxErrorException 异常
+ */
+ TreeProductListResponse getTreeProductList(TreeProductListInfo info) throws WxErrorException;
+
+ /**
+ * 设置展示在店铺主页的商品分类
+ *
+ * @param info 分类id
+ * @return 商品分类审核结果
+ *
+ * @throws WxErrorException 异常
+ */
+ TreeShowSetResponse setShowTree(TreeShowInfo info) throws WxErrorException;
+
+ /**
+ * 获取展示在店铺主页的商品分类
+ *
+ * @return 商品分类信息
+ *
+ * @throws WxErrorException 异常
+ */
+ TreeShowGetResponse getShowTree() throws WxErrorException;
+
+ /**
+ * 获取主页展示商品列表
+ *
+ * @param pageSize 分页大小
+ * @param nextKey 分页上下文
+ * @return WindowProductSettingResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WindowProductSettingResponse listWindowProduct(Integer pageSize, String nextKey) throws WxErrorException;
+
+ /**
+ * 删除主页展示商品
+ *
+ * @param productId 商品id
+ * @param indexNum 商品重新排序后的新序号,最大移动步长为500(即新序号与当前序号的距离小于500)
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse reorderWindowProduct(String productId, Integer indexNum) throws WxErrorException;
+
+ /**
+ * 隐藏小店主页商品
+ *
+ * @param productId 商品id
+ * @param setHide 是否隐藏。1-隐藏,0-取消隐藏
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse hideWindowProduct(String productId, Integer setHide) throws WxErrorException;
+
+ /**
+ * 置顶小店主页商品
+ *
+ * @param productId 商品id
+ * @param setTop 是否顶置。1-置顶,0-取消置顶
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse topWindowProduct(String productId, Integer setTop) throws WxErrorException;
+
+ /**
+ * 提交背景图申请
+ *
+ * @param imgUrl 图片链接。请务必使用接口上传图片(参数resp_type=1),并将返回的img_url填入此处,不接受其他任何格式的图片url。
+ * 若url曾经做过转换(url前缀为mmecimage.cn/p/),则可以直接提交。
+ * @return 申请编号
+ *
+ * @throws WxErrorException 异常
+ * @see WxStoreBasicService#uploadImg(int, String)
+ */
+ BackgroundApplyResponse applyBackground(String imgUrl) throws WxErrorException;
+
+ /**
+ * 查询背景图
+ *
+ * @return 背景图信息
+ * @throws WxErrorException 异常
+ */
+ BackgroundGetResponse getBackground() throws WxErrorException;
+
+ /**
+ * 撤销主页背景图申请
+ *
+ * @param applyId 申请编号
+ * @return BaseResponse
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse cancelBackground(Integer applyId) throws WxErrorException;
+
+ /**
+ * 清空主页背景图并撤销流程中的申请
+ *
+ * @return BaseResponse
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse removeBackground() throws WxErrorException;
+
+ /**
+ * 提交精选展示位申请
+ *
+ * @param info 展示位信息
+ * @return 申请编号
+ * @throws WxErrorException 异常
+ */
+ BannerApplyResponse applyBanner(BannerInfo info) throws WxErrorException;
+
+ /**
+ * 查询精选展示位
+ *
+ * @return 展示位信息
+ * @throws WxErrorException 异常
+ */
+ BannerGetResponse getBanner() throws WxErrorException;
+
+ /**
+ * 撤销精选展示位申请
+ *
+ * @param applyId 申请编号
+ * @return BaseResponse
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse cancelBanner(Integer applyId) throws WxErrorException;
+
+ /**
+ * 清空精选展示位并撤销流程中的申请
+ *
+ * @return BaseResponse
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse removeBanner() throws WxErrorException;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreKfService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreKfService.java
new file mode 100644
index 0000000000..5cadd89dc4
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreKfService.java
@@ -0,0 +1,41 @@
+package com.binarywang.wxjava.store.api;
+
+import com.binarywang.wxjava.store.bean.kf.WxStoreKfSendMsgParam;
+import com.binarywang.wxjava.store.bean.kf.WxStoreKfSendMsgResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/** 微信小店商家客服服务。 */
+public interface WxStoreKfService {
+
+ /**
+ * 上传多媒体资源。
+ *
+ * @param openId 用户 open_id
+ * @param msgType 文件类型,仅支持 video、file、image
+ * @param file 文件字节内容
+ * @return COS 地址
+ * @throws WxErrorException 微信异常
+ */
+ String uploadMedia(String openId, String msgType, byte[] file) throws WxErrorException;
+
+ /**
+ * 上传多媒体资源。
+ *
+ * @param openId 用户 open_id
+ * @param msgType 文件类型,仅支持 video、file、image
+ * @param fileName 文件名
+ * @param file 文件字节内容
+ * @return COS 地址
+ * @throws WxErrorException 微信异常
+ */
+ String uploadMedia(String openId, String msgType, String fileName, byte[] file) throws WxErrorException;
+
+ /**
+ * 发送客服消息。
+ *
+ * @param param 请求参数
+ * @return 发送结果
+ * @throws WxErrorException 微信异常
+ */
+ WxStoreKfSendMsgResponse sendMessage(WxStoreKfSendMsgParam param) throws WxErrorException;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreLimitedDiscountService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreLimitedDiscountService.java
new file mode 100644
index 0000000000..f70f590b62
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreLimitedDiscountService.java
@@ -0,0 +1,62 @@
+package com.binarywang.wxjava.store.api;
+
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.limit.LimitTaskAddResponse;
+import com.binarywang.wxjava.store.bean.limit.LimitTaskListResponse;
+import com.binarywang.wxjava.store.bean.limit.LimitTaskParam;
+import com.binarywang.wxjava.store.bean.limit.LimitTaskUpdateParam;
+import com.binarywang.wxjava.store.bean.limit.LimitTaskUpdateResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店限时抢购服务。
+ */
+public interface WxStoreLimitedDiscountService {
+
+ /**
+ * 添加限时抢购任务。
+ *
+ * @param param 限时抢购任务
+ * @return 添加任务响应
+ * @throws WxErrorException 异常
+ */
+ LimitTaskAddResponse addLimitTask(LimitTaskParam param) throws WxErrorException;
+
+ /**
+ * 拉取限时抢购任务列表。
+ *
+ * @param pageSize 每页数量
+ * @param nextKey 翻页上下文
+ * @param status 抢购活动状态
+ * @return 任务列表响应
+ * @throws WxErrorException 异常
+ */
+ LimitTaskListResponse listLimitTask(Integer pageSize, String nextKey, Integer status) throws WxErrorException;
+
+ /**
+ * 停止限时抢购任务。
+ *
+ * @param taskId 限时抢购任务ID
+ * @return 操作响应
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse stopLimitTask(String taskId) throws WxErrorException;
+
+ /**
+ * 删除限时抢购任务。
+ *
+ * @param taskId 限时抢购任务ID
+ * @return 操作响应
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse deleteLimitTask(String taskId) throws WxErrorException;
+
+ /**
+ * 更新限时抢购任务。
+ *
+ * @param param 更新任务参数
+ * @return 更新任务响应
+ * @throws WxErrorException 异常
+ */
+ LimitTaskUpdateResponse updateLimitTask(LimitTaskUpdateParam param) throws WxErrorException;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreOrderService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreOrderService.java
new file mode 100644
index 0000000000..69c0e9bc52
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreOrderService.java
@@ -0,0 +1,326 @@
+package com.binarywang.wxjava.store.api;
+
+import java.util.List;
+import com.binarywang.wxjava.store.bean.base.AddressInfo;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.delivery.PackageAuditInfo;
+import com.binarywang.wxjava.store.bean.delivery.DeliveryCompanyResponse;
+import com.binarywang.wxjava.store.bean.delivery.DeliveryInfo;
+import com.binarywang.wxjava.store.bean.order.ChangeOrderInfo;
+import com.binarywang.wxjava.store.bean.order.DecodeSensitiveInfoResponse;
+import com.binarywang.wxjava.store.bean.order.DeliveryUpdateParam;
+import com.binarywang.wxjava.store.bean.order.OrderCompensationDeliveryParam;
+import com.binarywang.wxjava.store.bean.order.OrderInfoResponse;
+import com.binarywang.wxjava.store.bean.order.OrderListParam;
+import com.binarywang.wxjava.store.bean.order.OrderListResponse;
+import com.binarywang.wxjava.store.bean.order.OrderSearchParam;
+import com.binarywang.wxjava.store.bean.order.PreShipmentChangeSkuResponse;
+import com.binarywang.wxjava.store.bean.order.PresentSubOrderResponse;
+import com.binarywang.wxjava.store.bean.order.PrivateNumberGetPhoneResponse;
+import com.binarywang.wxjava.store.bean.order.RealNumberViewAuditResponse;
+import com.binarywang.wxjava.store.bean.order.VirtualTelNumberResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 订单服务接口
+ *
+ * @author Zeyes
+ * @link 订单接口文档
+ */
+public interface WxStoreOrderService {
+
+ /**
+ * 获取订单
+ *
+ * @param orderId 订单id
+ * @return 订单详情
+ *
+ * @throws WxErrorException 异常
+ */
+ OrderInfoResponse getOrder(String orderId) throws WxErrorException;
+
+ /**
+ * 获取订单详情
+ *
+ * @param orderId 订单id
+ * @param encodeSensitiveInfo 是否编码敏感信息
+ * @return 订单详情
+ *
+ * @throws WxErrorException 异常
+ */
+ OrderInfoResponse getOrder(String orderId, Boolean encodeSensitiveInfo) throws WxErrorException;
+
+ /**
+ * 获取订单列表
+ *
+ * @param param 搜索条件
+ * @return 订单列表
+ *
+ * @throws WxErrorException 异常
+ */
+ OrderListResponse getOrders(OrderListParam param) throws WxErrorException;
+
+ /**
+ * 订单搜索
+ *
+ * @param param 搜索条件
+ * @return 订单列表
+ *
+ * @throws WxErrorException 异常
+ */
+ OrderListResponse searchOrder(OrderSearchParam param) throws WxErrorException;
+
+ /**
+ * 更改订单价格
+ *
+ * @param orderId 订单id
+ * @param expressFee 运费价格(以分为单位)(不填不改)
+ * @param changeOrderInfos 改价列表
+ * @return 结果
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse updatePrice(String orderId, Integer expressFee, List changeOrderInfos)
+ throws WxErrorException;
+
+ /**
+ * 更改订单备注
+ *
+ * @param orderId 订单id
+ * @param merchantNotes 备注
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse updateRemark(String orderId, String merchantNotes) throws WxErrorException;
+
+ /**
+ * 更新订单地址
+ *
+ * @param orderId 订单id
+ * @param userAddress 用户地址
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse updateAddress(String orderId, AddressInfo userAddress) throws WxErrorException;
+
+ /**
+ * 修改物流信息
发货完成的订单可以修改,最多修改1次 拆包发货的订单暂不允许修改物流 虚拟商品订单暂不允许修改物流
+ *
+ * @param param 物流信息
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse updateDelivery(DeliveryUpdateParam param) throws WxErrorException;
+
+ /**
+ * 同意用户修改收货地址请求
+ *
+ * @param orderId 订单id
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse acceptAddressModify(String orderId) throws WxErrorException;
+
+ /**
+ * 拒接用户修改收货地址请求
+ *
+ * @param orderId 订单id
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse rejectAddressModify(String orderId) throws WxErrorException;
+
+ /**
+ * 关闭订单 (需要订单状态为未付款状态)
+ *
+ * @param orderId 订单id
+ * @return BaseResponse
+ */
+ WxStoreBaseResponse closeOrder(String orderId);
+
+ /**
+ * 获取快递公司列表-旧
+ *
+ * @return 快递公司列表
+ *
+ * @throws WxErrorException 异常
+ */
+ DeliveryCompanyResponse listDeliveryCompany() throws WxErrorException;
+
+ /**
+ * 获取快递公司列表
+ *
+ * @param ewaybillOnly 是否仅返回支持电子面单功能的快递公司
+ * @return 快递公司列表
+ *
+ * @throws WxErrorException 异常
+ */
+ DeliveryCompanyResponse listDeliveryCompany(Boolean ewaybillOnly) throws WxErrorException;
+
+ /**
+ * 订单发货
+ *
+ * @param orderId 订单id
+ * @param deliveryList 物流信息
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse deliveryOrder(String orderId, List deliveryList) throws WxErrorException;
+
+ /**
+ * 上传生鲜质检信息
+ *
+ * 注意事项:
+ * 1. 非生鲜质检的订单不能进行上传
+ * 2. 图片url必须用图片上传接口获取 {@link WxStoreBasicService#uploadImg(int, String)}
+ *
+ * @param orderId 订单id
+ * @param items 商品打包信息
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse uploadFreshInspect(String orderId, List items) throws WxErrorException;
+
+ /**
+ * 兑换虚拟号
+ *
+ * @param orderId 订单id
+ * @return 虚拟号信息
+ * @throws WxErrorException 异常
+ */
+ VirtualTelNumberResponse getVirtualTelNumber(String orderId) throws WxErrorException;
+
+ /**
+ * 解码订单包含的敏感数据
+ *
+ * @param orderId 订单id
+ * @return 解码结果
+ * @throws WxErrorException 异常
+ */
+ DecodeSensitiveInfoResponse decodeSensitiveInfo(String orderId) throws WxErrorException;
+
+ /**
+ * 礼物订单新增备注信息
+ *
+ * @param orderId 礼物订单ID
+ * @param note 备注内容
+ * @return BaseResponse
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse addPresentNote(String orderId, String note) throws WxErrorException;
+
+ /**
+ * 获取礼物单的子单列表
+ *
+ * @param orderId 礼物订单ID
+ * @return 子单列表
+ * @throws WxErrorException 异常
+ */
+ PresentSubOrderResponse getPresentSubOrders(String orderId) throws WxErrorException;
+
+ /**
+ * 获取待发货前更换SKU待处理请求
+ *
+ * @param orderId 订单ID
+ * @return 换SKU信息
+ * @throws WxErrorException 异常
+ */
+ PreShipmentChangeSkuResponse getPreShipmentChangeSku(String orderId) throws WxErrorException;
+
+ /**
+ * 同意待发货前更换SKU请求
+ *
+ * @param orderId 订单ID
+ * @return BaseResponse
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse approvePreShipmentChangeSku(String orderId) throws WxErrorException;
+
+ /**
+ * 拒绝待发货前更换SKU请求
+ *
+ * @param orderId 订单ID
+ * @param rejectReason 拒绝原因
+ * @return BaseResponse
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse rejectPreShipmentChangeSku(String orderId, String rejectReason) throws WxErrorException;
+
+ /**
+ * 申请查看订单真实号码
+ *
+ * @param orderId 订单ID
+ * @return BaseResponse
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse applyRealNumber(String orderId) throws WxErrorException;
+
+ /**
+ * 查看订单真实号审核状态
+ *
+ * @param orderId 订单ID
+ * @return 审核状态
+ * @throws WxErrorException 异常
+ */
+ RealNumberViewAuditResponse getRealNumberViewAudit(String orderId) throws WxErrorException;
+
+ /**
+ * 订单再次申请虚拟号
+ *
+ * @param orderId 订单ID
+ * @return BaseResponse
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse applyVirtualNumberAgain(String orderId) throws WxErrorException;
+
+ /**
+ * 订单虚拟号延期
+ *
+ * @param orderId 订单ID
+ * @return BaseResponse
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse delayVirtualNumber(String orderId) throws WxErrorException;
+
+ /**
+ * 添加待认证的手机号
+ *
+ * @param phone 手机号
+ * @return BaseResponse
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse addPrivatePhone(String phone) throws WxErrorException;
+
+ /**
+ * 获取短信验证码
+ *
+ * @param phone 手机号
+ * @return BaseResponse
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse sendPrivatePhoneVerifyCode(String phone) throws WxErrorException;
+
+ /**
+ * 获取小店手机号认证状态
+ *
+ * @return 手机号认证状态
+ * @throws WxErrorException 异常
+ */
+ PrivateNumberGetPhoneResponse getPrivatePhone() throws WxErrorException;
+
+ /**
+ * 订单补发货
+ *
+ * @param param 补发货参数
+ * @return BaseResponse
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse compensationDelivery(OrderCompensationDeliveryParam param) throws WxErrorException;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreProductAssistantService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreProductAssistantService.java
new file mode 100644
index 0000000000..bdc7a03695
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreProductAssistantService.java
@@ -0,0 +1,77 @@
+package com.binarywang.wxjava.store.api;
+
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.product.assistant.BeginTimingSaleParam;
+import com.binarywang.wxjava.store.bean.product.assistant.CancelTimingSaleParam;
+import com.binarywang.wxjava.store.bean.product.assistant.CategoryPreCheckParam;
+import com.binarywang.wxjava.store.bean.product.assistant.CategoryPreCheckResponse;
+import com.binarywang.wxjava.store.bean.product.assistant.ExternalProductMappingNewParam;
+import com.binarywang.wxjava.store.bean.product.assistant.ExternalProductMappingNewResponse;
+import com.binarywang.wxjava.store.bean.product.assistant.ExternalProductMappingParam;
+import com.binarywang.wxjava.store.bean.product.assistant.ExternalProductMappingResponse;
+import com.binarywang.wxjava.store.bean.product.assistant.ProductBrandRecommendParam;
+import com.binarywang.wxjava.store.bean.product.assistant.ProductBrandRecommendResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店商品辅助功能服务。
+ */
+public interface WxStoreProductAssistantService {
+
+ /**
+ * 发品前校验。
+ *
+ * @param param 校验参数
+ * @return 校验结果
+ * @throws WxErrorException 异常
+ */
+ CategoryPreCheckResponse categoryPreCheck(CategoryPreCheckParam param) throws WxErrorException;
+
+ /**
+ * 获取商品品牌推荐。
+ *
+ * @param param 推荐参数
+ * @return 推荐结果
+ * @throws WxErrorException 异常
+ */
+ ProductBrandRecommendResponse getProductBrandRecommend(ProductBrandRecommendParam param)
+ throws WxErrorException;
+
+ /**
+ * 获取站内外商品属性映射。
+ *
+ * @param param 映射参数
+ * @return 映射结果
+ * @throws WxErrorException 异常
+ */
+ ExternalProductMappingResponse externalProductMapping(ExternalProductMappingParam param)
+ throws WxErrorException;
+
+ /**
+ * 获取商品属性映射及推荐。
+ *
+ * @param param 映射参数
+ * @return 映射结果
+ * @throws WxErrorException 异常
+ */
+ ExternalProductMappingNewResponse externalProductMappingNew(ExternalProductMappingNewParam param)
+ throws WxErrorException;
+
+ /**
+ * 将定时开售商品改为立即开售。
+ *
+ * @param param 开售参数
+ * @return 操作结果
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse beginTimingSale(BeginTimingSaleParam param) throws WxErrorException;
+
+ /**
+ * 取消商品定时开售。
+ *
+ * @param param 取消参数
+ * @return 操作结果
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse cancelTimingSale(CancelTimingSaleParam param) throws WxErrorException;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreProductService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreProductService.java
new file mode 100644
index 0000000000..f7e5422af5
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreProductService.java
@@ -0,0 +1,480 @@
+package com.binarywang.wxjava.store.api;
+
+
+import java.util.List;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.limit.LimitTaskAddResponse;
+import com.binarywang.wxjava.store.bean.limit.LimitTaskListResponse;
+import com.binarywang.wxjava.store.bean.limit.LimitTaskParam;
+import com.binarywang.wxjava.store.bean.product.GiftActivityAddResponse;
+import com.binarywang.wxjava.store.bean.product.GiftActivityInfo;
+import com.binarywang.wxjava.store.bean.product.GiftProductAddResponse;
+import com.binarywang.wxjava.store.bean.product.GiftProductGetResponse;
+import com.binarywang.wxjava.store.bean.product.GiftProductInfo;
+import com.binarywang.wxjava.store.bean.product.GiftProductListParam;
+import com.binarywang.wxjava.store.bean.product.GiftProductListResponse;
+import com.binarywang.wxjava.store.bean.product.AddProductThirdPartySourceParam;
+import com.binarywang.wxjava.store.bean.product.AddProductThirdPartySourceResponse;
+import com.binarywang.wxjava.store.bean.product.ExternalProductMappingNewParam;
+import com.binarywang.wxjava.store.bean.product.ExternalProductMappingNewResponse;
+import com.binarywang.wxjava.store.bean.product.ExternalProductMappingParam;
+import com.binarywang.wxjava.store.bean.product.ExternalProductMappingResponse;
+import com.binarywang.wxjava.store.bean.product.ProductAuditQuotaResponse;
+import com.binarywang.wxjava.store.bean.product.ProductAuditStrategyResponse;
+import com.binarywang.wxjava.store.bean.product.ProductAuditStrategySetParam;
+import com.binarywang.wxjava.store.bean.product.ProductBrandRecommendParam;
+import com.binarywang.wxjava.store.bean.product.ProductBrandRecommendResponse;
+import com.binarywang.wxjava.store.bean.product.ProductCategoryClassifyParam;
+import com.binarywang.wxjava.store.bean.product.ProductCategoryClassifyResponse;
+import com.binarywang.wxjava.store.bean.product.ProductCategoryPreCheckParam;
+import com.binarywang.wxjava.store.bean.product.ProductCategoryPreCheckResponse;
+import com.binarywang.wxjava.store.bean.product.ProductSchemeParam;
+import com.binarywang.wxjava.store.bean.product.ProductSchemeResponse;
+import com.binarywang.wxjava.store.bean.product.ProductStockFlowParam;
+import com.binarywang.wxjava.store.bean.product.ProductStockFlowResponse;
+import com.binarywang.wxjava.store.bean.product.ProductTimingSaleParam;
+import com.binarywang.wxjava.store.bean.product.SkuStockBatchResponse;
+import com.binarywang.wxjava.store.bean.product.SkuStockResponse;
+import com.binarywang.wxjava.store.bean.product.SpuFastInfo;
+import com.binarywang.wxjava.store.bean.product.SpuGetResponse;
+import com.binarywang.wxjava.store.bean.product.SpuInfo;
+import com.binarywang.wxjava.store.bean.product.SpuListResponse;
+import com.binarywang.wxjava.store.bean.product.SpuUpdateInfo;
+import com.binarywang.wxjava.store.bean.product.SpuUpdateResponse;
+import com.binarywang.wxjava.store.bean.product.link.ProductH5UrlResponse;
+import com.binarywang.wxjava.store.bean.product.link.ProductQrCodeResponse;
+import com.binarywang.wxjava.store.bean.product.link.ProductTagLinkResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 商品服务接口
+ *
+ * @author Zeyes
+ * @see 商品状态流转图
+ */
+public interface WxStoreProductService {
+
+ /**
+ * 添加商品
+ *
+ * @param info 商品信息
+ * @return 返回商品的状态和id
+ *
+ * @throws WxErrorException 异常
+ */
+ SpuUpdateResponse addProduct(SpuUpdateInfo info) throws WxErrorException;
+
+ /**
+ * 更新商品
+ *
+ * @param info 商品信息
+ * @return 返回商品的状态和id
+ *
+ * @throws WxErrorException 异常
+ */
+ SpuUpdateResponse updateProduct(SpuUpdateInfo info) throws WxErrorException;
+
+ /**
+ * 添加商品
+ *
+ * @param info 商品信息
+ * @return 返回商品的状态和id
+ *
+ * @throws WxErrorException 异常
+ * @deprecated 请使用 {@link #addProduct(SpuUpdateInfo)}
+ */
+ @Deprecated
+ SpuUpdateResponse addProduct(SpuInfo info) throws WxErrorException;
+
+ /**
+ * 更新商品
+ *
+ * @param info 商品信息
+ * @return 返回商品的状态和id
+ *
+ * @throws WxErrorException 异常
+ * @deprecated 请使用 {@link #updateProduct(SpuUpdateInfo)}
+ */
+ @Deprecated
+ SpuUpdateResponse updateProduct(SpuInfo info) throws WxErrorException;
+
+ /**
+ * 免审更新商品
+ *
+ * @param info 商品信息
+ * @return 返回商品的状态和id
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse updateProductAuditFree(SpuFastInfo info) throws WxErrorException;
+
+ /**
+ * 更新商品库存 (仅对edit_status != 2 的商品适用,其他状态的商品无法通过该接口修改库存)
+ *
+ * @param productId 内部商品ID
+ * @param skuId 内部sku_id
+ * @param diffType 修改类型 1增加 2减少 3设置
+ * 建议使用1或2,不建议使用3,因为使用3在高并发场景可能会出现预期外表现
+ * @param num 增加、减少或者设置的库存值
+ * @return WxStoreBaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse updateStock(String productId, String skuId, Integer diffType, Integer num)
+ throws WxErrorException;
+
+ /**
+ * 删除商品
+ *
+ * @param productId 商品ID
+ * @return 是否成功
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse deleteProduct(String productId) throws WxErrorException;
+
+ /**
+ * 撤回商品审核
+ *
+ * @param productId 商品ID
+ * @return 是否成功
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse cancelProductAudit(String productId) throws WxErrorException;
+
+ /**
+ * 获取商品
+ *
+ * @param productId 商品ID
+ * @param dataType 默认取1 1:获取线上数据 2:获取草稿数据 3:同时获取线上和草稿数据(注意:需成功上架后才有线上数据)
+ * @return 商品信息
+ *
+ * @throws WxErrorException 异常
+ */
+ SpuGetResponse getProduct(String productId, Integer dataType) throws WxErrorException;
+
+ /**
+ * 获取商品列表
+ *
+ * @param pageSize 每页数量(默认10,不超过30)
+ * @param nextKey 由上次请求返回,记录翻页的上下文。传入时会从上次返回的结果往后翻一页,不传默认拉取第一页数据。
+ * @param status 商品状态,不填默认拉全部商品(不包含回收站) {@link com.binarywang.wxjava.store.enums.SpuStatus}
+ * @return List
+ *
+ * @throws WxErrorException 异常
+ */
+ SpuListResponse listProduct(Integer pageSize, String nextKey, Integer status) throws WxErrorException;
+
+ /**
+ * 上架商品
+ *
+ * @param productId 商品ID
+ * @return 是否成功
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse upProduct(String productId) throws WxErrorException;
+
+ /**
+ * 下架商品
+ *
+ * @param productId 商品ID
+ * @return 是否成功
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse downProduct(String productId) throws WxErrorException;
+
+ /**
+ * 获取商品实时库存
+ *
+ * @param productId 商品ID
+ * @param skuId skuId
+ * @return SkuStockResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ SkuStockResponse getSkuStock(String productId, String skuId) throws WxErrorException;
+
+ /**
+ * 批量获取库存信息 (单次请求不能超过50个商品ID)
+ *
+ * @param productIds 商品ID列表
+ * @return 库存信息
+ * @throws WxErrorException 异常
+ */
+ SkuStockBatchResponse getSkuStockBatch(List productIds) throws WxErrorException;
+
+ /**
+ * 获取商品H5链接
+ *
+ * @param productId 商品ID
+ * @return 商品H5链接
+ * @throws WxErrorException 异常
+ */
+ ProductH5UrlResponse getProductH5Url(String productId) throws WxErrorException;
+
+ /**
+ * 获取商品二维码
+ *
+ * @param productId 商品ID
+ * @return 商品二维码
+ * @throws WxErrorException 异常
+ */
+ ProductQrCodeResponse getProductQrCode(String productId) throws WxErrorException;
+
+ /**
+ * 获取商品口令
+ *
+ * @param productId 商品ID
+ * @return 商品口令
+ * @throws WxErrorException 异常
+ */
+ ProductTagLinkResponse getProductTagLink(String productId) throws WxErrorException;
+
+ /**
+ * 获取商品的移动应用跳转 scheme 码.
+ *
+ * @param param 商品 ID、来源 appid、过期时间和附加信息
+ * @return 商品跳转 scheme 码
+ * @throws WxErrorException 调用微信接口失败
+ */
+ ProductSchemeResponse getProductScheme(ProductSchemeParam param) throws WxErrorException;
+
+ /**
+ * 商品类目推荐.
+ *
+ * @param param 请求类型、商品标题、主图和可选类目 ID;当请求类型为 2 时必须提供类目 ID
+ * @return 推荐类目及店铺经营权限
+ * @throws WxErrorException 调用微信接口失败
+ */
+ ProductCategoryClassifyResponse classifyProductCategory(ProductCategoryClassifyParam param) throws WxErrorException;
+
+ /**
+ * 将定时开售商品改为立即开售.
+ *
+ * @param param 商品 ID 和定时开售任务 ID
+ * @return 操作结果
+ * @throws WxErrorException 调用微信接口失败
+ */
+ WxStoreBaseResponse beginTimingSale(ProductTimingSaleParam param) throws WxErrorException;
+
+ /**
+ * 取消商品开售.
+ *
+ * @param productId 商品 ID
+ * @return 操作结果
+ * @throws WxErrorException 调用微信接口失败
+ */
+ WxStoreBaseResponse cancelTimingSale(String productId) throws WxErrorException;
+
+ /**
+ * 查询站内外商品属性映射.
+ *
+ * @param param 叶子类目 ID、外部类目和外部属性
+ * @return 对应的站内属性及可选属性值
+ * @throws WxErrorException 调用微信接口失败
+ */
+ ExternalProductMappingResponse externalProductMapping(ExternalProductMappingParam param) throws WxErrorException;
+
+ /**
+ * 发品前校验店铺类目资质.
+ *
+ * @param param 待发布商品的叶子类目 ID
+ * @return 校验结果和未通过原因
+ * @throws WxErrorException 调用微信接口失败
+ */
+ ProductCategoryPreCheckResponse categoryPreCheck(ProductCategoryPreCheckParam param) throws WxErrorException;
+
+ /**
+ * 获取店铺维度的商品上架策略.
+ *
+ * @return 当前上架策略
+ * @throws WxErrorException 调用微信接口失败
+ */
+ ProductAuditStrategyResponse getProductAuditStrategy() throws WxErrorException;
+
+ /**
+ * 设置店铺维度的商品上架策略.
+ *
+ * @param param 要设置的上架策略
+ * @return 操作结果
+ * @throws WxErrorException 调用微信接口失败
+ */
+ WxStoreBaseResponse setProductAuditStrategy(ProductAuditStrategySetParam param) throws WxErrorException;
+
+ /**
+ * 获取当前店铺的商品提审限额.
+ *
+ * @return 提审总额度和新品剩余额度
+ * @throws WxErrorException 调用微信接口失败
+ */
+ ProductAuditQuotaResponse getProductAuditQuota() throws WxErrorException;
+
+ /**
+ * 商品属性映射及推荐.
+ *
+ * @param param 叶子类目、商品标题、主图及可选的外部属性
+ * @return 推荐的站内属性
+ * @throws WxErrorException 调用微信接口失败
+ */
+ ExternalProductMappingNewResponse externalProductMappingNew(ExternalProductMappingNewParam param)
+ throws WxErrorException;
+
+ /**
+ * 根据商品信息推荐店铺已有资质的品牌.
+ *
+ * @param param 商品叶子类目、标题和图片
+ * @return 推荐品牌
+ * @throws WxErrorException 调用微信接口失败
+ */
+ ProductBrandRecommendResponse productBrandRecommend(ProductBrandRecommendParam param) throws WxErrorException;
+
+ /**
+ * 新增第三方货源信息.
+ *
+ * @param param 场景、发布方式、货主及货源商品信息
+ * @return 包含第三方货源 ID 的操作结果
+ * @throws WxErrorException 调用微信接口失败
+ */
+ AddProductThirdPartySourceResponse addProductThirdPartySource(AddProductThirdPartySourceParam param)
+ throws WxErrorException;
+
+ /**
+ * 获取商品库存流水.
+ *
+ * @param param 商品、SKU、库存类型、时间范围和分页参数;pageSize 必填,stockType 为 1 时 finderId 必填,库存类型非 0 和 1 时 stockTypeId 必填
+ * @return 库存流水及下一页标识
+ * @throws WxErrorException 调用微信接口失败
+ */
+ ProductStockFlowResponse getStockFlow(ProductStockFlowParam param) throws WxErrorException;
+
+ /**
+ * 添加非卖商品
+ *
+ * @param info 赠品信息
+ * @return 添加赠品响应
+ * @throws WxErrorException 异常
+ */
+ GiftProductAddResponse addGiftProduct(GiftProductInfo info) throws WxErrorException;
+
+ /**
+ * 更新非卖商品
+ *
+ * @param info 赠品信息
+ * @return 操作响应
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse updateGiftProduct(GiftProductInfo info) throws WxErrorException;
+
+ /**
+ * 在售商品转赠品
+ *
+ * @param productId 商品ID
+ * @return 操作响应
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse setProductAsGift(String productId) throws WxErrorException;
+
+ /**
+ * 获取赠品
+ *
+ * @param productId 赠品商品ID
+ * @return 赠品详情响应
+ * @throws WxErrorException 异常
+ */
+ GiftProductGetResponse getGiftProduct(String productId) throws WxErrorException;
+
+ /**
+ * 获取赠品列表
+ *
+ * @param param 查询参数
+ * @return 赠品列表
+ * @throws WxErrorException 异常
+ */
+ GiftProductListResponse listGiftProduct(GiftProductListParam param) throws WxErrorException;
+
+ /**
+ * 更新赠品库存
+ *
+ * @param productId 赠品商品ID
+ * @param skuId 赠品sku_id
+ * @param diffType 修改类型 1增加 2减少 3设置
+ * 建议使用1或2,不建议使用3,因为使用3在高并发场景可能会出现预期外表现
+ * @param num 增加、减少或者设置的库存值
+ * @return 操作响应
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse updateGiftStock(String productId, String skuId, Integer diffType, Integer num)
+ throws WxErrorException;
+
+ /**
+ * 创建赠品活动
+ *
+ * @param info 活动信息
+ * @return 创建赠品活动响应
+ * @throws WxErrorException 异常
+ */
+ GiftActivityAddResponse addGiftActivity(GiftActivityInfo info) throws WxErrorException;
+
+ /**
+ * 删除赠品活动
+ *
+ * @param activityId 活动ID
+ * @return 操作响应
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse deleteGiftActivity(String activityId) throws WxErrorException;
+
+ /**
+ * 停止赠品活动
+ *
+ * @param activityId 活动ID
+ * @return 操作响应
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse stopGiftActivity(String activityId) throws WxErrorException;
+
+ /**
+ * 添加限时抢购任务
+ *
+ * @param param 限时抢购任务
+ * @return LimitTaskAddResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ LimitTaskAddResponse addLimitTask(LimitTaskParam param) throws WxErrorException;
+
+ /**
+ * 拉取限时抢购任务列表
+ *
+ * @param pageSize 每页数量(默认10,不超过50)
+ * @param nextKey 由上次请求返回,记录翻页的上下文。传入时会从上次返回的结果往后翻一页,不传默认拉取第一页数据
+ * @param status 抢购活动状态
+ * @return LimitTaskListResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ LimitTaskListResponse listLimitTask(Integer pageSize, String nextKey, Integer status) throws WxErrorException;
+
+ /**
+ * 停止限时抢购任务
+ *
+ * @param taskId 限时抢购任务ID
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse stopLimitTask(String taskId) throws WxErrorException;
+
+ /**
+ * 停止限时抢购任务
+ *
+ * @param taskId 限时抢购任务ID
+ * @return BaseResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse deleteLimitTask(String taskId) throws WxErrorException;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreProductStockService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreProductStockService.java
new file mode 100644
index 0000000000..12a3911cad
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreProductStockService.java
@@ -0,0 +1,56 @@
+package com.binarywang.wxjava.store.api;
+
+import java.util.List;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.product.SkuStockBatchResponse;
+import com.binarywang.wxjava.store.bean.product.SkuStockResponse;
+import com.binarywang.wxjava.store.bean.product.stock.StockFlowParam;
+import com.binarywang.wxjava.store.bean.product.stock.StockFlowResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店商品库存服务。
+ */
+public interface WxStoreProductStockService {
+
+ /**
+ * 更新商品库存。
+ *
+ * @param productId 商品ID
+ * @param skuId 商品sku_id
+ * @param diffType 修改类型 1增加 2减少 3设置
+ * @param num 增加、减少或者设置的库存值
+ * @return 操作响应
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse updateStock(String productId, String skuId, Integer diffType, Integer num)
+ throws WxErrorException;
+
+ /**
+ * 获取商品实时库存。
+ *
+ * @param productId 商品ID
+ * @param skuId 商品sku_id
+ * @return 库存响应
+ * @throws WxErrorException 异常
+ */
+ SkuStockResponse getSkuStock(String productId, String skuId) throws WxErrorException;
+
+ /**
+ * 批量获取库存信息。
+ *
+ * @param productIds 商品ID列表,单次请求不超过50个
+ * @return 库存信息
+ * @throws WxErrorException 异常
+ */
+ SkuStockBatchResponse getSkuStockBatch(List productIds) throws WxErrorException;
+
+ /**
+ * 获取商品库存流水。
+ *
+ * @param param 库存流水查询参数
+ * @return 库存流水响应
+ * @throws WxErrorException 异常
+ */
+ StockFlowResponse getStockFlow(StockFlowParam param) throws WxErrorException;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreQicService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreQicService.java
new file mode 100644
index 0000000000..819d0488b8
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreQicService.java
@@ -0,0 +1,67 @@
+package com.binarywang.wxjava.store.api;
+
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.qic.InspectCodeResponse;
+import com.binarywang.wxjava.store.bean.qic.InspectConfigResponse;
+import com.binarywang.wxjava.store.bean.qic.RegisterLogisticsRequest;
+import com.binarywang.wxjava.store.bean.qic.SubmitConfigResponse;
+import com.binarywang.wxjava.store.bean.qic.SubmitInspectRequest;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 质检管理接口.
+ */
+public interface WxStoreQicService {
+
+ /**
+ * 查询质检仓配置.
+ *
+ * @return 质检仓配置
+ * @throws WxErrorException 异常
+ */
+ InspectConfigResponse getInspectConfig() throws WxErrorException;
+
+ /**
+ * 查询送检配置模板信息.
+ *
+ * @param orderId 订单号(可选)
+ * @return 送检配置模板信息
+ * @throws WxErrorException 异常
+ */
+ SubmitConfigResponse getSubmitConfig(String orderId) throws WxErrorException;
+
+ /**
+ * 查询送检配置模板信息.
+ *
+ * @return 送检配置模板信息
+ * @throws WxErrorException 异常
+ */
+ SubmitConfigResponse getSubmitConfig() throws WxErrorException;
+
+ /**
+ * 打印质检码.
+ *
+ * @param orderId 订单号
+ * @return 质检码详情
+ * @throws WxErrorException 异常
+ */
+ InspectCodeResponse printInspectCode(String orderId) throws WxErrorException;
+
+ /**
+ * 绑定送检信息.
+ *
+ * @param request 送检信息请求
+ * @return 基础响应
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse submitInspectInfo(SubmitInspectRequest request) throws WxErrorException;
+
+ /**
+ * 自寄快递送检.
+ *
+ * @param request 自寄快递请求
+ * @return 基础响应
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse registerLogistics(RegisterLogisticsRequest request) throws WxErrorException;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreService.java
new file mode 100644
index 0000000000..7b88a9f6b6
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreService.java
@@ -0,0 +1,204 @@
+package com.binarywang.wxjava.store.api;
+
+/**
+ * The interface Wx Store service
+ *
+ * @author Zeyes
+ */
+public interface WxStoreService extends BaseWxStoreService {
+
+ /**
+ * 商家客服服务。
+ *
+ * @return 商家客服服务
+ */
+ default WxStoreKfService getKfService() {
+ throw new UnsupportedOperationException("WxStoreService implementation does not support getKfService()");
+ }
+
+ /**
+ * 基础接口服务
+ *
+ * @return 基础接口服务
+ */
+ WxStoreBasicService getBasicService();
+
+ /**
+ * 商品类目服务
+ *
+ * @return 商品类目服务
+ */
+ WxStoreCategoryService getCategoryService();
+
+ /**
+ * 品牌服务
+ *
+ * @return 品牌服务
+ */
+ WxStoreBrandService getBrandService();
+
+ /**
+ * 商品服务
+ *
+ * @return 商品服务
+ */
+ WxStoreProductService getProductService();
+
+ /**
+ * 赠品与买赠活动服务
+ *
+ * @return 赠品与买赠活动服务
+ */
+ default WxStoreGiftService getGiftService() {
+ throw new UnsupportedOperationException("Gift service is not supported by this implementation");
+ }
+
+ /**
+ * 限时抢购服务
+ *
+ * @return 限时抢购服务
+ */
+ default WxStoreLimitedDiscountService getLimitedDiscountService() {
+ throw new UnsupportedOperationException("Limited discount service is not supported by this implementation");
+ }
+
+ /**
+ * 商品库存服务
+ *
+ * @return 商品库存服务
+ */
+ default WxStoreProductStockService getProductStockService() {
+ throw new UnsupportedOperationException("Product stock service is not supported by this implementation");
+ }
+
+ /**
+ * 商品辅助功能服务
+ *
+ * @return 商品辅助功能服务
+ */
+ default WxStoreProductAssistantService getProductAssistantService() {
+ throw new UnsupportedOperationException("Product assistant service is not supported by this implementation");
+ }
+
+ /**
+ * 仓库服务
+ *
+ * @return 仓库服务
+ */
+ WxStoreWarehouseService getWarehouseService();
+
+ /**
+ * 订单服务
+ *
+ * @return 订单服务
+ */
+ WxStoreOrderService getOrderService();
+
+ /**
+ * 售后服务
+ *
+ * @return 售后服务
+ */
+ WxStoreAfterSaleService getAfterSaleService();
+
+ /**
+ * 运费模板服务
+ *
+ * @return 运费模板服务
+ */
+ WxStoreFreightTemplateService getFreightTemplateService();
+
+ /**
+ * 地址服务
+ *
+ * @return 地址服务
+ */
+ WxStoreAddressService getAddressService();
+
+ /**
+ * 优惠券服务
+ *
+ * @return 优惠券服务
+ */
+ WxStoreCouponService getCouponService();
+
+ /**
+ * 分享员服务
+ *
+ * @return 分享员服务
+ */
+ WxStoreSharerService getSharerService();
+
+ /**
+ * 资金服务
+ *
+ * @return 资金服务
+ */
+ WxStoreFundService getFundService();
+
+ /**
+ * 主页管理服务
+ *
+ * @return 主页管理服务
+ */
+ WxStoreHomePageService getHomePageService();
+
+ /**
+ * 合作账号服务
+ *
+ * @return 团长合作服务
+ */
+ WxStoreCooperationService getCooperationService();
+
+ /**
+ * 微信小店 罗盘商家版服务
+ *
+ * @return 罗盘商家版服务
+ */
+ WxStoreCompassShopService getCompassShopService();
+
+ /**
+ * 代发管理服务
+ *
+ * @return 代发管理服务
+ */
+ WxStoreSupplierService getSupplierService();
+
+ /**
+ * 会员功能
+ *
+ * @return 会员服务
+ */
+ WxStoreVipService getVipService();
+
+ /**
+ * 质检管理服务.
+ *
+ * @return 质检管理服务
+ */
+ WxStoreQicService getQicService();
+
+ /**
+ * 微信小店-带货助手服务
+ *
+ * @return 带货助手服务
+ */
+ WxTalentService getTalentService();
+
+ /**
+ * 收藏管理服务
+ *
+ * @return 收藏管理服务
+ */
+ WxStoreFavoriteService getFavoriteService();
+
+ /**
+ * 电子面单服务
+ *
+ * @return 电子面单服务
+ */
+ default WxStoreEwaybillService getEwaybillService() {
+ throw new UnsupportedOperationException("当前 WxStoreService 实现不支持电子面单服务");
+ }
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreSharerService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreSharerService.java
new file mode 100644
index 0000000000..a85c19b397
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreSharerService.java
@@ -0,0 +1,71 @@
+package com.binarywang.wxjava.store.api;
+
+import java.util.List;
+import com.binarywang.wxjava.store.bean.sharer.SharerBindResponse;
+import com.binarywang.wxjava.store.bean.sharer.SharerInfoResponse;
+import com.binarywang.wxjava.store.bean.sharer.SharerOrderParam;
+import com.binarywang.wxjava.store.bean.sharer.SharerOrderResponse;
+import com.binarywang.wxjava.store.bean.sharer.SharerSearchResponse;
+import com.binarywang.wxjava.store.bean.sharer.SharerUnbindResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 分享员服务接口
+ *
+ * @author Zeyes
+ */
+public interface WxStoreSharerService {
+
+ /**
+ * 邀请分享员
+ *
+ * @param username 邀请的用户微信号
+ * @return SharerBindResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ SharerBindResponse bindSharer(String username) throws WxErrorException;
+
+ /**
+ * 获取绑定的分享员
+ *
+ * @param openid 分享员openid
+ * @param username 分享员微信号(二选一)
+ * @return SharerSearchResponse
+ *
+ * @throws WxErrorException 异常
+ */
+ SharerSearchResponse searchSharer(String openid, String username) throws WxErrorException;
+
+ /**
+ * 获取绑定的分享员列表
+ *
+ * @param page 分页参数,页数
+ * @param pageSize 分页参数,每页分享员数(不超过100
+ * @param sharerType 分享员类型
+ * @return 分享员列表
+ *
+ * @throws WxErrorException 异常
+ */
+ SharerInfoResponse listSharer(Integer page, Integer pageSize, Integer sharerType) throws WxErrorException;
+
+ /**
+ * 获取分享员订单列表
+ *
+ * @param param 参数
+ * @return 列表
+ *
+ * @throws WxErrorException 异常
+ */
+ SharerOrderResponse listSharerOrder(SharerOrderParam param) throws WxErrorException;
+
+ /**
+ * 解绑分享员
+ *
+ * @param openIds openid列表
+ * @return 状态
+ *
+ * @throws WxErrorException 异常
+ */
+ SharerUnbindResponse unbindSharer(List openIds) throws WxErrorException;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreSupplierService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreSupplierService.java
new file mode 100644
index 0000000000..ba37c6042d
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreSupplierService.java
@@ -0,0 +1,70 @@
+package com.binarywang.wxjava.store.api;
+
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.supplier.DistributeTypeResponse;
+import com.binarywang.wxjava.store.bean.supplier.DropshipAssignRequest;
+import com.binarywang.wxjava.store.bean.supplier.DropshipDetailResponse;
+import com.binarywang.wxjava.store.bean.supplier.DropshipListRequest;
+import com.binarywang.wxjava.store.bean.supplier.DropshipListResponse;
+import com.binarywang.wxjava.store.bean.supplier.DropshipResponse;
+import com.binarywang.wxjava.store.bean.supplier.DropshipSearchRequest;
+import com.binarywang.wxjava.store.bean.supplier.ProductDistributeRequest;
+import com.binarywang.wxjava.store.bean.supplier.ProductListResponse;
+import com.binarywang.wxjava.store.bean.supplier.SupplierInfoResponse;
+import com.binarywang.wxjava.store.bean.supplier.SupplierListResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店代发管理服务。
+ *
+ * @author GitHub Copilot
+ * @see 代发管理接口文档
+ */
+public interface WxStoreSupplierService {
+
+ /** 获取供货商列表。 */
+ SupplierListResponse getSupplierList() throws WxErrorException;
+
+ /**
+ * 获取供货商列表。
+ *
+ * @param pageSize 每页数量
+ * @param nextKey 由上次请求返回,记录翻页的上下文。传入时会从上次返回的结果往后翻一页
+ * @return 供货商列表响应
+ * @throws WxErrorException 异常
+ */
+ SupplierListResponse getSupplierList(Integer pageSize, String nextKey) throws WxErrorException;
+
+ /** 获取分配方式。 */
+ DistributeTypeResponse getDistribute() throws WxErrorException;
+
+ /** 设置全店订单手动分配。 */
+ WxStoreBaseResponse setManuallyDistribute() throws WxErrorException;
+
+ /** 设置全店订单自动分配。 */
+ WxStoreBaseResponse setAllDistribute(String supplierId) throws WxErrorException;
+
+ /** 设置按商品自动分配。 */
+ WxStoreBaseResponse setProductDistribute(ProductDistributeRequest req) throws WxErrorException;
+
+ /** 获取商品对应的自动分配供货商。 */
+ SupplierInfoResponse getProductDefaultDistribute(String productId) throws WxErrorException;
+
+ /** 获取按商品自动分配的商品列表。 */
+ ProductListResponse getProductList(String supplierId) throws WxErrorException;
+
+ /** 分配订单代发。 */
+ DropshipResponse assignOrder(DropshipAssignRequest req) throws WxErrorException;
+
+ /** 取消分配代发单。 */
+ WxStoreBaseResponse cancelDropship(String orderId) throws WxErrorException;
+
+ /** 查询代发单详情。 */
+ DropshipDetailResponse getDropship(String orderId) throws WxErrorException;
+
+ /** 拉取代发单列表。 */
+ DropshipListResponse listDropship(DropshipListRequest req) throws WxErrorException;
+
+ /** 搜索代发单。 */
+ DropshipListResponse searchDropship(DropshipSearchRequest req) throws WxErrorException;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreVipService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreVipService.java
new file mode 100644
index 0000000000..fbd231c401
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreVipService.java
@@ -0,0 +1,97 @@
+package com.binarywang.wxjava.store.api;
+
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.vip.VipInfoResponse;
+import com.binarywang.wxjava.store.bean.vip.VipListResponse;
+import com.binarywang.wxjava.store.bean.vip.VipScoreResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 会员功能接口
+ *
+ * @author aushiye
+ * @link 会员功能接口文档
+ */
+public interface WxStoreVipService {
+ /** 拉取用户详情 */
+ // String VIP_USER_INFO_URL = "https://api.weixin.qq.com/channels/ec/vip/user/info/get";
+ // /** 拉取用户列表 */
+ // String VIP_USER_LIST_URL = "https://api.weixin.qq.com/channels/ec/vip/user/list/get";
+ //
+ // /** 获取用户积分 */
+ // String VIP_SCORE_URL = "https://api.weixin.qq.com/channels/ec/vip/user/score/get";
+ // /** 增加用户积分 */
+ // String SCORE_INCREASE_URL = "https://api.weixin.qq.com/channels/ec/vip/user/score/increase";
+ // /** 减少用户积分 */
+ // String SCORE_DECREASE_URL = "https://api.weixin.qq.com/channels/ec/vip/user/score/decrease";
+ //
+ // /** 更新用户等级 */
+ // String GRADE_UPDATE_URL = "https://api.weixin.qq.com/channels/ec/vip/user/grade/update";
+
+
+ /**
+ * 获取用户详情
+ *
+ * @param openId the open id
+ * @param needPhoneNumber the need phone number
+ * @return the vip info
+ * @throws WxErrorException the wx error exception
+ */
+ VipInfoResponse getVipInfo(String openId, Boolean needPhoneNumber) throws WxErrorException;
+
+
+ /**
+ * 获取用户积分
+ *
+ * @param needPhoneNumber the need phone number
+ * @param pageNum the page num
+ * @param pageSize the page size
+ * @return the vip list
+ * @throws WxErrorException the wx error exception
+ */
+ VipListResponse getVipList(Boolean needPhoneNumber, Integer pageNum, Integer pageSize) throws WxErrorException;
+
+ /**
+ * 获取用户积分
+ *
+ * @param openId the open id
+ * @return the vip score
+ * @throws WxErrorException the wx error exception
+ */
+ VipScoreResponse getVipScore(String openId) throws WxErrorException;
+
+ /**
+ * 增加用户积分
+ *
+ * @param openId the open id
+ * @param score the score
+ * @param remark the remark
+ * @param requestId the request id
+ * @return the wx channel base response
+ * @throws WxErrorException the wx error exception
+ */
+ WxStoreBaseResponse increaseVipScore(String openId, String score, String remark, String requestId) throws WxErrorException;
+
+ /**
+ * 减少用户积分
+ *
+ * @param openId the open id
+ * @param score the score
+ * @param remark the remark
+ * @param requestId the request id
+ * @return the wx channel base response
+ * @throws WxErrorException the wx error exception
+ */
+ WxStoreBaseResponse decreaseVipScore(String openId, String score, String remark, String requestId) throws WxErrorException;
+
+ /**
+ * 更新用户等级
+ *
+ * @param openId the open id
+ * @param score the score
+ * @return the wx channel base response
+ * @throws WxErrorException the wx error exception
+ */
+ WxStoreBaseResponse updateVipGrade(String openId, Integer score) throws WxErrorException;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreWarehouseService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreWarehouseService.java
new file mode 100644
index 0000000000..85892b81af
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxStoreWarehouseService.java
@@ -0,0 +1,137 @@
+package com.binarywang.wxjava.store.api;
+
+
+import java.util.List;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.warehouse.LocationPriorityResponse;
+import com.binarywang.wxjava.store.bean.warehouse.PriorityLocationParam;
+import com.binarywang.wxjava.store.bean.warehouse.WarehouseIdsResponse;
+import com.binarywang.wxjava.store.bean.warehouse.WarehouseLocation;
+import com.binarywang.wxjava.store.bean.warehouse.WarehouseParam;
+import com.binarywang.wxjava.store.bean.warehouse.WarehouseResponse;
+import com.binarywang.wxjava.store.bean.warehouse.WarehouseStockParam;
+import com.binarywang.wxjava.store.bean.warehouse.WarehouseStockResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+
+/**
+ * 微信小店 区域仓库服务
+ *
+ * @author Zeyes
+ */
+public interface WxStoreWarehouseService {
+
+ /**
+ * 创建仓库
+ *
+ * @param param 仓库信息
+ * @return 响应
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse createWarehouse(WarehouseParam param) throws WxErrorException;
+
+ /**
+ * 查询仓库列表
+ *
+ * @param pageSize 每页数量(最大不超过10)
+ * @param nextKey 由上次请求返回,记录翻页的上下文。传入时会从上次返回的结果往后翻一页,不传默认拉取第一页数据
+ * @return 响应
+ *
+ * @throws WxErrorException 异常
+ */
+ WarehouseIdsResponse listWarehouse(Integer pageSize, String nextKey) throws WxErrorException;
+
+ /**
+ * 获取仓库详情
+ *
+ * @param outWarehouseId 外部仓库ID
+ * @return 响应
+ *
+ * @throws WxErrorException 异常
+ */
+ WarehouseResponse getWarehouse(String outWarehouseId) throws WxErrorException;
+
+ /**
+ * 修改仓库详情
+ *
+ * @param outWarehouseId 外部仓库ID
+ * @param name 仓库名称
+ * @param intro 仓库介绍
+ * @return 响应
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse updateWarehouse(String outWarehouseId, String name, String intro) throws WxErrorException;
+
+ /**
+ * 批量增加覆盖区域
+ *
+ * @param outWarehouseId 外部仓库ID
+ * @param coverLocations 覆盖区域
+ * @return 响应
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse addWarehouseArea(String outWarehouseId, List coverLocations)
+ throws WxErrorException;
+
+ /**
+ * 批量删除覆盖区域
+ *
+ * @param outWarehouseId 外部仓库ID
+ * @param coverLocations 覆盖区域
+ * @return 响应
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse deleteWarehouseArea(String outWarehouseId, List coverLocations)
+ throws WxErrorException;
+
+ /**
+ * 设置指定地址下的仓的优先级
+ *
+ * @param param 参数
+ * @return 响应
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse setWarehousePriority(PriorityLocationParam param) throws WxErrorException;
+
+ /**
+ * 获取指定地址下的仓的优先级
+ *
+ * @param addressId1 省份地址编码
+ * @param addressId2 市地址编码
+ * @param addressId3 区地址编码
+ * @param addressId4 街道地址编码
+ * @return 仓的优先级
+ *
+ * @throws WxErrorException 异常
+ */
+ LocationPriorityResponse getWarehousePriority(Integer addressId1, Integer addressId2, Integer addressId3,
+ Integer addressId4) throws WxErrorException;
+
+ /**
+ * 更新区域仓库存数量
+ *
+ * @param param 参数
+ * @return 响应
+ *
+ * @throws WxErrorException 异常
+ */
+ WxStoreBaseResponse updateWarehouseStock(WarehouseStockParam param) throws WxErrorException;
+
+ /**
+ * 获取区域仓库存数量
+ *
+ * @param productId 商品ID
+ * @param outWarehouseId 外部仓库ID
+ * @param skuId 商品skuId
+ * @return 响应
+ *
+ * @throws WxErrorException 异常
+ */
+ WarehouseStockResponse getWarehouseStock(String productId, String skuId, String outWarehouseId)
+ throws WxErrorException;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxTalentService.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxTalentService.java
new file mode 100644
index 0000000000..b947e0b53e
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/WxTalentService.java
@@ -0,0 +1,56 @@
+package com.binarywang.wxjava.store.api;
+
+import com.binarywang.wxjava.store.bean.talent.TalentOrderDetailParam;
+import com.binarywang.wxjava.store.bean.talent.TalentOrderDetailResponse;
+import com.binarywang.wxjava.store.bean.talent.TalentOrderListParam;
+import com.binarywang.wxjava.store.bean.talent.TalentOrderListResponse;
+import com.binarywang.wxjava.store.bean.talent.TalentWindowProductDetailParam;
+import com.binarywang.wxjava.store.bean.talent.TalentWindowProductDetailResponse;
+import com.binarywang.wxjava.store.bean.talent.TalentWindowProductListParam;
+import com.binarywang.wxjava.store.bean.talent.TalentWindowProductListResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店-带货助手服务接口
+ *
+ * @author GitHub Copilot
+ */
+public interface WxTalentService {
+
+ /**
+ * 获取佣金单列表
+ *
+ * @param param 查询参数
+ * @return 佣金单列表
+ * @throws WxErrorException 接口调用异常
+ */
+ TalentOrderListResponse getOrderList(TalentOrderListParam param) throws WxErrorException;
+
+ /**
+ * 获取佣金单详情
+ *
+ * @param param 查询参数
+ * @return 佣金单详情
+ * @throws WxErrorException 接口调用异常
+ */
+ TalentOrderDetailResponse getOrderDetail(TalentOrderDetailParam param) throws WxErrorException;
+
+ /**
+ * 获取达人橱窗商品列表
+ *
+ * @param param 查询参数
+ * @return 橱窗商品列表
+ * @throws WxErrorException 接口调用异常
+ */
+ TalentWindowProductListResponse getWindowProductList(TalentWindowProductListParam param) throws WxErrorException;
+
+ /**
+ * 获取达人橱窗商品详情
+ *
+ * @param param 查询参数
+ * @return 橱窗商品详情
+ * @throws WxErrorException 接口调用异常
+ */
+ TalentWindowProductDetailResponse getWindowProductDetail(TalentWindowProductDetailParam param)
+ throws WxErrorException;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/BaseWxStoreMessageServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/BaseWxStoreMessageServiceImpl.java
new file mode 100644
index 0000000000..1369a383e9
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/BaseWxStoreMessageServiceImpl.java
@@ -0,0 +1,418 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import java.util.Map;
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.api.BaseWxStoreMessageService;
+import com.binarywang.wxjava.store.api.WxStoreService;
+import com.binarywang.wxjava.store.bean.message.after.AfterSaleMessage;
+import com.binarywang.wxjava.store.bean.message.after.ComplaintMessage;
+import com.binarywang.wxjava.store.bean.message.coupon.CouponActionMessage;
+import com.binarywang.wxjava.store.bean.message.coupon.CouponReceiveMessage;
+import com.binarywang.wxjava.store.bean.message.coupon.UserCouponExpireMessage;
+import com.binarywang.wxjava.store.bean.message.fund.AccountNotifyMessage;
+import com.binarywang.wxjava.store.bean.message.fund.QrNotifyMessage;
+import com.binarywang.wxjava.store.bean.message.fund.WithdrawNotifyMessage;
+import com.binarywang.wxjava.store.bean.message.order.OrderCancelMessage;
+import com.binarywang.wxjava.store.bean.message.order.OrderConfirmMessage;
+import com.binarywang.wxjava.store.bean.message.order.OrderDeliveryMessage;
+import com.binarywang.wxjava.store.bean.message.order.OrderExtMessage;
+import com.binarywang.wxjava.store.bean.message.order.OrderIdMessage;
+import com.binarywang.wxjava.store.bean.message.order.OrderPayMessage;
+import com.binarywang.wxjava.store.bean.message.order.OrderSettleMessage;
+import com.binarywang.wxjava.store.bean.message.order.OrderStatusMessage;
+import com.binarywang.wxjava.store.bean.message.product.BrandMessage;
+import com.binarywang.wxjava.store.bean.message.product.CategoryAuditMessage;
+import com.binarywang.wxjava.store.bean.message.product.SpuAuditMessage;
+import com.binarywang.wxjava.store.bean.message.product.SpuStockMessage;
+import com.binarywang.wxjava.store.bean.message.sharer.SharerChangeMessage;
+import com.binarywang.wxjava.store.bean.message.store.CloseStoreMessage;
+import com.binarywang.wxjava.store.bean.message.store.NicknameUpdateMessage;
+import com.binarywang.wxjava.store.bean.message.supplier.SupplierItemMessage;
+import com.binarywang.wxjava.store.bean.message.vip.ExchangeInfoMessage;
+import com.binarywang.wxjava.store.bean.message.vip.UserInfoMessage;
+import com.binarywang.wxjava.store.bean.message.voucher.VoucherMessage;
+import com.binarywang.wxjava.store.message.WxStoreMessage;
+import com.binarywang.wxjava.store.message.WxStoreMessageRouter;
+import com.binarywang.wxjava.store.message.WxStoreMessageRouterRule;
+import com.binarywang.wxjava.store.message.rule.HandlerConsumer;
+import me.chanjar.weixin.common.session.WxSessionManager;
+
+import static com.binarywang.wxjava.store.constant.MessageEventConstants.*;
+
+/**
+ * @author Zeyes
+ */
+@Slf4j
+public abstract class BaseWxStoreMessageServiceImpl implements BaseWxStoreMessageService {
+
+ /** 消息路由器 */
+ protected WxStoreMessageRouter router;
+
+ public BaseWxStoreMessageServiceImpl(WxStoreMessageRouter router) {
+ this.router = router;
+ this.addDefaultRule();
+ }
+
+ /**
+ * 添加默认的回调规则
+ */
+ protected void addDefaultRule() {
+ /* 品牌资质事件回调 */
+ this.addRule(BrandMessage.class, BRAND, this::brandUpdate);
+ /* 商品审核结果 */
+ this.addRule(SpuAuditMessage.class, PRODUCT_SPU_AUDIT, this::spuAudit);
+ /* 商品上下架 */
+ this.addRule(SpuAuditMessage.class, PRODUCT_SPU_STATUS_UPDATE, this::spuStatusUpdate);
+ /* 商品更新 */
+ this.addRule(SpuAuditMessage.class, PRODUCT_SPU_UPDATE, this::spuUpdate);
+ /* 商品库存不足 */
+ this.addRule(SpuStockMessage.class, PRODUCT_STOCK_NO_ENOUGH, this::stockNoEnough);
+ /* 类目审核结果 */
+ this.addRule(CategoryAuditMessage.class, PRODUCT_CATEGORY_AUDIT, this::categoryAudit);
+ /* 订单下单 */
+ this.addRule(OrderIdMessage.class, ORDER_NEW, this::orderNew);
+ /* 订单取消 */
+ this.addRule(OrderCancelMessage.class, ORDER_CANCEL, this::orderCancel);
+ /* 订单支付成功 */
+ this.addRule(OrderPayMessage.class, ORDER_PAY, this::orderPay);
+ /* 订单待发货 */
+ this.addRule(OrderIdMessage.class, ORDER_WAIT_SHIPPING, this::orderWaitShipping);
+ /* 订单发货 */
+ this.addRule(OrderDeliveryMessage.class, ORDER_DELIVER, this::orderDelivery);
+ /* 订单确认收货 */
+ this.addRule(OrderConfirmMessage.class, ORDER_CONFIRM, this::orderConfirm);
+ /* 订单结算成功 */
+ this.addRule(OrderSettleMessage.class, ORDER_SETTLE, this::orderSettle);
+ /* 订单其他信息更新 */
+ this.addRule(OrderExtMessage.class, ORDER_EXT_INFO_UPDATE, this::orderExtInfoUpdate);
+ /* 订单状态更新 */
+ this.addRule(OrderStatusMessage.class, ORDER_STATUS_UPDATE, this::orderStatusUpdate);
+ /* 售后单更新通知 */
+ this.addRule(AfterSaleMessage.class, AFTER_SALE_UPDATE, this::afterSaleStatusUpdate);
+ /* 纠纷更新通知 */
+ this.addRule(ComplaintMessage.class, COMPLAINT_NOTIFY, this::complaintNotify);
+ /* 优惠券领取通知 */
+ this.addRule(CouponReceiveMessage.class, RECEIVE_COUPON, this::couponReceive);
+ /* 优惠券使用通知 */
+ this.addRule(CouponActionMessage.class, CREATE_COUPON, this::couponCreate);
+ /* 优惠券删除通知 */
+ this.addRule(CouponActionMessage.class, DELETE_COUPON, this::couponDelete);
+ /* 优惠券过期通知 */
+ this.addRule(CouponActionMessage.class, EXPIRE_COUPON, this::couponExpire);
+ /* 更新优惠券信息通知 */
+ this.addRule(CouponActionMessage.class, UPDATE_COUPON_INFO, this::couponUpdate);
+ /* 更新优惠券信息通知 */
+ this.addRule(CouponActionMessage.class, INVALID_COUPON, this::couponInvalid);
+ /* 用户优惠券过期通知 */
+ this.addRule(UserCouponExpireMessage.class, USER_COUPON_EXPIRE, this::userCouponExpire);
+ /* 用户优惠券过期通知 */
+ this.addRule(UserCouponExpireMessage.class, USER_COUPON_UNUSE, this::userCouponUnuse);
+ /* 优惠券返还通知 */
+ this.addRule(UserCouponExpireMessage.class, USER_COUPON_USE, this::userCouponUse);
+ /* 发放团购优惠成功通知 */
+ this.addRule(VoucherMessage.class, VOUCHER_SEND_SUCC, this::voucherSendSucc);
+ /* 结算账户变更回调 */
+ this.addRule(AccountNotifyMessage.class, ACCOUNT_NOTIFY, this::accountNotify);
+ /* 提现回调 */
+ this.addRule(WithdrawNotifyMessage.class, WITHDRAW_NOTIFY, this::withdrawNotify);
+ /* 提现二维码回调 */
+ this.addRule(QrNotifyMessage.class, QRCODE_STATUS, this::qrNotify);
+ /* 团长 */
+ this.addRule(SupplierItemMessage.class, SUPPLIER_ITEM_UPDATE, this::supplierItemUpdate);
+
+ /* 用户加入会员 */
+ this.addRule(UserInfoMessage.class, USER_VIP_JOIN, false, this::vipJoin);
+ /* 用户注销会员 */
+ this.addRule(UserInfoMessage.class, USER_VIP_CLOSE,false, this::vipClose);
+ /* 用户等级信息更新 */
+ this.addRule(UserInfoMessage.class, USER_VIP_GRADE_INFO_UPDATE, false, this::vipGradeUpdate);
+ /* 用户积分更新 */
+ this.addRule(UserInfoMessage.class, USER_VIP_SCORE_UPDATE, false, this::vipScoreUpdate);
+ /* 用户积分兑换 */
+ this.addRule(ExchangeInfoMessage.class, USER_VIP_SCORE_EXCHANGE, false, this::vipScoreExchange);
+
+ /* 分享员变更 */
+ this.addRule(SharerChangeMessage.class,SHARER_CHANGE,false,this::sharerChange);
+
+ /* 小店注销 */
+ this.addRule(CloseStoreMessage.class, CLOSE_STORE, this::closeStore);
+ /* 小店修改名称 */
+ this.addRule(NicknameUpdateMessage.class, SET_SHOP_NICKNAME, this::updateNickname);
+ }
+
+ /**
+ * 添加一条规则进入路由器
+ *
+ * @param clazz 消息类型
+ * @param event 事件类型
+ * @param consumer 处理器
+ * @param 消息类型
+ */
+ protected void addRule(Class clazz, String event, Boolean async,
+ HandlerConsumer, WxSessionManager> consumer) {
+ WxStoreMessageRouterRule rule = new WxStoreMessageRouterRule<>();
+ rule.setMessageClass(clazz).setEvent(event).setAsync(async);
+ rule.getHandlers().add((message, content, appId, context, sessionManager) -> {
+ consumer.accept(message, content, appId, context, sessionManager);
+ return "success";
+ });
+ rule.setNext(true);
+ this.addRule(rule);
+ }
+
+ protected void addRule(Class clazz, String event,
+ HandlerConsumer, WxSessionManager> consumer) {
+ this.addRule(clazz, event, true, consumer);
+ }
+
+ @Override
+ public void addRule(WxStoreMessageRouterRule extends WxStoreMessage> rule) {
+ router.getRules().add(rule);
+ }
+
+ @Override
+ public Object route(WxStoreMessage message, String content, String appId, final WxStoreService service) {
+ return router.route(message, content, appId, service);
+ }
+
+
+ @Override
+ public void orderNew(OrderIdMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("订单下单, event={}", message.getEvent());
+ }
+
+ @Override
+ public void orderCancel(OrderCancelMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("订单取消, event={}", message.getEvent());
+ }
+
+ @Override
+ public void orderPay(OrderPayMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("订单支付成功, event={}", message.getEvent());
+ }
+
+ @Override
+ public void orderWaitShipping(OrderIdMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("订单待发货, event={}", message.getEvent());
+ }
+
+ @Override
+ public void orderDelivery(OrderDeliveryMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("订单发货, event={}", message.getEvent());
+ }
+
+ @Override
+ public void orderConfirm(OrderConfirmMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("订单确认收货, event={}", message.getEvent());
+ }
+
+ @Override
+ public void orderSettle(OrderSettleMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("订单结算, event={}", message.getEvent());
+ }
+
+ @Override
+ public void orderExtInfoUpdate(OrderExtMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("订单其他信息更新, event={}", message.getEvent());
+ }
+
+ @Override
+ public void orderStatusUpdate(OrderStatusMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("订单状态更新, event={}", message.getEvent());
+ }
+
+ @Override
+ public void spuAudit(SpuAuditMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("商品审核, event={}", message.getEvent());
+ }
+
+ @Override
+ public void spuStatusUpdate(SpuAuditMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("商品状态更新, event={}", message.getEvent());
+ }
+
+ @Override
+ public void spuUpdate(SpuAuditMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("商品更新, event={}", message.getEvent());
+ }
+
+ @Override
+ public void stockNoEnough(SpuStockMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("商品库存不足, event={}", message.getEvent());
+ }
+
+ @Override
+ public void categoryAudit(CategoryAuditMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("分类审核, event={}", message.getEvent());
+ }
+
+ @Override
+ public void brandUpdate(BrandMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("品牌更新, event={}", message.getEvent());
+ }
+
+ @Override
+ public void afterSaleStatusUpdate(AfterSaleMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("售后状态更新, event={}", message.getEvent());
+ }
+
+ @Override
+ public void complaintNotify(ComplaintMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("投诉通知, event={}", message.getEvent());
+ }
+
+ @Override
+ public void couponReceive(CouponReceiveMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("优惠券领取, event={}", message.getEvent());
+ }
+
+ @Override
+ public void couponCreate(CouponActionMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("优惠券创建, event={}", message.getEvent());
+ }
+
+ @Override
+ public void couponDelete(CouponActionMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("优惠券删除, event={}", message.getEvent());
+ }
+
+ @Override
+ public void couponExpire(CouponActionMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("优惠券过期, event={}", message.getEvent());
+ }
+
+ @Override
+ public void couponUpdate(CouponActionMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("优惠券更新, event={}", message.getEvent());
+ }
+
+ @Override
+ public void couponInvalid(CouponActionMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("优惠券失效, event={}", message.getEvent());
+ }
+
+ @Override
+ public void userCouponExpire(UserCouponExpireMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("用户优惠券过期, event={}", message.getEvent());
+ }
+
+ @Override
+ public void userCouponUse(UserCouponExpireMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("用户优惠券使用, event={}", message.getEvent());
+ }
+
+ @Override
+ public void userCouponUnuse(UserCouponExpireMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("用户优惠券取消使用, event={}", message.getEvent());
+ }
+
+ @Override
+ public void voucherSendSucc(VoucherMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("发放团购优惠成功, event={}", message.getEvent());
+ }
+
+ @Override
+ public void accountNotify(AccountNotifyMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("账户通知, event={}", message.getEvent());
+ }
+
+ @Override
+ public void withdrawNotify(WithdrawNotifyMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("提现通知, event={}", message.getEvent());
+ }
+
+ @Override
+ public void qrNotify(QrNotifyMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("二维码通知, event={}", message.getEvent());
+ }
+
+ @Override
+ public void supplierItemUpdate(SupplierItemMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("供应商商品更新, event={}", message.getEvent());
+ }
+
+ @Override
+ public Object defaultMessageHandler(WxStoreMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("默认消息处理, event={}", message.getEvent());
+ return null;
+ }
+
+ @Override
+ public void sharerChange(WxStoreMessage message, String content, String appId, Map context, WxSessionManager sessionManager) {
+ log.info("分享员变更, event={}", message.getEvent());
+ }
+
+ @Override
+ public void vipJoin(UserInfoMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("用户加入会员, event={}", message.getEvent());
+ }
+
+ @Override
+ public void vipClose(UserInfoMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("用户注销会员, event={}", message.getEvent());
+ }
+
+ @Override
+ public void vipGradeUpdate(UserInfoMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("用户等级信息更新, event={}", message.getEvent());
+ }
+
+ @Override
+ public void vipScoreUpdate(UserInfoMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("用户积分更新, event={}", message.getEvent());
+ }
+
+ @Override
+ public void vipScoreExchange(ExchangeInfoMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("用户积分兑换, event={}", message.getEvent());
+ }
+
+ @Override
+ public void closeStore(CloseStoreMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("小店注销, event={}", message.getEvent());
+ }
+
+ @Override
+ public void updateNickname(NicknameUpdateMessage message, String content, String appId,
+ Map context, WxSessionManager sessionManager) {
+ log.info("小店修改名称, event={}", message.getEvent());
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/BaseWxStoreServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/BaseWxStoreServiceImpl.java
new file mode 100644
index 0000000000..90ada97f60
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/BaseWxStoreServiceImpl.java
@@ -0,0 +1,478 @@
+package com.binarywang.wxjava.store.api.impl;
+
+
+import com.google.gson.JsonObject;
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.api.*;
+import com.binarywang.wxjava.store.config.WxStoreConfig;
+import com.binarywang.wxjava.store.util.JsonUtils;
+import me.chanjar.weixin.common.api.WxConsts;
+import me.chanjar.weixin.common.bean.CommonUploadParam;
+import me.chanjar.weixin.common.bean.ToJson;
+import me.chanjar.weixin.common.bean.WxAccessToken;
+import me.chanjar.weixin.common.enums.WxType;
+import me.chanjar.weixin.common.error.WxError;
+import me.chanjar.weixin.common.error.WxErrorException;
+import me.chanjar.weixin.common.error.WxRuntimeException;
+import me.chanjar.weixin.common.executor.CommonUploadRequestExecutor;
+import me.chanjar.weixin.common.util.DataUtils;
+import me.chanjar.weixin.common.util.crypto.SHA1;
+import me.chanjar.weixin.common.util.http.RequestExecutor;
+import me.chanjar.weixin.common.util.http.RequestHttp;
+import me.chanjar.weixin.common.util.http.SimpleGetRequestExecutor;
+import me.chanjar.weixin.common.util.http.SimplePostRequestExecutor;
+import org.apache.commons.lang3.StringUtils;
+
+import java.io.IOException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.locks.Lock;
+
+/**
+ * @author Zeyes
+ * @see #doGetAccessTokenRequest
+ */
+@Slf4j
+public abstract class BaseWxStoreServiceImpl implements WxStoreService, RequestHttp {
+
+ private final WxStoreBasicService basicService = new WxStoreBasicServiceImpl(this);
+ private final WxStoreCategoryService categoryService = new WxStoreCategoryServiceImpl(this);
+ private final WxStoreBrandService brandService = new WxStoreBrandServiceImpl(this);
+ private final WxStoreGiftService giftService = new WxStoreGiftServiceImpl(this);
+ private final WxStoreLimitedDiscountService limitedDiscountService =
+ new WxStoreLimitedDiscountServiceImpl(this);
+ private final WxStoreProductStockService productStockService = new WxStoreProductStockServiceImpl(this);
+ private final WxStoreProductAssistantService productAssistantService =
+ new WxStoreProductAssistantServiceImpl(this);
+ private final WxStoreProductService productService = new WxStoreProductServiceImpl(
+ this, giftService, limitedDiscountService, productStockService);
+ private final WxStoreWarehouseService warehouseService = new WxStoreWarehouseServiceImpl(this);
+ private final WxStoreOrderService orderService = new WxStoreOrderServiceImpl(this);
+ private final WxStoreAfterSaleService afterSaleService = new WxStoreAfterSaleServiceImpl(this);
+ private final WxStoreFreightTemplateService freightTemplateService =
+ new WxStoreFreightTemplateServiceImpl(this);
+ private final WxStoreAddressService addressService = new WxStoreAddressServiceImpl(this);
+ private final WxStoreCouponService couponService = new WxStoreCouponServiceImpl(this);
+ private final WxStoreSharerService sharerService = new WxStoreSharerServiceImpl(this);
+ private final WxStoreFundService fundService = new WxStoreFundServiceImpl(this);
+ private WxStoreHomePageService homePageService = null;
+ private WxStoreCooperationService cooperationService = null;
+ private WxStoreCompassShopService compassShopService = null;
+ private WxStoreSupplierService supplierService = null;
+ private WxStoreVipService vipService = null;
+ private WxStoreQicService qicService = null;
+ private WxTalentService talentService = null;
+ private WxStoreFavoriteService favoriteService = null;
+ private WxStoreEwaybillService ewaybillService = null;
+ private WxStoreKfService kfService = null;
+
+ protected WxStoreConfig config;
+ private int retrySleepMillis = 1000;
+ private int maxRetryTimes = 5;
+
+ @Override
+ public RequestHttp getRequestHttp() {
+ return this;
+ }
+
+ @Override
+ public boolean checkSignature(String timestamp, String nonce, String signature) {
+ try {
+ return SHA1.gen(this.getConfig().getToken(), timestamp, nonce).equals(signature);
+ } catch (Exception e) {
+ log.error("Checking signature failed, and the reason is :{}", e.getMessage());
+ return false;
+ }
+ }
+
+ @Override
+ public String getAccessToken() throws WxErrorException {
+ return getAccessToken(false);
+ }
+
+ @Override
+ public String getAccessToken(boolean forceRefresh) throws WxErrorException {
+ if (!forceRefresh && !this.getConfig().isAccessTokenExpired()) {
+ return this.getConfig().getAccessToken();
+ }
+
+ Lock lock = this.getConfig().getAccessTokenLock();
+ boolean locked = false;
+ try {
+ do {
+ locked = lock.tryLock(100, TimeUnit.MILLISECONDS);
+ if (!forceRefresh && !this.getConfig().isAccessTokenExpired()) {
+ return this.getConfig().getAccessToken();
+ }
+ } while (!locked);
+ String response;
+ if (getConfig().isStableAccessToken()) {
+ response = doGetStableAccessTokenRequest(forceRefresh);
+ } else {
+ response = doGetAccessTokenRequest();
+ }
+ return extractAccessToken(response);
+ } catch (IOException | InterruptedException e) {
+ throw new WxRuntimeException(e);
+ } finally {
+ if (locked) {
+ lock.unlock();
+ }
+ }
+ }
+
+ /**
+ * 通过网络请求获取AccessToken
+ *
+ * @return AccessToken
+ * @throws IOException IOException
+ */
+ protected abstract String doGetAccessTokenRequest() throws IOException;
+
+ /**
+ * 通过网络请求获取稳定版AccessToken
+ *
+ * @return Stable AccessToken
+ * @throws IOException IOException
+ */
+ protected abstract String doGetStableAccessTokenRequest(boolean forceRefresh) throws IOException;
+
+ @Override
+ public String get(String url, String queryParam) throws WxErrorException {
+ return execute(SimpleGetRequestExecutor.create(this), url, queryParam);
+ }
+
+ @Override
+ public String post(String url, String postData) throws WxErrorException {
+ return execute(SimplePostRequestExecutor.create(this), url, postData);
+ }
+
+ @Override
+ public String post(String url, Object obj) throws WxErrorException {
+ // 此处用JsonUtils.encode, 不用Gson
+ return this.execute(SimplePostRequestExecutor.create(this), url, JsonUtils.encode(obj));
+ }
+
+ @Override
+ public String post(String url, ToJson obj) throws WxErrorException {
+ return this.post(url, obj.toJson());
+ }
+
+ @Override
+ public String upload(String url, CommonUploadParam param) throws WxErrorException {
+ RequestExecutor executor = CommonUploadRequestExecutor.create(getRequestHttp());
+ return this.execute(executor, url, param);
+ }
+
+ @Override
+ public String post(String url, JsonObject jsonObject) throws WxErrorException {
+ return this.post(url, jsonObject.toString());
+ }
+
+ /**
+ * 向微信端发送请求,在这里执行的策略是当发生access_token过期时才去刷新,然后重新执行请求,而不是全局定时请求
+ */
+ @Override
+ public T execute(RequestExecutor executor, String uri, E data) throws WxErrorException {
+ return execute0(executor, uri, data, true);
+ }
+
+ @Override
+ public T executeWithoutLog(RequestExecutor executor, String uri, E data) throws WxErrorException {
+ return execute0(executor, uri, data, false);
+ }
+
+ protected T execute0(RequestExecutor executor, String uri, E data, boolean printResult)
+ throws WxErrorException {
+ int retryTimes = 0;
+ do {
+ try {
+ return this.executeInternal(executor, uri, data, false, printResult);
+ } catch (WxErrorException e) {
+ if (retryTimes + 1 > this.maxRetryTimes) {
+ log.warn("重试达到最大次数【{}】", maxRetryTimes);
+ //最后一次重试失败后,直接抛出异常,不再等待
+ throw new WxErrorException(WxError.builder()
+ .errorCode(e.getError().getErrorCode())
+ .errorMsg("微信服务端异常,超出重试次数!")
+ .build());
+ }
+
+ WxError error = e.getError();
+ // -1 系统繁忙, 1000ms后重试
+ if (error.getErrorCode() == -1) {
+ int sleepMillis = this.retrySleepMillis * (1 << retryTimes);
+ try {
+ log.warn("微信系统繁忙,{} ms 后重试(第{}次)", sleepMillis, retryTimes + 1);
+ Thread.sleep(sleepMillis);
+ } catch (InterruptedException e1) {
+ Thread.currentThread().interrupt();
+ }
+ } else {
+ throw e;
+ }
+ }
+ } while (retryTimes++ < this.maxRetryTimes);
+
+ log.warn("重试达到最大次数【{}】", this.maxRetryTimes);
+ throw new WxRuntimeException("微信服务端异常,超出重试次数");
+ }
+
+ protected T executeInternal(RequestExecutor executor, String uri, E data, boolean doNotAutoRefreshToken,
+ boolean printResult) throws WxErrorException {
+ E dataForLog = DataUtils.handleDataWithSecret(data);
+
+ if (uri.contains("access_token=")) {
+ throw new IllegalArgumentException("uri参数中不允许有access_token: " + uri);
+ }
+ String accessToken = getAccessToken(false);
+
+ WxStoreConfig config = this.getConfig();
+ if (StringUtils.isNotEmpty(config.getApiHostUrl())) {
+ uri = uri.replace("https://api.weixin.qq.com", config.getApiHostUrl());
+ }
+
+ String uriWithAccessToken = uri + (uri.contains("?") ? "&" : "?") + "access_token=" + accessToken;
+
+ try {
+ T result = executor.execute(uriWithAccessToken, data, WxType.Channel);
+ log.debug("\n【请求地址】: {}\n【请求参数】:{}\n【响应数据】:{}", uri,
+ printResult ? dataForLog : "...",
+ printResult ? result : "...");
+ return result;
+ } catch (WxErrorException e) {
+ WxError error = e.getError();
+ if (WxConsts.ACCESS_TOKEN_ERROR_CODES.contains(error.getErrorCode())) {
+ // 强制设置WxMaConfig的access token过期了,这样在下一次请求里就会刷新access token
+ Lock lock = config.getAccessTokenLock();
+ lock.lock();
+ try {
+ if (StringUtils.equals(config.getAccessToken(), accessToken)) {
+ config.expireAccessToken();
+ }
+ } catch (Exception ex) {
+ config.expireAccessToken();
+ } finally {
+ lock.unlock();
+ }
+ if (config.autoRefreshToken() && !doNotAutoRefreshToken) {
+ log.warn("即将重新获取新的access_token,错误代码:{},错误信息:{}", error.getErrorCode(), error.getErrorMsg());
+ //下一次不再自动重试
+ //当小程序误调用第三方平台专属接口时,第三方无法使用小程序的access token,如果可以继续自动获取token会导致无限循环重试,直到栈溢出
+ return this.executeInternal(executor, uri, data, true, printResult);
+ }
+ }
+
+ if (error.getErrorCode() != 0) {
+ log.warn("\n【请求地址】: {}\n【请求参数】:{}\n【错误信息】:{}", uri,
+ printResult ? dataForLog : "...", error);
+ throw new WxErrorException(error, e);
+ }
+ return null;
+ } catch (IOException e) {
+ log.warn("\n【请求地址】: {}\n【请求参数】:{}\n【异常信息】:{}", uri,
+ printResult ? dataForLog : "...", e.getMessage());
+ throw new WxRuntimeException(e);
+ }
+ }
+
+ /**
+ * 设置当前的AccessToken
+ *
+ * @param resultContent 响应内容
+ * @return access token
+ * @throws WxErrorException 异常
+ */
+ protected String extractAccessToken(String resultContent) throws WxErrorException {
+ log.debug("access-token response received");
+ WxStoreConfig config = this.getConfig();
+ WxError error = WxError.fromJson(resultContent, WxType.Channel);
+ if (error.getErrorCode() != 0) {
+ throw new WxErrorException(error);
+ }
+ WxAccessToken accessToken = WxAccessToken.fromJson(resultContent);
+ config.updateAccessToken(accessToken.getAccessToken(), accessToken.getExpiresIn());
+ return accessToken.getAccessToken();
+ }
+
+ @Override
+ public WxStoreConfig getConfig() {
+ return config;
+ }
+
+ @Override
+ public void setConfig(WxStoreConfig config) {
+ this.config = config;
+ initHttp();
+ }
+
+ @Override
+ public void setRetrySleepMillis(int retrySleepMillis) {
+ this.retrySleepMillis = retrySleepMillis;
+ }
+
+ @Override
+ public void setMaxRetryTimes(int maxRetryTimes) {
+ this.maxRetryTimes = maxRetryTimes;
+ }
+
+ @Override
+ public WxStoreBasicService getBasicService() {
+ return basicService;
+ }
+
+ @Override
+ public WxStoreCategoryService getCategoryService() {
+ return categoryService;
+ }
+
+ @Override
+ public WxStoreBrandService getBrandService() {
+ return brandService;
+ }
+
+ @Override
+ public WxStoreProductService getProductService() {
+ return productService;
+ }
+
+ @Override
+ public WxStoreGiftService getGiftService() {
+ return giftService;
+ }
+
+ @Override
+ public WxStoreLimitedDiscountService getLimitedDiscountService() {
+ return limitedDiscountService;
+ }
+
+ @Override
+ public WxStoreProductStockService getProductStockService() {
+ return productStockService;
+ }
+
+ @Override
+ public WxStoreProductAssistantService getProductAssistantService() {
+ return productAssistantService;
+ }
+
+ @Override
+ public WxStoreWarehouseService getWarehouseService() {
+ return warehouseService;
+ }
+
+ @Override
+ public WxStoreOrderService getOrderService() {
+ return orderService;
+ }
+
+ @Override
+ public WxStoreAfterSaleService getAfterSaleService() {
+ return afterSaleService;
+ }
+
+ @Override
+ public WxStoreFreightTemplateService getFreightTemplateService() {
+ return freightTemplateService;
+ }
+
+ @Override
+ public WxStoreAddressService getAddressService() {
+ return addressService;
+ }
+
+ @Override
+ public WxStoreCouponService getCouponService() {
+ return couponService;
+ }
+
+ @Override
+ public WxStoreSharerService getSharerService() {
+ return sharerService;
+ }
+
+ @Override
+ public WxStoreFundService getFundService() {
+ return fundService;
+ }
+
+ @Override
+ public synchronized WxStoreHomePageService getHomePageService() {
+ if (homePageService == null) {
+ homePageService = new WxStoreHomePageServiceImpl(this);
+ }
+ return homePageService;
+ }
+
+ @Override
+ public synchronized WxStoreCooperationService getCooperationService() {
+ if (cooperationService == null) {
+ cooperationService = new WxStoreCooperationServiceImpl(this);
+ }
+ return cooperationService;
+ }
+
+ @Override
+ public synchronized WxStoreCompassShopService getCompassShopService() {
+ if (compassShopService == null) {
+ compassShopService = new WxStoreCompassShopServiceImpl(this);
+ }
+ return compassShopService;
+ }
+
+ @Override
+ public synchronized WxStoreSupplierService getSupplierService() {
+ if (supplierService == null) {
+ supplierService = new WxStoreSupplierServiceImpl(this);
+ }
+ return supplierService;
+ }
+
+ @Override
+ public synchronized WxStoreVipService getVipService() {
+ if (vipService == null) {
+ vipService = new WxStoreVipServiceImpl(this);
+ }
+ return vipService;
+ }
+
+ @Override
+ public synchronized WxStoreQicService getQicService() {
+ if (qicService == null) {
+ qicService = new WxStoreQicServiceImpl(this);
+ }
+ return qicService;
+ }
+
+ @Override
+ public synchronized WxTalentService getTalentService() {
+ if (talentService == null) {
+ talentService = new WxTalentServiceImpl(this);
+ }
+ return talentService;
+ }
+
+ @Override
+ public synchronized WxStoreFavoriteService getFavoriteService() {
+ if (favoriteService == null) {
+ favoriteService = new WxStoreFavoriteServiceImpl(this);
+ }
+ return favoriteService;
+ }
+
+ @Override
+ public synchronized WxStoreEwaybillService getEwaybillService() {
+ if (ewaybillService == null) {
+ ewaybillService = new WxStoreEwaybillServiceImpl(this);
+ }
+ return ewaybillService;
+ }
+
+ @Override
+ public synchronized WxStoreKfService getKfService() {
+ if (kfService == null) {
+ kfService = new WxStoreKfServiceImpl(this);
+ }
+ return kfService;
+ }
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreAddressServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreAddressServiceImpl.java
new file mode 100644
index 0000000000..0676939242
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreAddressServiceImpl.java
@@ -0,0 +1,72 @@
+package com.binarywang.wxjava.store.api.impl;
+
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Address.ADD_ADDRESS_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Address.DELETE_ADDRESS_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Address.GET_ADDRESS_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Address.LIST_ADDRESS_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Address.UPDATE_ADDRESS_URL;
+
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.api.WxStoreAddressService;
+import com.binarywang.wxjava.store.bean.address.AddressAddParam;
+import com.binarywang.wxjava.store.bean.address.AddressDetail;
+import com.binarywang.wxjava.store.bean.address.AddressIdParam;
+import com.binarywang.wxjava.store.bean.address.AddressIdResponse;
+import com.binarywang.wxjava.store.bean.address.AddressInfoResponse;
+import com.binarywang.wxjava.store.bean.address.AddressListParam;
+import com.binarywang.wxjava.store.bean.address.AddressListResponse;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 地址管理服务实现
+ *
+ * @author Zeyes
+ */
+@Slf4j
+public class WxStoreAddressServiceImpl implements WxStoreAddressService {
+
+ /** 微信商店服务 */
+ private final BaseWxStoreServiceImpl, ?> shopService;
+
+ public WxStoreAddressServiceImpl(BaseWxStoreServiceImpl, ?> shopService) {
+ this.shopService = shopService;
+ }
+
+ @Override
+ public AddressListResponse listAddress(Integer offset, Integer limit) throws WxErrorException {
+ AddressListParam param = new AddressListParam(offset, limit);
+ String resJson = shopService.post(LIST_ADDRESS_URL, param);
+ return ResponseUtils.decode(resJson, AddressListResponse.class);
+ }
+
+ @Override
+ public AddressInfoResponse getAddress(String addressId) throws WxErrorException {
+ AddressIdParam param = new AddressIdParam(addressId);
+ String resJson = shopService.post(GET_ADDRESS_URL, param);
+ return ResponseUtils.decode(resJson, AddressInfoResponse.class);
+ }
+
+ @Override
+ public AddressIdResponse addAddress(AddressDetail addressDetail) throws WxErrorException {
+ AddressAddParam param = new AddressAddParam(addressDetail);
+ String resJson = shopService.post(ADD_ADDRESS_URL, param);
+ return ResponseUtils.decode(resJson, AddressIdResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse updateAddress(AddressDetail addressDetail) throws WxErrorException {
+ AddressAddParam param = new AddressAddParam(addressDetail);
+ String resJson = shopService.post(UPDATE_ADDRESS_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse deleteAddress(String addressId) throws WxErrorException {
+ AddressIdParam param = new AddressIdParam(addressId);
+ String resJson = shopService.post(DELETE_ADDRESS_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreAfterSaleServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreAfterSaleServiceImpl.java
new file mode 100644
index 0000000000..168f07f26c
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreAfterSaleServiceImpl.java
@@ -0,0 +1,177 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.api.WxStoreAfterSaleService;
+import com.binarywang.wxjava.store.bean.after.*;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.complaint.ComplaintOrderResponse;
+import com.binarywang.wxjava.store.bean.complaint.ComplaintParam;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+import java.util.List;
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.AfterSale.*;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Complaint.*;
+
+/**
+ * 微信小店 售后服务实现
+ *
+ * @author Zeyes
+ */
+@Slf4j
+public class WxStoreAfterSaleServiceImpl implements WxStoreAfterSaleService {
+
+ /**
+ * 微信商店服务
+ */
+ private final BaseWxStoreServiceImpl, ?> shopService;
+
+ public WxStoreAfterSaleServiceImpl(BaseWxStoreServiceImpl, ?> shopService) {
+ this.shopService = shopService;
+ }
+
+ @Override
+ public AfterSaleListResponse listIds(Long beginCreateTime, Long endCreateTime, String nextKey)
+ throws WxErrorException {
+ AfterSaleListParam param = new AfterSaleListParam(beginCreateTime, endCreateTime, null, null, nextKey);
+ String resJson = shopService.post(AFTER_SALE_LIST_URL, param);
+ return ResponseUtils.decode(resJson, AfterSaleListResponse.class);
+ }
+
+ @Override
+ public AfterSaleListResponse listIds(AfterSaleListParam param) throws WxErrorException {
+ String resJson = shopService.post(AFTER_SALE_LIST_URL, param);
+ return ResponseUtils.decode(resJson, AfterSaleListResponse.class);
+ }
+
+ @Override
+ public AfterSaleInfoResponse get(String afterSaleOrderId) throws WxErrorException {
+ AfterSaleIdParam param = new AfterSaleIdParam(afterSaleOrderId);
+ String resJson = shopService.post(AFTER_SALE_GET_URL, param);
+ return ResponseUtils.decode(resJson, AfterSaleInfoResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse accept(String afterSaleOrderId, String addressId, Integer acceptType) throws WxErrorException {
+ AfterSaleAcceptParam param = new AfterSaleAcceptParam(afterSaleOrderId, addressId, acceptType);
+ String resJson = shopService.post(AFTER_SALE_ACCEPT_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse reject(String afterSaleOrderId, String rejectReason, Integer rejectReasonType) throws WxErrorException {
+ return reject(afterSaleOrderId, rejectReason, rejectReasonType, null);
+ }
+
+ @Override
+ public WxStoreBaseResponse reject(String afterSaleOrderId, String rejectReason, Integer rejectReasonType,
+ List rejectCertificates) throws WxErrorException {
+ AfterSaleRejectParam param = new AfterSaleRejectParam(afterSaleOrderId, rejectReason, rejectReasonType, rejectCertificates);
+ String resJson = shopService.post(AFTER_SALE_REJECT_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse uploadRefundEvidence(String afterSaleOrderId, String desc, List certificates)
+ throws WxErrorException {
+ RefundEvidenceParam param = new RefundEvidenceParam(afterSaleOrderId, desc, certificates);
+ String resJson = shopService.post(AFTER_SALE_UPLOAD_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse addComplaintMaterial(String complaintId, String content, List mediaIds)
+ throws WxErrorException {
+ ComplaintParam param = new ComplaintParam(complaintId, content, mediaIds);
+ String resJson = shopService.post(ADD_COMPLAINT_MATERIAL_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+
+ }
+
+ @Override
+ public WxStoreBaseResponse addComplaintEvidence(String complaintId, String content, List mediaIds)
+ throws WxErrorException {
+ ComplaintParam param = new ComplaintParam(complaintId, content, mediaIds);
+ String resJson = shopService.post(ADD_COMPLAINT_PROOF_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public ComplaintOrderResponse getComplaint(String complaintId) throws WxErrorException {
+ String reqJson = "{\"complaint_id\":\"" + complaintId + "\"}";
+ String resJson = shopService.post(GET_COMPLAINT_ORDER_URL, reqJson);
+ return ResponseUtils.decode(resJson, ComplaintOrderResponse.class);
+ }
+
+ @Override
+ public AfterSaleReasonResponse getAllReason() throws WxErrorException {
+ String resJson = shopService.post(AFTER_SALE_REASON_GET_URL, "{}");
+ return ResponseUtils.decode(resJson, AfterSaleReasonResponse.class);
+ }
+
+ @Override
+ public AfterSaleRejectReasonResponse getRejectReason() throws WxErrorException {
+ String resJson = shopService.post(AFTER_SALE_REJECT_REASON_GET_URL, "{}");
+ return ResponseUtils.decode(resJson, AfterSaleRejectReasonResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse acceptExchangeReship(String afterSaleOrderId, String waybillId, String deliveryId) throws WxErrorException {
+ AfterSaleAcceptExchangeReshipParam param = new AfterSaleAcceptExchangeReshipParam(afterSaleOrderId, waybillId, deliveryId);
+ String resJson = shopService.post(AFTER_SALE_ACCEPT_EXCHANGE_RESHIP_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse rejectExchangeReship(String afterSaleOrderId, String rejectReason, Integer rejectReasonType, List rejectCertificates) throws WxErrorException {
+ AfterSaleRejectExchangeReshipParam param = new AfterSaleRejectExchangeReshipParam(afterSaleOrderId, rejectReason, rejectReasonType, rejectCertificates);
+ String resJson = shopService.post(AFTER_SALE_REJECT_EXCHANGE_RESHIP_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse merchantUpdateAfterSale(AfterSaleMerchantUpdateParam param) throws WxErrorException {
+ String resJson = shopService.post(AFTER_SALE_MERCHANT_UPDATE_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public GuaranteeOrderListResponse listGuaranteeOrder(GuaranteeOrderListParam param) throws WxErrorException {
+ String resJson = shopService.post(GUARANTEE_ORDER_LIST_URL, param);
+ return ResponseUtils.decode(resJson, GuaranteeOrderListResponse.class);
+ }
+
+ @Override
+ public GuaranteeOrderInfoResponse getGuaranteeOrder(String guaranteeOrderId) throws WxErrorException {
+ GuaranteeOrderIdParam param = new GuaranteeOrderIdParam(guaranteeOrderId);
+ String resJson = shopService.post(GUARANTEE_ORDER_GET_URL, param);
+ return ResponseUtils.decode(resJson, GuaranteeOrderInfoResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse acceptGuarantee(String guaranteeOrderId) throws WxErrorException {
+ GuaranteeOrderIdParam param = new GuaranteeOrderIdParam(guaranteeOrderId);
+ String resJson = shopService.post(GUARANTEE_ORDER_ACCEPT_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse modifyGuarantee(GuaranteeModifyRequest request) throws WxErrorException {
+ String resJson = shopService.post(GUARANTEE_ORDER_MODIFY_URL, request);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse proofGuarantee(GuaranteeProofRequest request) throws WxErrorException {
+ String resJson = shopService.post(GUARANTEE_ORDER_PROOF_URL, request);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse refuseGuarantee(GuaranteeRefuseRequest request) throws WxErrorException {
+ String resJson = shopService.post(GUARANTEE_ORDER_REFUSE_URL, request);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreBasicServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreBasicServiceImpl.java
new file mode 100644
index 0000000000..bfe6d29e0e
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreBasicServiceImpl.java
@@ -0,0 +1,124 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Basics.GET_ADDRESS_CODE;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Basics.GET_IMG_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Basics.GET_SHOP_H5URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Basics.GET_SHOP_INFO;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Basics.GET_SHOP_QRCODE;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Basics.GET_SHOP_TAGLINK;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Basics.IMG_UPLOAD_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Basics.UPLOAD_QUALIFICATION_FILE;
+
+import java.io.File;
+import java.io.IOException;
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.api.WxStoreBasicService;
+import com.binarywang.wxjava.store.bean.address.AddressCodeResponse;
+import com.binarywang.wxjava.store.bean.image.StoreImageInfo;
+import com.binarywang.wxjava.store.bean.image.StoreImageResponse;
+import com.binarywang.wxjava.store.bean.image.QualificationFileResponse;
+import com.binarywang.wxjava.store.bean.image.UploadImageResponse;
+import com.binarywang.wxjava.store.bean.shop.ShopH5UrlResponse;
+import com.binarywang.wxjava.store.bean.shop.ShopInfoResponse;
+import com.binarywang.wxjava.store.bean.shop.ShopQrCodeResponse;
+import com.binarywang.wxjava.store.bean.shop.ShopTagLinkResponse;
+import com.binarywang.wxjava.store.executor.StoreFileUploadRequestExecutor;
+import com.binarywang.wxjava.store.executor.StoreMediaDownloadRequestExecutor;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxError;
+import me.chanjar.weixin.common.error.WxErrorException;
+import me.chanjar.weixin.common.util.http.RequestExecutor;
+
+/**
+ * @author Zeyes
+ */
+@Slf4j
+public class WxStoreBasicServiceImpl implements WxStoreBasicService {
+
+ /** 微信商店服务 */
+ private final BaseWxStoreServiceImpl, ?> shopService;
+
+ public WxStoreBasicServiceImpl(BaseWxStoreServiceImpl, ?> shopService) {
+ this.shopService = shopService;
+ }
+
+ @Override
+ public ShopInfoResponse getShopInfo() throws WxErrorException {
+ String resJson = shopService.get(GET_SHOP_INFO, null);
+ return ResponseUtils.decode(resJson, ShopInfoResponse.class);
+ }
+
+ @Override
+ public StoreImageInfo uploadImg(int respType, String imgUrl) throws WxErrorException {
+ String url = IMG_UPLOAD_URL + "?upload_type=1&resp_type=" + respType;
+ String reqJson = "{\"img_url\":\"" + imgUrl + "\"}";
+ String resJson = shopService.post(url, reqJson);
+ UploadImageResponse response = ResponseUtils.decode(resJson, UploadImageResponse.class);
+ return response.getImgInfo();
+ }
+
+ @Override
+ public StoreImageInfo uploadImg(int respType, File file, int height, int width) throws WxErrorException {
+ String url = IMG_UPLOAD_URL + "?upload_type=0&resp_type=" + respType + "&height=" + height + "&width=" + width;
+ RequestExecutor executor = StoreFileUploadRequestExecutor.create(shopService);
+ String resJson = shopService.execute(executor, url, file);
+ UploadImageResponse response = ResponseUtils.decode(resJson, UploadImageResponse.class);
+ return response.getImgInfo();
+ }
+
+ @Override
+ public QualificationFileResponse uploadQualificationFile(File file) throws WxErrorException {
+ RequestExecutor executor = StoreFileUploadRequestExecutor.create(shopService);
+ String resJson = shopService.execute(executor, UPLOAD_QUALIFICATION_FILE, file);
+ return ResponseUtils.decode(resJson, QualificationFileResponse.class);
+ }
+
+ @Override
+ public StoreImageResponse getImg(String mediaId) throws WxErrorException {
+ String appId = shopService.getConfig().getAppid();
+ StoreImageResponse rs;
+ try {
+ String url = GET_IMG_URL + "?media_id=" + mediaId;
+ File tempDirectory = new File(System.getProperty("java.io.tmpdir"), "wxjava-store-" + appId);
+ if (!tempDirectory.exists() && !tempDirectory.mkdirs()) {
+ throw new IOException("无法创建临时目录: " + tempDirectory);
+ }
+ RequestExecutor executor = StoreMediaDownloadRequestExecutor.create(shopService,
+ tempDirectory);
+ rs = shopService.execute(executor, url, null);
+ } catch (IOException e) {
+ throw new WxErrorException(WxError.builder().errorMsg(e.getMessage()).build(), e);
+ }
+ if (rs == null) {
+ rs = ResponseUtils.internalError(StoreImageResponse.class);
+ }
+ return rs;
+ }
+
+ @Override
+ public AddressCodeResponse getAddressCode(Integer code) throws WxErrorException {
+ String reqJson = "{\"addr_code\": " + code + "}";
+ String resJson = shopService.post(GET_ADDRESS_CODE, reqJson);
+ return ResponseUtils.decode(resJson, AddressCodeResponse.class);
+ }
+
+ @Override
+ public ShopH5UrlResponse getShopH5Url() throws WxErrorException {
+ String resJson = shopService.post(GET_SHOP_H5URL, "{}");
+ return ResponseUtils.decode(resJson, ShopH5UrlResponse.class);
+ }
+
+ @Override
+ public ShopQrCodeResponse getShopQrCode(int qrcodeType) throws WxErrorException {
+ String reqJson = "{\"qrcode_type\":" + qrcodeType + "}";
+ String resJson = shopService.post(GET_SHOP_QRCODE, reqJson);
+ return ResponseUtils.decode(resJson, ShopQrCodeResponse.class);
+ }
+
+ @Override
+ public ShopTagLinkResponse getShopTagLink() throws WxErrorException {
+ String resJson = shopService.post(GET_SHOP_TAGLINK, "{}");
+ return ResponseUtils.decode(resJson, ShopTagLinkResponse.class);
+ }
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreBrandServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreBrandServiceImpl.java
new file mode 100644
index 0000000000..a38aa49420
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreBrandServiceImpl.java
@@ -0,0 +1,98 @@
+package com.binarywang.wxjava.store.api.impl;
+
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Brand.ADD_BRAND_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Brand.ALL_BRAND_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Brand.CANCEL_BRAND_AUDIT_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Brand.DELETE_BRAND_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Brand.GET_BRAND_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Brand.LIST_BRAND_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Brand.LIST_BRAND_VALID_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Brand.UPDATE_BRAND_URL;
+
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.api.WxStoreBrandService;
+import com.binarywang.wxjava.store.bean.audit.AuditApplyResponse;
+import com.binarywang.wxjava.store.bean.base.StreamPageParam;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.brand.Brand;
+import com.binarywang.wxjava.store.bean.brand.BrandApplyListResponse;
+import com.binarywang.wxjava.store.bean.brand.BrandInfoResponse;
+import com.binarywang.wxjava.store.bean.brand.BrandListResponse;
+import com.binarywang.wxjava.store.bean.brand.BrandParam;
+import com.binarywang.wxjava.store.bean.brand.BrandSearchParam;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 品牌服务实现
+ *
+ * @author Zeyes
+ */
+@Slf4j
+public class WxStoreBrandServiceImpl implements WxStoreBrandService {
+
+ /** 微信商店服务 */
+ private final BaseWxStoreServiceImpl, ?> shopService;
+
+ public WxStoreBrandServiceImpl(BaseWxStoreServiceImpl, ?> shopService) {
+ this.shopService = shopService;
+ }
+
+ @Override
+ public BrandListResponse listAllBrand(Integer pageSize, String nextKey) throws WxErrorException {
+ StreamPageParam param = new StreamPageParam(pageSize, nextKey);
+ String resJson = shopService.post(ALL_BRAND_URL, param);
+ return ResponseUtils.decode(resJson, BrandListResponse.class);
+ }
+
+ @Override
+ public AuditApplyResponse addBrandApply(Brand brand) throws WxErrorException {
+ BrandParam param = new BrandParam(brand);
+ String resJson = shopService.post(ADD_BRAND_URL, param);
+ return ResponseUtils.decode(resJson, AuditApplyResponse.class);
+ }
+
+ @Override
+ public AuditApplyResponse updateBrandApply(Brand brand) throws WxErrorException {
+ BrandParam param = new BrandParam(brand);
+ String resJson = shopService.post(UPDATE_BRAND_URL, param);
+ return ResponseUtils.decode(resJson, AuditApplyResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse cancelBrandApply(String brandId, String auditId) throws WxErrorException {
+ String reqJson = "{\"brand_id\":\"" + brandId + "\",\"audit_id\":\"" + auditId + "\"}";
+ String resJson = shopService.post(CANCEL_BRAND_AUDIT_URL, reqJson);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse deleteBrandApply(String brandId) throws WxErrorException {
+ String reqJson = "{\"brand_id\":\"" + brandId + "\"}";
+ String resJson = shopService.post(DELETE_BRAND_URL, reqJson);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public BrandInfoResponse getBrandApply(String brandId) throws WxErrorException {
+ String reqJson = "{\"brand_id\":\"" + brandId + "\"}";
+ String resJson = shopService.post(GET_BRAND_URL, reqJson);
+ return ResponseUtils.decode(resJson, BrandInfoResponse.class);
+ }
+
+ @Override
+ public BrandApplyListResponse listBrandApply(Integer pageSize, String nextKey, Integer status)
+ throws WxErrorException {
+ BrandSearchParam param = new BrandSearchParam(pageSize, nextKey, status);
+ String resJson = shopService.post(LIST_BRAND_URL, param);
+ return ResponseUtils.decode(resJson, BrandApplyListResponse.class);
+ }
+
+ @Override
+ public BrandApplyListResponse listValidBrandApply(Integer pageSize, String nextKey) throws WxErrorException {
+ StreamPageParam param = new StreamPageParam(pageSize, nextKey);
+ String resJson = shopService.post(LIST_BRAND_VALID_URL, param);
+ return ResponseUtils.decode(resJson, BrandApplyListResponse.class);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreCategoryServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreCategoryServiceImpl.java
new file mode 100644
index 0000000000..5ff6c08dd1
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreCategoryServiceImpl.java
@@ -0,0 +1,139 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import java.util.Collections;
+import java.util.List;
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.api.WxStoreCategoryService;
+import com.binarywang.wxjava.store.bean.audit.AuditApplyResponse;
+import com.binarywang.wxjava.store.bean.audit.AuditResponse;
+import com.binarywang.wxjava.store.bean.audit.CategoryAuditInfo;
+import com.binarywang.wxjava.store.bean.audit.CategoryAuditRequest;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.category.*;
+import com.binarywang.wxjava.store.util.JsonUtils;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+import me.chanjar.weixin.common.util.http.SimpleGetRequestExecutor;
+import me.chanjar.weixin.common.util.http.SimplePostRequestExecutor;
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Category.*;
+
+/**
+ * 微信小店 商品类目相关接口
+ *
+ * @author Zeyes
+ */
+@Slf4j
+public class WxStoreCategoryServiceImpl implements WxStoreCategoryService {
+
+ /** 微信商店服务 */
+ private final BaseWxStoreServiceImpl, ?> shopService;
+
+ public WxStoreCategoryServiceImpl(BaseWxStoreServiceImpl, ?> shopService) {
+ this.shopService = shopService;
+ }
+
+ @Override
+ public CategoryQualificationResponse listAllCategory() throws WxErrorException {
+ // 数据量太大了,不记录日志
+ String resJson = (String) shopService.executeWithoutLog(SimpleGetRequestExecutor.create(shopService),
+ LIST_ALL_CATEGORY_URL, null);
+ return ResponseUtils.decode(resJson, CategoryQualificationResponse.class);
+ }
+
+ public List listAvailableCategory(String parentId) throws WxErrorException {
+ Long pid = null;
+ try {
+ pid = Long.parseLong(parentId);
+ } catch (Throwable e) {
+ log.error("parentId必须为数字, {}", parentId, e);
+ return Collections.emptyList();
+ }
+ String reqJson = "{\"f_cat_id\": " + pid + "}";
+ String resJson = (String) shopService.executeWithoutLog(SimplePostRequestExecutor.create(shopService),
+ AVAILABLE_CATEGORY_URL, reqJson);
+ ShopCategoryResponse response = ResponseUtils.decode(resJson, ShopCategoryResponse.class);
+ return response.getCategories();
+ }
+
+ @Override
+ public ShopCategoryResponse listAvailableCategories(String fCatId) throws WxErrorException {
+ String reqJson = "{\"f_cat_id\": " + fCatId + "}";
+ String resJson = (String) shopService.executeWithoutLog(SimplePostRequestExecutor.create(shopService),
+ AVAILABLE_CATEGORY_URL, reqJson);
+ return ResponseUtils.decode(resJson, ShopCategoryResponse.class);
+ }
+
+ @Override
+ public CategoryDetailResult getCategoryDetail(String id) throws WxErrorException {
+ Long catId = null;
+ try {
+ catId = Long.parseLong(id);
+ } catch (Throwable e) {
+ log.error("id必须为数字, {}", id, e);
+ return ResponseUtils.internalError(CategoryDetailResult.class);
+ }
+ String reqJson = "{\"cat_id\": " + catId + "}";
+ String resJson = (String) shopService.executeWithoutLog(SimplePostRequestExecutor.create(shopService),
+ GET_CATEGORY_DETAIL_URL, reqJson);
+ return ResponseUtils.decode(resJson, CategoryDetailResult.class);
+ }
+
+ @Override
+ public AuditApplyResponse addCategory(String level1, String level2, String level3, List certificate)
+ throws WxErrorException {
+ String reqJson = null;
+ try {
+ Long l1 = Long.parseLong(level1);
+ Long l2 = Long.parseLong(level2);
+ Long l3 = Long.parseLong(level3);
+ CategoryAuditInfo categoryInfo = new CategoryAuditInfo();
+ categoryInfo.setLevel1(l1);
+ categoryInfo.setLevel2(l2);
+ categoryInfo.setLevel3(l3);
+ categoryInfo.setCertificates(certificate);
+ reqJson = JsonUtils.encode(new CategoryAuditRequest(categoryInfo));
+ } catch (Throwable e) {
+ log.error("微信请求异常", e);
+ }
+ String resJson = shopService.post(ADD_CATEGORY_URL, reqJson);
+ return ResponseUtils.decode(resJson, AuditApplyResponse.class);
+ }
+
+ @Override
+ public AuditApplyResponse addCategory(CategoryAuditInfo info) throws WxErrorException {
+ String reqJson = JsonUtils.encode(new CategoryAuditRequest(info));
+ String resJson = shopService.post(ADD_CATEGORY_URL, reqJson);
+ return ResponseUtils.decode(resJson, AuditApplyResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse cancelCategoryAudit(String auditId) throws WxErrorException {
+ String resJson = shopService.post(CANCEL_CATEGORY_AUDIT_URL, "{\"audit_id\": \"" + auditId + "\"}");
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public AuditResponse getAudit(String auditId) throws WxErrorException {
+ String resJson = shopService.post(GET_CATEGORY_AUDIT_URL, "{\"audit_id\": \"" + auditId + "\"}");
+ return ResponseUtils.decode(resJson, AuditResponse.class);
+ }
+
+ @Override
+ public PassCategoryResponse listPassCategory() throws WxErrorException {
+ String resJson = shopService.get(LIST_PASS_CATEGORY_URL, null);
+ return ResponseUtils.decode(resJson, PassCategoryResponse.class);
+ }
+
+ @Override
+ public RelationCategoryResponse listRelationCategory(Boolean isFilterStatus, Integer status) throws WxErrorException {
+ RelationCategoryRequest request = new RelationCategoryRequest(
+ isFilterStatus != null ? isFilterStatus : false,
+ status != null ? status : 0
+ );
+ String reqJson = JsonUtils.encode(request);
+ String resJson = shopService.post(LIST_RELATION_CATEGORY_URL, reqJson);
+ return ResponseUtils.decode(resJson, RelationCategoryResponse.class);
+ }
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreCompassShopServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreCompassShopServiceImpl.java
new file mode 100644
index 0000000000..140ebe90b7
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreCompassShopServiceImpl.java
@@ -0,0 +1,116 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.CompassShop.FINDER_AUTH_LIST_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.CompassShop.FINDER_LIST_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.CompassShop.GET_FINDER_OVERALL_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.CompassShop.GET_FINDER_PRODUCT_LIST_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.CompassShop.GET_FINDER_PRODUCT_OVERALL_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.CompassShop.GET_LIVE_LIST_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.CompassShop.GET_SHOP_OVERALL_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.CompassShop.GET_SHOP_PRODUCT_DATA_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.CompassShop.GET_SHOP_PRODUCT_LIST_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.CompassShop.GET_SHOP_SALE_PROFILE_DATA_URL;
+
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.api.WxStoreCompassShopService;
+import com.binarywang.wxjava.store.bean.compass.CompassFinderBaseParam;
+import com.binarywang.wxjava.store.bean.compass.shop.CompassFinderIdParam;
+import com.binarywang.wxjava.store.bean.compass.shop.FinderAuthListResponse;
+import com.binarywang.wxjava.store.bean.compass.shop.FinderListResponse;
+import com.binarywang.wxjava.store.bean.compass.shop.FinderOverallResponse;
+import com.binarywang.wxjava.store.bean.compass.shop.FinderProductListResponse;
+import com.binarywang.wxjava.store.bean.compass.shop.FinderProductOverallResponse;
+import com.binarywang.wxjava.store.bean.compass.shop.ShopLiveListResponse;
+import com.binarywang.wxjava.store.bean.compass.shop.ShopOverallResponse;
+import com.binarywang.wxjava.store.bean.compass.shop.ShopProductDataParam;
+import com.binarywang.wxjava.store.bean.compass.shop.ShopProductDataResponse;
+import com.binarywang.wxjava.store.bean.compass.shop.ShopProductListResponse;
+import com.binarywang.wxjava.store.bean.compass.shop.ShopSaleProfileDataParam;
+import com.binarywang.wxjava.store.bean.compass.shop.ShopSaleProfileDataResponse;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 罗盘商家版 服务实现
+ *
+ * @author Zeyes
+ */
+@Slf4j
+public class WxStoreCompassShopServiceImpl implements WxStoreCompassShopService {
+
+ /**
+ * 微信商店服务
+ */
+ private final BaseWxStoreServiceImpl, ?> shopService;
+
+ public WxStoreCompassShopServiceImpl(BaseWxStoreServiceImpl, ?> shopService) {this.shopService = shopService;}
+
+ @Override
+ public ShopOverallResponse getShopOverall(String ds) throws WxErrorException {
+ CompassFinderBaseParam param = new CompassFinderBaseParam(ds);
+ String resJson = shopService.post(GET_SHOP_OVERALL_URL, param);
+ return ResponseUtils.decode(resJson, ShopOverallResponse.class);
+ }
+
+ @Override
+ public FinderAuthListResponse getFinderAuthorizationList() throws WxErrorException {
+ String resJson = shopService.post(FINDER_AUTH_LIST_URL, "{}");
+ return ResponseUtils.decode(resJson, FinderAuthListResponse.class);
+ }
+
+ @Override
+ public FinderListResponse getFinderList(String ds) throws WxErrorException {
+ CompassFinderBaseParam param = new CompassFinderBaseParam(ds);
+ String resJson = shopService.post(FINDER_LIST_URL, param);
+ return ResponseUtils.decode(resJson, FinderListResponse.class);
+ }
+
+ @Override
+ public FinderOverallResponse getFinderOverall(String ds) throws WxErrorException {
+ CompassFinderBaseParam param = new CompassFinderBaseParam(ds);
+ String resJson = shopService.post(GET_FINDER_OVERALL_URL, param);
+ return ResponseUtils.decode(resJson, FinderOverallResponse.class);
+ }
+
+ @Override
+ public FinderProductListResponse getFinderProductList(String ds, String finderId) throws WxErrorException {
+ CompassFinderIdParam param = new CompassFinderIdParam(ds, finderId);
+ String resJson = shopService.post(GET_FINDER_PRODUCT_LIST_URL, param);
+ return ResponseUtils.decode(resJson, FinderProductListResponse.class);
+ }
+
+ @Override
+ public FinderProductOverallResponse getFinderProductOverall(String ds, String finderId) throws WxErrorException {
+ CompassFinderIdParam param = new CompassFinderIdParam(ds, finderId);
+ String resJson = shopService.post(GET_FINDER_PRODUCT_OVERALL_URL, param);
+ return ResponseUtils.decode(resJson, FinderProductOverallResponse.class);
+ }
+
+ @Override
+ public ShopLiveListResponse getShopLiveList(String ds, String finderId) throws WxErrorException {
+ CompassFinderIdParam param = new CompassFinderIdParam(ds, finderId);
+ String resJson = shopService.post(GET_LIVE_LIST_URL, param);
+ return ResponseUtils.decode(resJson, ShopLiveListResponse.class);
+ }
+
+ @Override
+ public ShopProductDataResponse getShopProductData(String ds, String productId) throws WxErrorException {
+ ShopProductDataParam param = new ShopProductDataParam(ds, productId);
+ String resJson = shopService.post(GET_SHOP_PRODUCT_DATA_URL, param);
+ return ResponseUtils.decode(resJson, ShopProductDataResponse.class);
+ }
+
+ @Override
+ public ShopProductListResponse getShopProductList(String ds) throws WxErrorException {
+ CompassFinderBaseParam param = new CompassFinderBaseParam(ds);
+ String resJson = shopService.post(GET_SHOP_PRODUCT_LIST_URL, param);
+ return ResponseUtils.decode(resJson, ShopProductListResponse.class);
+ }
+
+ @Override
+ public ShopSaleProfileDataResponse getShopSaleProfileData(String ds, Integer type) throws WxErrorException {
+ ShopSaleProfileDataParam param = new ShopSaleProfileDataParam(ds, type);
+ String resJson = shopService.post(GET_SHOP_SALE_PROFILE_DATA_URL, param);
+ return ResponseUtils.decode(resJson, ShopSaleProfileDataResponse.class);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreCooperationServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreCooperationServiceImpl.java
new file mode 100644
index 0000000000..2e83faba09
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreCooperationServiceImpl.java
@@ -0,0 +1,68 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Cooperation.CANCEL_COOPERATION_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Cooperation.GENERATE_QRCODE_COOPERATION_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Cooperation.GET_COOPERATION_STATUS_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Cooperation.LIST_COOPERATION_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Cooperation.UNBIND_COOPERATION_URL;
+
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.api.WxStoreCooperationService;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.cooperation.CooperationListResponse;
+import com.binarywang.wxjava.store.bean.cooperation.CooperationQrCodeResponse;
+import com.binarywang.wxjava.store.bean.cooperation.CooperationSharerParam;
+import com.binarywang.wxjava.store.bean.cooperation.CooperationStatusResponse;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 合作账号相关接口
+ *
+ * @author Zeyes
+ */
+@Slf4j
+public class WxStoreCooperationServiceImpl implements WxStoreCooperationService {
+
+ /** 微信小店服务 */
+ private final BaseWxStoreServiceImpl, ?> storeService;
+
+ public WxStoreCooperationServiceImpl(BaseWxStoreServiceImpl, ?> storeService) {
+ this.storeService = storeService;
+ }
+
+ @Override
+ public CooperationListResponse listCooperation(Integer sharerType) throws WxErrorException {
+ String paramJson = "{\"sharer_type\":" + sharerType + "}";
+ String resJson = storeService.post(LIST_COOPERATION_URL, paramJson);
+ return ResponseUtils.decode(resJson, CooperationListResponse.class);
+ }
+
+ @Override
+ public CooperationStatusResponse getCooperationStatus(String sharerId, Integer sharerType) throws WxErrorException {
+ CooperationSharerParam param = new CooperationSharerParam(sharerId, sharerType);
+ String resJson = storeService.post(GET_COOPERATION_STATUS_URL, param);
+ return ResponseUtils.decode(resJson, CooperationStatusResponse.class);
+ }
+
+ @Override
+ public CooperationQrCodeResponse generateQrCode(String sharerId, Integer sharerType) throws WxErrorException {
+ CooperationSharerParam param = new CooperationSharerParam(sharerId, sharerType);
+ String resJson = storeService.post(GENERATE_QRCODE_COOPERATION_URL, param);
+ return ResponseUtils.decode(resJson, CooperationQrCodeResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse cancelInvitation(String sharerId, Integer sharerType) throws WxErrorException {
+ CooperationSharerParam param = new CooperationSharerParam(sharerId, sharerType);
+ String resJson = storeService.post(CANCEL_COOPERATION_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse unbind(String sharerId, Integer sharerType) throws WxErrorException {
+ CooperationSharerParam param = new CooperationSharerParam(sharerId, sharerType);
+ String resJson = storeService.post(UNBIND_COOPERATION_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreCouponServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreCouponServiceImpl.java
new file mode 100644
index 0000000000..825bcf17b8
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreCouponServiceImpl.java
@@ -0,0 +1,88 @@
+package com.binarywang.wxjava.store.api.impl;
+
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Coupon.CREATE_COUPON_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Coupon.GET_COUPON_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Coupon.GET_USER_COUPON_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Coupon.LIST_COUPON_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Coupon.LIST_USER_COUPON_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Coupon.UPDATE_COUPON_STATUS_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Coupon.UPDATE_COUPON_URL;
+
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.api.WxStoreCouponService;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.coupon.CouponIdInfo;
+import com.binarywang.wxjava.store.bean.coupon.CouponIdResponse;
+import com.binarywang.wxjava.store.bean.coupon.CouponInfoResponse;
+import com.binarywang.wxjava.store.bean.coupon.CouponListParam;
+import com.binarywang.wxjava.store.bean.coupon.CouponListResponse;
+import com.binarywang.wxjava.store.bean.coupon.CouponParam;
+import com.binarywang.wxjava.store.bean.coupon.CouponStatusParam;
+import com.binarywang.wxjava.store.bean.coupon.UserCouponIdParam;
+import com.binarywang.wxjava.store.bean.coupon.UserCouponListParam;
+import com.binarywang.wxjava.store.bean.coupon.UserCouponListResponse;
+import com.binarywang.wxjava.store.bean.coupon.UserCouponResponse;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 优惠券服务实现
+ *
+ * @author Zeyes
+ */
+@Slf4j
+public class WxStoreCouponServiceImpl implements WxStoreCouponService {
+
+ /** 微信商店服务 */
+ private final BaseWxStoreServiceImpl, ?> shopService;
+
+ public WxStoreCouponServiceImpl(BaseWxStoreServiceImpl, ?> shopService) {
+ this.shopService = shopService;
+ }
+
+ @Override
+ public CouponIdResponse createCoupon(CouponParam coupon) throws WxErrorException {
+ String resJson = shopService.post(CREATE_COUPON_URL, coupon);
+ return ResponseUtils.decode(resJson, CouponIdResponse.class);
+ }
+
+ @Override
+ public CouponIdResponse updateCoupon(CouponParam coupon) throws WxErrorException {
+ String resJson = shopService.post(UPDATE_COUPON_URL, coupon);
+ return ResponseUtils.decode(resJson, CouponIdResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse updateCouponStatus(String couponId, Integer status) throws WxErrorException {
+ CouponStatusParam param = new CouponStatusParam(couponId, status);
+ String resJson = shopService.post(UPDATE_COUPON_STATUS_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public CouponInfoResponse getCoupon(String couponId) throws WxErrorException {
+ CouponIdInfo param = new CouponIdInfo(couponId);
+ String resJson = shopService.post(GET_COUPON_URL, param);
+ return ResponseUtils.decode(resJson, CouponInfoResponse.class);
+ }
+
+ @Override
+ public CouponListResponse getCouponList(CouponListParam param) throws WxErrorException {
+ String resJson = shopService.post(LIST_COUPON_URL, param);
+ return ResponseUtils.decode(resJson, CouponListResponse.class);
+ }
+
+ @Override
+ public UserCouponResponse getUserCoupon(String openId, String userCouponId) throws WxErrorException {
+ UserCouponIdParam param = new UserCouponIdParam(openId, userCouponId);
+ String resJson = shopService.post(GET_USER_COUPON_URL, param);
+ return ResponseUtils.decode(resJson, UserCouponResponse.class);
+ }
+
+ @Override
+ public UserCouponListResponse getUserCouponList(UserCouponListParam param) throws WxErrorException {
+ String resJson = shopService.post(LIST_USER_COUPON_URL, param);
+ return ResponseUtils.decode(resJson, UserCouponListResponse.class);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreEwaybillServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreEwaybillServiceImpl.java
new file mode 100644
index 0000000000..ebbac97e6c
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreEwaybillServiceImpl.java
@@ -0,0 +1,165 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Ewaybill.ADD_SUB_ORDER_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Ewaybill.BATCH_PRINT_ORDER_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Ewaybill.CANCEL_ORDER_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Ewaybill.CREATE_ORDER_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Ewaybill.CREATE_TEMPLATE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Ewaybill.DELETE_TEMPLATE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Ewaybill.GET_ACCOUNT_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Ewaybill.GET_DELIVERY_LIST_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Ewaybill.GET_ORDER_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Ewaybill.GET_PRINT_CONTENT_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Ewaybill.GET_TEMPLATE_BY_ID_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Ewaybill.GET_TEMPLATE_CONFIG_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Ewaybill.GET_TEMPLATE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Ewaybill.PRE_CREATE_ORDER_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Ewaybill.PRINT_ORDER_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Ewaybill.UPDATE_TEMPLATE_URL;
+
+import java.util.List;
+import com.binarywang.wxjava.store.api.WxStoreEwaybillService;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.ewaybill.AccountInfoResponse;
+import com.binarywang.wxjava.store.bean.ewaybill.AddSubOrderRequest;
+import com.binarywang.wxjava.store.bean.ewaybill.CreateOrderRequest;
+import com.binarywang.wxjava.store.bean.ewaybill.CreateOrderResponse;
+import com.binarywang.wxjava.store.bean.ewaybill.DeliveryListResponse;
+import com.binarywang.wxjava.store.bean.ewaybill.EwaybillOrderIdParam;
+import com.binarywang.wxjava.store.bean.ewaybill.PrintOrderRequest;
+import com.binarywang.wxjava.store.bean.ewaybill.BatchPrintOrderRequest;
+import com.binarywang.wxjava.store.bean.ewaybill.OrderDetailResponse;
+import com.binarywang.wxjava.store.bean.ewaybill.PreCreateRequest;
+import com.binarywang.wxjava.store.bean.ewaybill.PreCreateResponse;
+import com.binarywang.wxjava.store.bean.ewaybill.PrintContentResponse;
+import com.binarywang.wxjava.store.bean.ewaybill.PrintContentParam;
+import com.binarywang.wxjava.store.bean.ewaybill.TemplateCodeParam;
+import com.binarywang.wxjava.store.bean.ewaybill.TemplateConfigResponse;
+import com.binarywang.wxjava.store.bean.ewaybill.TemplateCreateRequest;
+import com.binarywang.wxjava.store.bean.ewaybill.TemplateIdParam;
+import com.binarywang.wxjava.store.bean.ewaybill.TemplateIdResponse;
+import com.binarywang.wxjava.store.bean.ewaybill.TemplateInfoResponse;
+import com.binarywang.wxjava.store.bean.ewaybill.TemplateUpdateRequest;
+import com.binarywang.wxjava.store.bean.ewaybill.WaybillIdParam;
+import com.binarywang.wxjava.store.bean.ewaybill.WaybillIdsParam;
+import com.binarywang.wxjava.store.util.JsonUtils;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+import me.chanjar.weixin.common.util.http.SimplePostRequestExecutor;
+
+/**
+ * 微信小店电子面单服务实现。
+ *
+ * @author GitHub Copilot
+ */
+public class WxStoreEwaybillServiceImpl implements WxStoreEwaybillService {
+
+ /** 微信商店服务 */
+ private final BaseWxStoreServiceImpl, ?> shopService;
+
+ public WxStoreEwaybillServiceImpl(BaseWxStoreServiceImpl, ?> shopService) {
+ this.shopService = shopService;
+ }
+
+ @Override
+ public TemplateConfigResponse getTemplateConfig() throws WxErrorException {
+ String resJson = post(GET_TEMPLATE_CONFIG_URL, "{}");
+ return ResponseUtils.decode(resJson, TemplateConfigResponse.class);
+ }
+
+ @Override
+ public TemplateIdResponse createTemplate(TemplateCreateRequest req) throws WxErrorException {
+ String resJson = post(CREATE_TEMPLATE_URL, req);
+ return ResponseUtils.decode(resJson, TemplateIdResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse deleteTemplate(String templateId) throws WxErrorException {
+ String resJson = post(DELETE_TEMPLATE_URL, new TemplateIdParam(templateId));
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse updateTemplate(TemplateUpdateRequest req) throws WxErrorException {
+ String resJson = post(UPDATE_TEMPLATE_URL, req);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public TemplateInfoResponse getTemplate(String templateCode) throws WxErrorException {
+ String resJson = post(GET_TEMPLATE_URL, new TemplateCodeParam(templateCode));
+ return ResponseUtils.decode(resJson, TemplateInfoResponse.class);
+ }
+
+ @Override
+ public TemplateInfoResponse getTemplateById(String templateId) throws WxErrorException {
+ String resJson = post(GET_TEMPLATE_BY_ID_URL, new TemplateIdParam(templateId));
+ return ResponseUtils.decode(resJson, TemplateInfoResponse.class);
+ }
+
+ @Override
+ public AccountInfoResponse getAccount() throws WxErrorException {
+ String resJson = post(GET_ACCOUNT_URL, "{}");
+ return ResponseUtils.decode(resJson, AccountInfoResponse.class);
+ }
+
+ @Override
+ public DeliveryListResponse getDeliveryList() throws WxErrorException {
+ String resJson = post(GET_DELIVERY_LIST_URL, "{}");
+ return ResponseUtils.decode(resJson, DeliveryListResponse.class);
+ }
+
+ @Override
+ public PreCreateResponse preCreateOrder(PreCreateRequest req) throws WxErrorException {
+ String resJson = post(PRE_CREATE_ORDER_URL, req);
+ return ResponseUtils.decode(resJson, PreCreateResponse.class);
+ }
+
+ @Override
+ public CreateOrderResponse createOrder(CreateOrderRequest req) throws WxErrorException {
+ String resJson = post(CREATE_ORDER_URL, req);
+ return ResponseUtils.decode(resJson, CreateOrderResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse addSubOrder(AddSubOrderRequest req) throws WxErrorException {
+ String resJson = post(ADD_SUB_ORDER_URL, req);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse cancelOrder(PrintOrderRequest req) throws WxErrorException {
+ String resJson = post(CANCEL_ORDER_URL, req);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public OrderDetailResponse getOrder(String ewaybillOrderId) throws WxErrorException {
+ String resJson = post(GET_ORDER_URL, new EwaybillOrderIdParam(ewaybillOrderId));
+ return ResponseUtils.decode(resJson, OrderDetailResponse.class);
+ }
+
+ @Override
+ public PrintContentResponse getPrintContent(String ewaybillOrderId, String templateId)
+ throws WxErrorException {
+ String resJson = post(GET_PRINT_CONTENT_URL, new PrintContentParam(ewaybillOrderId, templateId));
+ return ResponseUtils.decode(resJson, PrintContentResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse printOrder(PrintOrderRequest req) throws WxErrorException {
+ String resJson = post(PRINT_ORDER_URL, req);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse batchPrintOrder(BatchPrintOrderRequest req) throws WxErrorException {
+ String resJson = post(BATCH_PRINT_ORDER_URL, req);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ private String post(String url, Object request) throws WxErrorException {
+ return shopService.executeWithoutLog(
+ SimplePostRequestExecutor.create(shopService), url, JsonUtils.encode(request));
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreFavoriteServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreFavoriteServiceImpl.java
new file mode 100644
index 0000000000..a9d8420176
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreFavoriteServiceImpl.java
@@ -0,0 +1,29 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Favorite.GET_FAVORITE_COUNT;
+
+import com.binarywang.wxjava.store.api.WxStoreFavoriteService;
+import com.binarywang.wxjava.store.bean.favorite.FavoriteCountResponse;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 收藏管理接口实现
+ *
+ * @author GitHub Copilot
+ */
+public class WxStoreFavoriteServiceImpl implements WxStoreFavoriteService {
+
+ /** 微信商店服务 */
+ private final BaseWxStoreServiceImpl, ?> shopService;
+
+ public WxStoreFavoriteServiceImpl(BaseWxStoreServiceImpl, ?> shopService) {
+ this.shopService = shopService;
+ }
+
+ @Override
+ public FavoriteCountResponse getFavoriteCount() throws WxErrorException {
+ String resJson = shopService.post(GET_FAVORITE_COUNT, "{}");
+ return ResponseUtils.decode(resJson, FavoriteCountResponse.class);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreFreightTemplateServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreFreightTemplateServiceImpl.java
new file mode 100644
index 0000000000..241d9697fc
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreFreightTemplateServiceImpl.java
@@ -0,0 +1,61 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.FreightTemplate.ADD_TEMPLATE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.FreightTemplate.GET_TEMPLATE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.FreightTemplate.LIST_TEMPLATE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.FreightTemplate.UPDATE_TEMPLATE_URL;
+
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.api.WxStoreFreightTemplateService;
+import com.binarywang.wxjava.store.bean.freight.FreightTemplate;
+import com.binarywang.wxjava.store.bean.freight.TemplateAddParam;
+import com.binarywang.wxjava.store.bean.freight.TemplateIdResponse;
+import com.binarywang.wxjava.store.bean.freight.TemplateInfoResponse;
+import com.binarywang.wxjava.store.bean.freight.TemplateListParam;
+import com.binarywang.wxjava.store.bean.freight.TemplateListResponse;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 运费模板服务实现
+ *
+ * @author Zeyes
+ */
+@Slf4j
+public class WxStoreFreightTemplateServiceImpl implements WxStoreFreightTemplateService {
+ /** 微信商店服务 */
+ private final BaseWxStoreServiceImpl, ?> shopService;
+
+ public WxStoreFreightTemplateServiceImpl(BaseWxStoreServiceImpl, ?> shopService) {
+ this.shopService = shopService;
+ }
+
+ @Override
+ public TemplateListResponse listTemplate(Integer offset, Integer limit) throws WxErrorException {
+ TemplateListParam param = new TemplateListParam(offset, limit);
+ String resJson = shopService.post(LIST_TEMPLATE_URL, param);
+ return ResponseUtils.decode(resJson, TemplateListResponse.class);
+
+ }
+
+ @Override
+ public TemplateInfoResponse getTemplate(String templateId) throws WxErrorException {
+ String reqJson = "{\"template_id\": \"" + templateId + "\"}";
+ String resJson = shopService.post(GET_TEMPLATE_URL, reqJson);
+ return ResponseUtils.decode(resJson, TemplateInfoResponse.class);
+ }
+
+ @Override
+ public TemplateIdResponse addTemplate(FreightTemplate template) throws WxErrorException {
+ TemplateAddParam param = new TemplateAddParam(template);
+ String resJson = shopService.post(ADD_TEMPLATE_URL, param);
+ return ResponseUtils.decode(resJson, TemplateIdResponse.class);
+ }
+
+ @Override
+ public TemplateIdResponse updateTemplate(FreightTemplate template) throws WxErrorException {
+ TemplateAddParam param = new TemplateAddParam(template);
+ String resJson = shopService.post(UPDATE_TEMPLATE_URL, param);
+ return ResponseUtils.decode(resJson, TemplateIdResponse.class);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreFundServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreFundServiceImpl.java
new file mode 100644
index 0000000000..567a20e7cf
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreFundServiceImpl.java
@@ -0,0 +1,167 @@
+package com.binarywang.wxjava.store.api.impl;
+
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Fund.CHECK_QRCODE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Fund.GET_BALANCE_FLOW_DETAIL_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Fund.GET_BALANCE_FLOW_LIST_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Fund.GET_BALANCE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Fund.GET_BANK_ACCOUNT_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Fund.GET_BANK_BY_NUM_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Fund.GET_BANK_LIST_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Fund.GET_CITY_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Fund.GET_PROVINCE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Fund.GET_QRCODE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Fund.GET_SUB_BANK_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Fund.GET_WITHDRAW_DETAIL_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Fund.GET_WITHDRAW_LIST_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Fund.SET_BANK_ACCOUNT_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Fund.WITHDRAW_URL;
+
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.api.WxStoreFundService;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.fund.AccountInfo;
+import com.binarywang.wxjava.store.bean.fund.AccountInfoParam;
+import com.binarywang.wxjava.store.bean.fund.AccountInfoResponse;
+import com.binarywang.wxjava.store.bean.fund.BalanceInfoResponse;
+import com.binarywang.wxjava.store.bean.fund.FlowListResponse;
+import com.binarywang.wxjava.store.bean.fund.FundsFlowResponse;
+import com.binarywang.wxjava.store.bean.fund.FundsListParam;
+import com.binarywang.wxjava.store.bean.fund.WithdrawDetailResponse;
+import com.binarywang.wxjava.store.bean.fund.WithdrawListParam;
+import com.binarywang.wxjava.store.bean.fund.WithdrawListResponse;
+import com.binarywang.wxjava.store.bean.fund.WithdrawSubmitParam;
+import com.binarywang.wxjava.store.bean.fund.WithdrawSubmitResponse;
+import com.binarywang.wxjava.store.bean.fund.bank.BankCityResponse;
+import com.binarywang.wxjava.store.bean.fund.bank.BankInfoResponse;
+import com.binarywang.wxjava.store.bean.fund.bank.BankListResponse;
+import com.binarywang.wxjava.store.bean.fund.bank.BankProvinceResponse;
+import com.binarywang.wxjava.store.bean.fund.bank.BankSearchParam;
+import com.binarywang.wxjava.store.bean.fund.bank.BranchInfoResponse;
+import com.binarywang.wxjava.store.bean.fund.bank.BranchSearchParam;
+import com.binarywang.wxjava.store.bean.fund.qrcode.QrCheckResponse;
+import com.binarywang.wxjava.store.bean.fund.qrcode.QrCodeResponse;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 资金服务实现
+ *
+ * @author Zeyes
+ */
+@Slf4j
+public class WxStoreFundServiceImpl implements WxStoreFundService {
+
+
+ /** 微信商店服务 */
+ private final BaseWxStoreServiceImpl, ?> shopService;
+
+ public WxStoreFundServiceImpl(BaseWxStoreServiceImpl, ?> shopService) {
+ this.shopService = shopService;
+ }
+
+ @Override
+ public BalanceInfoResponse getBalance() throws WxErrorException {
+ String resJson = shopService.post(GET_BALANCE_URL, "{}");
+ return ResponseUtils.decode(resJson, BalanceInfoResponse.class);
+ }
+
+ @Override
+ public AccountInfoResponse getBankAccount() throws WxErrorException {
+ String resJson = shopService.post(GET_BANK_ACCOUNT_URL, "{}");
+ return ResponseUtils.decode(resJson, AccountInfoResponse.class);
+ }
+
+ @Override
+ public FundsFlowResponse getFundsFlowDetail(String flowId) throws WxErrorException {
+ String reqJson = "{\"flow_id\":\"" + flowId + "\"}";
+ String resJson = shopService.post(GET_BALANCE_FLOW_DETAIL_URL, reqJson);
+ return ResponseUtils.decode(resJson, FundsFlowResponse.class);
+ }
+
+ @Override
+ public FlowListResponse listFundsFlow(FundsListParam param) throws WxErrorException {
+ String resJson = shopService.post(GET_BALANCE_FLOW_LIST_URL, param);
+ return ResponseUtils.decode(resJson, FlowListResponse.class);
+ }
+
+ @Override
+ public WithdrawDetailResponse getWithdrawDetail(String withdrawId) throws WxErrorException {
+ String reqJson = "{\"withdraw_id\":\"" + withdrawId + "\"}";
+ String resJson = shopService.post(GET_WITHDRAW_DETAIL_URL, reqJson);
+ return ResponseUtils.decode(resJson, WithdrawDetailResponse.class);
+ }
+
+ @Override
+ public WithdrawListResponse listWithdraw(Integer pageNum, Integer pageSize, Long startTime, Long endTime)
+ throws WxErrorException {
+ WithdrawListParam param = new WithdrawListParam(pageNum, pageSize, startTime, endTime);
+ String resJson = shopService.post(GET_WITHDRAW_LIST_URL, param);
+ return ResponseUtils.decode(resJson, WithdrawListResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse setBankAccount(AccountInfo accountInfo) throws WxErrorException {
+ AccountInfoParam param = new AccountInfoParam(accountInfo);
+ String resJson = shopService.post(SET_BANK_ACCOUNT_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WithdrawSubmitResponse submitWithdraw(Integer amount, String remark, String bankMemo)
+ throws WxErrorException {
+ WithdrawSubmitParam param = new WithdrawSubmitParam(amount, remark, bankMemo);
+ String resJson = shopService.post(WITHDRAW_URL, param);
+ return ResponseUtils.decode(resJson, WithdrawSubmitResponse.class);
+ }
+
+ @Override
+ public BankInfoResponse getBankInfoByCardNo(String accountNumber) throws WxErrorException {
+ String reqJson = "{\"account_number\":\"" + accountNumber + "\"}";
+ String resJson = shopService.post(GET_BANK_BY_NUM_URL, reqJson);
+ return ResponseUtils.decode(resJson, BankInfoResponse.class);
+ }
+
+ @Override
+ public BankListResponse searchBankList(Integer offset, Integer limit, String keywords, Integer bankType)
+ throws WxErrorException {
+ BankSearchParam param = new BankSearchParam(offset, limit, keywords, bankType);
+ String resJson = shopService.post(GET_BANK_LIST_URL, param);
+ return ResponseUtils.decode(resJson, BankListResponse.class);
+ }
+
+ @Override
+ public BankCityResponse searchCityList(String provinceCode) throws WxErrorException {
+ String reqJson = "{\"province_code\":\"" + provinceCode + "\"}";
+ String resJson = shopService.post(GET_CITY_URL, reqJson);
+ return ResponseUtils.decode(resJson, BankCityResponse.class);
+ }
+
+ @Override
+ public BankProvinceResponse getProvinceList() throws WxErrorException {
+ String resJson = shopService.post(GET_PROVINCE_URL, "{}");
+ return ResponseUtils.decode(resJson, BankProvinceResponse.class);
+ }
+
+ @Override
+ public BranchInfoResponse searchBranchList(String bankCode, String cityCode, Integer offset, Integer limit)
+ throws WxErrorException {
+ BranchSearchParam param = new BranchSearchParam(bankCode, cityCode, offset, limit);
+ String resJson = shopService.post(GET_SUB_BANK_URL, param);
+ return ResponseUtils.decode(resJson, BranchInfoResponse.class);
+ }
+
+ @Override
+ public QrCodeResponse getQrCode(String qrcodeTicket) throws WxErrorException {
+ String reqJson = "{\"qrcode_ticket\":\"" + qrcodeTicket + "\"}";
+ String resJson = shopService.post(GET_QRCODE_URL, reqJson);
+ return ResponseUtils.decode(resJson, QrCodeResponse.class);
+ }
+
+ @Override
+ public QrCheckResponse checkQrStatus(String qrcodeTicket) throws WxErrorException {
+ String reqJson = "{\"qrcode_ticket\":\"" + qrcodeTicket + "\"}";
+ String resJson = shopService.post(CHECK_QRCODE_URL, reqJson);
+ return ResponseUtils.decode(resJson, QrCheckResponse.class);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreGiftServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreGiftServiceImpl.java
new file mode 100644
index 0000000000..6d552cac12
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreGiftServiceImpl.java
@@ -0,0 +1,104 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.GIFT_ACTIVITY_ADD_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.GIFT_ACTIVITY_DELETE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.GIFT_ACTIVITY_STOP_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.GIFT_PRODUCT_ADD_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.GIFT_PRODUCT_GET_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.GIFT_PRODUCT_LIST_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.GIFT_PRODUCT_ON_SALE_SET_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.GIFT_PRODUCT_STOCK_UPDATE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.GIFT_PRODUCT_UPDATE_URL;
+
+import com.binarywang.wxjava.store.api.WxStoreGiftService;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.product.GiftActivityAddParam;
+import com.binarywang.wxjava.store.bean.product.GiftActivityAddResponse;
+import com.binarywang.wxjava.store.bean.product.GiftActivityInfo;
+import com.binarywang.wxjava.store.bean.product.GiftProductAddResponse;
+import com.binarywang.wxjava.store.bean.product.GiftProductGetResponse;
+import com.binarywang.wxjava.store.bean.product.GiftProductInfo;
+import com.binarywang.wxjava.store.bean.product.GiftProductListParam;
+import com.binarywang.wxjava.store.bean.product.GiftProductListResponse;
+import com.binarywang.wxjava.store.bean.product.SkuStockParam;
+import com.binarywang.wxjava.store.util.JsonUtils;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店赠品与买赠活动服务实现。
+ */
+public class WxStoreGiftServiceImpl implements WxStoreGiftService {
+
+ private final BaseWxStoreServiceImpl, ?> shopService;
+
+ public WxStoreGiftServiceImpl(BaseWxStoreServiceImpl, ?> shopService) {
+ this.shopService = shopService;
+ }
+
+ @Override
+ public GiftProductAddResponse addGiftProduct(GiftProductInfo info) throws WxErrorException {
+ String reqJson = JsonUtils.encode(info);
+ String resJson = shopService.post(GIFT_PRODUCT_ADD_URL, reqJson);
+ return ResponseUtils.decode(resJson, GiftProductAddResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse updateGiftProduct(GiftProductInfo info) throws WxErrorException {
+ String reqJson = JsonUtils.encode(info);
+ String resJson = shopService.post(GIFT_PRODUCT_UPDATE_URL, reqJson);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse setProductAsGift(String productId) throws WxErrorException {
+ String reqJson = "{\"product_id\":\"" + productId + "\"}";
+ String resJson = shopService.post(GIFT_PRODUCT_ON_SALE_SET_URL, reqJson);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public GiftProductGetResponse getGiftProduct(String productId) throws WxErrorException {
+ String reqJson = "{\"product_id\":\"" + productId + "\"}";
+ String resJson = shopService.post(GIFT_PRODUCT_GET_URL, reqJson);
+ return ResponseUtils.decode(resJson, GiftProductGetResponse.class);
+ }
+
+ @Override
+ public GiftProductListResponse listGiftProduct(GiftProductListParam param) throws WxErrorException {
+ String reqJson = JsonUtils.encode(param);
+ String resJson = shopService.post(GIFT_PRODUCT_LIST_URL, reqJson);
+ return ResponseUtils.decode(resJson, GiftProductListResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse updateGiftStock(String productId, String skuId, Integer diffType, Integer num)
+ throws WxErrorException {
+ SkuStockParam param = new SkuStockParam(productId, skuId, diffType, num);
+ String reqJson = JsonUtils.encode(param);
+ String resJson = shopService.post(GIFT_PRODUCT_STOCK_UPDATE_URL, reqJson);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public GiftActivityAddResponse addGiftActivity(GiftActivityInfo info) throws WxErrorException {
+ GiftActivityAddParam param = new GiftActivityAddParam(info);
+ String reqJson = JsonUtils.encode(param);
+ String resJson = shopService.post(GIFT_ACTIVITY_ADD_URL, reqJson);
+ return ResponseUtils.decode(resJson, GiftActivityAddResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse deleteGiftActivity(String activityId) throws WxErrorException {
+ String reqJson = "{\"activity_id\":\"" + activityId + "\"}";
+ String resJson = shopService.post(GIFT_ACTIVITY_DELETE_URL, reqJson);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse stopGiftActivity(String activityId) throws WxErrorException {
+ String reqJson = "{\"activity_id\":\"" + activityId + "\"}";
+ String resJson = shopService.post(GIFT_ACTIVITY_STOP_URL, reqJson);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreHomePageServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreHomePageServiceImpl.java
new file mode 100644
index 0000000000..bb925b9d0d
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreHomePageServiceImpl.java
@@ -0,0 +1,164 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.HomePage.*;
+
+
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.api.WxStoreHomePageService;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.home.background.BackgroundApplyResponse;
+import com.binarywang.wxjava.store.bean.home.background.BackgroundGetResponse;
+import com.binarywang.wxjava.store.bean.home.banner.BannerApplyParam;
+import com.binarywang.wxjava.store.bean.home.banner.BannerApplyResponse;
+import com.binarywang.wxjava.store.bean.home.banner.BannerGetResponse;
+import com.binarywang.wxjava.store.bean.home.banner.BannerInfo;
+import com.binarywang.wxjava.store.bean.home.tree.TreeProductEditInfo;
+import com.binarywang.wxjava.store.bean.home.tree.TreeProductEditParam;
+import com.binarywang.wxjava.store.bean.home.tree.TreeProductListInfo;
+import com.binarywang.wxjava.store.bean.home.tree.TreeProductListParam;
+import com.binarywang.wxjava.store.bean.home.tree.TreeProductListResponse;
+import com.binarywang.wxjava.store.bean.home.tree.TreeShowGetResponse;
+import com.binarywang.wxjava.store.bean.home.tree.TreeShowInfo;
+import com.binarywang.wxjava.store.bean.home.tree.TreeShowParam;
+import com.binarywang.wxjava.store.bean.home.tree.TreeShowSetResponse;
+import com.binarywang.wxjava.store.bean.home.window.WindowProductIndexParam;
+import com.binarywang.wxjava.store.bean.home.window.WindowProductListParam;
+import com.binarywang.wxjava.store.bean.home.window.WindowProductSetting;
+import com.binarywang.wxjava.store.bean.home.window.WindowProductSettingResponse;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 主页管理相关接口
+ *
+ * @author Zeyes
+ */
+@Slf4j
+public class WxStoreHomePageServiceImpl implements WxStoreHomePageService {
+
+ /** 微信小店服务 */
+ private final BaseWxStoreServiceImpl, ?> storeService;
+
+ public WxStoreHomePageServiceImpl(BaseWxStoreServiceImpl, ?> storeService) {
+ this.storeService = storeService;
+ }
+
+
+ @Override
+ public WxStoreBaseResponse addTreeProduct(TreeProductEditInfo info) throws WxErrorException {
+ TreeProductEditParam param = new TreeProductEditParam(info);
+ String resJson = storeService.post(ADD_TREE_PRODUCT_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse delTreeProduct(TreeProductEditInfo info) throws WxErrorException {
+ TreeProductEditParam param = new TreeProductEditParam(info);
+ String resJson = storeService.post(DEL_TREE_PRODUCT_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public TreeProductListResponse getTreeProductList(TreeProductListInfo info) throws WxErrorException {
+ TreeProductListParam param = new TreeProductListParam(info);
+ String resJson = storeService.post(LIST_TREE_PRODUCT_URL, param);
+ return ResponseUtils.decode(resJson, TreeProductListResponse.class);
+ }
+
+ @Override
+ public TreeShowSetResponse setShowTree(TreeShowInfo info) throws WxErrorException {
+ TreeShowParam param = new TreeShowParam(info);
+ String resJson = storeService.post(SET_SHOW_TREE_URL, param);
+ return ResponseUtils.decode(resJson, TreeShowSetResponse.class);
+ }
+
+ @Override
+ public TreeShowGetResponse getShowTree() throws WxErrorException {
+ String resJson = storeService.post(GET_SHOW_TREE_URL, "");
+ return ResponseUtils.decode(resJson, TreeShowGetResponse.class);
+ }
+
+ @Override
+ public WindowProductSettingResponse listWindowProduct(Integer pageSize, String nextKey) throws WxErrorException {
+ WindowProductListParam param = new WindowProductListParam(pageSize, nextKey);
+ String resJson = storeService.post(LIST_WINDOW_PRODUCT_URL, param);
+ return ResponseUtils.decode(resJson, WindowProductSettingResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse reorderWindowProduct(String productId, Integer indexNum) throws WxErrorException {
+ WindowProductIndexParam param = new WindowProductIndexParam(productId, indexNum);
+ String resJson = storeService.post(REORDER_WINDOW_PRODUCT_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse hideWindowProduct(String productId, Integer setHide) throws WxErrorException {
+ WindowProductSetting param = new WindowProductSetting();
+ param.setProductId(productId);
+ param.setSetHide(setHide);
+ String resJson = storeService.post(HIDE_WINDOW_PRODUCT_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse topWindowProduct(String productId, Integer setTop) throws WxErrorException {
+ WindowProductSetting param = new WindowProductSetting();
+ param.setProductId(productId);
+ param.setSetTop(setTop);
+ String resJson = storeService.post(TOP_WINDOW_PRODUCT_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public BackgroundApplyResponse applyBackground(String imgUrl) throws WxErrorException {
+ String paramJson = "{\"img_url\":\"" + imgUrl + "\"}";
+ String resJson = storeService.post(APPLY_BACKGROUND_URL, paramJson);
+ return ResponseUtils.decode(resJson, BackgroundApplyResponse.class);
+ }
+
+ @Override
+ public BackgroundGetResponse getBackground() throws WxErrorException {
+ String resJson = storeService.post(GET_BACKGROUND_URL, "");
+ return ResponseUtils.decode(resJson, BackgroundGetResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse cancelBackground(Integer applyId) throws WxErrorException {
+ String paramJson = "{\"apply_id\":" + applyId + "}";
+ String resJson = storeService.post(CANCEL_BACKGROUND_URL, paramJson);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse removeBackground() throws WxErrorException {
+ String resJson = storeService.post(REMOVE_BACKGROUND_URL, "");
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public BannerApplyResponse applyBanner(BannerInfo info) throws WxErrorException {
+ BannerApplyParam param = new BannerApplyParam(info);
+ String resJson = storeService.post(APPLY_BANNER_URL, param);
+ return ResponseUtils.decode(resJson, BannerApplyResponse.class);
+ }
+
+ @Override
+ public BannerGetResponse getBanner() throws WxErrorException {
+ String resJson = storeService.post(GET_BANNER_URL, "");
+ return ResponseUtils.decode(resJson, BannerGetResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse cancelBanner(Integer applyId) throws WxErrorException {
+ String paramJson = "{\"apply_id\":" + applyId + "}";
+ String resJson = storeService.post(CANCEL_BANNER_URL, paramJson);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse removeBanner() throws WxErrorException {
+ String resJson = storeService.post(REMOVE_BANNER_URL, "");
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreKfServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreKfServiceImpl.java
new file mode 100644
index 0000000000..e9c9e2bd12
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreKfServiceImpl.java
@@ -0,0 +1,45 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Kf.COS_UPLOAD_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Kf.SEND_MSG_URL;
+
+import com.binarywang.wxjava.store.api.WxStoreKfService;
+import com.binarywang.wxjava.store.bean.kf.WxStoreKfCosUploadResponse;
+import com.binarywang.wxjava.store.bean.kf.WxStoreKfSendMsgParam;
+import com.binarywang.wxjava.store.bean.kf.WxStoreKfSendMsgResponse;
+import com.binarywang.wxjava.store.util.JsonUtils;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.bean.CommonUploadParam;
+import me.chanjar.weixin.common.error.WxErrorException;
+import me.chanjar.weixin.common.util.http.SimplePostRequestExecutor;
+
+/** 微信小店商家客服服务实现。 */
+public class WxStoreKfServiceImpl implements WxStoreKfService {
+
+ private final BaseWxStoreServiceImpl, ?> channelService;
+
+ public WxStoreKfServiceImpl(BaseWxStoreServiceImpl, ?> channelService) {
+ this.channelService = channelService;
+ }
+
+ @Override
+ public String uploadMedia(String openId, String msgType, byte[] file) throws WxErrorException {
+ return uploadMedia(openId, msgType, null, file);
+ }
+
+ @Override
+ public String uploadMedia(String openId, String msgType, String fileName, byte[] file) throws WxErrorException {
+ CommonUploadParam uploadParam = CommonUploadParam.fromBytes("file", fileName, file)
+ .addFormField("open_id", openId)
+ .addFormField("msg_type", msgType);
+ String responseJson = channelService.upload(COS_UPLOAD_URL, uploadParam);
+ return ResponseUtils.decode(responseJson, WxStoreKfCosUploadResponse.class).getCosUrl();
+ }
+
+ @Override
+ public WxStoreKfSendMsgResponse sendMessage(WxStoreKfSendMsgParam param) throws WxErrorException {
+ String responseJson = channelService.executeWithoutLog(SimplePostRequestExecutor.create(channelService), SEND_MSG_URL,
+ JsonUtils.encode(param));
+ return ResponseUtils.decode(responseJson, WxStoreKfSendMsgResponse.class);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreLimitedDiscountServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreLimitedDiscountServiceImpl.java
new file mode 100644
index 0000000000..ff7b495c86
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreLimitedDiscountServiceImpl.java
@@ -0,0 +1,68 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.ADD_LIMIT_TASK_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.DELETE_LIMIT_TASK_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.LIST_LIMIT_TASK_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.STOP_LIMIT_TASK_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.UPDATE_LIMIT_TASK_URL;
+
+import com.binarywang.wxjava.store.api.WxStoreLimitedDiscountService;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.limit.LimitTaskAddResponse;
+import com.binarywang.wxjava.store.bean.limit.LimitTaskListParam;
+import com.binarywang.wxjava.store.bean.limit.LimitTaskListResponse;
+import com.binarywang.wxjava.store.bean.limit.LimitTaskParam;
+import com.binarywang.wxjava.store.bean.limit.LimitTaskUpdateParam;
+import com.binarywang.wxjava.store.bean.limit.LimitTaskUpdateResponse;
+import com.binarywang.wxjava.store.util.JsonUtils;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店限时抢购服务实现。
+ */
+public class WxStoreLimitedDiscountServiceImpl implements WxStoreLimitedDiscountService {
+
+ private final BaseWxStoreServiceImpl, ?> shopService;
+
+ public WxStoreLimitedDiscountServiceImpl(BaseWxStoreServiceImpl, ?> shopService) {
+ this.shopService = shopService;
+ }
+
+ @Override
+ public LimitTaskAddResponse addLimitTask(LimitTaskParam param) throws WxErrorException {
+ String reqJson = JsonUtils.encode(param);
+ String resJson = shopService.post(ADD_LIMIT_TASK_URL, reqJson);
+ return ResponseUtils.decode(resJson, LimitTaskAddResponse.class);
+ }
+
+ @Override
+ public LimitTaskListResponse listLimitTask(Integer pageSize, String nextKey, Integer status)
+ throws WxErrorException {
+ LimitTaskListParam param = new LimitTaskListParam(pageSize, nextKey, status);
+ String reqJson = JsonUtils.encode(param);
+ String resJson = shopService.post(LIST_LIMIT_TASK_URL, reqJson);
+ return ResponseUtils.decode(resJson, LimitTaskListResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse stopLimitTask(String taskId) throws WxErrorException {
+ String reqJson = "{\"task_id\": \"" + taskId + "\"}";
+ String resJson = shopService.post(STOP_LIMIT_TASK_URL, reqJson);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse deleteLimitTask(String taskId) throws WxErrorException {
+ String reqJson = "{\"task_id\": \"" + taskId + "\"}";
+ String resJson = shopService.post(DELETE_LIMIT_TASK_URL, reqJson);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public LimitTaskUpdateResponse updateLimitTask(LimitTaskUpdateParam param) throws WxErrorException {
+ String reqJson = JsonUtils.encode(param);
+ String resJson = shopService.post(UPDATE_LIMIT_TASK_URL, reqJson);
+ return ResponseUtils.decode(resJson, LimitTaskUpdateResponse.class);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreOrderServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreOrderServiceImpl.java
new file mode 100644
index 0000000000..0273fe3151
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreOrderServiceImpl.java
@@ -0,0 +1,294 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Delivery.DELIVERY_SEND_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Delivery.GET_DELIVERY_COMPANY_NEW_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Delivery.GET_DELIVERY_COMPANY_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Order.ACCEPT_ADDRESS_MODIFY_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Order.DECODE_SENSITIVE_INFO_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Order.DELIVERY_COMPENSATION_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Order.ORDER_GET_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Order.ORDER_LIST_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Order.ORDER_SEARCH_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Order.PRE_SHIPMENT_CHANGE_SKU_APPROVE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Order.PRE_SHIPMENT_CHANGE_SKU_GET_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Order.PRE_SHIPMENT_CHANGE_SKU_REJECT_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Order.PRESENT_NOTE_ADD_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Order.PRESENT_SUB_ORDER_GET_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Order.REAL_NUMBER_APPLY_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Order.REAL_NUMBER_VIEW_AUDIT_GET_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Order.REJECT_ADDRESS_MODIFY_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Order.UPDATE_ADDRESS_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Order.UPDATE_EXPRESS_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Order.UPDATE_PRICE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Order.UPDATE_REMARK_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Order.UPLOAD_FRESH_INSPECT_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Order.VIRTUAL_NUMBER_APPLY_AGAIN_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Order.VIRTUAL_NUMBER_DELAY_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Order.VIRTUAL_TEL_NUMBER_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.PrivateNumber.ADD_PHONE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.PrivateNumber.GET_PHONE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.PrivateNumber.SEND_VERIFY_CODE_URL;
+
+import java.util.List;
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.api.WxStoreOrderService;
+import com.binarywang.wxjava.store.bean.base.AddressInfo;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.delivery.DeliveryCompanyResponse;
+import com.binarywang.wxjava.store.bean.delivery.DeliveryInfo;
+import com.binarywang.wxjava.store.bean.delivery.DeliverySendParam;
+import com.binarywang.wxjava.store.bean.delivery.FreshInspectParam;
+import com.binarywang.wxjava.store.bean.delivery.PackageAuditInfo;
+import com.binarywang.wxjava.store.bean.order.ChangeOrderInfo;
+import com.binarywang.wxjava.store.bean.order.DecodeSensitiveInfoResponse;
+import com.binarywang.wxjava.store.bean.order.DeliveryUpdateParam;
+import com.binarywang.wxjava.store.bean.order.OrderAddressParam;
+import com.binarywang.wxjava.store.bean.order.OrderCompensationDeliveryParam;
+import com.binarywang.wxjava.store.bean.order.OrderIdParam;
+import com.binarywang.wxjava.store.bean.order.OrderInfoParam;
+import com.binarywang.wxjava.store.bean.order.OrderInfoResponse;
+import com.binarywang.wxjava.store.bean.order.OrderListParam;
+import com.binarywang.wxjava.store.bean.order.OrderListResponse;
+import com.binarywang.wxjava.store.bean.order.OrderPriceParam;
+import com.binarywang.wxjava.store.bean.order.OrderRemarkParam;
+import com.binarywang.wxjava.store.bean.order.OrderSearchParam;
+import com.binarywang.wxjava.store.bean.order.PreShipmentChangeSkuRejectParam;
+import com.binarywang.wxjava.store.bean.order.PreShipmentChangeSkuResponse;
+import com.binarywang.wxjava.store.bean.order.PresentNoteAddParam;
+import com.binarywang.wxjava.store.bean.order.PresentSubOrderResponse;
+import com.binarywang.wxjava.store.bean.order.PrivateNumberAddPhoneParam;
+import com.binarywang.wxjava.store.bean.order.PrivateNumberGetPhoneResponse;
+import com.binarywang.wxjava.store.bean.order.PrivateNumberSendVerifyCodeParam;
+import com.binarywang.wxjava.store.bean.order.RealNumberViewAuditResponse;
+import com.binarywang.wxjava.store.bean.order.VirtualTelNumberResponse;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+
+/**
+ * 微信小店订单服务
+ *
+ * @author Zeyes
+ */
+@Slf4j
+public class WxStoreOrderServiceImpl implements WxStoreOrderService {
+
+ /** 微信商店服务 */
+ private final BaseWxStoreServiceImpl, ?> shopService;
+
+ public WxStoreOrderServiceImpl(BaseWxStoreServiceImpl, ?> shopService) {
+ this.shopService = shopService;
+ }
+
+ @Override
+ public OrderInfoResponse getOrder(String orderId) throws WxErrorException {
+ OrderInfoParam param = new OrderInfoParam(orderId, null);
+ String resJson = shopService.post(ORDER_GET_URL, param);
+ return ResponseUtils.decode(resJson, OrderInfoResponse.class);
+ }
+
+ @Override
+ public OrderInfoResponse getOrder(String orderId, Boolean encodeSensitiveInfo) throws WxErrorException {
+ OrderInfoParam param = new OrderInfoParam(orderId, encodeSensitiveInfo);
+ String resJson = shopService.post(ORDER_GET_URL, param);
+ return ResponseUtils.decode(resJson, OrderInfoResponse.class);
+ }
+
+ @Override
+ public OrderListResponse getOrders(OrderListParam param) throws WxErrorException {
+ String resJson = shopService.post(ORDER_LIST_URL, param);
+ return ResponseUtils.decode(resJson, OrderListResponse.class);
+ }
+
+ @Override
+ public OrderListResponse searchOrder(OrderSearchParam param) throws WxErrorException {
+ String resJson = shopService.post(ORDER_SEARCH_URL, param);
+ return ResponseUtils.decode(resJson, OrderListResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse updatePrice(String orderId, Integer expressFee, List changeOrderInfos)
+ throws WxErrorException {
+ OrderPriceParam param = new OrderPriceParam(orderId, expressFee, changeOrderInfos);
+ String resJson = shopService.post(UPDATE_PRICE_URL, param);
+ ;
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse updateRemark(String orderId, String merchantNotes) throws WxErrorException {
+ OrderRemarkParam param = new OrderRemarkParam(orderId, merchantNotes);
+ String resJson = shopService.post(UPDATE_REMARK_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse updateAddress(String orderId, AddressInfo userAddress) throws WxErrorException {
+ OrderAddressParam param = new OrderAddressParam(orderId, userAddress);
+ String resJson = shopService.post(UPDATE_ADDRESS_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse updateDelivery(DeliveryUpdateParam param) throws WxErrorException {
+ String resJson = shopService.post(UPDATE_EXPRESS_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse acceptAddressModify(String orderId) throws WxErrorException {
+ OrderIdParam param = new OrderIdParam(orderId);
+ String resJson = shopService.post(ACCEPT_ADDRESS_MODIFY_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse rejectAddressModify(String orderId) throws WxErrorException {
+ OrderIdParam param = new OrderIdParam(orderId);
+ String resJson = shopService.post(REJECT_ADDRESS_MODIFY_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse closeOrder(String orderId) {
+ // 暂不支持
+ return ResponseUtils.internalError(WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public DeliveryCompanyResponse listDeliveryCompany() throws WxErrorException {
+ String resJson = shopService.post(GET_DELIVERY_COMPANY_URL, "{}");
+ return ResponseUtils.decode(resJson, DeliveryCompanyResponse.class);
+ }
+
+ @Override
+ public DeliveryCompanyResponse listDeliveryCompany(Boolean ewaybillOnly) throws WxErrorException {
+ String reqJson = "{}";
+ if (ewaybillOnly != null) {
+ reqJson = "{\"ewaybill_only\":" + ewaybillOnly + "}";
+ }
+ String resJson = shopService.post(GET_DELIVERY_COMPANY_NEW_URL, reqJson);
+ return ResponseUtils.decode(resJson, DeliveryCompanyResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse deliveryOrder(String orderId, List deliveryList)
+ throws WxErrorException {
+ DeliverySendParam param = new DeliverySendParam(orderId, deliveryList);
+ String resJson = shopService.post(DELIVERY_SEND_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse uploadFreshInspect(String orderId, List items)
+ throws WxErrorException {
+ FreshInspectParam param = new FreshInspectParam(orderId, items);
+ String resJson = shopService.post(UPLOAD_FRESH_INSPECT_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public VirtualTelNumberResponse getVirtualTelNumber(String orderId) throws WxErrorException {
+ String reqJson = "{\"order_id\":\"" + orderId + "\"}";
+ String resJson = shopService.post(VIRTUAL_TEL_NUMBER_URL, reqJson);
+ return ResponseUtils.decode(resJson, VirtualTelNumberResponse.class);
+ }
+
+ @Override
+ public DecodeSensitiveInfoResponse decodeSensitiveInfo(String orderId) throws WxErrorException {
+ String reqJson = "{\"order_id\":\"" + orderId + "\"}";
+ String resJson = shopService.post(DECODE_SENSITIVE_INFO_URL, reqJson);
+ return ResponseUtils.decode(resJson, DecodeSensitiveInfoResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse addPresentNote(String orderId, String note) throws WxErrorException {
+ PresentNoteAddParam param = new PresentNoteAddParam(orderId, note);
+ String resJson = shopService.post(PRESENT_NOTE_ADD_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public PresentSubOrderResponse getPresentSubOrders(String orderId) throws WxErrorException {
+ OrderIdParam param = new OrderIdParam(orderId);
+ String resJson = shopService.post(PRESENT_SUB_ORDER_GET_URL, param);
+ return ResponseUtils.decode(resJson, PresentSubOrderResponse.class);
+ }
+
+ @Override
+ public PreShipmentChangeSkuResponse getPreShipmentChangeSku(String orderId) throws WxErrorException {
+ OrderIdParam param = new OrderIdParam(orderId);
+ String resJson = shopService.post(PRE_SHIPMENT_CHANGE_SKU_GET_URL, param);
+ return ResponseUtils.decode(resJson, PreShipmentChangeSkuResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse approvePreShipmentChangeSku(String orderId) throws WxErrorException {
+ OrderIdParam param = new OrderIdParam(orderId);
+ String resJson = shopService.post(PRE_SHIPMENT_CHANGE_SKU_APPROVE_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse rejectPreShipmentChangeSku(String orderId, String rejectReason)
+ throws WxErrorException {
+ PreShipmentChangeSkuRejectParam param = new PreShipmentChangeSkuRejectParam(orderId, rejectReason);
+ String resJson = shopService.post(PRE_SHIPMENT_CHANGE_SKU_REJECT_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse applyRealNumber(String orderId) throws WxErrorException {
+ OrderIdParam param = new OrderIdParam(orderId);
+ String resJson = shopService.post(REAL_NUMBER_APPLY_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public RealNumberViewAuditResponse getRealNumberViewAudit(String orderId) throws WxErrorException {
+ OrderIdParam param = new OrderIdParam(orderId);
+ String resJson = shopService.post(REAL_NUMBER_VIEW_AUDIT_GET_URL, param);
+ return ResponseUtils.decode(resJson, RealNumberViewAuditResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse applyVirtualNumberAgain(String orderId) throws WxErrorException {
+ OrderIdParam param = new OrderIdParam(orderId);
+ String resJson = shopService.post(VIRTUAL_NUMBER_APPLY_AGAIN_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse delayVirtualNumber(String orderId) throws WxErrorException {
+ OrderIdParam param = new OrderIdParam(orderId);
+ String resJson = shopService.post(VIRTUAL_NUMBER_DELAY_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse addPrivatePhone(String phone) throws WxErrorException {
+ PrivateNumberAddPhoneParam param = new PrivateNumberAddPhoneParam(phone);
+ String resJson = shopService.post(ADD_PHONE_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse sendPrivatePhoneVerifyCode(String phone) throws WxErrorException {
+ PrivateNumberSendVerifyCodeParam param = new PrivateNumberSendVerifyCodeParam(phone);
+ String resJson = shopService.post(SEND_VERIFY_CODE_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public PrivateNumberGetPhoneResponse getPrivatePhone() throws WxErrorException {
+ String resJson = shopService.post(GET_PHONE_URL, "{}");
+ return ResponseUtils.decode(resJson, PrivateNumberGetPhoneResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse compensationDelivery(OrderCompensationDeliveryParam param)
+ throws WxErrorException {
+ String resJson = shopService.post(DELIVERY_COMPENSATION_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreProductAssistantServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreProductAssistantServiceImpl.java
new file mode 100644
index 0000000000..829157fc2c
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreProductAssistantServiceImpl.java
@@ -0,0 +1,77 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.BEGIN_TIMING_SALE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.CANCEL_TIMING_SALE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.CATEGORY_PRE_CHECK_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.EXTERNAL_PRODUCT_MAPPING_NEW_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.EXTERNAL_PRODUCT_MAPPING_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.PRODUCT_BRAND_RECOMMEND_URL;
+
+import com.binarywang.wxjava.store.api.WxStoreProductAssistantService;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.product.assistant.BeginTimingSaleParam;
+import com.binarywang.wxjava.store.bean.product.assistant.CancelTimingSaleParam;
+import com.binarywang.wxjava.store.bean.product.assistant.CategoryPreCheckParam;
+import com.binarywang.wxjava.store.bean.product.assistant.CategoryPreCheckResponse;
+import com.binarywang.wxjava.store.bean.product.assistant.ExternalProductMappingNewParam;
+import com.binarywang.wxjava.store.bean.product.assistant.ExternalProductMappingNewResponse;
+import com.binarywang.wxjava.store.bean.product.assistant.ExternalProductMappingParam;
+import com.binarywang.wxjava.store.bean.product.assistant.ExternalProductMappingResponse;
+import com.binarywang.wxjava.store.bean.product.assistant.ProductBrandRecommendParam;
+import com.binarywang.wxjava.store.bean.product.assistant.ProductBrandRecommendResponse;
+import com.binarywang.wxjava.store.util.JsonUtils;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店商品辅助功能服务实现。
+ */
+public class WxStoreProductAssistantServiceImpl implements WxStoreProductAssistantService {
+
+ /** 微信商店服务 */
+ private final BaseWxStoreServiceImpl, ?> shopService;
+
+ public WxStoreProductAssistantServiceImpl(BaseWxStoreServiceImpl, ?> shopService) {
+ this.shopService = shopService;
+ }
+
+ @Override
+ public CategoryPreCheckResponse categoryPreCheck(CategoryPreCheckParam param) throws WxErrorException {
+ return post(CATEGORY_PRE_CHECK_URL, param, CategoryPreCheckResponse.class);
+ }
+
+ @Override
+ public ProductBrandRecommendResponse getProductBrandRecommend(ProductBrandRecommendParam param)
+ throws WxErrorException {
+ return post(PRODUCT_BRAND_RECOMMEND_URL, param, ProductBrandRecommendResponse.class);
+ }
+
+ @Override
+ public ExternalProductMappingResponse externalProductMapping(ExternalProductMappingParam param)
+ throws WxErrorException {
+ return post(EXTERNAL_PRODUCT_MAPPING_URL, param, ExternalProductMappingResponse.class);
+ }
+
+ @Override
+ public ExternalProductMappingNewResponse externalProductMappingNew(ExternalProductMappingNewParam param)
+ throws WxErrorException {
+ return post(EXTERNAL_PRODUCT_MAPPING_NEW_URL, param, ExternalProductMappingNewResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse beginTimingSale(BeginTimingSaleParam param) throws WxErrorException {
+ return post(BEGIN_TIMING_SALE_URL, param, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse cancelTimingSale(CancelTimingSaleParam param) throws WxErrorException {
+ return post(CANCEL_TIMING_SALE_URL, param, WxStoreBaseResponse.class);
+ }
+
+ private T post(String url, Object param, Class responseType)
+ throws WxErrorException {
+ String reqJson = JsonUtils.encode(param);
+ String resJson = shopService.post(url, reqJson);
+ return ResponseUtils.decode(resJson, responseType);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreProductServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreProductServiceImpl.java
new file mode 100644
index 0000000000..1efea21a4e
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreProductServiceImpl.java
@@ -0,0 +1,413 @@
+package com.binarywang.wxjava.store.api.impl;
+
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.CANCEL_AUDIT_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.DELETE_LIMIT_TASK_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.GIFT_ACTIVITY_ADD_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.GIFT_ACTIVITY_DELETE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.GIFT_ACTIVITY_STOP_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.GIFT_PRODUCT_ADD_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.GIFT_PRODUCT_GET_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.GIFT_PRODUCT_LIST_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.GIFT_PRODUCT_ON_SALE_SET_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.GIFT_PRODUCT_STOCK_UPDATE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.GIFT_PRODUCT_UPDATE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.LIST_LIMIT_TASK_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_ADD_PRODUCT_THIRD_PARTY_SOURCE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_ADD_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_AUDIT_FREE_UPDATE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_AUDIT_STRATEGY_GET_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_AUDIT_STRATEGY_SET_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_BEGIN_TIMING_SALE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_CANCEL_TIMING_SALE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_CATEGORY_CLASSIFY_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_CATEGORY_PRE_CHECK_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_DELISTING_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_DEL_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_EXTERNAL_PRODUCT_MAPPING_NEW_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_EXTERNAL_PRODUCT_MAPPING_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_GET_AUDIT_QUOTA_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_GET_STOCK_BATCH_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_GET_STOCK_FLOW_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_GET_STOCK_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_GET_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_H5URL_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_LISTING_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_LIST_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_PRODUCT_BRAND_RECOMMEND_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_QRCODE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_SCHEME_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_TAGLINK_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_UPDATE_URL;
+
+import java.util.Collections;
+import java.util.List;
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.api.WxStoreGiftService;
+import com.binarywang.wxjava.store.api.WxStoreLimitedDiscountService;
+import com.binarywang.wxjava.store.api.WxStoreProductService;
+import com.binarywang.wxjava.store.api.WxStoreProductStockService;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.limit.LimitTaskAddResponse;
+import com.binarywang.wxjava.store.bean.limit.LimitTaskListResponse;
+import com.binarywang.wxjava.store.bean.limit.LimitTaskParam;
+import com.binarywang.wxjava.store.bean.product.AddProductThirdPartySourceParam;
+import com.binarywang.wxjava.store.bean.product.AddProductThirdPartySourceResponse;
+import com.binarywang.wxjava.store.bean.product.ExternalProductMappingNewParam;
+import com.binarywang.wxjava.store.bean.product.ExternalProductMappingNewResponse;
+import com.binarywang.wxjava.store.bean.product.ExternalProductMappingParam;
+import com.binarywang.wxjava.store.bean.product.ExternalProductMappingResponse;
+import com.binarywang.wxjava.store.bean.product.GiftActivityAddParam;
+import com.binarywang.wxjava.store.bean.product.GiftActivityAddResponse;
+import com.binarywang.wxjava.store.bean.product.GiftActivityInfo;
+import com.binarywang.wxjava.store.bean.product.GiftProductAddResponse;
+import com.binarywang.wxjava.store.bean.product.GiftProductGetResponse;
+import com.binarywang.wxjava.store.bean.product.GiftProductInfo;
+import com.binarywang.wxjava.store.bean.product.GiftProductListParam;
+import com.binarywang.wxjava.store.bean.product.GiftProductListResponse;
+import com.binarywang.wxjava.store.bean.product.ProductAuditQuotaResponse;
+import com.binarywang.wxjava.store.bean.product.ProductAuditStrategyResponse;
+import com.binarywang.wxjava.store.bean.product.ProductAuditStrategySetParam;
+import com.binarywang.wxjava.store.bean.product.ProductBrandRecommendParam;
+import com.binarywang.wxjava.store.bean.product.ProductBrandRecommendResponse;
+import com.binarywang.wxjava.store.bean.product.ProductCategoryClassifyParam;
+import com.binarywang.wxjava.store.bean.product.ProductCategoryClassifyResponse;
+import com.binarywang.wxjava.store.bean.product.ProductCategoryPreCheckParam;
+import com.binarywang.wxjava.store.bean.product.ProductCategoryPreCheckResponse;
+import com.binarywang.wxjava.store.bean.product.ProductSchemeParam;
+import com.binarywang.wxjava.store.bean.product.ProductSchemeResponse;
+import com.binarywang.wxjava.store.bean.product.ProductStockFlowParam;
+import com.binarywang.wxjava.store.bean.product.ProductStockFlowResponse;
+import com.binarywang.wxjava.store.bean.product.ProductTimingSaleParam;
+import com.binarywang.wxjava.store.bean.product.SkuStockBatchParam;
+import com.binarywang.wxjava.store.bean.product.SkuStockBatchResponse;
+import com.binarywang.wxjava.store.bean.product.SkuStockResponse;
+import com.binarywang.wxjava.store.bean.product.SpuFastInfo;
+import com.binarywang.wxjava.store.bean.product.SpuGetResponse;
+import com.binarywang.wxjava.store.bean.product.SpuInfo;
+import com.binarywang.wxjava.store.bean.product.SpuListParam;
+import com.binarywang.wxjava.store.bean.product.SpuListResponse;
+import com.binarywang.wxjava.store.bean.product.SpuUpdateInfo;
+import com.binarywang.wxjava.store.bean.product.SpuUpdateResponse;
+import com.binarywang.wxjava.store.bean.product.link.ProductH5UrlResponse;
+import com.binarywang.wxjava.store.bean.product.link.ProductQrCodeResponse;
+import com.binarywang.wxjava.store.bean.product.link.ProductTagLinkResponse;
+import com.binarywang.wxjava.store.util.JsonUtils;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店商品服务
+ *
+ * @author Zeyes
+ */
+@Slf4j
+public class WxStoreProductServiceImpl implements WxStoreProductService {
+
+ /** 微信商店服务 */
+ private final BaseWxStoreServiceImpl, ?> shopService;
+ private final WxStoreGiftService giftService;
+ private final WxStoreLimitedDiscountService limitedDiscountService;
+ private final WxStoreProductStockService productStockService;
+
+ public WxStoreProductServiceImpl(BaseWxStoreServiceImpl, ?> shopService) {
+ this(shopService, new WxStoreGiftServiceImpl(shopService),
+ new WxStoreLimitedDiscountServiceImpl(shopService), new WxStoreProductStockServiceImpl(shopService));
+ }
+
+ WxStoreProductServiceImpl(BaseWxStoreServiceImpl, ?> shopService, WxStoreGiftService giftService,
+ WxStoreLimitedDiscountService limitedDiscountService,
+ WxStoreProductStockService productStockService) {
+ this.shopService = shopService;
+ this.giftService = giftService;
+ this.limitedDiscountService = limitedDiscountService;
+ this.productStockService = productStockService;
+ }
+
+ @Override
+ public SpuUpdateResponse addProduct(SpuUpdateInfo info) throws WxErrorException {
+ String reqJson = JsonUtils.encode(info);
+ String resJson = shopService.post(SPU_ADD_URL, reqJson);
+ return ResponseUtils.decode(resJson, SpuUpdateResponse.class);
+ }
+
+ @Override
+ public SpuUpdateResponse updateProduct(SpuUpdateInfo info) throws WxErrorException {
+ String reqJson = JsonUtils.encode(info);
+ String resJson = shopService.post(SPU_UPDATE_URL, reqJson);
+ return ResponseUtils.decode(resJson, SpuUpdateResponse.class);
+ }
+
+ @Override
+ public SpuUpdateResponse addProduct(SpuInfo info) throws WxErrorException {
+ String reqJson = JsonUtils.encode(info);
+ String resJson = shopService.post(SPU_ADD_URL, reqJson);
+ return ResponseUtils.decode(resJson, SpuUpdateResponse.class);
+ }
+
+ @Override
+ public SpuUpdateResponse updateProduct(SpuInfo info) throws WxErrorException {
+ String reqJson = JsonUtils.encode(info);
+ String resJson = shopService.post(SPU_UPDATE_URL, reqJson);
+ return ResponseUtils.decode(resJson, SpuUpdateResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse updateProductAuditFree(SpuFastInfo info) throws WxErrorException {
+ String reqJson = JsonUtils.encode(info);
+ String resJson = shopService.post(SPU_AUDIT_FREE_UPDATE_URL, reqJson);
+ return ResponseUtils.decode(resJson, SpuUpdateResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse updateStock(String productId, String skuId, Integer diffType, Integer num)
+ throws WxErrorException {
+ return productStockService.updateStock(productId, skuId, diffType, num);
+ }
+
+ /**
+ * 生成商品id Json
+ *
+ * @param productId 商品ID
+ * @param dataType 默认取1。1:获取线上数据, 2:获取草稿数据, 3:同时获取线上和草稿数据(注意:需成功上架后才有线上数据)
+ * @return json
+ */
+ protected String generateProductIdJson(String productId, Integer dataType) {
+ StringBuilder sb = new StringBuilder();
+ sb.append('{');
+ if (productId != null) {
+ sb.append("\"product_id\":").append(productId);
+ }
+
+ if (dataType != null) {
+ sb.append(",").append("\"data_type\":").append(dataType);
+ }
+ sb.append('}');
+ return sb.toString();
+ }
+
+ /**
+ * 简单的商品请求 参数是商品id 只返回基本结果
+ *
+ * @param url 资源路径
+ * @param productId 商品ID
+ * @return 是否成功
+ */
+ protected WxStoreBaseResponse simpleProductRequest(String url, String productId) throws WxErrorException {
+ String reqJson = this.generateProductIdJson(productId, null);
+ String resJson = shopService.post(url, reqJson);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse deleteProduct(String productId) throws WxErrorException {
+ return simpleProductRequest(SPU_DEL_URL, productId);
+ }
+
+ @Override
+ public WxStoreBaseResponse cancelProductAudit(String productId) throws WxErrorException {
+ return simpleProductRequest(CANCEL_AUDIT_URL, productId);
+ }
+
+ @Override
+ public SpuGetResponse getProduct(String productId, Integer dataType) throws WxErrorException {
+ String reqJson = this.generateProductIdJson(productId, dataType);
+ String resJson = shopService.post(SPU_GET_URL, reqJson);
+ return ResponseUtils.decode(resJson, SpuGetResponse.class);
+ }
+
+ @Override
+ public SpuListResponse listProduct(Integer pageSize, String nextKey, Integer status) throws WxErrorException {
+ SpuListParam param = new SpuListParam(pageSize, nextKey, status);
+ String reqJson = JsonUtils.encode(param);
+ String resJson = shopService.post(SPU_LIST_URL, reqJson);
+ return ResponseUtils.decode(resJson, SpuListResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse upProduct(String productId) throws WxErrorException {
+ return simpleProductRequest(SPU_LISTING_URL, productId);
+ }
+
+ @Override
+ public WxStoreBaseResponse downProduct(String productId) throws WxErrorException {
+ return simpleProductRequest(SPU_DELISTING_URL, productId);
+ }
+
+ @Override
+ public SkuStockResponse getSkuStock(String productId, String skuId) throws WxErrorException {
+ return productStockService.getSkuStock(productId, skuId);
+ }
+
+ @Override
+ public SkuStockBatchResponse getSkuStockBatch(List productIds) throws WxErrorException {
+ return productStockService.getSkuStockBatch(productIds);
+ }
+
+ @Override
+ public ProductH5UrlResponse getProductH5Url(String productId) throws WxErrorException {
+ String reqJson = "{\"product_id\":\"" + productId + "\"}";
+ String resJson = shopService.post(SPU_H5URL_URL, reqJson);
+ return ResponseUtils.decode(resJson, ProductH5UrlResponse.class);
+ }
+
+ @Override
+ public ProductQrCodeResponse getProductQrCode(String productId) throws WxErrorException {
+ String reqJson = "{\"product_id\":\"" + productId + "\"}";
+ String resJson = shopService.post(SPU_QRCODE_URL, reqJson);
+ return ResponseUtils.decode(resJson, ProductQrCodeResponse.class);
+ }
+
+ @Override
+ public ProductTagLinkResponse getProductTagLink(String productId) throws WxErrorException {
+ String reqJson = "{\"product_id\":\"" + productId + "\"}";
+ String resJson = shopService.post(SPU_TAGLINK_URL, reqJson);
+ return ResponseUtils.decode(resJson, ProductTagLinkResponse.class);
+ }
+
+ @Override
+ public ProductSchemeResponse getProductScheme(ProductSchemeParam param) throws WxErrorException {
+ return postAndDecode(SPU_SCHEME_URL, param, ProductSchemeResponse.class);
+ }
+
+ @Override
+ public ProductCategoryClassifyResponse classifyProductCategory(ProductCategoryClassifyParam param)
+ throws WxErrorException {
+ return postAndDecode(SPU_CATEGORY_CLASSIFY_URL, param, ProductCategoryClassifyResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse beginTimingSale(ProductTimingSaleParam param) throws WxErrorException {
+ return postAndDecode(SPU_BEGIN_TIMING_SALE_URL, param, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse cancelTimingSale(String productId) throws WxErrorException {
+ return postAndDecode(SPU_CANCEL_TIMING_SALE_URL, Collections.singletonMap("product_id", productId),
+ WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public ExternalProductMappingResponse externalProductMapping(ExternalProductMappingParam param)
+ throws WxErrorException {
+ return postAndDecode(SPU_EXTERNAL_PRODUCT_MAPPING_URL, param, ExternalProductMappingResponse.class);
+ }
+
+ @Override
+ public ProductCategoryPreCheckResponse categoryPreCheck(ProductCategoryPreCheckParam param)
+ throws WxErrorException {
+ return postAndDecode(SPU_CATEGORY_PRE_CHECK_URL, param, ProductCategoryPreCheckResponse.class);
+ }
+
+ @Override
+ public ProductAuditStrategyResponse getProductAuditStrategy() throws WxErrorException {
+ return postAndDecode(SPU_AUDIT_STRATEGY_GET_URL, "{}", ProductAuditStrategyResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse setProductAuditStrategy(ProductAuditStrategySetParam param) throws WxErrorException {
+ return postAndDecode(SPU_AUDIT_STRATEGY_SET_URL, param, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public ProductAuditQuotaResponse getProductAuditQuota() throws WxErrorException {
+ return postAndDecode(SPU_GET_AUDIT_QUOTA_URL, "{}", ProductAuditQuotaResponse.class);
+ }
+
+ @Override
+ public ExternalProductMappingNewResponse externalProductMappingNew(ExternalProductMappingNewParam param)
+ throws WxErrorException {
+ return postAndDecode(SPU_EXTERNAL_PRODUCT_MAPPING_NEW_URL, param, ExternalProductMappingNewResponse.class);
+ }
+
+ @Override
+ public ProductBrandRecommendResponse productBrandRecommend(ProductBrandRecommendParam param)
+ throws WxErrorException {
+ return postAndDecode(SPU_PRODUCT_BRAND_RECOMMEND_URL, param, ProductBrandRecommendResponse.class);
+ }
+
+ @Override
+ public AddProductThirdPartySourceResponse addProductThirdPartySource(AddProductThirdPartySourceParam param)
+ throws WxErrorException {
+ return postAndDecode(SPU_ADD_PRODUCT_THIRD_PARTY_SOURCE_URL, param, AddProductThirdPartySourceResponse.class);
+ }
+
+ @Override
+ public ProductStockFlowResponse getStockFlow(ProductStockFlowParam param) throws WxErrorException {
+ return postAndDecode(SPU_GET_STOCK_FLOW_URL, param, ProductStockFlowResponse.class);
+ }
+
+ private T postAndDecode(String url, Object param, Class responseType)
+ throws WxErrorException {
+ String reqJson = param instanceof String ? (String) param : JsonUtils.encode(param);
+ String resJson = shopService.post(url, reqJson);
+ return ResponseUtils.decode(resJson, responseType);
+ }
+
+ @Override
+ public GiftProductAddResponse addGiftProduct(GiftProductInfo info) throws WxErrorException {
+ return giftService.addGiftProduct(info);
+ }
+
+ @Override
+ public WxStoreBaseResponse updateGiftProduct(GiftProductInfo info) throws WxErrorException {
+ return giftService.updateGiftProduct(info);
+ }
+
+ @Override
+ public WxStoreBaseResponse setProductAsGift(String productId) throws WxErrorException {
+ return giftService.setProductAsGift(productId);
+ }
+
+ @Override
+ public GiftProductGetResponse getGiftProduct(String productId) throws WxErrorException {
+ return giftService.getGiftProduct(productId);
+ }
+
+ @Override
+ public GiftProductListResponse listGiftProduct(GiftProductListParam param) throws WxErrorException {
+ return giftService.listGiftProduct(param);
+ }
+
+ @Override
+ public WxStoreBaseResponse updateGiftStock(String productId, String skuId, Integer diffType, Integer num)
+ throws WxErrorException {
+ return giftService.updateGiftStock(productId, skuId, diffType, num);
+ }
+
+ @Override
+ public GiftActivityAddResponse addGiftActivity(GiftActivityInfo info) throws WxErrorException {
+ return giftService.addGiftActivity(info);
+ }
+
+ @Override
+ public WxStoreBaseResponse deleteGiftActivity(String activityId) throws WxErrorException {
+ return giftService.deleteGiftActivity(activityId);
+ }
+
+ @Override
+ public WxStoreBaseResponse stopGiftActivity(String activityId) throws WxErrorException {
+ return giftService.stopGiftActivity(activityId);
+ }
+
+ @Override
+ public LimitTaskAddResponse addLimitTask(LimitTaskParam param) throws WxErrorException {
+ return limitedDiscountService.addLimitTask(param);
+ }
+
+ @Override
+ public LimitTaskListResponse listLimitTask(Integer pageSize, String nextKey, Integer status)
+ throws WxErrorException {
+ return limitedDiscountService.listLimitTask(pageSize, nextKey, status);
+ }
+
+ @Override
+ public WxStoreBaseResponse stopLimitTask(String taskId) throws WxErrorException {
+ return limitedDiscountService.stopLimitTask(taskId);
+ }
+
+ @Override
+ public WxStoreBaseResponse deleteLimitTask(String taskId) throws WxErrorException {
+ return limitedDiscountService.deleteLimitTask(taskId);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreProductStockServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreProductStockServiceImpl.java
new file mode 100644
index 0000000000..f1787f6397
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreProductStockServiceImpl.java
@@ -0,0 +1,62 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_GET_STOCK_BATCH_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_GET_STOCK_FLOW_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_GET_STOCK_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Spu.SPU_UPDATE_STOCK_URL;
+
+import java.util.List;
+import com.binarywang.wxjava.store.api.WxStoreProductStockService;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.product.SkuStockBatchParam;
+import com.binarywang.wxjava.store.bean.product.SkuStockBatchResponse;
+import com.binarywang.wxjava.store.bean.product.SkuStockParam;
+import com.binarywang.wxjava.store.bean.product.SkuStockResponse;
+import com.binarywang.wxjava.store.bean.product.stock.StockFlowParam;
+import com.binarywang.wxjava.store.bean.product.stock.StockFlowResponse;
+import com.binarywang.wxjava.store.util.JsonUtils;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店商品库存服务实现。
+ */
+public class WxStoreProductStockServiceImpl implements WxStoreProductStockService {
+
+ private final BaseWxStoreServiceImpl, ?> shopService;
+
+ public WxStoreProductStockServiceImpl(BaseWxStoreServiceImpl, ?> shopService) {
+ this.shopService = shopService;
+ }
+
+ @Override
+ public WxStoreBaseResponse updateStock(String productId, String skuId, Integer diffType, Integer num)
+ throws WxErrorException {
+ SkuStockParam param = new SkuStockParam(productId, skuId, diffType, num);
+ String reqJson = JsonUtils.encode(param);
+ String resJson = shopService.post(SPU_UPDATE_STOCK_URL, reqJson);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public SkuStockResponse getSkuStock(String productId, String skuId) throws WxErrorException {
+ String reqJson = "{\"product_id\":\"" + productId + "\",\"sku_id\":\"" + skuId + "\"}";
+ String resJson = shopService.post(SPU_GET_STOCK_URL, reqJson);
+ return ResponseUtils.decode(resJson, SkuStockResponse.class);
+ }
+
+ @Override
+ public SkuStockBatchResponse getSkuStockBatch(List productIds) throws WxErrorException {
+ SkuStockBatchParam param = new SkuStockBatchParam(productIds);
+ String reqJson = JsonUtils.encode(param);
+ String resJson = shopService.post(SPU_GET_STOCK_BATCH_URL, reqJson);
+ return ResponseUtils.decode(resJson, SkuStockBatchResponse.class);
+ }
+
+ @Override
+ public StockFlowResponse getStockFlow(StockFlowParam param) throws WxErrorException {
+ String reqJson = JsonUtils.encode(param);
+ String resJson = shopService.post(SPU_GET_STOCK_FLOW_URL, reqJson);
+ return ResponseUtils.decode(resJson, StockFlowResponse.class);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreQicServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreQicServiceImpl.java
new file mode 100644
index 0000000000..a7e1a789c9
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreQicServiceImpl.java
@@ -0,0 +1,75 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import com.binarywang.wxjava.store.api.WxStoreQicService;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.qic.InspectCodeResponse;
+import com.binarywang.wxjava.store.bean.qic.InspectConfigResponse;
+import com.binarywang.wxjava.store.bean.qic.RegisterLogisticsRequest;
+import com.binarywang.wxjava.store.bean.qic.SubmitConfigResponse;
+import com.binarywang.wxjava.store.bean.qic.SubmitInspectRequest;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+import org.apache.commons.lang3.StringUtils;
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Qic.GET_INSPECT_CONFIG_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Qic.GET_SUBMIT_CONFIG_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Qic.PRINT_INSPECT_CODE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Qic.REGISTER_LOGISTICS_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Qic.SUBMIT_INSPECT_INFO_URL;
+
+/**
+ * 微信小店 质检管理服务实现.
+ */
+public class WxStoreQicServiceImpl implements WxStoreQicService {
+ private final BaseWxStoreServiceImpl, ?> shopService;
+
+ public WxStoreQicServiceImpl(BaseWxStoreServiceImpl, ?> shopService) {
+ this.shopService = shopService;
+ }
+
+ @Override
+ public InspectConfigResponse getInspectConfig() throws WxErrorException {
+ String respJson = shopService.get(GET_INSPECT_CONFIG_URL, null);
+ return ResponseUtils.decode(respJson, InspectConfigResponse.class);
+ }
+
+ @Override
+ public SubmitConfigResponse getSubmitConfig(String orderId) throws WxErrorException {
+ String queryParam = StringUtils.isBlank(orderId) ? null : "order_id=" + orderId;
+ String respJson = shopService.get(GET_SUBMIT_CONFIG_URL, queryParam);
+ return ResponseUtils.decode(respJson, SubmitConfigResponse.class);
+ }
+
+ @Override
+ public SubmitConfigResponse getSubmitConfig() throws WxErrorException {
+ return getSubmitConfig(null);
+ }
+
+ @Override
+ public InspectCodeResponse printInspectCode(String orderId) throws WxErrorException {
+ String respJson = shopService.post(PRINT_INSPECT_CODE_URL, new PrintInspectCodeRequest(orderId));
+ return ResponseUtils.decode(respJson, InspectCodeResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse submitInspectInfo(SubmitInspectRequest request) throws WxErrorException {
+ String respJson = shopService.post(SUBMIT_INSPECT_INFO_URL, request);
+ return ResponseUtils.decode(respJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse registerLogistics(RegisterLogisticsRequest request) throws WxErrorException {
+ String respJson = shopService.post(REGISTER_LOGISTICS_URL, request);
+ return ResponseUtils.decode(respJson, WxStoreBaseResponse.class);
+ }
+
+ @Data
+ @AllArgsConstructor
+ private static class PrintInspectCodeRequest {
+ @JsonProperty("order_id")
+ private String orderId;
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreServiceHttpClientImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreServiceHttpClientImpl.java
new file mode 100644
index 0000000000..da7b190b65
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreServiceHttpClientImpl.java
@@ -0,0 +1,118 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.bean.token.StableTokenParam;
+import com.binarywang.wxjava.store.config.WxStoreConfig;
+import com.binarywang.wxjava.store.util.JsonUtils;
+import me.chanjar.weixin.common.util.http.HttpClientType;
+import me.chanjar.weixin.common.util.http.apache.ApacheBasicResponseHandler;
+import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
+import me.chanjar.weixin.common.util.http.apache.DefaultApacheHttpClientBuilder;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.http.HttpHost;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+
+import java.io.IOException;
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.GET_ACCESS_TOKEN_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.GET_STABLE_ACCESS_TOKEN_URL;
+
+/**
+ * @author Zeyes
+ */
+@Slf4j
+public class WxStoreServiceHttpClientImpl extends BaseWxStoreServiceImpl {
+
+ private CloseableHttpClient httpClient;
+ private HttpHost httpProxy;
+
+ @Override
+ public void initHttp() {
+ WxStoreConfig config = this.getConfig();
+ ApacheHttpClientBuilder apacheHttpClientBuilder = config.getApacheHttpClientBuilder();
+ if (null == apacheHttpClientBuilder) {
+ apacheHttpClientBuilder = DefaultApacheHttpClientBuilder.get();
+ }
+
+ apacheHttpClientBuilder.httpProxyHost(config.getHttpProxyHost())
+ .httpProxyPort(config.getHttpProxyPort())
+ .httpProxyUsername(config.getHttpProxyUsername())
+ .httpProxyPassword(config.getHttpProxyPassword());
+
+ if (config.getHttpProxyHost() != null && config.getHttpProxyPort() > 0) {
+ this.httpProxy = new HttpHost(config.getHttpProxyHost(), config.getHttpProxyPort());
+ }
+
+ this.httpClient = apacheHttpClientBuilder.build();
+ }
+
+ @Override
+ public CloseableHttpClient getRequestHttpClient() {
+ return httpClient;
+ }
+
+ @Override
+ public HttpHost getRequestHttpProxy() {
+ return httpProxy;
+ }
+
+ @Override
+ public HttpClientType getRequestType() {
+ return HttpClientType.APACHE_HTTP;
+ }
+
+ @Override
+ protected String doGetAccessTokenRequest() throws IOException {
+ WxStoreConfig config = this.getConfig();
+ String url = StringUtils.isNotEmpty(config.getAccessTokenUrl()) ? config.getAccessTokenUrl() :
+ StringUtils.isNotEmpty(config.getApiHostUrl()) ?
+ GET_ACCESS_TOKEN_URL.replace("https://api.weixin.qq.com", config.getApiHostUrl()) : GET_ACCESS_TOKEN_URL;
+
+ url = String.format(url, config.getAppid(), config.getSecret());
+
+ HttpGet httpGet = new HttpGet(url);
+ if (this.getRequestHttpProxy() != null) {
+ RequestConfig requestConfig = RequestConfig.custom().setProxy(this.getRequestHttpProxy()).build();
+ httpGet.setConfig(requestConfig);
+ }
+ return getRequestHttpClient().execute(httpGet, ApacheBasicResponseHandler.INSTANCE);
+ }
+
+ /**
+ * 获取稳定版接口调用凭据
+ *
+ * @param forceRefresh false 为普通模式, true为强制刷新模式
+ * @return 返回json的字符串
+ * @throws IOException the io exception
+ */
+ @Override
+ protected String doGetStableAccessTokenRequest(boolean forceRefresh) throws IOException {
+ WxStoreConfig config = this.getConfig();
+ String url = StringUtils.isNotEmpty(config.getAccessTokenUrl()) ?
+ config.getAccessTokenUrl() : StringUtils.isNotEmpty(config.getApiHostUrl()) ?
+ GET_STABLE_ACCESS_TOKEN_URL.replace("https://api.weixin.qq.com", config.getApiHostUrl()) :
+ GET_STABLE_ACCESS_TOKEN_URL;
+
+ HttpPost httpPost = new HttpPost(url);
+ if (this.getRequestHttpProxy() != null) {
+ RequestConfig requestConfig = RequestConfig.custom().setProxy(this.getRequestHttpProxy()).build();
+ httpPost.setConfig(requestConfig);
+ }
+ StableTokenParam requestParam = new StableTokenParam();
+ requestParam.setAppId(config.getAppid());
+ requestParam.setSecret(config.getSecret());
+ requestParam.setGrantType("client_credential");
+ requestParam.setForceRefresh(forceRefresh);
+ String requestJson = JsonUtils.encode(requestParam);
+ assert requestJson != null;
+
+ httpPost.setEntity(new StringEntity(requestJson, ContentType.APPLICATION_JSON));
+ return getRequestHttpClient().execute(httpPost, ApacheBasicResponseHandler.INSTANCE);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreServiceHttpComponentsImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreServiceHttpComponentsImpl.java
new file mode 100644
index 0000000000..c5d80b348a
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreServiceHttpComponentsImpl.java
@@ -0,0 +1,115 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.bean.token.StableTokenParam;
+import com.binarywang.wxjava.store.config.WxStoreConfig;
+import com.binarywang.wxjava.store.util.JsonUtils;
+import me.chanjar.weixin.common.util.http.HttpClientType;
+import me.chanjar.weixin.common.util.http.hc.BasicResponseHandler;
+import me.chanjar.weixin.common.util.http.hc.DefaultHttpComponentsClientBuilder;
+import me.chanjar.weixin.common.util.http.hc.HttpComponentsClientBuilder;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.client5.http.classic.methods.HttpGet;
+import org.apache.hc.client5.http.classic.methods.HttpPost;
+import org.apache.hc.client5.http.config.RequestConfig;
+import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.io.entity.StringEntity;
+
+import java.io.IOException;
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.GET_ACCESS_TOKEN_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.GET_STABLE_ACCESS_TOKEN_URL;
+
+/**
+ * @author altusea
+ */
+@Slf4j
+public class WxStoreServiceHttpComponentsImpl extends BaseWxStoreServiceImpl {
+
+ private CloseableHttpClient httpClient;
+ private HttpHost httpProxy;
+
+ @Override
+ public void initHttp() {
+ WxStoreConfig config = this.getConfig();
+ HttpComponentsClientBuilder apacheHttpClientBuilder = DefaultHttpComponentsClientBuilder.get();
+
+ apacheHttpClientBuilder.httpProxyHost(config.getHttpProxyHost())
+ .httpProxyPort(config.getHttpProxyPort())
+ .httpProxyUsername(config.getHttpProxyUsername())
+ .httpProxyPassword(config.getHttpProxyPassword() == null ? null : config.getHttpProxyPassword().toCharArray());
+
+ if (config.getHttpProxyHost() != null && config.getHttpProxyPort() > 0) {
+ this.httpProxy = new HttpHost(config.getHttpProxyHost(), config.getHttpProxyPort());
+ }
+
+ this.httpClient = apacheHttpClientBuilder.build();
+ }
+
+ @Override
+ public CloseableHttpClient getRequestHttpClient() {
+ return httpClient;
+ }
+
+ @Override
+ public HttpHost getRequestHttpProxy() {
+ return httpProxy;
+ }
+
+ @Override
+ public HttpClientType getRequestType() {
+ return HttpClientType.HTTP_COMPONENTS;
+ }
+
+ @Override
+ protected String doGetAccessTokenRequest() throws IOException {
+ WxStoreConfig config = this.getConfig();
+ String url = StringUtils.isNotEmpty(config.getAccessTokenUrl()) ? config.getAccessTokenUrl() :
+ StringUtils.isNotEmpty(config.getApiHostUrl()) ?
+ GET_ACCESS_TOKEN_URL.replace("https://api.weixin.qq.com", config.getApiHostUrl()) : GET_ACCESS_TOKEN_URL;
+
+ url = String.format(url, config.getAppid(), config.getSecret());
+
+ HttpGet httpGet = new HttpGet(url);
+ if (this.getRequestHttpProxy() != null) {
+ RequestConfig requestConfig = RequestConfig.custom().setProxy(this.getRequestHttpProxy()).build();
+ httpGet.setConfig(requestConfig);
+ }
+ return getRequestHttpClient().execute(httpGet, BasicResponseHandler.INSTANCE);
+ }
+
+ /**
+ * 获取稳定版接口调用凭据
+ *
+ * @param forceRefresh false 为普通模式, true为强制刷新模式
+ * @return 返回json的字符串
+ * @throws IOException the io exception
+ */
+ @Override
+ protected String doGetStableAccessTokenRequest(boolean forceRefresh) throws IOException {
+ WxStoreConfig config = this.getConfig();
+ String url = StringUtils.isNotEmpty(config.getAccessTokenUrl()) ?
+ config.getAccessTokenUrl() : StringUtils.isNotEmpty(config.getApiHostUrl()) ?
+ GET_STABLE_ACCESS_TOKEN_URL.replace("https://api.weixin.qq.com", config.getApiHostUrl()) :
+ GET_STABLE_ACCESS_TOKEN_URL;
+
+ HttpPost httpPost = new HttpPost(url);
+ if (this.getRequestHttpProxy() != null) {
+ RequestConfig requestConfig = RequestConfig.custom().setProxy(this.getRequestHttpProxy()).build();
+ httpPost.setConfig(requestConfig);
+ }
+ StableTokenParam requestParam = new StableTokenParam();
+ requestParam.setAppId(config.getAppid());
+ requestParam.setSecret(config.getSecret());
+ requestParam.setGrantType("client_credential");
+ requestParam.setForceRefresh(forceRefresh);
+ String requestJson = JsonUtils.encode(requestParam);
+ assert requestJson != null;
+
+ httpPost.setEntity(new StringEntity(requestJson, ContentType.APPLICATION_JSON));
+ return getRequestHttpClient().execute(httpPost, BasicResponseHandler.INSTANCE);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreServiceImpl.java
new file mode 100644
index 0000000000..e299ae0096
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreServiceImpl.java
@@ -0,0 +1,26 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 微信小店服务实现
+ *
+ * @author Zeyes
+ */
+@Slf4j
+public class WxStoreServiceImpl extends WxStoreServiceHttpClientImpl {
+
+ public WxStoreServiceImpl() {
+ }
+
+// /**
+// * 设置获取access_token接口参数.
+// *
+// * @param stabled false 表示调用普通模式AccessToken接口, true调用稳定模式接口
+// * @param forceRefresh stabled=true使用, true表示强制刷新模式
+// * @deprecated 请使用 {@link BaseWxStoreServiceImpl#setConfig(WxStoreConfig) } 替代
+// */
+// @Deprecated
+// public WxStoreServiceImpl(Boolean stabled, Boolean forceRefresh) {
+// }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreServiceOkHttpImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreServiceOkHttpImpl.java
new file mode 100644
index 0000000000..4d85f5034d
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreServiceOkHttpImpl.java
@@ -0,0 +1,109 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.GET_ACCESS_TOKEN_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.GET_STABLE_ACCESS_TOKEN_URL;
+
+import java.io.IOException;
+import java.util.Objects;
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.bean.token.StableTokenParam;
+import com.binarywang.wxjava.store.config.WxStoreConfig;
+import com.binarywang.wxjava.store.util.JsonUtils;
+import me.chanjar.weixin.common.util.http.HttpClientType;
+import me.chanjar.weixin.common.util.http.okhttp.DefaultOkHttpClientBuilder;
+import me.chanjar.weixin.common.util.http.okhttp.OkHttpProxyInfo;
+import okhttp3.Authenticator;
+import okhttp3.Credentials;
+import okhttp3.MediaType;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.RequestBody;
+import okhttp3.Response;
+import okhttp3.Route;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * @author : zhenyun.su
+ * @since : 2024/2/27
+ */
+@Slf4j
+public class WxStoreServiceOkHttpImpl extends BaseWxStoreServiceImpl {
+ private OkHttpClient httpClient;
+ private OkHttpProxyInfo httpProxy;
+
+ public WxStoreServiceOkHttpImpl() {
+ }
+
+ @Override
+ public void initHttp() {
+ log.debug("WxStoreServiceOkHttpImpl initHttp");
+ if (this.config.getHttpProxyHost() != null && this.config.getHttpProxyPort() > 0) {
+ this.httpProxy = OkHttpProxyInfo.httpProxy(this.config.getHttpProxyHost(), this.config.getHttpProxyPort(), this.config.getHttpProxyUsername(), this.config.getHttpProxyPassword());
+ okhttp3.OkHttpClient.Builder clientBuilder = new okhttp3.OkHttpClient.Builder();
+ clientBuilder.proxy(this.getRequestHttpProxy().getProxy());
+ clientBuilder.proxyAuthenticator(new Authenticator() {
+ @Override
+ public Request authenticate(Route route, Response response) throws IOException {
+ String credential = Credentials.basic(WxStoreServiceOkHttpImpl.this.httpProxy.getProxyUsername(), WxStoreServiceOkHttpImpl.this.httpProxy.getProxyPassword());
+ return response.request().newBuilder().header("Proxy-Authorization", credential).build();
+ }
+ });
+ this.httpClient = clientBuilder.build();
+ } else {
+ this.httpClient = DefaultOkHttpClientBuilder.get().build();
+ }
+ }
+
+ @Override
+ public OkHttpClient getRequestHttpClient() {
+ return this.httpClient;
+ }
+
+ @Override
+ public OkHttpProxyInfo getRequestHttpProxy() {
+ return this.httpProxy;
+ }
+
+ @Override
+ public HttpClientType getRequestType() {
+ return HttpClientType.OK_HTTP;
+ }
+
+ @Override
+ protected String doGetAccessTokenRequest() throws IOException {
+ WxStoreConfig config = this.getConfig();
+ String url = StringUtils.isNotEmpty(config.getAccessTokenUrl()) ? config.getAccessTokenUrl() :
+ StringUtils.isNotEmpty(config.getApiHostUrl()) ?
+ GET_ACCESS_TOKEN_URL.replace("https://api.weixin.qq.com", config.getApiHostUrl()) : GET_ACCESS_TOKEN_URL;
+
+ url = String.format(url, config.getAppid(), config.getSecret());
+
+ Request request = new Request.Builder().url(url).get().build();
+ try (Response response = getRequestHttpClient().newCall(request).execute()) {
+ return Objects.requireNonNull(response.body()).string();
+ }
+ }
+
+ @Override
+ protected String doGetStableAccessTokenRequest(boolean forceRefresh) throws IOException {
+ WxStoreConfig config = this.getConfig();
+ String url = StringUtils.isNotEmpty(config.getAccessTokenUrl()) ?
+ config.getAccessTokenUrl() : StringUtils.isNotEmpty(config.getApiHostUrl()) ?
+ GET_STABLE_ACCESS_TOKEN_URL.replace("https://api.weixin.qq.com", config.getApiHostUrl()) :
+ GET_STABLE_ACCESS_TOKEN_URL;
+
+ StableTokenParam requestParam = new StableTokenParam();
+ requestParam.setAppId(config.getAppid());
+ requestParam.setSecret(config.getSecret());
+ requestParam.setGrantType("client_credential");
+ requestParam.setForceRefresh(forceRefresh);
+ String requestJson = JsonUtils.encode(requestParam);
+ assert requestJson != null;
+
+ RequestBody body = RequestBody.Companion.create(requestJson, MediaType.parse("application/json; charset=utf-8"));
+ Request request = new Request.Builder().url(url).post(body).build();
+ try (Response response = getRequestHttpClient().newCall(request).execute()) {
+ return Objects.requireNonNull(response.body()).string();
+ }
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreSharerServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreSharerServiceImpl.java
new file mode 100644
index 0000000000..c1931ad35b
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreSharerServiceImpl.java
@@ -0,0 +1,76 @@
+package com.binarywang.wxjava.store.api.impl;
+
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Share.BIND_SHARER_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Share.LIST_SHARER_ORDER_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Share.LIST_SHARER_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Share.SEARCH_SHARER_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Share.UNBIND_SHARER_URL;
+
+import com.google.gson.JsonObject;
+import java.util.List;
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.api.WxStoreSharerService;
+import com.binarywang.wxjava.store.bean.sharer.SharerBindResponse;
+import com.binarywang.wxjava.store.bean.sharer.SharerInfoResponse;
+import com.binarywang.wxjava.store.bean.sharer.SharerListParam;
+import com.binarywang.wxjava.store.bean.sharer.SharerOrderParam;
+import com.binarywang.wxjava.store.bean.sharer.SharerOrderResponse;
+import com.binarywang.wxjava.store.bean.sharer.SharerSearchParam;
+import com.binarywang.wxjava.store.bean.sharer.SharerSearchResponse;
+import com.binarywang.wxjava.store.bean.sharer.SharerUnbindParam;
+import com.binarywang.wxjava.store.bean.sharer.SharerUnbindResponse;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+import me.chanjar.weixin.common.util.json.GsonHelper;
+
+/**
+ * 微信小店 分享员服务实现
+ *
+ * @author Zeyes
+ */
+@Slf4j
+public class WxStoreSharerServiceImpl implements WxStoreSharerService {
+
+ /** 微信商店服务 */
+ private final BaseWxStoreServiceImpl, ?> shopService;
+
+ public WxStoreSharerServiceImpl(BaseWxStoreServiceImpl, ?> shopService) {
+ this.shopService = shopService;
+ }
+
+ @Override
+ public SharerBindResponse bindSharer(String username) throws WxErrorException {
+ JsonObject jsonObject = GsonHelper.buildJsonObject("username", username);
+
+ String resJson = shopService.post(BIND_SHARER_URL, jsonObject);
+ return ResponseUtils.decode(resJson, SharerBindResponse.class);
+ }
+
+ @Override
+ public SharerSearchResponse searchSharer(String openid, String username) throws WxErrorException {
+ SharerSearchParam param = new SharerSearchParam(openid, username);
+ String resJson = shopService.post(SEARCH_SHARER_URL, param);
+ return ResponseUtils.decode(resJson, SharerSearchResponse.class);
+ }
+
+ @Override
+ public SharerInfoResponse listSharer(Integer page, Integer pageSize, Integer sharerType) throws WxErrorException {
+ SharerListParam param = new SharerListParam(page, pageSize, sharerType);
+ String resJson = shopService.post(LIST_SHARER_URL, param);
+ return ResponseUtils.decode(resJson, SharerInfoResponse.class);
+ }
+
+ @Override
+ public SharerOrderResponse listSharerOrder(SharerOrderParam param) throws WxErrorException {
+ String resJson = shopService.post(LIST_SHARER_ORDER_URL, param);
+ return ResponseUtils.decode(resJson, SharerOrderResponse.class);
+ }
+
+ @Override
+ public SharerUnbindResponse unbindSharer(List openIds) throws WxErrorException {
+ SharerUnbindParam param = new SharerUnbindParam(openIds);
+ String resJson = shopService.post(UNBIND_SHARER_URL, param);
+ return ResponseUtils.decode(resJson, SharerUnbindResponse.class);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreSupplierServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreSupplierServiceImpl.java
new file mode 100644
index 0000000000..b2ee971fd6
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreSupplierServiceImpl.java
@@ -0,0 +1,132 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import com.google.gson.JsonObject;
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.api.WxStoreSupplierService;
+import com.binarywang.wxjava.store.bean.base.StreamPageParam;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.supplier.DistributeTypeResponse;
+import com.binarywang.wxjava.store.bean.supplier.DropshipAssignRequest;
+import com.binarywang.wxjava.store.bean.supplier.DropshipDetailResponse;
+import com.binarywang.wxjava.store.bean.supplier.DropshipListRequest;
+import com.binarywang.wxjava.store.bean.supplier.DropshipListResponse;
+import com.binarywang.wxjava.store.bean.supplier.DropshipResponse;
+import com.binarywang.wxjava.store.bean.supplier.DropshipSearchRequest;
+import com.binarywang.wxjava.store.bean.supplier.ProductDistributeRequest;
+import com.binarywang.wxjava.store.bean.supplier.ProductListResponse;
+import com.binarywang.wxjava.store.bean.supplier.SupplierInfoResponse;
+import com.binarywang.wxjava.store.bean.supplier.SupplierListResponse;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+import me.chanjar.weixin.common.util.json.GsonHelper;
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Supplier.ASSIGN_DROPSHIP_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Supplier.CANCEL_DROPSHIP_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Supplier.GET_DISTRIBUTE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Supplier.GET_DROPSHIP_LIST_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Supplier.GET_DROPSHIP_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Supplier.GET_PRODUCT_DEFAULT_DISTRIBUTE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Supplier.GET_PRODUCT_LIST_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Supplier.GET_SUPPLIER_LIST_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Supplier.SEARCH_DROPSHIP_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Supplier.SET_ALL_DISTRIBUTION_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Supplier.SET_MANUALLY_DISTRIBUTE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Supplier.SET_PRODUCT_DISTRIBUTE_URL;
+
+/**
+ * 微信小店代发管理服务。
+ *
+ * @author GitHub Copilot
+ */
+@Slf4j
+public class WxStoreSupplierServiceImpl implements WxStoreSupplierService {
+
+ private final BaseWxStoreServiceImpl, ?> shopService;
+
+ public WxStoreSupplierServiceImpl(BaseWxStoreServiceImpl, ?> 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 WxStoreBaseResponse setManuallyDistribute() throws WxErrorException {
+ String respJson = shopService.post(SET_MANUALLY_DISTRIBUTE_URL, "{}");
+ return ResponseUtils.decode(respJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse 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, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse setProductDistribute(ProductDistributeRequest req) throws WxErrorException {
+ String respJson = shopService.post(SET_PRODUCT_DISTRIBUTE_URL, req);
+ return ResponseUtils.decode(respJson, WxStoreBaseResponse.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 WxStoreBaseResponse cancelDropship(String orderId) throws WxErrorException {
+ JsonObject req = GsonHelper.buildJsonObject("order_id", orderId);
+ String respJson = shopService.post(CANCEL_DROPSHIP_URL, req);
+ return ResponseUtils.decode(respJson, WxStoreBaseResponse.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);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreVipServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreVipServiceImpl.java
new file mode 100644
index 0000000000..b9ac9a8bf1
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreVipServiceImpl.java
@@ -0,0 +1,68 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.api.WxStoreVipService;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.vip.*;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Vip.*;
+
+/**
+ * 微信小店 会员功能接口
+ *
+ * @author aushiye
+ * @link 会员功能接口文档
+ */
+
+@Slf4j
+public class WxStoreVipServiceImpl implements WxStoreVipService {
+ private final BaseWxStoreServiceImpl, ?> shopService;
+
+ public WxStoreVipServiceImpl(BaseWxStoreServiceImpl, ?> shopService) {
+ this.shopService = shopService;
+ }
+
+ @Override
+ public VipInfoResponse getVipInfo(String openId, Boolean needPhoneNumber) throws WxErrorException {
+ VipInfoParam param = new VipInfoParam(openId, needPhoneNumber);
+ String respJson = shopService.post(VIP_USER_INFO_URL, param);
+ return ResponseUtils.decode(respJson, VipInfoResponse.class);
+ }
+
+ @Override
+ public VipListResponse getVipList(Boolean needPhoneNumber, Integer pageNum, Integer pageSize) throws WxErrorException {
+ VipListParam param = new VipListParam(needPhoneNumber, pageNum, pageSize);
+ String respJson = shopService.post(VIP_USER_LIST_URL, param);
+ return ResponseUtils.decode(respJson, VipListResponse.class);
+ }
+
+ @Override
+ public VipScoreResponse getVipScore(String openId) throws WxErrorException {
+ VipOpenIdParam param = new VipOpenIdParam(openId);
+ String respJson = shopService.post(VIP_SCORE_URL, param);
+ return ResponseUtils.decode(respJson, VipScoreResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse increaseVipScore(String openId, String score, String remark, String requestId) throws WxErrorException {
+ VipScoreParam param = new VipScoreParam(openId, score, remark, requestId);
+ String respJson = shopService.post(SCORE_INCREASE_URL, param);
+ return ResponseUtils.decode(respJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse decreaseVipScore(String openId, String score, String remark, String requestId) throws WxErrorException {
+ VipScoreParam param = new VipScoreParam(openId, score, remark, requestId);
+ String respJson = shopService.post(SCORE_DECREASE_URL, param);
+ return ResponseUtils.decode(respJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse updateVipGrade(String openId, Integer score) throws WxErrorException {
+ VipGradeParam param = new VipGradeParam(openId, score);
+ String respJson = shopService.post(GRADE_UPDATE_URL, param);
+ return ResponseUtils.decode(respJson, WxStoreBaseResponse.class);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreWarehouseServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreWarehouseServiceImpl.java
new file mode 100644
index 0000000000..c6cb3e0849
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxStoreWarehouseServiceImpl.java
@@ -0,0 +1,123 @@
+package com.binarywang.wxjava.store.api.impl;
+
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Warehouse.ADD_COVER_AREA_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Warehouse.ADD_WAREHOUSE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Warehouse.DELETE_COVER_AREA_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Warehouse.GET_WAREHOUSE_PRIORITY_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Warehouse.GET_WAREHOUSE_STOCK_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Warehouse.GET_WAREHOUSE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Warehouse.LIST_WAREHOUSE_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Warehouse.SET_WAREHOUSE_PRIORITY_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Warehouse.UPDATE_WAREHOUSE_STOCK_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Warehouse.UPDATE_WAREHOUSE_URL;
+
+import java.util.List;
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.api.WxStoreWarehouseService;
+import com.binarywang.wxjava.store.bean.base.StreamPageParam;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+import com.binarywang.wxjava.store.bean.warehouse.LocationPriorityResponse;
+import com.binarywang.wxjava.store.bean.warehouse.PriorityLocationParam;
+import com.binarywang.wxjava.store.bean.warehouse.StockGetParam;
+import com.binarywang.wxjava.store.bean.warehouse.UpdateLocationParam;
+import com.binarywang.wxjava.store.bean.warehouse.WarehouseIdsResponse;
+import com.binarywang.wxjava.store.bean.warehouse.WarehouseLocation;
+import com.binarywang.wxjava.store.bean.warehouse.WarehouseLocationParam;
+import com.binarywang.wxjava.store.bean.warehouse.WarehouseParam;
+import com.binarywang.wxjava.store.bean.warehouse.WarehouseResponse;
+import com.binarywang.wxjava.store.bean.warehouse.WarehouseStockParam;
+import com.binarywang.wxjava.store.bean.warehouse.WarehouseStockResponse;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+/**
+ * 微信小店 区域仓库服务实现
+ *
+ * @author Zeyes
+ */
+@Slf4j
+public class WxStoreWarehouseServiceImpl implements WxStoreWarehouseService {
+
+ /** 微信商店服务 */
+ private final BaseWxStoreServiceImpl, ?> shopService;
+
+ public WxStoreWarehouseServiceImpl(BaseWxStoreServiceImpl, ?> shopService) {
+ this.shopService = shopService;
+ }
+
+ @Override
+ public WxStoreBaseResponse createWarehouse(WarehouseParam param) throws WxErrorException {
+ String resJson = shopService.post(ADD_WAREHOUSE_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WarehouseIdsResponse listWarehouse(Integer pageSize, String nextKey) throws WxErrorException {
+ StreamPageParam param = new StreamPageParam(pageSize, nextKey);
+ String resJson = shopService.post(LIST_WAREHOUSE_URL, param);
+ return ResponseUtils.decode(resJson, WarehouseIdsResponse.class);
+ }
+
+ @Override
+ public WarehouseResponse getWarehouse(String outWarehouseId) throws WxErrorException {
+ String reqJson = "{\"out_warehouse_id\":\"" + outWarehouseId + "\"}";
+ String resJson = shopService.post(GET_WAREHOUSE_URL, reqJson);
+ return ResponseUtils.decode(resJson, WarehouseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse updateWarehouse(String outWarehouseId, String name, String intro)
+ throws WxErrorException {
+ String reqJson = "{\"out_warehouse_id\":\"" + outWarehouseId +
+ "\",\"name\":\"" + name + "\",\"intro\":\"" + intro + "\"}";
+ String resJson = shopService.post(UPDATE_WAREHOUSE_URL, reqJson);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse addWarehouseArea(String outWarehouseId, List coverLocations)
+ throws WxErrorException {
+ UpdateLocationParam param = new UpdateLocationParam(outWarehouseId, coverLocations);
+ String resJson = shopService.post(ADD_COVER_AREA_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse deleteWarehouseArea(String outWarehouseId, List coverLocations)
+ throws WxErrorException {
+ UpdateLocationParam param = new UpdateLocationParam(outWarehouseId, coverLocations);
+ String resJson = shopService.post(DELETE_COVER_AREA_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+
+ }
+
+ @Override
+ public WxStoreBaseResponse setWarehousePriority(PriorityLocationParam param) throws WxErrorException {
+ String resJson = shopService.post(SET_WAREHOUSE_PRIORITY_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+
+ }
+
+ @Override
+ public LocationPriorityResponse getWarehousePriority(Integer addressId1, Integer addressId2, Integer addressId3,
+ Integer addressId4) throws WxErrorException {
+ WarehouseLocationParam param = new WarehouseLocationParam(addressId1, addressId2, addressId3, addressId4);
+ String resJson = shopService.post(GET_WAREHOUSE_PRIORITY_URL, param);
+ return ResponseUtils.decode(resJson, LocationPriorityResponse.class);
+ }
+
+ @Override
+ public WxStoreBaseResponse updateWarehouseStock(WarehouseStockParam param) throws WxErrorException {
+ String resJson = shopService.post(UPDATE_WAREHOUSE_STOCK_URL, param);
+ return ResponseUtils.decode(resJson, WxStoreBaseResponse.class);
+ }
+
+ @Override
+ public WarehouseStockResponse getWarehouseStock(String productId, String skuId, String outWarehouseId)
+ throws WxErrorException {
+ StockGetParam param = new StockGetParam(productId, skuId, outWarehouseId);
+ String resJson = shopService.post(GET_WAREHOUSE_STOCK_URL, param);
+ return ResponseUtils.decode(resJson, WarehouseStockResponse.class);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxTalentServiceImpl.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxTalentServiceImpl.java
new file mode 100644
index 0000000000..1b9f6fe34d
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/api/impl/WxTalentServiceImpl.java
@@ -0,0 +1,59 @@
+package com.binarywang.wxjava.store.api.impl;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import com.binarywang.wxjava.store.api.WxTalentService;
+import com.binarywang.wxjava.store.bean.talent.TalentOrderDetailParam;
+import com.binarywang.wxjava.store.bean.talent.TalentOrderDetailResponse;
+import com.binarywang.wxjava.store.bean.talent.TalentOrderListParam;
+import com.binarywang.wxjava.store.bean.talent.TalentOrderListResponse;
+import com.binarywang.wxjava.store.bean.talent.TalentWindowProductDetailParam;
+import com.binarywang.wxjava.store.bean.talent.TalentWindowProductDetailResponse;
+import com.binarywang.wxjava.store.bean.talent.TalentWindowProductListParam;
+import com.binarywang.wxjava.store.bean.talent.TalentWindowProductListResponse;
+import com.binarywang.wxjava.store.util.ResponseUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
+
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Talent.GET_ORDER_DETAIL_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Talent.GET_ORDER_LIST_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Talent.GET_WINDOW_PRODUCT_DETAIL_URL;
+import static com.binarywang.wxjava.store.constant.WxStoreApiUrlConstants.Talent.GET_WINDOW_PRODUCT_LIST_URL;
+
+/**
+ * 微信小店-带货助手服务实现
+ *
+ * @author GitHub Copilot
+ */
+@RequiredArgsConstructor
+@Slf4j
+public class WxTalentServiceImpl implements WxTalentService {
+
+ /** 微信商店服务 */
+ private final BaseWxStoreServiceImpl, ?> 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);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressAddParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressAddParam.java
new file mode 100644
index 0000000000..3a42f516fe
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressAddParam.java
@@ -0,0 +1,27 @@
+package com.binarywang.wxjava.store.bean.address;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 地址 请求参数
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(Include.NON_NULL)
+public class AddressAddParam implements Serializable {
+
+ private static final long serialVersionUID = 6778585213498438738L;
+
+ /** 地址id */
+ @JsonProperty("address_detail")
+ private AddressDetail addressDetail;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressCode.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressCode.java
new file mode 100644
index 0000000000..c55e191027
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressCode.java
@@ -0,0 +1,30 @@
+package com.binarywang.wxjava.store.bean.address;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 地址编码
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class AddressCode implements Serializable {
+
+ private static final long serialVersionUID = -6782328785056142627L;
+
+ /** 地址名称 */
+ @JsonProperty("name")
+ private String name;
+
+ /** 地址行政编码 */
+ @JsonProperty("code")
+ private Integer code;
+
+ /** 地址级别 1-省级 2-市级 3-区县级 4-街道 */
+ @JsonProperty("level")
+ private Integer level;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressCodeResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressCodeResponse.java
new file mode 100644
index 0000000000..8c9ae786e8
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressCodeResponse.java
@@ -0,0 +1,29 @@
+package com.binarywang.wxjava.store.bean.address;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 地址编码 响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class AddressCodeResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = -8994407971295563982L;
+
+ /** 本行政编码地址信息 */
+ @JsonProperty("addrs_msg")
+ private AddressCode current;
+
+ /** 下一级所有地址信息 */
+ @JsonProperty("next_level_addrs")
+ private List list;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressDetail.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressDetail.java
new file mode 100644
index 0000000000..8ef5a3ff52
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressDetail.java
@@ -0,0 +1,66 @@
+package com.binarywang.wxjava.store.bean.address;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.AddressInfo;
+
+/**
+ * 用户地址
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class AddressDetail implements Serializable {
+
+ private static final long serialVersionUID = -7839578838482198641L;
+
+ /** 地址id */
+ @JsonProperty("address_id")
+ private String addressId;
+
+ /** 联系人姓名 */
+ @JsonProperty("name")
+ private String name;
+
+ /** 地区信息 */
+ @JsonProperty("address_info")
+ private AddressInfo addressInfo;
+
+ /** 座机 */
+ @JsonProperty("landline")
+ private String landline;
+
+ /** 是否为发货地址 */
+ @JsonProperty("send_addr")
+ private Boolean sendAddr;
+
+ /** 是否为收货地址 */
+ @JsonProperty("recv_addr")
+ private Boolean recvAddr;
+
+ /** 是否为默认发货地址 */
+ @JsonProperty("default_send")
+ private Boolean defaultSend;
+
+ /** 是否为默认收货地址 */
+ @JsonProperty("default_recv")
+ private Boolean defaultRecv;
+
+ /** 创建时间戳(秒) */
+ @JsonProperty("create_time")
+ private Long createTime;
+
+ /** 更新时间戳(秒) */
+ @JsonProperty("update_time")
+ private Long updateTime;
+
+ /** 线下配送地址类型 */
+ @JsonProperty("address_type")
+ private OfflineAddressType addressType;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressIdParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressIdParam.java
new file mode 100644
index 0000000000..a20e60ed79
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressIdParam.java
@@ -0,0 +1,27 @@
+package com.binarywang.wxjava.store.bean.address;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 地址id 请求参数
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(Include.NON_NULL)
+public class AddressIdParam implements Serializable {
+
+ private static final long serialVersionUID = -7001183932180608746L;
+
+ /** 地址id */
+ @JsonProperty("address_id")
+ private String addressId;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressIdResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressIdResponse.java
new file mode 100644
index 0000000000..2536447627
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressIdResponse.java
@@ -0,0 +1,26 @@
+package com.binarywang.wxjava.store.bean.address;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 地址id 响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class AddressIdResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = -9218327846685744008L;
+
+ /** 地址id */
+ @JsonProperty("address_id")
+ private String addressId;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressInfoResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressInfoResponse.java
new file mode 100644
index 0000000000..3022da0230
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressInfoResponse.java
@@ -0,0 +1,24 @@
+package com.binarywang.wxjava.store.bean.address;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 地址id 响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class AddressInfoResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 8203853673226715673L;
+
+ /** 地址详情 */
+ @JsonProperty("address_detail")
+ private AddressDetail addressDetail;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressListParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressListParam.java
new file mode 100644
index 0000000000..d65ea34460
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressListParam.java
@@ -0,0 +1,26 @@
+package com.binarywang.wxjava.store.bean.address;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.OffsetParam;
+
+/**
+ * 用户地址 列表 请求参数
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@JsonInclude(Include.NON_NULL)
+public class AddressListParam extends OffsetParam {
+
+ private static final long serialVersionUID = -4434287264623932176L;
+
+ public AddressListParam(Integer offset, Integer limit) {
+ super(offset, limit);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressListResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressListResponse.java
new file mode 100644
index 0000000000..2dce813b20
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/AddressListResponse.java
@@ -0,0 +1,26 @@
+package com.binarywang.wxjava.store.bean.address;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 地址列表 响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class AddressListResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = -3997164605170764105L;
+
+ /** 地址详情 */
+ @JsonProperty("address_id_list")
+ private List ids;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/OfflineAddressType.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/OfflineAddressType.java
new file mode 100644
index 0000000000..8902c27627
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/address/OfflineAddressType.java
@@ -0,0 +1,28 @@
+package com.binarywang.wxjava.store.bean.address;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 线下配送地址类型
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class OfflineAddressType implements Serializable {
+
+ private static final long serialVersionUID = 636850757572901377L;
+
+ /** 1表示同城配送 */
+ @JsonProperty("same_city")
+ private Integer sameCity;
+
+ /** 1表示用户自提 */
+ @JsonProperty("pickup")
+ private Integer pickup;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleAcceptExchangeReshipParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleAcceptExchangeReshipParam.java
new file mode 100644
index 0000000000..7360c3ebb0
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleAcceptExchangeReshipParam.java
@@ -0,0 +1,35 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * 售后单换货发货信息
+ *
+ * @author Chu
+ */
+@Data
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class AfterSaleAcceptExchangeReshipParam extends AfterSaleIdParam {
+ private static final long serialVersionUID = -7946679037747710613L;
+
+ /** 快递单号*/
+ @JsonProperty("waybill_id")
+ private String waybillId;
+
+ /** 快递公司id,通过获取快递公司列表接口获得,非主流快递公司可以填OTHER*/
+ @JsonProperty("delivery_id")
+ private String deliveryId;
+
+ public AfterSaleAcceptExchangeReshipParam() {
+
+ }
+
+ public AfterSaleAcceptExchangeReshipParam(String afterSaleOrderId, String waybillId, String deliveryId) {
+ super(afterSaleOrderId);
+ this.waybillId = waybillId;
+ this.deliveryId = deliveryId;
+ }
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleAcceptParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleAcceptParam.java
new file mode 100644
index 0000000000..727761cda5
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleAcceptParam.java
@@ -0,0 +1,39 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * 售后单同意信息
+ *
+ * @author Zeyes
+ */
+@Data
+@JsonInclude(Include.NON_NULL)
+public class AfterSaleAcceptParam extends AfterSaleIdParam {
+
+ private static final long serialVersionUID = -4352801757159074950L;
+ /** 同意退货时传入地址id */
+ @JsonProperty("address_id")
+ private String addressId;
+
+ /** 针对退货退款同意售后的阶段: 1. 同意退货退款,并通知用户退货; 2. 确认收到货并退款给用户。 如果不填则将根据当前的售后单状态自动选择相应操作。对于仅退款的情况,由于只存在一种同意的场景,无需填写此字段。*/
+ @JsonProperty("accept_type")
+ private Integer acceptType;
+
+ public AfterSaleAcceptParam() {
+ }
+
+ public AfterSaleAcceptParam(String afterSaleOrderId, String addressId) {
+ super(afterSaleOrderId);
+ this.addressId = addressId;
+ }
+
+ public AfterSaleAcceptParam(String afterSaleOrderId, String addressId, Integer acceptType) {
+ super(afterSaleOrderId);
+ this.addressId = addressId;
+ this.acceptType = acceptType;
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleCreateResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleCreateResponse.java
new file mode 100644
index 0000000000..cd40f982e8
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleCreateResponse.java
@@ -0,0 +1,15 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class AfterSaleCreateResponse extends WxStoreBaseResponse {
+ private static final long serialVersionUID = 2680676438284658410L;
+
+ @JsonProperty("after_sale_order_id")
+ private String afterSaleOrderId;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleDetail.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleDetail.java
new file mode 100644
index 0000000000..50b1f55dbd
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleDetail.java
@@ -0,0 +1,42 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 售后详情
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class AfterSaleDetail implements Serializable {
+
+ private static final long serialVersionUID = -8130659179770831047L;
+ /** 售后描述 */
+ @JsonProperty("desc")
+ private String desc;
+
+ /** 是否已经收到货 */
+ @JsonProperty("receive_product")
+ private Boolean receiveProduct;
+
+ /** 是否已经收到货 */
+ @JsonProperty("cancel_time")
+ private Long cancelTime;
+
+ /** 举证图片media_id列表,根据mediaid获取文件内容接口 */
+ @JsonProperty("prove_imgs")
+ private List proveImgs;
+
+ /** 联系电话 */
+ @JsonProperty("tel_number")
+ private String telNumber;
+
+ /** 举证图片media_id列表,根据mediaid获取文件内容接口 */
+ @JsonProperty("media_id_list")
+ private List mediaIdList;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleExchangeDeliveryInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleExchangeDeliveryInfo.java
new file mode 100644
index 0000000000..12c114dadb
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleExchangeDeliveryInfo.java
@@ -0,0 +1,35 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.AddressInfo;
+
+/**
+ * 换货类型的发货物流信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class AfterSaleExchangeDeliveryInfo implements Serializable {
+
+ private static final long serialVersionUID = 3039216368034112038L;
+
+ /** 快递单号 */
+ @JsonProperty("waybill_id")
+ private String waybillId;
+
+ /** 物流公司id */
+ @JsonProperty("delivery_id")
+ private String deliveryId;
+
+ /** 物流公司名称 */
+ @JsonProperty("delivery_name")
+ private String deliveryName;
+
+ /** 地址信息 */
+ @JsonProperty("address_info")
+ private AddressInfo addressInfo;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleExchangeProductInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleExchangeProductInfo.java
new file mode 100644
index 0000000000..b6dc6cd5c0
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleExchangeProductInfo.java
@@ -0,0 +1,42 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 换货商品信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class AfterSaleExchangeProductInfo implements Serializable {
+
+ private static final long serialVersionUID = -1341436607011117854L;
+
+ /** 商品spuid */
+ @JsonProperty("product_id")
+ private String productId;
+
+ /** 旧商品skuid */
+ @JsonProperty("old_sku_id")
+ private String oldSkuId;
+
+ /** 新商品skuid */
+ @JsonProperty("new_sku_id")
+ private String newSkuId;
+
+ /** 数量 */
+ @JsonProperty("product_cnt")
+ private String productCnt;
+
+ /** 旧商品价格 */
+ @JsonProperty("old_sku_price")
+ private Integer oldSkuPrice;
+
+ /** 新商品价格 */
+ @JsonProperty("new_sku_price")
+ private Integer newSkuPrice;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleGenAfterSaleOrderParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleGenAfterSaleOrderParam.java
new file mode 100644
index 0000000000..83a5c31973
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleGenAfterSaleOrderParam.java
@@ -0,0 +1,25 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class AfterSaleGenAfterSaleOrderParam extends AfterSaleRefundPriceDiffParam {
+ private static final long serialVersionUID = -6873909673739068936L;
+
+ @JsonProperty("count")
+ private Integer count;
+
+ @JsonProperty("type")
+ private String type;
+
+ @JsonProperty("address_id")
+ private String addressId;
+
+ @JsonProperty("exchange_sku_info")
+ private ExchangeSkuInfo exchangeSkuInfo;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleHandleFastExchangeReceiptParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleHandleFastExchangeReceiptParam.java
new file mode 100644
index 0000000000..50161e8093
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleHandleFastExchangeReceiptParam.java
@@ -0,0 +1,29 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class AfterSaleHandleFastExchangeReceiptParam extends AfterSaleIdParam {
+ private static final long serialVersionUID = 5430106715116197677L;
+
+ @JsonProperty("act")
+ private Integer act;
+
+ @JsonProperty("reject_reason")
+ private String rejectReason;
+
+ @JsonProperty("reject_reason_type")
+ private Integer rejectReasonType;
+
+ @JsonProperty("merchant_text")
+ private String merchantText;
+
+ @JsonProperty("reject_confirm_exchange")
+ private List rejectConfirmExchange;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleIdParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleIdParam.java
new file mode 100644
index 0000000000..d2d337b43d
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleIdParam.java
@@ -0,0 +1,26 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 售后单id信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(Include.NON_NULL)
+public class AfterSaleIdParam implements Serializable {
+
+ private static final long serialVersionUID = 4974332291476116540L;
+ /** 售后单号 */
+ @JsonProperty("after_sale_order_id")
+ private String afterSaleOrderId;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleInfo.java
new file mode 100644
index 0000000000..036082a3c6
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleInfo.java
@@ -0,0 +1,101 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 售后单信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class AfterSaleInfo implements Serializable {
+
+ private static final long serialVersionUID = 6595670817781635247L;
+ /** 售后单号 */
+ @JsonProperty("after_sale_order_id")
+ private String afterSaleOrderId;
+
+ /** 售后状态 {@link com.binarywang.wxjava.store.enums.AfterSaleStatus} */
+ @JsonProperty("status")
+ private String status;
+
+ /** 订单id */
+ @JsonProperty("order_id")
+ private String orderId;
+
+ /** 买家身份标识 */
+ @JsonProperty("openid")
+ private String openid;
+
+ /** 买家在开放平台的唯一标识符,若当前微信小店已绑定到微信开放平台帐号下会返回 */
+ @JsonProperty("unionid")
+ private String unionid;
+
+ /** 售后相关商品信息 */
+ @JsonProperty("product_info")
+ private AfterSaleProductInfo productInfo;
+
+ /** 售后详情 */
+ @JsonProperty("details")
+ private AfterSaleDetail details;
+
+ /** 退款详情 */
+ @JsonProperty("refund_info")
+ private RefundInfo refundInfo;
+
+ /** 用户退货信息 */
+ @JsonProperty("return_info")
+ private ReturnInfo returnInfo;
+
+ /** 商家上传的信息 */
+ @JsonProperty("merchant_upload_info")
+ private MerchantUploadInfo merchantUploadInfo;
+
+ /** 创建时间 时间戳 秒 */
+ @JsonProperty("create_time")
+ private Long createTime;
+
+ /** 更新时间 时间戳 秒 */
+ @JsonProperty("update_time")
+ private Long updateTime;
+
+ /** 退款原因(后续新增的原因将不再有字面含义,请参考reason_text) */
+ @JsonProperty("reason")
+ private String reason;
+
+ /** 退款原因解释 */
+ @JsonProperty("reason_text")
+ private String reasonText;
+
+ /** 退款结果 */
+ @JsonProperty("refund_resp")
+ private RefundResp refundResp;
+
+ /** 售后类型。REFUND:退款;RETURN:退货退款 */
+ @JsonProperty("type")
+ private String type;
+
+ /** 纠纷id,该字段可用于获取纠纷信息 */
+ @JsonProperty("complaint_id")
+ private String complaintId;
+
+ /** 仅在待商家审核退款退货申请或收货期间返回,表示操作剩余时间(秒数)*/
+ @JsonProperty("deadline")
+ private Long deadline;
+
+ /** 售后换货商品信息 */
+ @JsonProperty("exchange_product_info")
+ private AfterSaleExchangeProductInfo exchangeProductInfo;
+
+ /** 售后换货物流信息 */
+ @JsonProperty("exchange_delivery_info")
+ private AfterSaleExchangeDeliveryInfo exchangeDeliveryInfo;
+
+ /** 售后换货虚拟号码信息 */
+ @JsonProperty("virtual_tel_num_info")
+ private AfterSaleVirtualNumberInfo virtualTelNumInfo;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleInfoResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleInfoResponse.java
new file mode 100644
index 0000000000..f6325ecc05
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleInfoResponse.java
@@ -0,0 +1,23 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 售后单 响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class AfterSaleInfoResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = -752661975153491902L;
+ /** 售后单 */
+ @JsonProperty("after_sale_order")
+ private AfterSaleInfo info;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleListParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleListParam.java
new file mode 100644
index 0000000000..816f93fd32
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleListParam.java
@@ -0,0 +1,42 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 售后单列表 请求参数
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(Include.NON_NULL)
+public class AfterSaleListParam implements Serializable {
+
+ private static final long serialVersionUID = -103549981452112069L;
+ /** 订单创建启始时间 unix时间戳 */
+ @JsonProperty("begin_create_time")
+ private Long beginCreateTime;
+
+ /** 订单创建结束时间,end_create_time减去begin_create_time不得大于24小时 unix时间戳 */
+ @JsonProperty("end_create_time")
+ private Long endCreateTime;
+
+ /** 售后单更新起始时间 */
+ @JsonProperty("begin_update_time")
+ private Long beginUpdateTime;
+
+ /** 售后单更新结束时间,end_update_time减去begin_update_time不得大于24小时 */
+ @JsonProperty("end_update_time")
+ private Long endUpdateTime;
+
+ /** 翻页参数,从第二页开始传,来源于上一页的返回值 */
+ @JsonProperty("next_key")
+ private String nextKey;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleListResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleListResponse.java
new file mode 100644
index 0000000000..0f9aa9861c
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleListResponse.java
@@ -0,0 +1,32 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 售后单列表 响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class AfterSaleListResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 5033313416948732123L;
+ /** 售后单号列表 */
+ @JsonProperty("after_sale_order_id_list")
+ private List ids;
+
+ /** 翻页参数 */
+ @JsonProperty("next_key")
+ private String nextKey;
+
+ /** 是否还有数据 */
+ @JsonProperty("has_more")
+ private Boolean hasMore;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleMerchantUpdateParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleMerchantUpdateParam.java
new file mode 100644
index 0000000000..262fa1c6d4
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleMerchantUpdateParam.java
@@ -0,0 +1,57 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 售后单商家协商信息
+ *
+ * @author Chu
+ */
+@Data
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class AfterSaleMerchantUpdateParam extends AfterSaleIdParam {
+ private static final long serialVersionUID = -3672834150982780L;
+
+ /** 协商修改把售后单修改成该售后类型。1:退款;2:退货退款*/
+ @JsonProperty("type")
+ private Integer type;
+
+ /** 金额(单位:分)*/
+ @JsonProperty("amount")
+ private Integer amount;
+
+ /** 协商描述*/
+ @JsonProperty("merchant_update_desc")
+ private String merchantUpdateDesc;
+
+ /** 协商原因*/
+ @JsonProperty("update_reason_type")
+ private Integer updateReasonType;
+
+ /** 1:已协商一致,邀请买家取消售后; 2:邀请买家核实与补充凭证; 3:修改买家售后申请*/
+ @JsonProperty("merchant_update_type")
+ private Integer merchantUpdateType;
+
+ /** 协商凭证id列表,可使用图片上传接口获取media_id(数据类型填0),当update_reason_type对应的need_image为1时必填*/
+ @JsonProperty("media_ids")
+ private List mediaIds;
+
+ public AfterSaleMerchantUpdateParam() {
+ }
+
+ public AfterSaleMerchantUpdateParam(String afterSaleOrderId, Integer type, Integer updateReasonType, Integer merchantUpdateType
+ , Integer amount, String merchantUpdateDesc, List mediaIds) {
+ super(afterSaleOrderId);
+ this.type = type;
+ this.updateReasonType = updateReasonType;
+ this.merchantUpdateType = merchantUpdateType;
+ this.amount = amount;
+ this.merchantUpdateDesc = merchantUpdateDesc;
+ this.mediaIds = mediaIds;
+ }
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleProductInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleProductInfo.java
new file mode 100644
index 0000000000..1d1335e7c4
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleProductInfo.java
@@ -0,0 +1,29 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 售后相关商品信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class AfterSaleProductInfo implements Serializable {
+
+ private static final long serialVersionUID = 4205179093262757775L;
+ /** 商品spu id */
+ @JsonProperty("product_id")
+ private String productId;
+
+ /** 商品sku id */
+ @JsonProperty("sku_id")
+ private String skuId;
+
+ /** 售后数量 */
+ @JsonProperty("count")
+ private Integer count;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleReason.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleReason.java
new file mode 100644
index 0000000000..af8a58b081
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleReason.java
@@ -0,0 +1,33 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 全量售后原因
+ *
+ * @author lizhengwu
+ * @date 2024/7/24
+ */
+@Data
+@NoArgsConstructor
+public class AfterSaleReason implements Serializable {
+
+ private static final long serialVersionUID = -3674527884494606230L;
+
+ /**
+ * 售后原因枚举
+ */
+ @JsonProperty("reason")
+ private Integer reason;
+
+ /**
+ * 售后原因说明
+ */
+ @JsonProperty("reason_text")
+ private String reasonText;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleReasonResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleReasonResponse.java
new file mode 100644
index 0000000000..735f3b9e2d
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleReasonResponse.java
@@ -0,0 +1,28 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+import java.util.List;
+
+/**
+ * 售后原因
+ *
+ *
+ * @author lizhengwu
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode
+public class AfterSaleReasonResponse extends WxStoreBaseResponse {
+
+
+ private static final long serialVersionUID = -580378623915041396L;
+
+ @JsonProperty("reason_list")
+ private List reasonList;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleRefundPriceDiffParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleRefundPriceDiffParam.java
new file mode 100644
index 0000000000..f34de2c058
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleRefundPriceDiffParam.java
@@ -0,0 +1,33 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+
+@Data
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class AfterSaleRefundPriceDiffParam implements Serializable {
+ private static final long serialVersionUID = 3875058376021518123L;
+
+ @JsonProperty("request_id")
+ private String requestId;
+
+ @JsonProperty("order_id")
+ private String orderId;
+
+ @JsonProperty("product_id")
+ private String productId;
+
+ @JsonProperty("sku_id")
+ private String skuId;
+
+ @JsonProperty("amount")
+ private Integer amount;
+
+ @JsonProperty("reason")
+ private String reason;
+
+ @JsonProperty("desc")
+ private String desc;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleRejectExchangeReshipParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleRejectExchangeReshipParam.java
new file mode 100644
index 0000000000..4645870d20
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleRejectExchangeReshipParam.java
@@ -0,0 +1,41 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 售后单换货拒绝发货信息
+ *
+ * @author Chu
+ */
+@Data
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class AfterSaleRejectExchangeReshipParam extends AfterSaleIdParam {
+ private static final long serialVersionUID = -7946679037747710613L;
+
+ /** 拒绝原因具体描述 ,可使用默认描述,也可以自定义描述*/
+ @JsonProperty("reject_reason")
+ private String rejectReason;
+
+ /** 拒绝原因枚举 */
+ @JsonProperty("reject_reason_type")
+ private Integer rejectReasonType;
+
+ /** 退款凭证,可使用图片上传接口获取media_id(数据类型填0)*/
+ @JsonProperty("reject_certificates")
+ private List rejectCertificates;
+
+ public AfterSaleRejectExchangeReshipParam() {
+ }
+
+ public AfterSaleRejectExchangeReshipParam(String afterSaleOrderId, String rejectReason, Integer rejectReasonType, List rejectCertificates) {
+ super(afterSaleOrderId);
+ this.rejectReason = rejectReason;
+ this.rejectReasonType = rejectReasonType;
+ this.rejectCertificates = rejectCertificates;
+ }
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleRejectParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleRejectParam.java
new file mode 100644
index 0000000000..39f014eb5e
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleRejectParam.java
@@ -0,0 +1,59 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 售后单拒绝信息
+ *
+ * @author Zeyes
+ */
+@Data
+@JsonInclude(Include.NON_NULL)
+public class AfterSaleRejectParam extends AfterSaleIdParam {
+
+ private static final long serialVersionUID = -7507483859864253314L;
+ /**
+ * 拒绝原因
+ */
+ @JsonProperty("reject_reason")
+ private String rejectReason;
+
+ /**
+ * 拒绝原因枚举值
+ */
+ @JsonProperty("reject_reason_type")
+ private Integer rejectReasonType;
+
+ /**
+ * 拒绝凭证图片列表,可使用图片上传接口获取media_id
+ */
+ @JsonProperty("reject_certificates")
+ private List rejectCertificates;
+
+ public AfterSaleRejectParam() {
+ }
+
+ public AfterSaleRejectParam(String afterSaleOrderId, String rejectReason) {
+ super(afterSaleOrderId);
+ this.rejectReason = rejectReason;
+ }
+
+ public AfterSaleRejectParam(String afterSaleOrderId, String rejectReason, Integer rejectReasonType) {
+ super(afterSaleOrderId);
+ this.rejectReason = rejectReason;
+ this.rejectReasonType = rejectReasonType;
+ }
+
+ public AfterSaleRejectParam(String afterSaleOrderId, String rejectReason, Integer rejectReasonType,
+ List rejectCertificates) {
+ super(afterSaleOrderId);
+ this.rejectReason = rejectReason;
+ this.rejectReasonType = rejectReasonType;
+ this.rejectCertificates = rejectCertificates;
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleRejectReason.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleRejectReason.java
new file mode 100644
index 0000000000..17d265f3b3
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleRejectReason.java
@@ -0,0 +1,44 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 拒绝售后原因
+ *
+ * @author lizhengwu
+ * @date 2024/7/24
+ */
+@Data
+@NoArgsConstructor
+public class AfterSaleRejectReason implements Serializable {
+
+ private static final long serialVersionUID = -3672834150982780L;
+
+ /**
+ * 售后拒绝原因枚举
+ */
+ @JsonProperty("reject_reason_type")
+ private Integer rejectReasonType;
+
+ /**
+ * 售后拒绝原因说明
+ */
+ @JsonProperty("reject_reason_type_text")
+ private String rejectReasonTypeText;
+
+ /**
+ * 售后拒绝原因默认描述
+ */
+ @JsonProperty("reject_reason")
+ private String rejectReason;
+
+ /**
+ * 售后拒绝原因适用场景
+ */
+ @JsonProperty("reject_scene")
+ private Integer rejectScene;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleRejectReasonResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleRejectReasonResponse.java
new file mode 100644
index 0000000000..3b9bf3ac04
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleRejectReasonResponse.java
@@ -0,0 +1,29 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+import java.util.List;
+
+/**
+ * 售后原因
+ *
+ * @author lizhengwu
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode
+public class AfterSaleRejectReasonResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = -7946679037747710613L;
+
+ /**
+ * 售后原因列表
+ */
+ @JsonProperty("reject_reason_list")
+ private List rejectReasonList;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleReturnParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleReturnParam.java
new file mode 100644
index 0000000000..6c56e36824
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleReturnParam.java
@@ -0,0 +1,36 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import com.binarywang.wxjava.store.bean.base.AddressInfo;
+
+/**
+ * 退货信息
+ *
+ * @author Zeyes
+ */
+@Data
+public class AfterSaleReturnParam implements Serializable {
+
+ private static final long serialVersionUID = -1101993925465293521L;
+ /** 微信侧售后单号 */
+ @JsonProperty("aftersale_id")
+ private Long afterSaleId;
+
+ /** 外部售后单号,和aftersale_id二选一 */
+ @JsonProperty("out_aftersale_id")
+ private String outAfterSaleId;
+
+ /** 商家收货地址 */
+ @JsonProperty("address_info")
+ private AddressInfo addressInfo;
+
+ public AfterSaleReturnParam() {
+ }
+
+ public AfterSaleReturnParam(Long afterSaleId, String outAfterSaleId) {
+ this.outAfterSaleId = outAfterSaleId;
+ this.afterSaleId = afterSaleId;
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleVirtualNumberInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleVirtualNumberInfo.java
new file mode 100644
index 0000000000..1811b8e87d
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleVirtualNumberInfo.java
@@ -0,0 +1,26 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 虚拟号码信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class AfterSaleVirtualNumberInfo implements Serializable {
+ private static final long serialVersionUID = -5756618937333859985L;
+
+ /** 虚拟号码 */
+ @JsonProperty("virtual_tel_number")
+ private String virtualTelNumber;
+
+ /** 虚拟号码过期时间 */
+ @JsonProperty("virtual_tel_expire_time")
+ private Long virtualTelExpireTime;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleVirtualTelNumResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleVirtualTelNumResponse.java
new file mode 100644
index 0000000000..e659abf45c
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/AfterSaleVirtualTelNumResponse.java
@@ -0,0 +1,18 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class AfterSaleVirtualTelNumResponse extends WxStoreBaseResponse {
+ private static final long serialVersionUID = -2715343569103426942L;
+
+ @JsonProperty("virtual_tel_number")
+ private String virtualTelNumber;
+
+ @JsonProperty("virtual_tel_expire_time")
+ private Long virtualTelExpireTime;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/ExchangeSkuInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/ExchangeSkuInfo.java
new file mode 100644
index 0000000000..9998aead47
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/ExchangeSkuInfo.java
@@ -0,0 +1,14 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+
+@Data
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ExchangeSkuInfo implements Serializable {
+ private static final long serialVersionUID = 1L;
+ @JsonProperty("new_sku_id")
+ private String newSkuId;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeMerchantModifyParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeMerchantModifyParam.java
new file mode 100644
index 0000000000..1c6cea4938
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeMerchantModifyParam.java
@@ -0,0 +1,19 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class GuaranteeMerchantModifyParam extends GuaranteeOrderIdParam {
+ private static final long serialVersionUID = 9193536167701367687L;
+
+ @JsonProperty("bad_level")
+ private Integer badLevel;
+
+ @JsonProperty("merchant_remark")
+ private String merchantRemark;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeMerchantProofParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeMerchantProofParam.java
new file mode 100644
index 0000000000..972dacd2c7
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeMerchantProofParam.java
@@ -0,0 +1,19 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class GuaranteeMerchantProofParam extends GuaranteeOrderIdParam {
+ private static final long serialVersionUID = -2365495841866160967L;
+
+ @JsonProperty("content")
+ private String content;
+
+ @JsonProperty("pic_list")
+ private java.util.List picList;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeModifyRequest.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeModifyRequest.java
new file mode 100644
index 0000000000..7226ccb266
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeModifyRequest.java
@@ -0,0 +1,34 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * 商家协商保障单请求参数。
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@JsonInclude(Include.NON_NULL)
+public class GuaranteeModifyRequest extends GuaranteeOrderIdParam {
+
+ private static final long serialVersionUID = 4268864541609439068L;
+
+ /** 商品破损程度。 */
+ @JsonProperty("bad_level")
+ private Integer badLevel;
+
+ /** 商家协商备注。 */
+ @JsonProperty("merchant_remark")
+ private String merchantRemark;
+
+ public GuaranteeModifyRequest(String guaranteeOrderId, Integer badLevel, String merchantRemark) {
+ super(guaranteeOrderId);
+ this.badLevel = badLevel;
+ this.merchantRemark = merchantRemark;
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeOrderIdParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeOrderIdParam.java
new file mode 100644
index 0000000000..f06d76ab4f
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeOrderIdParam.java
@@ -0,0 +1,25 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 保障单号参数。
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(Include.NON_NULL)
+public class GuaranteeOrderIdParam implements Serializable {
+
+ private static final long serialVersionUID = -6638498743123537413L;
+
+ /** 保障单号。 */
+ @JsonProperty("guarantee_order_id")
+ private String guaranteeOrderId;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeOrderInfoResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeOrderInfoResponse.java
new file mode 100644
index 0000000000..4b3b2e4b01
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeOrderInfoResponse.java
@@ -0,0 +1,59 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 保障单详情响应。
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class GuaranteeOrderInfoResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 7354122991247317485L;
+
+ /** 保障单详情。 */
+ @JsonProperty("guarantee_order")
+ private GuaranteeOrder guaranteeOrder;
+
+ /**
+ * 保障单详情。
+ */
+ @Data
+ @NoArgsConstructor
+ public static class GuaranteeOrder implements Serializable {
+
+ private static final long serialVersionUID = -2398976447575813507L;
+
+ /** 保障单号。 */
+ @JsonProperty("guarantee_order_id")
+ private String guaranteeOrderId;
+
+ /** 保障单状态。 */
+ @JsonProperty("status")
+ private String status;
+
+ /** 商品信息。 */
+ @JsonProperty("product_info")
+ private ProductInfo productInfo;
+ }
+
+ /**
+ * 详情商品信息。
+ */
+ @Data
+ @NoArgsConstructor
+ public static class ProductInfo implements Serializable {
+
+ private static final long serialVersionUID = -2455740986246085934L;
+
+ /** 商品 SPU ID。 */
+ @JsonProperty("product_id")
+ private String productId;
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeOrderListParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeOrderListParam.java
new file mode 100644
index 0000000000..a53a3af203
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeOrderListParam.java
@@ -0,0 +1,44 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 保障单列表请求参数。
+ */
+@Data
+@NoArgsConstructor
+@JsonInclude(Include.NON_NULL)
+public class GuaranteeOrderListParam implements Serializable {
+
+ private static final long serialVersionUID = 1622570776364341988L;
+
+ @JsonProperty("guarantee_order_id_list")
+ private List guaranteeOrderIdList;
+
+ @JsonProperty("order_id_list")
+ private List orderIdList;
+
+ @JsonProperty("type")
+ private Integer type;
+
+ @JsonProperty("begin_time")
+ private Long beginTime;
+
+ @JsonProperty("end_time")
+ private Long endTime;
+
+ @JsonProperty("status_list")
+ private String statusList;
+
+ @JsonProperty("offset")
+ private Integer offset;
+
+ @JsonProperty("limit")
+ private Integer limit;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeOrderListResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeOrderListResponse.java
new file mode 100644
index 0000000000..718ced98a2
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeOrderListResponse.java
@@ -0,0 +1,64 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 保障单列表响应。
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class GuaranteeOrderListResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 9105476087203713187L;
+
+ /** 保障单总数。 */
+ @JsonProperty("total_num")
+ private Integer totalNum;
+
+ /** 保障单列表。 */
+ @JsonProperty("guarantee_order_list")
+ private List guaranteeOrderList;
+
+ /**
+ * 保障单列表项。
+ */
+ @Data
+ @NoArgsConstructor
+ public static class GuaranteeOrder implements Serializable {
+
+ private static final long serialVersionUID = 7151952524213202281L;
+
+ /** 保障单号。 */
+ @JsonProperty("guarantee_order_id")
+ private String guaranteeOrderId;
+
+ /** 保障单状态。 */
+ @JsonProperty("status")
+ private String status;
+
+ /** 商品信息列表。 */
+ @JsonProperty("product_info")
+ private List productInfo;
+ }
+
+ /**
+ * 列表商品信息。
+ */
+ @Data
+ @NoArgsConstructor
+ public static class ProductInfo implements Serializable {
+
+ private static final long serialVersionUID = -2565763879505631638L;
+
+ /** 商品 SPU ID。 */
+ @JsonProperty("product_id")
+ private String productId;
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeOrderResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeOrderResponse.java
new file mode 100644
index 0000000000..78c5666bba
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeOrderResponse.java
@@ -0,0 +1,16 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.JsonNode;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class GuaranteeOrderResponse extends WxStoreBaseResponse {
+ private static final long serialVersionUID = 3977781489692530604L;
+
+ @JsonProperty("guarantee_order")
+ private JsonNode guaranteeOrder;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeProofRequest.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeProofRequest.java
new file mode 100644
index 0000000000..3615bd5a57
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeProofRequest.java
@@ -0,0 +1,35 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * 商家举证保障单请求参数。
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@JsonInclude(Include.NON_NULL)
+public class GuaranteeProofRequest extends GuaranteeOrderIdParam {
+
+ private static final long serialVersionUID = 6599721896742974275L;
+
+ /** 举证内容。 */
+ @JsonProperty("content")
+ private String content;
+
+ /** 举证图片 media_id 列表。 */
+ @JsonProperty("pic_list")
+ private List picList;
+
+ public GuaranteeProofRequest(String guaranteeOrderId, String content, List picList) {
+ super(guaranteeOrderId);
+ this.content = content;
+ this.picList = picList;
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeRefuseRequest.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeRefuseRequest.java
new file mode 100644
index 0000000000..8f12013daf
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/GuaranteeRefuseRequest.java
@@ -0,0 +1,35 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * 商家拒绝保障单请求参数。
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@JsonInclude(Include.NON_NULL)
+public class GuaranteeRefuseRequest extends GuaranteeOrderIdParam {
+
+ private static final long serialVersionUID = -6905594717805091393L;
+
+ /** 拒绝原因。 */
+ @JsonProperty("reason")
+ private String reason;
+
+ /** 拒绝凭证图片 media_id 列表。 */
+ @JsonProperty("pic_list")
+ private List picList;
+
+ public GuaranteeRefuseRequest(String guaranteeOrderId, String reason, List picList) {
+ super(guaranteeOrderId);
+ this.reason = reason;
+ this.picList = picList;
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/MerchantUploadInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/MerchantUploadInfo.java
new file mode 100644
index 0000000000..71a8993e68
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/MerchantUploadInfo.java
@@ -0,0 +1,27 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 商家上传的信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class MerchantUploadInfo implements Serializable {
+
+ private static final long serialVersionUID = 373513419356603563L;
+ /** 拒绝原因 */
+ @JsonProperty("reject_reason")
+ private String rejectReason;
+
+ /** 退款凭证 */
+ @JsonProperty("refund_certificates")
+ private List refundCertificates;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/RefundEvidenceParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/RefundEvidenceParam.java
new file mode 100644
index 0000000000..c031444e92
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/RefundEvidenceParam.java
@@ -0,0 +1,35 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 退款凭证信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class RefundEvidenceParam implements Serializable {
+
+ private static final long serialVersionUID = 2117305897849528009L;
+ /** 售后单号 */
+ @JsonProperty("after_sale_order_id")
+ private String afterSaleOrderId;
+
+ /** 描述 */
+ @JsonProperty("desc")
+ private String desc;
+
+ /** 凭证图片列表 */
+ @JsonProperty("refund_certificates")
+ private List certificates;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/RefundInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/RefundInfo.java
new file mode 100644
index 0000000000..7f91b0bf1f
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/RefundInfo.java
@@ -0,0 +1,25 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 退款信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class RefundInfo implements Serializable {
+
+ private static final long serialVersionUID = -6994243947898889309L;
+ /** 退款金额(分) */
+ @JsonProperty("amount")
+ private Integer amount;
+
+ /** 标明售后单退款直接原因, 枚举值详情请参考 {@link com.binarywang.wxjava.store.enums.RefundReason} */
+ @JsonProperty("refund_reason")
+ private Integer refundReason;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/RefundResp.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/RefundResp.java
new file mode 100644
index 0000000000..b3ffb10d2a
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/RefundResp.java
@@ -0,0 +1,30 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 退款结果
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class RefundResp implements Serializable {
+
+ private static final long serialVersionUID = 6549707043779644156L;
+ /** code */
+ @JsonProperty("code")
+ private String code;
+
+ /** ret */
+ @JsonProperty("ret")
+ private Integer ret;
+
+ /** message */
+ @JsonProperty("message")
+ private String message;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/ReturnInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/ReturnInfo.java
new file mode 100644
index 0000000000..b5077f0e21
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/ReturnInfo.java
@@ -0,0 +1,29 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 用户退货信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class ReturnInfo implements Serializable {
+
+ private static final long serialVersionUID = 1643844664701376892L;
+ /** 快递单号 */
+ @JsonProperty("waybill_id")
+ private String waybillId;
+
+ /** 物流公司id */
+ @JsonProperty("delivery_id")
+ private String deliveryId;
+
+ /** 物流公司名称 */
+ @JsonProperty("delivery_name")
+ private String deliveryName;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/SyncWorkOrderParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/SyncWorkOrderParam.java
new file mode 100644
index 0000000000..15ddd0dea1
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/after/SyncWorkOrderParam.java
@@ -0,0 +1,79 @@
+package com.binarywang.wxjava.store.bean.after;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.Data;
+
+@Data
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class SyncWorkOrderParam implements Serializable {
+ private static final long serialVersionUID = -7336088606071452113L;
+
+ @JsonProperty("complaint_id")
+ private String complaintId;
+
+ @JsonProperty("work_order_info")
+ private WorkOrderInfo workOrderInfo;
+
+ @Data
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ public static class WorkOrderInfo implements Serializable {
+ private static final long serialVersionUID = 8573016851280130766L;
+
+ @JsonProperty("version")
+ private Integer version;
+
+ @JsonProperty("items")
+ private List items;
+
+ @JsonProperty("work_order_id")
+ private String workOrderId;
+ }
+
+ @Data
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ public static class WorkOrderItem implements Serializable {
+ private static final long serialVersionUID = 6925580701152256736L;
+
+ @JsonProperty("status")
+ private Integer status;
+
+ @JsonProperty("desc")
+ private String desc;
+
+ @JsonProperty("update_time")
+ private Long updateTime;
+
+ @JsonProperty("result_type")
+ private Integer resultType;
+
+ @JsonProperty("refund_amount")
+ private Integer refundAmount;
+
+ @JsonProperty("media_list")
+ private List mediaList;
+ }
+
+ @Data
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ public static class WorkOrderMedia implements Serializable {
+ private static final long serialVersionUID = 2258990333977395631L;
+
+ @JsonProperty("type")
+ private Integer type;
+
+ @JsonProperty("picture")
+ private WorkOrderPicture picture;
+ }
+
+ @Data
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ public static class WorkOrderPicture implements Serializable {
+ private static final long serialVersionUID = -3339842364541603289L;
+
+ @JsonProperty("tmp_media_id")
+ private String tmpMediaId;
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/AuditApplyResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/AuditApplyResponse.java
new file mode 100644
index 0000000000..6ebb6adc78
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/AuditApplyResponse.java
@@ -0,0 +1,24 @@
+package com.binarywang.wxjava.store.bean.audit;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 审核提交结果响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class AuditApplyResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = -3950614749162384497L;
+
+ /** 类目列表 */
+ @JsonProperty("audit_id")
+ private String auditId;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/AuditResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/AuditResponse.java
new file mode 100644
index 0000000000..c9ef3eb3ff
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/AuditResponse.java
@@ -0,0 +1,24 @@
+package com.binarywang.wxjava.store.bean.audit;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 审核结果响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class AuditResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 9218713381520774914L;
+
+ /** 审核结果 1:审核中,3:审核成功,2:审核拒绝,12:主动取消申请单 */
+ @JsonProperty("data")
+ private AuditResult data;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/AuditResult.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/AuditResult.java
new file mode 100644
index 0000000000..1293577289
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/AuditResult.java
@@ -0,0 +1,26 @@
+package com.binarywang.wxjava.store.bean.audit;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 审核结果
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class AuditResult implements Serializable {
+
+ private static final long serialVersionUID = 1846416634865665240L;
+
+ /** 审核状态, 0:审核中,1:审核成功,9:审核拒绝, 12:主动取消 */
+ @JsonProperty("status")
+ private Integer status;
+
+ /** 如果审核拒绝,返回拒绝原因 */
+ @JsonProperty("reject_reason")
+ private String rejectReason;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/CategoryAuditInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/CategoryAuditInfo.java
new file mode 100644
index 0000000000..43e1217918
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/CategoryAuditInfo.java
@@ -0,0 +1,79 @@
+package com.binarywang.wxjava.store.bean.audit;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 类目审核信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class CategoryAuditInfo implements Serializable {
+
+ private static final long serialVersionUID = -8792967130645424788L;
+
+ /** 一级类目,字符类型,最长不超过10 */
+ @JsonProperty("level1")
+ private Long level1;
+
+ /** 二级类目,字符类型,最长不超过10 */
+ @JsonProperty("level2")
+ private Long level2;
+
+ /** 三级类目,字符类型,最长不超过10 */
+ @JsonProperty("level3")
+ private Long level3;
+
+ /** 新类目树类目ID */
+ @JsonProperty("cats_v2")
+ private List catsV2;
+
+ /** 资质材料,图片fileid,图片类型,最多不超过10张 */
+ @JsonProperty("certificate")
+ private List certificates;
+
+ /** 报备函,图片fileid,图片类型,最多不超过10张 */
+ @JsonProperty("baobeihan")
+ private List baobeihan;
+
+ /** 经营证明,图片fileid,图片类型,最多不超过10张 */
+ @JsonProperty("jingyingzhengming")
+ private List jingyingzhengming;
+
+ /** 带货口碑,图片fileid,图片类型,最多不超过10张 */
+ @JsonProperty("daihuokoubei")
+ private List daihuokoubei;
+
+ /** 入住资质,图片fileid,图片类型,最多不超过10张 */
+ @JsonProperty("ruzhuzhizhi")
+ private List ruzhuzhizhi;
+
+ /** 经营流水,图片fileid,图片类型,最多不超过10张 */
+ @JsonProperty("jingyingliushui")
+ private List jingyingliushui;
+
+ /** 补充材料,图片fileid,图片类型,最多不超过10张 */
+ @JsonProperty("buchongcailiao")
+ private List buchongcailiao;
+
+ /** 经营平台,仅支持taobao,jd,douyin,kuaishou,pdd,other这些取值 */
+ @JsonProperty("jingyingpingtai")
+ private String jingyingpingtai;
+
+ /** 账号名称 */
+ @JsonProperty("zhanghaomingcheng")
+ private String zhanghaomingcheng;
+
+ /** 品牌列表,获取类目信息中的attr.is_limit_brand为true时必传 */
+ @JsonProperty("brand_list")
+ private List brandList;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/CategoryAuditRequest.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/CategoryAuditRequest.java
new file mode 100644
index 0000000000..597f4fd3ae
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/CategoryAuditRequest.java
@@ -0,0 +1,23 @@
+package com.binarywang.wxjava.store.bean.audit;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 类目审核信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class CategoryAuditRequest implements Serializable {
+
+ private static final long serialVersionUID = -1151634735247657643L;
+
+ @JsonProperty("category_info")
+ private CategoryAuditInfo categoryInfo;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/CategoryBrand.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/CategoryBrand.java
new file mode 100644
index 0000000000..5f4e6fdc3e
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/CategoryBrand.java
@@ -0,0 +1,23 @@
+package com.binarywang.wxjava.store.bean.audit;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 分类中的品牌
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class CategoryBrand implements Serializable {
+ private static final long serialVersionUID = -5437441266080209907L;
+
+ /** 品牌ID,是店铺申请且已审核通过的品牌ID */
+ @JsonProperty("brand_id")
+ private String brand_id;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/CatsV2.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/CatsV2.java
new file mode 100644
index 0000000000..341b4fa1ec
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/CatsV2.java
@@ -0,0 +1,22 @@
+package com.binarywang.wxjava.store.bean.audit;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 新类目树类目ID
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class CatsV2 implements Serializable {
+ private static final long serialVersionUID = -2484092110142035589L;
+
+ /** 新类目树类目ID */
+ @JsonProperty("cat_id")
+ private String catId;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/ProductAuditInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/ProductAuditInfo.java
new file mode 100644
index 0000000000..782445ef86
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/audit/ProductAuditInfo.java
@@ -0,0 +1,37 @@
+package com.binarywang.wxjava.store.bean.audit;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 商品审核信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class ProductAuditInfo implements Serializable {
+
+ private static final long serialVersionUID = -5264206679057480206L;
+
+ /** 审核单id */
+ @JsonProperty("audit_id")
+ private String auditId;
+
+ /** 上一次提交时间, yyyy-MM-dd HH:mm:ss */
+ @JsonProperty("submit_time")
+ private String submitTime;
+
+ /** 上一次审核时间, yyyy-MM-dd HH:mm:ss */
+ @JsonProperty("audit_time")
+ private String auditTime;
+
+ /** 拒绝理由,只有edit_status为3时出现 */
+ @JsonProperty("reject_reason")
+ private String rejectReason;
+
+ @JsonProperty("func_type")
+ private Integer funcType;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/base/AddressInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/base/AddressInfo.java
new file mode 100644
index 0000000000..d2f0aa4023
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/base/AddressInfo.java
@@ -0,0 +1,70 @@
+package com.binarywang.wxjava.store.bean.base;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * 地址信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+public class AddressInfo implements Serializable {
+
+ private static final long serialVersionUID = 6928300709804576100L;
+
+ /** 收件人姓名 */
+ @JsonProperty("user_name")
+ private String userName;
+
+ /** 收件人手机号码 */
+ @JsonProperty("tel_number")
+ private String telNumber;
+
+ /** 邮编 */
+ @JsonProperty("postal_code")
+ private String postalCode;
+
+ /** 省份 */
+ @JsonProperty("province_name")
+ private String provinceName;
+
+ /** 城市 */
+ @JsonProperty("city_name")
+ private String cityName;
+
+ /** 区 */
+ @JsonProperty("county_name")
+ private String countyName;
+
+ /** 详细地址 */
+ @JsonProperty("detail_info")
+ private String detailInfo;
+
+ /** 国家码 */
+ @JsonProperty("national_code")
+ private String nationalCode;
+
+ /** 门牌号码 */
+ @JsonProperty("house_number")
+ private String houseNumber;
+
+ /** 纬度 */
+ @JsonProperty("lat")
+ private Double lat;
+
+ /** 经度 */
+ @JsonProperty("lng")
+ private Double lng;
+
+ public AddressInfo(String provinceName, String cityName, String countyName) {
+ this.provinceName = provinceName;
+ this.cityName = cityName;
+ this.countyName = countyName;
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/base/AttrInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/base/AttrInfo.java
new file mode 100644
index 0000000000..cae90873a5
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/base/AttrInfo.java
@@ -0,0 +1,28 @@
+package com.binarywang.wxjava.store.bean.base;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 属性
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AttrInfo implements Serializable {
+
+ private static final long serialVersionUID = -790859309885311785L;
+
+ /** 销售属性key(自定义),字符类型,最长不超过40 */
+ @JsonProperty("attr_key")
+ private String key;
+
+ /** 销售属性value(自定义),字符类型,最长不超过40,相同key下不能超过100个不同value */
+ @JsonProperty("attr_value")
+ private String value;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/base/OffsetParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/base/OffsetParam.java
new file mode 100644
index 0000000000..3f5f141fc5
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/base/OffsetParam.java
@@ -0,0 +1,30 @@
+package com.binarywang.wxjava.store.bean.base;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 偏移参数
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(Include.NON_NULL)
+public class OffsetParam implements Serializable {
+
+ private static final long serialVersionUID = -1268796871980541662L;
+
+ /** 起始位置 */
+ @JsonProperty("offset")
+ private Integer offset;
+ /** 拉取个数 */
+ @JsonProperty("limit")
+ private Integer limit;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/base/PageParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/base/PageParam.java
new file mode 100644
index 0000000000..98a22d4158
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/base/PageParam.java
@@ -0,0 +1,28 @@
+package com.binarywang.wxjava.store.bean.base;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 分页参数
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class PageParam implements Serializable {
+
+ private static final long serialVersionUID = -2606033044242617845L;
+
+ /** 页码 */
+ @JsonProperty("page")
+ protected Integer page;
+
+ /** 每页订单数,上限100 */
+ @JsonProperty("page_size")
+ protected Integer pageSize;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/base/StreamPageParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/base/StreamPageParam.java
new file mode 100644
index 0000000000..caf71db7f0
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/base/StreamPageParam.java
@@ -0,0 +1,28 @@
+package com.binarywang.wxjava.store.bean.base;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 流式分页参数
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class StreamPageParam implements Serializable {
+
+ private static final long serialVersionUID = -4098060161712929196L;
+
+ /** 每页订单数,上限100 */
+ @JsonProperty("page_size")
+ protected Integer pageSize;
+
+ /** 分页参数,上一页请求返回 */
+ @JsonProperty("next_key")
+ protected String nextKey;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/base/TimeRange.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/base/TimeRange.java
new file mode 100644
index 0000000000..2f18b31928
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/base/TimeRange.java
@@ -0,0 +1,26 @@
+package com.binarywang.wxjava.store.bean.base;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 时间范围
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class TimeRange implements Serializable {
+
+ private static final long serialVersionUID = -8149679871789511479L;
+
+ /** 开始时间 秒级时间戳 */
+ @JsonProperty("start_time")
+ private Long startTime;
+
+ /** 结束时间 秒级时间戳 */
+ @JsonProperty("end_time")
+ private Long endTime;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/base/WxStoreBaseResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/base/WxStoreBaseResponse.java
new file mode 100644
index 0000000000..f566b0b22b
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/base/WxStoreBaseResponse.java
@@ -0,0 +1,68 @@
+package com.binarywang.wxjava.store.bean.base;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.StringJoiner;
+
+/**
+ * 微信小店 基础响应
+ *
+ * @author Zeyes
+ */
+public class WxStoreBaseResponse implements Serializable {
+
+ private static final long serialVersionUID = 3141420881984171781L;
+
+ /** 请求成功状态码 */
+ public static final int SUCCESS_CODE = 0;
+ public static final int INTERNAL_ERROR_CODE = -99;
+
+ /**
+ * 错误码
+ */
+ @JsonProperty("errcode")
+ protected int errCode;
+
+ /**
+ * 错误消息
+ */
+ @JsonProperty("errmsg")
+ protected String errMsg;
+
+ /**
+ * 错误代码 + 错误消息
+ *
+ * @return String
+ */
+ public String errorMessage() {
+ return "errcode: " + errCode + ", errmsg: " + errMsg;
+ }
+
+ public boolean isSuccess() {
+ return errCode == SUCCESS_CODE;
+ }
+
+ public int getErrCode() {
+ return errCode;
+ }
+
+ public void setErrCode(int errCode) {
+ this.errCode = errCode;
+ }
+
+ public String getErrMsg() {
+ return errMsg;
+ }
+
+ public void setErrMsg(String errMsg) {
+ this.errMsg = errMsg;
+ }
+
+ @Override
+ public String toString() {
+ return new StringJoiner(", ", WxStoreBaseResponse.class.getSimpleName() + "[", "]")
+ .add("errCode=" + errCode)
+ .add("errMsg='" + errMsg + "'")
+ .toString();
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BasicBrand.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BasicBrand.java
new file mode 100644
index 0000000000..589505b89d
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BasicBrand.java
@@ -0,0 +1,30 @@
+package com.binarywang.wxjava.store.bean.brand;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 基础品牌信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class BasicBrand implements Serializable {
+
+ private static final long serialVersionUID = -1991771439710177859L;
+
+ /** 品牌库中的品牌编号(Long) */
+ @JsonProperty("brand_id")
+ private String brandId;
+
+ /** 品牌商标中文名 */
+ @JsonProperty("ch_name")
+ private String chName;
+
+ /** 品牌商标英文名 */
+ @JsonProperty("en_name")
+ private String enName;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/Brand.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/Brand.java
new file mode 100644
index 0000000000..aa83ae1aaf
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/Brand.java
@@ -0,0 +1,45 @@
+package com.binarywang.wxjava.store.bean.brand;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * 品牌信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class Brand extends BasicBrand {
+
+ private static final long serialVersionUID = 4648597514861057019L;
+
+ /** 商标分类号, 取值范围1-45 */
+ @JsonProperty("classification_no")
+ private String classificationNo;
+
+ /** 商标类型, 取值1:R标; 2: TM标 */
+ @JsonProperty("trade_mark_symbol")
+ private Integer tradeMarkSymbol;
+
+ /** 商标注册信息 */
+ @JsonProperty("register_details")
+ private BrandRegisterDetail registerDetail;
+
+ /** 商标申请信息 */
+ @JsonProperty("application_details")
+ private BrandApplicationDetail applicationDetail;
+
+ /** 商标授权信息, 取值1:自有品牌; 2: 授权品牌 */
+ @JsonProperty("grant_type")
+ private Integer grantType;
+
+ /** 授权品牌信息 */
+ @JsonProperty("grant_details")
+ private BrandGrantDetail grantDetail;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandApplicationDetail.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandApplicationDetail.java
new file mode 100644
index 0000000000..b2bbd77794
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandApplicationDetail.java
@@ -0,0 +1,31 @@
+package com.binarywang.wxjava.store.bean.brand;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 商标申请信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class BrandApplicationDetail implements Serializable {
+
+ private static final long serialVersionUID = 2145344855482129473L;
+
+ /** 商标申请受理时间, TM标时必填 */
+ @JsonProperty("acceptance_time")
+ private Long acceptanceTime;
+
+ /** 商标注册申请受理书file_id, TM标时必填, 限制最多传1张, 需要先调用“资质上传”接口上传资质图片 */
+ @JsonProperty("acceptance_certification")
+ private List acceptanceCertification;
+
+ /** 商标申请号, TM标时必填 */
+ @JsonProperty("acceptance_no")
+ private String acceptanceNo;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandApplyListResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandApplyListResponse.java
new file mode 100644
index 0000000000..70e28b3d40
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandApplyListResponse.java
@@ -0,0 +1,33 @@
+package com.binarywang.wxjava.store.bean.brand;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 品牌申请列表响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class BrandApplyListResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 243021267020609148L;
+
+ /** 品牌资质申请信息 */
+ @JsonProperty("brands")
+ private List brands;
+
+ /** 本次翻页的上下文,用于请求下一页 */
+ @JsonProperty("next_key")
+ private String nextKey;
+
+ /** 品牌资质总数 */
+ @JsonProperty("total_num")
+ private Integer totalNum;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandGrantDetail.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandGrantDetail.java
new file mode 100644
index 0000000000..a97596b5bb
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandGrantDetail.java
@@ -0,0 +1,44 @@
+package com.binarywang.wxjava.store.bean.brand;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 商标授权信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class BrandGrantDetail implements Serializable {
+
+ private static final long serialVersionUID = 3537812707384823606L;
+
+ /** 品牌销售授权书的file_id, 授权品牌必填, 限制最多传9张, 需要先调用“资质上传”接口上传资质图片 */
+ @JsonProperty("grant_certifications")
+ private List grantCertifications;
+
+ /** 授权级数, 授权品牌必填, 取值1-3 */
+ @JsonProperty("grant_level")
+ private Integer grantLevel;
+
+ /** 授权有效期, 开始时间, 长期有效可不填 */
+ @JsonProperty("start_time")
+ private Long startTime;
+
+ /** 授权有效期, 结束时间, 长期有效可不填 */
+ @JsonProperty("end_time")
+ private Long endTime;
+
+ /** 是否长期有效 */
+ @JsonProperty("is_permanent")
+ private boolean permanent;
+
+ /** 品牌权利人证件照的file_id, 限制最多传2张, 需要先调用“资质上传”接口上传资质图片 */
+ @JsonProperty("brand_owner_id_photos")
+ private List brandOwnerIdPhotos;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandInfo.java
new file mode 100644
index 0000000000..5f59a23b7c
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandInfo.java
@@ -0,0 +1,52 @@
+package com.binarywang.wxjava.store.bean.brand;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * 品牌信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class BrandInfo extends Brand {
+
+ private static final long serialVersionUID = 5464505958132626159L;
+
+ /** 申请单状态 1审核中 2审核失败 3已生效 4已撤回 5即将过期(不影响商品售卖) 6已过期 */
+ @JsonProperty("status")
+ private Integer status;
+
+ /** 创建时间 */
+ @JsonProperty("create_time")
+ private Long createTime;
+
+ /** 更新时间 */
+ @JsonProperty("update_time")
+ private Long updateTime;
+
+ /** 审核结果 */
+ @JsonProperty("audit_result")
+ private AuditResult auditResult;
+
+ /** 审核结果 */
+ @Data
+ @NoArgsConstructor
+ public static class AuditResult implements Serializable {
+
+ private static final long serialVersionUID = 3936802571381636820L;
+ /** 提审的审核单ID */
+ @JsonProperty("audit_id")
+ private String auditId;
+
+ /** 审核不通过的原因, 审核成功不返回 */
+ @JsonProperty("reject_reason")
+ private String rejectReason;
+ }
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandInfoResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandInfoResponse.java
new file mode 100644
index 0000000000..dc4dd980d7
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandInfoResponse.java
@@ -0,0 +1,24 @@
+package com.binarywang.wxjava.store.bean.brand;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 品牌响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class BrandInfoResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 2105745692451683517L;
+
+ /** 品牌信息 */
+ @JsonProperty("brand")
+ private BrandInfo brand;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandListResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandListResponse.java
new file mode 100644
index 0000000000..a7e771b884
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandListResponse.java
@@ -0,0 +1,33 @@
+package com.binarywang.wxjava.store.bean.brand;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 品牌列表响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class BrandListResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = -5335449078706304920L;
+
+ /** 品牌库中的品牌信息 */
+ @JsonProperty("brands")
+ private List brands;
+
+ /** 本次翻页的上下文,用于请求下一页 */
+ @JsonProperty("next_key")
+ private String nextKey;
+
+ /** 是否还有下一页内容 */
+ @JsonProperty("continue_flag")
+ private boolean continueFlag;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandParam.java
new file mode 100644
index 0000000000..4092d87c6a
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandParam.java
@@ -0,0 +1,26 @@
+package com.binarywang.wxjava.store.bean.brand;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 品牌参数
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class BrandParam implements Serializable {
+
+ private static final long serialVersionUID = -4894709391464428613L;
+
+ /** 品牌信息 */
+ @JsonProperty("brand")
+ private Brand brand;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandRegisterDetail.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandRegisterDetail.java
new file mode 100644
index 0000000000..6775be55e6
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandRegisterDetail.java
@@ -0,0 +1,48 @@
+package com.binarywang.wxjava.store.bean.brand;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 品牌注册信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class BrandRegisterDetail implements Serializable {
+
+ private static final long serialVersionUID = 1169957179510362405L;
+
+ /** 商标注册人, R标时必填 */
+ @JsonProperty("registrant")
+ private String registrant;
+
+ /** 商标注册号, R标时必填 */
+ @JsonProperty("register_no")
+ private String registerNo;
+
+ /** 商标注册有效期(时间戳秒), 开始时间, 长期有效可不填 */
+ @JsonProperty("start_time")
+ private Long startTime;
+
+ /** 商标注册有效期(时间戳秒), 结束时间, 长期有效可不填 */
+ @JsonProperty("end_time")
+ private Long endTime;
+
+ /** 是否长期有效 */
+ @JsonProperty("is_permanent")
+ private boolean permanent;
+
+ /** 商标注册证的file_id, R标时必填, 限制最多传1张, 需要先调用“资质上传”接口上传资质图片 */
+ @JsonProperty("register_certifications")
+ private List registerCertifications;
+
+ /** 变更/续展证明的file_id, 限制最多传5张, 需要先调用“资质上传”接口上传资质图片 */
+ @JsonProperty("renew_certifications")
+ private List renewCertifications;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandSearchParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandSearchParam.java
new file mode 100644
index 0000000000..646fb1f19f
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/brand/BrandSearchParam.java
@@ -0,0 +1,31 @@
+package com.binarywang.wxjava.store.bean.brand;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.binarywang.wxjava.store.bean.base.StreamPageParam;
+
+/**
+ * 品牌搜索参数
+ *
+ * @author Zeyes
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class BrandSearchParam extends StreamPageParam {
+
+ private static final long serialVersionUID = 5961201403338269712L;
+ /** 审核单状态, 不填默认拉全部商品 */
+ @JsonProperty("status")
+ private Integer status;
+
+ public BrandSearchParam() {
+ }
+
+ public BrandSearchParam(Integer pageSize, String nextKey, Integer status) {
+ super(pageSize, nextKey);
+ this.status = status;
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/AccountCategoryResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/AccountCategoryResponse.java
new file mode 100644
index 0000000000..14d4bf4cb1
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/AccountCategoryResponse.java
@@ -0,0 +1,25 @@
+package com.binarywang.wxjava.store.bean.category;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 分类响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class AccountCategoryResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 3486089711447908477L;
+
+ /** 类目列表 */
+ @JsonProperty("data")
+ private List categories;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/CategoryAndQualificationList.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/CategoryAndQualificationList.java
new file mode 100644
index 0000000000..055e8a1b82
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/CategoryAndQualificationList.java
@@ -0,0 +1,23 @@
+package com.binarywang.wxjava.store.bean.category;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 分类资质响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class CategoryAndQualificationList implements Serializable {
+
+ private static final long serialVersionUID = 4245906598437404655L;
+
+ /** 分类列表 */
+ @JsonProperty("cat_and_qua")
+ private List list;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/CategoryDetailResult.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/CategoryDetailResult.java
new file mode 100644
index 0000000000..7a982aecb7
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/CategoryDetailResult.java
@@ -0,0 +1,255 @@
+package com.binarywang.wxjava.store.bean.category;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class CategoryDetailResult extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 4657778764371047619L;
+
+ @JsonProperty("info")
+ private Info info;
+
+ @JsonProperty("attr")
+ private Attr attr;
+
+ @JsonProperty("product_qua_list")
+ private List productQuaList;
+
+
+ @Data
+ @NoArgsConstructor
+ public static class Info implements Serializable {
+
+ /** 类目ID */
+ @JsonProperty("cat_id")
+ private String id;
+ /** 类目名称 */
+ @JsonProperty("name")
+ private String name;
+ }
+
+ @Data
+ @NoArgsConstructor
+ public static class Attr implements Serializable {
+
+ /** 是否支持虚拟发货 */
+ @JsonProperty("shop_no_shipment")
+ private Boolean shopNoShipment;
+
+ /** 是否定向准入 */
+ @JsonProperty("access_permit_required")
+ private Boolean accessPermitRequired;
+
+ /** 是否支持预售 */
+ @JsonProperty("pre_sale")
+ private Boolean preSale;
+
+ /** 是否必须支持7天无理由退货 */
+ @JsonProperty("seven_day_return")
+ private Boolean sevenDayReturn;
+
+ /** 定准类目的品牌ID */
+ @JsonProperty("brand_list")
+ private List brands;
+
+ /** 类目关联的保证金,单位分 */
+ @JsonProperty("deposit")
+ private Long deposit;
+
+ /** 产品属性 */
+ @JsonProperty("product_attr_list")
+ private List productAttrs;
+
+ /** 销售属性 */
+ @JsonProperty("sale_attr_list")
+ private List saleAttrs;
+
+ /** 佣金信息 */
+ @JsonProperty("transactionfee_info")
+ private FeeInfo feeInfo;
+
+ /** 折扣规则 */
+ @JsonProperty("coupon_rule")
+ private CouponRule couponRule;
+
+ /** 价格下限,单位分,商品售价不可低于此价格 */
+ @JsonProperty("floor_price")
+ private Long floorPrice;
+
+ /** 收货时间选项 */
+ @JsonProperty("confirm_receipt_days")
+ private List confirmReceiptDays;
+
+ /** 是否品牌定向准入,即该类目一定要有品牌 */
+ @JsonProperty("is_limit_brand")
+ private Boolean limitBrand;
+
+ /** 商品编辑要求 */
+ @JsonProperty("product_requirement")
+ private ProductRequirement productRequirement;
+
+ /** 尺码表 */
+ @JsonProperty("size_chart")
+ private SizeChart sizeChart;
+
+ /** 放心买必须打开坏损包赔 */
+ @JsonProperty("is_confidence_require_bad_must_pay")
+ private Boolean confidenceRequireBadMustPay;
+
+ /** 资质信息 */
+ @JsonProperty("product_qua_list")
+ private List productQuaList;
+ }
+
+ @Data
+ @NoArgsConstructor
+ public static class BrandInfo implements Serializable {
+
+ /** 定准类目的品牌ID */
+ @JsonProperty("brand_id")
+ private String id;
+ }
+
+ @Data
+ @NoArgsConstructor
+ public static class ProductAttr implements Serializable {
+
+ /** 类目必填项名称 */
+ @JsonProperty("name")
+ private String name;
+
+ /** 属性类型,string为自定义,select_one为多选一,该参数短期保留,用于兼容。将来废弃,使用type_v2替代 */
+ @JsonProperty("type")
+ private String type;
+
+ /**
+ * 属性类型v2,共7种类型
+ * string:文本
+ * select_one:单选,选项列表在value中
+ * select_many:多选,选项列表在value中
+ * integer:整数,数字必须为整数
+ * decimal4:小数(4 位精度),小数部分最多 4 位
+ * integer_unit:整数 + 单位,单位的选项列表在value中
+ * decimal4_unit:小数(4 位精度) + 单位,单位的选项列表在value中
+ */
+ @JsonProperty("type_v2")
+ private String typeV2;
+
+ /**
+ * 可选项列表,当type为:select_one/select_many时,为选项列表
+ * 当type为:integer_unit/decimal4_unit时,为单位的列表
+ */
+ @JsonProperty("value")
+ private String value;
+
+ /** 是否类目必填项 */
+ @JsonProperty("is_required")
+ private Boolean required;
+
+ /** 输入提示,请填写提示语 */
+ @JsonProperty("hint")
+ private String hint;
+
+ /** 允许添加选项,当type为select_one/select_many时,标识是否允许添加新选项(value中不存在的选项) */
+ @JsonProperty("append_allowed")
+ private Boolean appendAllowed;
+ }
+
+ @Data
+ @NoArgsConstructor
+ public static class FeeInfo implements Serializable {
+
+ /** 类目实收的交易佣金比例,单位万分比 */
+ @JsonProperty("basis_point")
+ private Integer basisPoint;
+
+ /** 类目原始佣金比例,单位万分比 */
+ @JsonProperty("original_basis_point")
+ private Integer originalBasisPoint;
+
+ /** 佣金激励类型,0:无激励措施,1:新店佣金减免 */
+ @JsonProperty("incentive_type")
+ private Integer incentiveType;
+ }
+
+ @Data
+ @NoArgsConstructor
+ public static class CouponRule implements Serializable {
+
+ /** 最高的折扣比例,百分比, 0表示无限制 */
+ @JsonProperty("discount_ratio_limit")
+ private Integer supportCoupon;
+
+ /** 最高的折扣金额,单位分,0表示无限制 */
+ @JsonProperty("discount_limit")
+ private Integer couponType;
+ }
+
+ @Data
+ @NoArgsConstructor
+ public static class ProductRequirement implements Serializable {
+ /** 商品标题的编辑要求 */
+ @JsonProperty("product_title_requirement")
+ private String productTitleRequirement;
+
+ /** 商品主图的编辑要求 */
+ @JsonProperty("product_img_requirement")
+ private String productImgRequirement;
+
+ /** 商品描述的编辑要求 */
+ @JsonProperty("product_desc_requirement")
+ private String productDescRequirement;
+ }
+
+ @Data
+ @NoArgsConstructor
+ public static class SizeChart implements Serializable {
+
+ /** 是否支持尺码表 */
+ @JsonProperty("is_support")
+ private Boolean support;
+
+ /** 尺码配置要求列表 */
+ @JsonProperty("item_list")
+ private List itemList;
+ }
+
+ @Data
+ @NoArgsConstructor
+ public static class SizeChartItem implements Serializable {
+ /** 尺码属性名称 */
+ @JsonProperty("name")
+ private String name;
+
+ /** 尺码属性值的单位 */
+ @JsonProperty("unit")
+ private String unit;
+
+ /** 尺码属性值的类型,1:字符型,2:整数型,3:小数型 */
+ @JsonProperty("type")
+ private String type;
+
+ /** 尺码属性值的填写格式,1:单值填写,2:区间值填写,3:支持单值或区间值 */
+ @JsonProperty("format")
+ private String format;
+
+ /** 尺码属性值的限制 */
+ @JsonProperty("limit")
+ private String limit;
+
+ /** 是否必填 */
+ @JsonProperty("is_required")
+ private Boolean required;
+ }
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/CategoryQualification.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/CategoryQualification.java
new file mode 100644
index 0000000000..858e0c3f40
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/CategoryQualification.java
@@ -0,0 +1,50 @@
+package com.binarywang.wxjava.store.bean.category;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 分类资质信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class CategoryQualification implements Serializable {
+
+ private static final long serialVersionUID = 6495550078851408381L;
+
+ /** 类目 */
+ @JsonProperty("cat")
+ private ShopCategory category;
+
+ /** 资质信息 */
+ @JsonProperty("qua")
+ private QualificationInfo info;
+
+ /** 商品资质信息,将废弃,使用product_qua_list代替 */
+ @JsonProperty("product_qua")
+ @Deprecated
+ private QualificationInfo productInfo;
+
+ /**
+ * 品牌资质信息。
+ *
+ * @deprecated 微信接口仍返回该字段,暂未提供替代字段。
+ */
+ @JsonProperty("brand_qua")
+ @Deprecated
+ private QualificationInfo brandQua;
+
+ /** 商品资质列表,替代product_qua */
+ @JsonProperty("product_qua_list")
+ private List productQuaList;
+
+ /** 放心买必须打开坏损包赔 */
+ @JsonProperty("is_confidence_require_bad_must_pay")
+ private Boolean confidenceRequireBadMustPay;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/CategoryQualificationResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/CategoryQualificationResponse.java
new file mode 100644
index 0000000000..8c823e0576
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/CategoryQualificationResponse.java
@@ -0,0 +1,28 @@
+package com.binarywang.wxjava.store.bean.category;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 分类资质响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class CategoryQualificationResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = -7869091908852685830L;
+
+ @JsonProperty("cats")
+ private List list;
+
+ @JsonProperty("cats_v2")
+ private List catsV2;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/PassCategoryInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/PassCategoryInfo.java
new file mode 100644
index 0000000000..dd3e21b780
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/PassCategoryInfo.java
@@ -0,0 +1,26 @@
+package com.binarywang.wxjava.store.bean.category;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 审核通过的分类和资质信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class PassCategoryInfo implements Serializable {
+
+ private static final long serialVersionUID = 1152077957498898216L;
+
+ /** 类目ID */
+ @JsonProperty("cat_id")
+ private String catId;
+
+ /** 资质ID */
+ @JsonProperty("qua_id")
+ private String quaId;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/PassCategoryResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/PassCategoryResponse.java
new file mode 100644
index 0000000000..2c8ea9cfa6
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/PassCategoryResponse.java
@@ -0,0 +1,25 @@
+package com.binarywang.wxjava.store.bean.category;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 审核通过的分类和资质信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class PassCategoryResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = -3674591447273025743L;
+
+ /** 类目和资质信息列表 */
+ @JsonProperty("list")
+ private List list;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/QualificationInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/QualificationInfo.java
new file mode 100644
index 0000000000..d2ba648381
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/QualificationInfo.java
@@ -0,0 +1,36 @@
+package com.binarywang.wxjava.store.bean.category;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 资质信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class QualificationInfo implements Serializable {
+
+ /** 资质ID */
+ @JsonProperty("qua_id")
+ private String id;
+
+ /** 是否需要申请 */
+ @JsonProperty("need_to_apply")
+ private Boolean needToApply;
+
+ /** 资质信息 */
+ @JsonProperty("tips")
+ private String tips;
+
+ /** 该类目申请的时候是否一定要提交资质 */
+ @JsonProperty("mandatory")
+ private Boolean mandatory;
+
+ /** 资质名称 */
+ @JsonProperty("name")
+ private String name;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/RelationCategoryItem.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/RelationCategoryItem.java
new file mode 100644
index 0000000000..f7cf13edb8
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/RelationCategoryItem.java
@@ -0,0 +1,41 @@
+package com.binarywang.wxjava.store.bean.category;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 店铺类目权限列表项
+ *
+ * @author chucheng
+ */
+@Data
+@NoArgsConstructor
+public class RelationCategoryItem implements Serializable {
+
+ /** 类目id */
+ @JsonProperty("id")
+ private Long id;
+
+ /** 类目状态, 1生效中,2已失效 */
+ @JsonProperty("status")
+ private Integer status;
+
+ /** 失效原因 */
+ @JsonProperty("uneffective_reason")
+ private String uneffectiveReason;
+
+ /** 生效时间 */
+ @JsonProperty("effective_time")
+ private Long effectiveTime;
+
+ /** 失效时间 */
+ @JsonProperty("uneffective_time")
+ private Long uneffectiveTime;
+
+ /** 类目资质id */
+ @JsonProperty("qua_id")
+ private Long quaId;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/RelationCategoryRequest.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/RelationCategoryRequest.java
new file mode 100644
index 0000000000..bea6f43dea
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/RelationCategoryRequest.java
@@ -0,0 +1,28 @@
+package com.binarywang.wxjava.store.bean.category;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 类目权限列表请求参数
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class RelationCategoryRequest implements Serializable {
+
+ private static final long serialVersionUID = -8765432109876543210L;
+
+ /** 是否按状态筛选 */
+ @JsonProperty("is_filter_status")
+ private Boolean isFilterStatus;
+
+ /** 类目状态(当 isFilterStatus 为 true 时有效) */
+ @JsonProperty("status")
+ private Integer status;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/RelationCategoryResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/RelationCategoryResponse.java
new file mode 100644
index 0000000000..51f018abe3
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/RelationCategoryResponse.java
@@ -0,0 +1,25 @@
+package com.binarywang.wxjava.store.bean.category;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 店铺的类目权限列表响应
+ *
+ * @author chucheng
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class RelationCategoryResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = -8473920857463918245L;
+
+ @JsonProperty("list")
+ private List list;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/ShopCategory.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/ShopCategory.java
new file mode 100644
index 0000000000..e05f772728
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/ShopCategory.java
@@ -0,0 +1,36 @@
+package com.binarywang.wxjava.store.bean.category;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 商品类目
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class ShopCategory implements Serializable {
+
+ /** 类目ID */
+ @JsonProperty("cat_id")
+ private String id;
+
+ /** 类目父ID */
+ @JsonProperty("f_cat_id")
+ private String parentId;
+
+ /** 类目名称 */
+ @JsonProperty("name")
+ private String name;
+
+ /** 层级 */
+ @JsonProperty("level")
+ private Integer level;
+
+ /** 是否为叶子类目(品类) */
+ @JsonProperty("leaf")
+ private Boolean leaf;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/ShopCategoryResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/ShopCategoryResponse.java
new file mode 100644
index 0000000000..5df88b76f3
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/category/ShopCategoryResponse.java
@@ -0,0 +1,29 @@
+package com.binarywang.wxjava.store.bean.category;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 分类响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class ShopCategoryResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 3871098948660947422L;
+
+ /** 类目列表 */
+ @JsonProperty("cat_list")
+ private List categories;
+
+ /** 类目列表 */
+ @JsonProperty("cat_list_v2")
+ private List catListV2;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/CompassFinderBaseParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/CompassFinderBaseParam.java
new file mode 100644
index 0000000000..a78ad54eb8
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/CompassFinderBaseParam.java
@@ -0,0 +1,30 @@
+package com.binarywang.wxjava.store.bean.compass;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 获取达人罗盘数据通用请求参数
+ *
+ * @author Winnie
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class CompassFinderBaseParam implements Serializable {
+
+ private static final long serialVersionUID = - 4900361041041434435L;
+
+ /**
+ * 日期,格式 yyyyMMdd
+ */
+ @JsonProperty("ds")
+ private String ds;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/CompassFinderIdParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/CompassFinderIdParam.java
new file mode 100644
index 0000000000..c55938a5e6
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/CompassFinderIdParam.java
@@ -0,0 +1,32 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.compass.CompassFinderBaseParam;
+
+/**
+ * 带货达人 请求参数
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class CompassFinderIdParam extends CompassFinderBaseParam {
+
+ private static final long serialVersionUID = 9214560943091074780L;
+
+ /** 视频号ID */
+ @JsonProperty("finder_id")
+ private String finderId;
+
+ public CompassFinderIdParam(String ds, String finderId) {
+ super(ds);
+ this.finderId = finderId;
+ }
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderAuthListResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderAuthListResponse.java
new file mode 100644
index 0000000000..3147f0930a
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderAuthListResponse.java
@@ -0,0 +1,30 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 获取授权视频号列表 响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class FinderAuthListResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = -3215073536002857589L;
+
+ /** 主营视频号id */
+ @JsonProperty("main_finder_id")
+ private String mainFinderId;
+
+ /** 授权视频号id列表 */
+ @JsonProperty("authorized_finder_id_list")
+ private List authorizedFinderIdList;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderGmvData.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderGmvData.java
new file mode 100644
index 0000000000..206eee7e66
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderGmvData.java
@@ -0,0 +1,39 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 带货达人数据
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class FinderGmvData implements Serializable {
+
+ private static final long serialVersionUID = -7463331971169286175L;
+
+ /** 成交金额,单位分 */
+ @JsonProperty("pay_gmv")
+ private String payGmv;
+
+ /** 动销商品数 */
+ @JsonProperty("pay_product_id_cnt")
+ private String payProductIdCnt;
+
+ /** 成交人数 */
+ @JsonProperty("pay_uv")
+ private String payUv;
+
+ /** 退款金额,单位分 */
+ @JsonProperty("refund_gmv")
+ private String refundGmv;
+
+ /** 成交退款金额,单位分 */
+ @JsonProperty("pay_refund_gmv")
+ private String payRefundGmv;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderGmvItem.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderGmvItem.java
new file mode 100644
index 0000000000..a621395701
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderGmvItem.java
@@ -0,0 +1,30 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 带货达人列表数据
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class FinderGmvItem implements Serializable {
+
+ private static final long serialVersionUID = -3740996985044711599L;
+
+ /** 视频号id */
+ @JsonProperty("finder_id")
+ private String finderId;
+
+ /** 视频号昵称 */
+ @JsonProperty("finder_nickname")
+ private String finderNickname;
+
+ /** 带货达人数据 */
+ @JsonProperty("data")
+ private FinderGmvData data;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderListResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderListResponse.java
new file mode 100644
index 0000000000..cf25ecea81
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderListResponse.java
@@ -0,0 +1,26 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 带货达人列表 响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class FinderListResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 6358992001065379269L;
+
+ /** 授权视频号id列表 */
+ @JsonProperty("finder_list")
+ private List finderList;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderOverallData.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderOverallData.java
new file mode 100644
index 0000000000..56c0e25e2a
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderOverallData.java
@@ -0,0 +1,35 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 带货数据概览
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class FinderOverallData implements Serializable {
+
+ private static final long serialVersionUID = -994852668593815907L;
+
+ /** 成交金额,单位分 */
+ @JsonProperty("pay_gmv")
+ private String payGmv;
+
+ /** 动销达人数 */
+ @JsonProperty("pay_sales_finder_cnt")
+ private String paySalesFinderCnt;
+
+ /** 动销商品数 */
+ @JsonProperty("pay_product_id_cnt")
+ private String payProductIdCnt;
+
+ /** 点击-成交转化率 */
+ @JsonProperty("click_to_pay_uv_ratio")
+ private Double clickToPayUvRatio;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderOverallResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderOverallResponse.java
new file mode 100644
index 0000000000..cf86f94a04
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderOverallResponse.java
@@ -0,0 +1,26 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 带货数据概览 响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class FinderOverallResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = -4935555091396799318L;
+
+ /**
+ * 电商概览数据
+ */
+ @JsonProperty("data")
+ private FinderOverallData data;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderProductListItem.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderProductListItem.java
new file mode 100644
index 0000000000..68dd50260e
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderProductListItem.java
@@ -0,0 +1,66 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 带货达人商品列表
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class FinderProductListItem implements Serializable {
+
+ private static final long serialVersionUID = 1646092488200992026L;
+
+ /** 商品id */
+ @JsonProperty("product_id")
+ private String productId;
+
+ /** 商品头图 */
+ @JsonProperty("head_img_url")
+ private String headImgUrl;
+
+ /** 商品标题 */
+ @JsonProperty("title")
+ private String title;
+
+ /** 商品价格 */
+ @JsonProperty("price")
+ private String price;
+
+ /** 商品1级类目 */
+ @JsonProperty("first_category_id")
+ private String firstCategoryId;
+
+ /** 商品2级类目 */
+ @JsonProperty("second_category_id")
+ private String secondCategoryId;
+
+ /** 商品3级类目 */
+ @JsonProperty("third_category_id")
+ private String thirdCategoryId;
+
+ /** gmv */
+ @JsonProperty("data")
+ private GmvData data;
+
+
+ @Data
+ @NoArgsConstructor
+ public static class GmvData implements Serializable {
+ private static final long serialVersionUID = 1840494188469233735L;
+
+ /** 佣金率 */
+ @JsonProperty("commission_ratio")
+ private Double commissionRatio;
+
+ /** 成交金额,单位分 */
+ @JsonProperty("pay_gmv")
+ private String payGmv;
+ }
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderProductListResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderProductListResponse.java
new file mode 100644
index 0000000000..3d967091e7
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderProductListResponse.java
@@ -0,0 +1,28 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 带货达人商品列表 响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class FinderProductListResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 5883861777181983173L;
+
+ /**
+ * 带货达人商品列表
+ */
+ @JsonProperty("product_list")
+ private List productList;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderProductOverallResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderProductOverallResponse.java
new file mode 100644
index 0000000000..6f24ce41f5
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderProductOverallResponse.java
@@ -0,0 +1,25 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 带货达人详情 响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class FinderProductOverallResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 6358992001065379269L;
+
+ /** 带货达人详情 */
+ @JsonProperty("data")
+ private FinderGmvData data;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderProductSimpleGmvData.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderProductSimpleGmvData.java
new file mode 100644
index 0000000000..ab7df04ed0
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/FinderProductSimpleGmvData.java
@@ -0,0 +1,26 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 带货达人商品GMV数据
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class FinderProductSimpleGmvData implements Serializable {
+ private static final long serialVersionUID = -3740996985044711599L;
+
+ /** 佣金率 */
+ @JsonProperty("commission_ratio")
+ private Double commissionRatio;
+
+ /** 成交金额,单位分 */
+ @JsonProperty("pay_gmv")
+ private String payGmv;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopField.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopField.java
new file mode 100644
index 0000000000..d33652e0ca
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopField.java
@@ -0,0 +1,44 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 维度数据
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class ShopField implements Serializable {
+
+ private static final long serialVersionUID = -8669197081350262569L;
+
+ /** 维度类别名 */
+ @JsonProperty("field_name")
+ private String fieldName;
+
+ /** 维度指标数据列表 */
+ @JsonProperty("data_list")
+ private List dataList;
+
+
+ @Data
+ @NoArgsConstructor
+ public static class FieldDetail implements Serializable {
+
+ private static final long serialVersionUID = 2900633035074950462L;
+
+ /** 维度指标名 */
+ @JsonProperty("dim_key")
+ private String dimKey;
+
+ /** 维度指标值 */
+ @JsonProperty("dim_value")
+ private String dimValue;
+
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopLiveData.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopLiveData.java
new file mode 100644
index 0000000000..25e617577c
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopLiveData.java
@@ -0,0 +1,36 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 店铺开播数据
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class ShopLiveData implements Serializable {
+
+ /** 直播id */
+ @JsonProperty("live_id")
+ private String liveId;
+
+ /** 直播标题 */
+ @JsonProperty("live_title")
+ private String liveTitle;
+
+ /** 开播时间,unix时间戳 */
+ @JsonProperty("live_time")
+ private String liveTime;
+
+ /** 直播时长,单位秒 */
+ @JsonProperty("live_duration")
+ private String liveDuration;
+
+ /** 直播封面 */
+ @JsonProperty("live_cover_img_url")
+ private String liveCoverImgUrl;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopLiveListResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopLiveListResponse.java
new file mode 100644
index 0000000000..3311beb1fa
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopLiveListResponse.java
@@ -0,0 +1,26 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 店铺开播列表 响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class ShopLiveListResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = -7110751559923117330L;
+
+ /** 店铺开播列表 */
+ @JsonProperty("live_list")
+ private List liveList;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopOverall.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopOverall.java
new file mode 100644
index 0000000000..57e6499c0c
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopOverall.java
@@ -0,0 +1,42 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 电商概览数据
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class ShopOverall implements Serializable {
+
+ private static final long serialVersionUID = 3304918097895132226L;
+
+ /** 成交金额,单位分 */
+ @JsonProperty("pay_gmv")
+ private String payGmv;
+
+ /** 成交人数 */
+ @JsonProperty("pay_uv")
+ private String payUv;
+
+ /** 成交退款金额,单位分 */
+ @JsonProperty("pay_refund_gmv")
+ private String payRefundGmv;
+
+ /** 成交订单数 */
+ @JsonProperty("pay_order_cnt")
+ private String payOrderCnt;
+
+ /** 直播成交金额,单位分 */
+ @JsonProperty("live_pay_gmv")
+ private String livePayGmv;
+
+ /** 短视频成交金额,单位分 */
+ @JsonProperty("feed_pay_gmv")
+ private String feedPayGmv;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopOverallResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopOverallResponse.java
new file mode 100644
index 0000000000..fc32f8a8f6
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopOverallResponse.java
@@ -0,0 +1,27 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 获取电商概览数据响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class ShopOverallResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 1632800741359642057L;
+
+ /**
+ * 电商概览数据
+ */
+ @JsonProperty("data")
+ private ShopOverall data;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopProductCompassData.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopProductCompassData.java
new file mode 100644
index 0000000000..d5f9242075
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopProductCompassData.java
@@ -0,0 +1,143 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 店铺商品罗盘数据
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class ShopProductCompassData implements Serializable {
+
+ private static final long serialVersionUID = 5387546181020447627L;
+
+ /** 成交金额 */
+ @JsonProperty("pay_gmv")
+ private String payGmv;
+
+ /**下单金额,单位分 */
+ @JsonProperty("create_gmv")
+ private String createGmv;
+
+ /** 下单订单数 */
+ @JsonProperty("create_cnt")
+ private String createCnt;
+
+ /** 下单人数 */
+ @JsonProperty("create_uv")
+ private String createUv;
+
+ /** 下单件数 */
+ @JsonProperty("create_product_cnt")
+ private String createProductCnt;
+
+ /** 成交订单数 */
+ @JsonProperty("pay_cnt")
+ private String payCnt;
+
+ /** 成交人数 */
+ @JsonProperty("pay_uv")
+ private String payUv;
+
+ /** 成交件数 */
+ @JsonProperty("pay_product_cnt")
+ private String payProductCnt;
+
+ /** 成交金额(剔除退款) */
+ @JsonProperty("pure_pay_gmv")
+ private String purePayGmv;
+
+ /** 成交客单价(剔除退款) */
+ @JsonProperty("pay_gmv_per_uv")
+ private String payGmvPerUv;
+
+ /** 实际结算金额,单位分 */
+ @JsonProperty("seller_actual_settle_amount")
+ private String sellerActualSettleAmount;
+
+ /** 实际服务费金额,单位分 */
+ @JsonProperty("platform_actual_commission")
+ private String platformActualCommission;
+
+ /** 实际达人佣金支出,单位分 */
+ @JsonProperty("finderuin_actual_commission")
+ private String finderuinActualCommission;
+
+ /** 实际团长佣金支出,单位分 */
+ @JsonProperty("captain_actual_commission")
+ private String captainActualCommission;
+
+ /** 预估结算金额,单位分 */
+ @JsonProperty("seller_predict_settle_amount")
+ private String sellerPredictSettleAmount;
+
+ /** 预估服务费金额,单位分 */
+ @JsonProperty("platform_predict_commission")
+ private String platformPredictCommission;
+
+ /** 预估达人佣金支出,单位分 */
+ @JsonProperty("finderuin_predict_commission")
+ private String finderuinPredictCommission;
+
+ /** 预估团长佣金支出,单位分 */
+ @JsonProperty("captain_predict_commission")
+ private String captainPredictCommission;
+
+ /** 商品点击人数 */
+ @JsonProperty("product_click_uv")
+ private String productClickUv;
+
+ /** 商品点击次数 */
+ @JsonProperty("product_click_cnt")
+ private String productClickCnt;
+
+ /** 成交退款金额,单位分 */
+ @JsonProperty("pay_refund_gmv")
+ private String payRefundGmv;
+
+ /** 成交退款人数,单位分 */
+ @JsonProperty("pay_refund_uv")
+ private String payRefundUv;
+
+ /** 成交退款率 */
+ @JsonProperty("pay_refund_ratio")
+ private Double payRefundRatio;
+
+ /** 发货后成交退款率 */
+ @JsonProperty("pay_refund_after_send_ratio")
+ private Double payRefundAfterSendRatio;
+
+ /** 成交退款订单数 */
+ @JsonProperty("pay_refund_cnt")
+ private String payRefundCnt;
+
+ /** 成交退款件数 */
+ @JsonProperty("pay_refund_product_cnt")
+ private String payRefundProductCnt;
+
+ /** 发货前成交退款率 */
+ @JsonProperty("pay_refund_before_send_ratio")
+ private Double payRefundBeforeSendRatio;
+
+ /** 退款金额,单位分 */
+ @JsonProperty("refund_gmv")
+ private String refundGmv;
+
+ /** 退款件数 */
+ @JsonProperty("refund_product_cnt")
+ private String refundProductCnt;
+
+ /** 退款订单数 */
+ @JsonProperty("refund_cnt")
+ private String refundCnt;
+
+ /** 退款人数 */
+ @JsonProperty("refund_uv")
+ private String refundUv;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopProductDataParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopProductDataParam.java
new file mode 100644
index 0000000000..fdb72308ce
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopProductDataParam.java
@@ -0,0 +1,32 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.compass.CompassFinderBaseParam;
+
+/**
+ * 商品数据 请求参数
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ShopProductDataParam extends CompassFinderBaseParam {
+
+ private static final long serialVersionUID = - 5016298274452168329L;
+
+ /** 商品id */
+ @JsonProperty("product_id")
+ private String productId;
+
+ public ShopProductDataParam(String ds, String productId) {
+ super(ds);
+ this.productId = productId;
+ }
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopProductDataResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopProductDataResponse.java
new file mode 100644
index 0000000000..5df831bb57
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopProductDataResponse.java
@@ -0,0 +1,26 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 商品详细信息 响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class ShopProductDataResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 6903392663954301579L;
+
+ /** 商品详细信息 */
+ @JsonProperty("product_info")
+ private ShopProductInfo productInfo;
+
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopProductInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopProductInfo.java
new file mode 100644
index 0000000000..f8334a6375
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopProductInfo.java
@@ -0,0 +1,51 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 店铺带货商品数据
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class ShopProductInfo implements Serializable {
+
+ private static final long serialVersionUID = 3376047696301017643L;
+
+ /** 商品id */
+ @JsonProperty("product_id")
+ private String productId;
+
+ /** 商品图 */
+ @JsonProperty("head_img_url")
+ private String headImgUrl;
+
+ /** 商品标题 */
+ @JsonProperty("title")
+ private String title;
+
+ /** 商品价格,单位分 */
+ @JsonProperty("price")
+ private String price;
+
+ /** 商品一级类目 */
+ @JsonProperty("first_category_id")
+ private String firstCategoryId;
+
+ /** 商品二级类目 */
+ @JsonProperty("second_category_id")
+ private String secondCategoryId;
+
+ /** 商品三级类目 */
+ @JsonProperty("third_category_id")
+ private String thirdCategoryId;
+
+ /** 商品罗盘数据 */
+ @JsonProperty("data")
+ private ShopProductCompassData data;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopProductListResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopProductListResponse.java
new file mode 100644
index 0000000000..a6d5bb4b0f
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopProductListResponse.java
@@ -0,0 +1,26 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 商品列表 响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class ShopProductListResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = -6328224902770141045L;
+
+ /** 商品列表 */
+ @JsonProperty("product_list")
+ private List productList;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopSaleProfileData.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopSaleProfileData.java
new file mode 100644
index 0000000000..b19ba707a1
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopSaleProfileData.java
@@ -0,0 +1,24 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 店铺人群数据
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class ShopSaleProfileData implements Serializable {
+
+ private static final long serialVersionUID = -6825849811081728787L;
+
+ /** 维度数据列表 */
+ @JsonProperty("field_list")
+ private List fieldList;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopSaleProfileDataParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopSaleProfileDataParam.java
new file mode 100644
index 0000000000..040cc68a25
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopSaleProfileDataParam.java
@@ -0,0 +1,32 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.compass.CompassFinderBaseParam;
+
+/**
+ * 获取带货人群数据请求参数
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ShopSaleProfileDataParam extends CompassFinderBaseParam {
+
+ private static final long serialVersionUID = 240010632808576923L;
+
+ /** 用户类型 */
+ @JsonProperty("type")
+ private Integer type;
+
+ public ShopSaleProfileDataParam(String ds, Integer type) {
+ super(ds);
+ this.type = type;
+ }
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopSaleProfileDataResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopSaleProfileDataResponse.java
new file mode 100644
index 0000000000..91761c779e
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/compass/shop/ShopSaleProfileDataResponse.java
@@ -0,0 +1,25 @@
+package com.binarywang.wxjava.store.bean.compass.shop;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 店铺人群数据 响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class ShopSaleProfileDataResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 8520148855114842741L;
+
+ /** 店铺人群数据 */
+ @JsonProperty("data")
+ private ShopSaleProfileData data;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/complaint/ComplaintHistory.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/complaint/ComplaintHistory.java
new file mode 100644
index 0000000000..764bb3d526
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/complaint/ComplaintHistory.java
@@ -0,0 +1,46 @@
+package com.binarywang.wxjava.store.bean.complaint;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 纠纷历史
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class ComplaintHistory implements Serializable {
+
+ private static final long serialVersionUID = -4706637116597650133L;
+ /** 历史操作类型,见 {@link com.binarywang.wxjava.store.enums.ComplaintItemType } */
+ @JsonProperty("item_type")
+ private Integer itemType;
+
+ /** 操作时间,Unix时间戳 */
+ @JsonProperty("time")
+ private Long time;
+
+ /** 用户联系电话 */
+ @JsonProperty("phone_number")
+ private String phoneNumber;
+
+ /** 相关文本内容 */
+ @JsonProperty("content")
+ private String content;
+
+ /** 相关图片media_id列表 */
+ @JsonProperty("media_id_list")
+ private List mediaIds;
+
+ /** 售后类型, 1-仅退款 2-退货退款 */
+ @JsonProperty("after_sale_type")
+ private Integer afterSaleType;
+
+ /** 售后原因,见 {@link com.binarywang.wxjava.store.enums.AfterSalesReason} */
+ @JsonProperty("after_sale_reason")
+ private Integer afterSaleReason;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/complaint/ComplaintOrderResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/complaint/ComplaintOrderResponse.java
new file mode 100644
index 0000000000..6d8e65a6c1
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/complaint/ComplaintOrderResponse.java
@@ -0,0 +1,35 @@
+package com.binarywang.wxjava.store.bean.complaint;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 纠纷单响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class ComplaintOrderResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 1968530826349555367L;
+ /** 售后单号 */
+ @JsonProperty("after_sale_order_id")
+ private String afterSaleOrderId;
+
+ /** 订单号 */
+ @JsonProperty("order_id")
+ private String orderId;
+
+ /** 纠纷历史 */
+ @JsonProperty("history")
+ private List history;
+
+ /** 纠纷单状态, 见 {@link com.binarywang.wxjava.store.enums.ComplaintStatus} */
+ @JsonProperty("status")
+ private Integer status;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/complaint/ComplaintParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/complaint/ComplaintParam.java
new file mode 100644
index 0000000000..a93966e659
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/complaint/ComplaintParam.java
@@ -0,0 +1,34 @@
+package com.binarywang.wxjava.store.bean.complaint;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 纠纷单留言
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ComplaintParam implements Serializable {
+
+ private static final long serialVersionUID = 6146118590005718327L;
+ /** 纠纷单号 */
+ @JsonProperty("complaint_id")
+ private String complaintId;
+
+ /** 留言内容,最多500字 */
+ @JsonProperty("content")
+ private String content;
+
+ /** 图片media_id列表,所有留言总图片数量最多20张 */
+ @JsonProperty("media_id_list")
+ private List mediaIds;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/cooperation/CooperationData.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/cooperation/CooperationData.java
new file mode 100644
index 0000000000..ce62effc2f
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/cooperation/CooperationData.java
@@ -0,0 +1,47 @@
+package com.binarywang.wxjava.store.bean.cooperation;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 合作账号信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class CooperationData implements Serializable {
+
+ private static final long serialVersionUID = 3930010847236599458L;
+
+ /** 合作账号id 公众号: gh_开头id 小程序: appid */
+ @JsonProperty("sharer_id")
+ private String sharerId;
+
+ /** 邀请/合作账号状态 1已绑定 2已解绑 3邀请已拒绝 4邀请接受中 5邀请接受超时 6邀请接受失败 7邀请店铺取消 */
+ @JsonProperty("status")
+ private Integer status;
+
+ /** 合作账号名称 */
+ @JsonProperty("sharer_name")
+ private String sharerName;
+
+ /** 合作账号类型 2公众号 3小程序 */
+ @JsonProperty("sharer_type")
+ private Integer sharerType;
+
+ /** 接受绑定时间戳,ms */
+ @JsonProperty("bind_time")
+ private Long bindTime;
+
+ /** 用户拒绝时间戳,ms */
+ @JsonProperty("reject_time")
+ private Long rejectTime;
+
+ /** 商家取消时间戳,ms */
+ @JsonProperty("cancel_time")
+ private Long cancelTime;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/cooperation/CooperationListResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/cooperation/CooperationListResponse.java
new file mode 100644
index 0000000000..b469a12768
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/cooperation/CooperationListResponse.java
@@ -0,0 +1,25 @@
+package com.binarywang.wxjava.store.bean.cooperation;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 合作账号列表响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class CooperationListResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 6998637882644598826L;
+
+ /** 合作账号列表 */
+ @JsonProperty("data_list")
+ private List dataList;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/cooperation/CooperationQrCode.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/cooperation/CooperationQrCode.java
new file mode 100644
index 0000000000..0f169b02f3
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/cooperation/CooperationQrCode.java
@@ -0,0 +1,23 @@
+package com.binarywang.wxjava.store.bean.cooperation;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 合作账号二维码数据
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class CooperationQrCode implements Serializable {
+
+ private static final long serialVersionUID = -7096916911986699150L;
+
+ /** base64编码后的图片数据 */
+ @JsonProperty("qrcode_base64")
+ private Integer qrCodeBase64;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/cooperation/CooperationQrCodeResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/cooperation/CooperationQrCodeResponse.java
new file mode 100644
index 0000000000..0ab844f88e
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/cooperation/CooperationQrCodeResponse.java
@@ -0,0 +1,24 @@
+package com.binarywang.wxjava.store.bean.cooperation;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 合作账号二维码响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class CooperationQrCodeResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 6998637882644598826L;
+
+ /** 合作账号二维码 */
+ @JsonProperty("data")
+ private CooperationQrCode data;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/cooperation/CooperationSharerParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/cooperation/CooperationSharerParam.java
new file mode 100644
index 0000000000..22d8ae2926
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/cooperation/CooperationSharerParam.java
@@ -0,0 +1,30 @@
+package com.binarywang.wxjava.store.bean.cooperation;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 合作账号参数
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class CooperationSharerParam implements Serializable {
+
+ private static final long serialVersionUID = 5032621997764493109L;
+
+ /** 合作账号id */
+ @JsonProperty("sharer_id")
+ private String sharerId;
+
+ /** 合作账号类型 */
+ @JsonProperty("sharer_type")
+ private Integer sharerType;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/cooperation/CooperationStatus.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/cooperation/CooperationStatus.java
new file mode 100644
index 0000000000..688ad51390
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/cooperation/CooperationStatus.java
@@ -0,0 +1,23 @@
+package com.binarywang.wxjava.store.bean.cooperation;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 合作账号状态
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class CooperationStatus implements Serializable {
+
+ private static final long serialVersionUID = -7096916911986699150L;
+
+ /** 邀请/合作账号状态 1已绑定 2已解绑 3邀请已拒绝 4邀请接受中 5邀请接受超时 6邀请接受失败 7邀请店铺取消 */
+ @JsonProperty("status")
+ private Integer status;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/cooperation/CooperationStatusResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/cooperation/CooperationStatusResponse.java
new file mode 100644
index 0000000000..3702662c8e
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/cooperation/CooperationStatusResponse.java
@@ -0,0 +1,24 @@
+package com.binarywang.wxjava.store.bean.cooperation;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 合作账号状态响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class CooperationStatusResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 6998637882644598826L;
+
+ /** 合作账号状态 */
+ @JsonProperty("data")
+ private CooperationStatus data;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/AutoValidInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/AutoValidInfo.java
new file mode 100644
index 0000000000..ff11c38af6
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/AutoValidInfo.java
@@ -0,0 +1,21 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 自动生效信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class AutoValidInfo implements Serializable {
+
+ private static final long serialVersionUID = 1702505613539861103L;
+ /** 优惠券开启自动生效类型 0不启用自动生效 1启用自动生效,按领券开始时间(自动生效时间为 receive_info.start_time) */
+ @JsonProperty("auto_valid_type")
+ private Integer autoValidType;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponDetailInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponDetailInfo.java
new file mode 100644
index 0000000000..5c804ede89
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponDetailInfo.java
@@ -0,0 +1,43 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 优惠券信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+
+public class CouponDetailInfo implements Serializable {
+
+ private static final long serialVersionUID = 5994815232349181577L;
+ /** 优惠券名称 **/
+ @JsonProperty("name")
+ private String name;
+
+ /** 优惠券有效信息 **/
+ @JsonProperty("valid_info")
+ private ValidInfo validInfo;
+
+ /** 推广信息 **/
+ @JsonProperty("promote_info")
+ private PromoteInfo promoteInfo;
+
+ /** 优惠信息 **/
+ @JsonProperty("discount_info")
+ private DiscountInfo discountInfo;
+
+ /** 额外信息 **/
+ @JsonProperty("ext_info")
+ private ExtInfo extInfo;
+
+ /** 领取信息 **/
+ @JsonProperty("receive_info")
+ private ReceiveInfo receiveInfo;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponIdInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponIdInfo.java
new file mode 100644
index 0000000000..9a3ea87d6f
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponIdInfo.java
@@ -0,0 +1,24 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 优惠券id
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class CouponIdInfo implements Serializable {
+
+ private static final long serialVersionUID = 6284609705855608275L;
+ /** 优惠券ID */
+ @JsonProperty("coupon_id")
+ private String couponId;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponIdResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponIdResponse.java
new file mode 100644
index 0000000000..6f13fbfec5
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponIdResponse.java
@@ -0,0 +1,21 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+
+/**
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class CouponIdResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = -3263189706802013651L;
+ @JsonProperty("data")
+ private CouponIdInfo data;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponInfo.java
new file mode 100644
index 0000000000..e84d932bc5
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponInfo.java
@@ -0,0 +1,38 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class CouponInfo extends CouponIdInfo {
+
+ private static final long serialVersionUID = -5862063828870424262L;
+ /** 优惠券类型 **/
+ @JsonProperty("type")
+ private Integer type;
+
+ /** 优惠券状态 **/
+ @JsonProperty("status")
+ private Integer status;
+
+ /** 优惠券创建时间 */
+ @JsonProperty("create_time")
+ private Long createTime;
+
+ /** 优惠券更新时间 */
+ @JsonProperty("update_time")
+ private Long updateTime;
+
+ /** 优惠券信息 */
+ @JsonProperty("coupon_info")
+ private CouponDetailInfo detail;
+
+ /** 库存信息 */
+ @JsonProperty("stock_info")
+ private StockInfo stockInfo;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponInfoResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponInfoResponse.java
new file mode 100644
index 0000000000..0a0e4a21b4
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponInfoResponse.java
@@ -0,0 +1,20 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class CouponInfoResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 5261320058699488529L;
+ @JsonProperty("coupon")
+ private CouponInfo coupon;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponListParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponListParam.java
new file mode 100644
index 0000000000..8e681127b0
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponListParam.java
@@ -0,0 +1,45 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 获取优惠券ID列表接口的请求参数
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@JsonInclude(Include.NON_NULL)
+public class CouponListParam implements Serializable {
+ private static final long serialVersionUID = 7123047113279657365L;
+
+ /**
+ * 优惠券状态 {@link com.binarywang.wxjava.store.enums.WxCouponStatus}
+ */
+ @JsonProperty("status")
+ private Integer status;
+
+ /**
+ * 第几页(最小填1)
+ */
+ @JsonProperty("page")
+ private Integer page;
+
+ /**
+ * 每页数量(不超过200)
+ */
+ @JsonProperty("page_size")
+ private Integer pageSize;
+
+ /**
+ * 分页上下文
+ */
+ @JsonProperty("page_ctx")
+ private String pageCtx;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponListResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponListResponse.java
new file mode 100644
index 0000000000..ac53c861a2
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponListResponse.java
@@ -0,0 +1,31 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class CouponListResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = -5330296358041282751L;
+ /** 优惠券id列表 */
+ @JsonProperty("coupons")
+ private List coupons;
+
+ /** 优惠券总数 */
+ @JsonProperty("total_num")
+ private Integer totalNum;
+
+ /** 优惠券上下文 */
+ @JsonProperty("page_ctx")
+ private String pageCtx;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponParam.java
new file mode 100644
index 0000000000..725a1bed3f
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponParam.java
@@ -0,0 +1,50 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * 优惠券参数
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class CouponParam extends CouponIdInfo {
+
+ private static final long serialVersionUID = -3663331372622943337L;
+ /** 优惠券类型 **/
+ @JsonProperty("type")
+ private Integer type;
+
+ /** 优惠券名称,最长10个中文字符 */
+ @JsonProperty("name")
+ private String name;
+
+ /** 优惠信息 **/
+ @JsonProperty("discount_info")
+ private DiscountInfo discountInfo;
+
+ /** 额外信息 **/
+ @JsonProperty("ext_info")
+ private ExtInfo extInfo;
+
+ /** 推广信息 **/
+ @JsonProperty("promote_info")
+ private PromoteInfo promoteInfo;
+
+ /** 领取信息 **/
+ @JsonProperty("receive_info")
+ private ReceiveInfo receiveInfo;
+
+ /** 优惠券有效信息 **/
+ @JsonProperty("valid_info")
+ private ValidInfo validInfo;
+
+ /** 优惠券自动生效信息 **/
+ @JsonProperty("auto_valid_info")
+ private AutoValidInfo autoValidInfo;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponStatusParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponStatusParam.java
new file mode 100644
index 0000000000..1c2f4129ca
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/CouponStatusParam.java
@@ -0,0 +1,28 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author Zeyes
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class CouponStatusParam extends CouponIdInfo {
+
+ private static final long serialVersionUID = -7108348049925634704L;
+ /** 状态 */
+ @JsonProperty("status")
+ private Integer status;
+
+ public CouponStatusParam() {
+ }
+
+ public CouponStatusParam(String couponId, Integer status) {
+ super(couponId);
+ this.status = status;
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/DiscountCondition.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/DiscountCondition.java
new file mode 100644
index 0000000000..c148a4c90b
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/DiscountCondition.java
@@ -0,0 +1,30 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 折扣条件
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class DiscountCondition implements Serializable {
+
+ private static final long serialVersionUID = 3250293381093835082L;
+ /** 优惠券使用条件, 满 x 件商品可用 */
+ @JsonProperty("product_cnt")
+ private Integer productCnt;
+
+ /** 优惠券使用条件, 价格满 x 可用,单位分 */
+ @JsonProperty("product_price")
+ private Integer productPrice;
+
+ /** 优惠券使用条件, 指定商品 id 可用 */
+ @JsonProperty("product_ids")
+ private List productIds;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/DiscountInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/DiscountInfo.java
new file mode 100644
index 0000000000..0337b6ed39
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/DiscountInfo.java
@@ -0,0 +1,29 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 优惠信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class DiscountInfo implements Serializable {
+
+ private static final long serialVersionUID = 3660070880545144112L;
+ /** 优惠券折扣数 * 1000, 例如 5.1折-> 5100 */
+ @JsonProperty("discount_num")
+ private Integer discountNum;
+
+ /** 优惠券减少金额, 单位分, 例如0.5元-> 50 */
+ @JsonProperty("discount_fee")
+ private Integer discountFee;
+
+ /** 优惠条件 */
+ @JsonProperty("discount_condition")
+ private DiscountCondition discountCondition;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/ExtInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/ExtInfo.java
new file mode 100644
index 0000000000..af4ef6e5ca
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/ExtInfo.java
@@ -0,0 +1,33 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 额外信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class ExtInfo implements Serializable {
+
+ private static final long serialVersionUID = 9053035437087423233L;
+ /** 商品折扣券领取后跳转的商品id **/
+ @JsonProperty("jump_product_id")
+ private String jumpProductId;
+
+ /** 备注信息 **/
+ @JsonProperty("notes")
+ private String notes;
+
+ /** 优惠券有效时间 **/
+ @JsonProperty("valid_time")
+ private Long validTime;
+
+ /** 优惠券失效时间戳 **/
+ @JsonProperty("invalid_time")
+ private Long invalidTime;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/PromoteInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/PromoteInfo.java
new file mode 100644
index 0000000000..bd2a1292bf
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/PromoteInfo.java
@@ -0,0 +1,21 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 推广信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class PromoteInfo implements Serializable {
+
+ private static final long serialVersionUID = -3030639750899957382L;
+ /** 推广类型 {@link com.binarywang.wxjava.store.enums.PromoteType} */
+ @JsonProperty("promote_type")
+ private Integer promoteType;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/ReceiveInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/ReceiveInfo.java
new file mode 100644
index 0000000000..5980f20ed6
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/ReceiveInfo.java
@@ -0,0 +1,33 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 领取信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class ReceiveInfo implements Serializable {
+
+ private static final long serialVersionUID = 755956808504040633L;
+ /** 优惠券领用结束时间 **/
+ @JsonProperty("end_time")
+ private Long endTime;
+
+ /** 单人限领张数 **/
+ @JsonProperty("limit_num_one_person")
+ private Integer limitNumOnePerson;
+
+ /** 优惠券领用开始时间 **/
+ @JsonProperty("start_time")
+ private Long startTime;
+
+ /** 优惠券领用总数 **/
+ @JsonProperty("total_num")
+ private Integer totalNum;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/StockInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/StockInfo.java
new file mode 100644
index 0000000000..a896998bb3
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/StockInfo.java
@@ -0,0 +1,29 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 库存信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class StockInfo implements Serializable {
+
+ private static final long serialVersionUID = -6078383881065929862L;
+ /** 优惠券剩余量 */
+ @JsonProperty("issued_num")
+ private Integer issuedNum;
+
+ /** 优惠券领用量 */
+ @JsonProperty("receive_num")
+ private Integer receiveNum;
+
+ /** 优惠券已用量 */
+ @JsonProperty("used_num")
+ private Integer usedNum;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/UserCoupon.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/UserCoupon.java
new file mode 100644
index 0000000000..fb0be659eb
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/UserCoupon.java
@@ -0,0 +1,50 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * 用户优惠券
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class UserCoupon extends UserCouponIdInfo {
+
+ private static final long serialVersionUID = -4777537717885622888L;
+ /** 优惠券状态 {@link com.binarywang.wxjava.store.enums.UserCouponStatus} */
+ @JsonProperty("status")
+ private Integer status;
+
+ /** 优惠券派发时间 */
+ @JsonProperty("create_time")
+ private Long createTime;
+
+ /** 优惠券更新时间 */
+ @JsonProperty("update_time")
+ private Long updateTime;
+
+ /** 优惠券生效时间 */
+ @JsonProperty("start_time")
+ private Long startTime;
+
+ /** 优惠券失效时间 */
+ @JsonProperty("end_time")
+ private Long endTime;
+
+ /** 附加信息 */
+ @JsonProperty("ext_info")
+ private UserExtInfo extInfo;
+
+ /** 优惠券使用的订单id */
+ @JsonProperty("order_id")
+ private String orderId;
+
+ /** 优惠券金额 */
+ @JsonProperty("discount_fee")
+ private Integer discountFee;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/UserCouponIdInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/UserCouponIdInfo.java
new file mode 100644
index 0000000000..91348849c2
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/UserCouponIdInfo.java
@@ -0,0 +1,20 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 用户优惠券id
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class UserCouponIdInfo extends CouponIdInfo {
+
+ private static final long serialVersionUID = -8285585134793264542L;
+ /** 用户优惠券ID */
+ @JsonProperty("user_coupon_id")
+ private String userCouponId;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/UserCouponIdParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/UserCouponIdParam.java
new file mode 100644
index 0000000000..3d5e516bf8
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/UserCouponIdParam.java
@@ -0,0 +1,29 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+
+/**
+ * @author Zeyes
+ */
+@Data
+public class UserCouponIdParam implements Serializable {
+
+ private static final long serialVersionUID = 3967276158727848348L;
+ /** 用户openid */
+ @JsonProperty("openid")
+ private String openid;
+
+ /** 用户优惠券ID */
+ @JsonProperty("user_coupon_id")
+ private String userCouponId;
+
+ public UserCouponIdParam() {
+ }
+
+ public UserCouponIdParam(String openid, String userCouponId) {
+ this.openid = openid;
+ this.userCouponId = userCouponId;
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/UserCouponListParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/UserCouponListParam.java
new file mode 100644
index 0000000000..e2946b1acd
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/UserCouponListParam.java
@@ -0,0 +1,24 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class UserCouponListParam extends CouponListParam {
+ private static final long serialVersionUID = -1056132009327357435L;
+
+ /**
+ * openId
+ */
+ @JsonProperty("openid")
+ private String openId;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/UserCouponListResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/UserCouponListResponse.java
new file mode 100644
index 0000000000..7c66e21fd2
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/UserCouponListResponse.java
@@ -0,0 +1,30 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class UserCouponListResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 5201633937239352879L;
+ /** 优惠券id列表 */
+ @JsonProperty("user_coupon_list")
+ private List coupons;
+
+ /** 优惠券总数 */
+ @JsonProperty("total_num")
+ private Integer totalNum;
+
+ /** 优惠券上下文 */
+ @JsonProperty("page_ctx")
+ private String pageCtx;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/UserCouponResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/UserCouponResponse.java
new file mode 100644
index 0000000000..925b6d421f
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/UserCouponResponse.java
@@ -0,0 +1,27 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class UserCouponResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 1434098386857953234L;
+ @JsonProperty("user_coupon")
+ private UserCoupon coupon;
+
+ @JsonProperty("openid")
+ private String openid;
+
+ @JsonProperty("unionid")
+ private String unionid;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/UserExtInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/UserExtInfo.java
new file mode 100644
index 0000000000..08344f781e
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/UserExtInfo.java
@@ -0,0 +1,21 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 用户优惠券附加信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class UserExtInfo implements Serializable {
+
+ private static final long serialVersionUID = 8304922825230343409L;
+ /** 优惠券核销时间 */
+ @JsonProperty("use_time")
+ private Long useTime;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/ValidInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/ValidInfo.java
new file mode 100644
index 0000000000..f6dab1ef8f
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/coupon/ValidInfo.java
@@ -0,0 +1,33 @@
+package com.binarywang.wxjava.store.bean.coupon;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 优惠券有效信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class ValidInfo implements Serializable {
+
+ private static final long serialVersionUID = -4550516248380285635L;
+ /** 优惠券有效期类型 {@link com.binarywang.wxjava.store.enums.CouponValidType} */
+ @JsonProperty("valid_type")
+ private Integer validType;
+
+ /** 优惠券有效天数,valid_type=2时才有意义 */
+ @JsonProperty("valid_day_num")
+ private Integer validDayNum;
+
+ /** 优惠券有效期开始时间,valid_type=1时才有意义 */
+ @JsonProperty("start_time")
+ private Long startTime;
+
+ /** 优惠券有效期结束时间,valid_type=1时才有意义 */
+ @JsonProperty("end_time")
+ private Long endTime;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/delivery/DeliveryCompanyInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/delivery/DeliveryCompanyInfo.java
new file mode 100644
index 0000000000..ebd0aca1ff
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/delivery/DeliveryCompanyInfo.java
@@ -0,0 +1,25 @@
+package com.binarywang.wxjava.store.bean.delivery;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 快递公司信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class DeliveryCompanyInfo implements Serializable {
+
+ private static final long serialVersionUID = 4225666604513570564L;
+ /** 快递公司id */
+ @JsonProperty("delivery_id")
+ private String id;
+
+ /** 快递公司名称 */
+ @JsonProperty("delivery_name")
+ private String name;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/delivery/DeliveryCompanyResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/delivery/DeliveryCompanyResponse.java
new file mode 100644
index 0000000000..b77987baf9
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/delivery/DeliveryCompanyResponse.java
@@ -0,0 +1,22 @@
+package com.binarywang.wxjava.store.bean.delivery;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 快递公司列表响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class DeliveryCompanyResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = -7695903997951385166L;
+ /** 快递公司 */
+ @JsonProperty("company_list")
+ private List companyList;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/delivery/DeliveryInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/delivery/DeliveryInfo.java
new file mode 100644
index 0000000000..7eaf104c0a
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/delivery/DeliveryInfo.java
@@ -0,0 +1,34 @@
+package com.binarywang.wxjava.store.bean.delivery;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 物流信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class DeliveryInfo implements Serializable {
+
+ private static final long serialVersionUID = -6205626967305385248L;
+ /** 快递单号 */
+ @JsonProperty("waybill_id")
+ private String waybillId;
+
+ /** 快递公司id,通过【获取快递公司列表】接口获得,非主流快递公司可以填OTHER */
+ @JsonProperty("delivery_id")
+ private String deliveryId;
+
+ /** 发货方式,1:自寄快递发货,3:虚拟商品无需物流发货(只有deliver_method=1的订单可以使用虚拟发货) */
+ @JsonProperty("deliver_type")
+ private Integer deliverType;
+
+ /** 包裹中商品信息 */
+ @JsonProperty("product_infos")
+ private List productInfos;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/delivery/DeliverySendParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/delivery/DeliverySendParam.java
new file mode 100644
index 0000000000..deb8b41231
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/delivery/DeliverySendParam.java
@@ -0,0 +1,31 @@
+package com.binarywang.wxjava.store.bean.delivery;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 订单发货信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(Include.NON_NULL)
+public class DeliverySendParam implements Serializable {
+
+ private static final long serialVersionUID = 4555821308266899135L;
+ /** 订单ID */
+ @JsonProperty("order_id")
+ private String orderId;
+
+ /** 物流信息 */
+ @JsonProperty("delivery_list")
+ private List deliveryList;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/delivery/FreightProductInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/delivery/FreightProductInfo.java
new file mode 100644
index 0000000000..77cad3985f
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/delivery/FreightProductInfo.java
@@ -0,0 +1,36 @@
+package com.binarywang.wxjava.store.bean.delivery;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 包裹中商品信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class FreightProductInfo implements Serializable {
+ private static final long serialVersionUID = -3751269707150372172L;
+
+ /**
+ * 商品id
+ */
+ @JsonProperty("product_id")
+ private String productId;
+
+ /**
+ * sku_id
+ */
+ @JsonProperty("sku_id")
+ private String skuId;
+
+ /**
+ * 商品数量
+ */
+ @JsonProperty("product_cnt")
+ private Integer productCnt;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/delivery/FreshInspectParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/delivery/FreshInspectParam.java
new file mode 100644
index 0000000000..b615a26f8a
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/delivery/FreshInspectParam.java
@@ -0,0 +1,31 @@
+package com.binarywang.wxjava.store.bean.delivery;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 商品打包信息 参数
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(Include.NON_NULL)
+public class FreshInspectParam implements Serializable {
+ private static final long serialVersionUID = -1635894867602084789L;
+
+ /** 订单ID */
+ @JsonProperty("order_id")
+ private String orderId;
+
+ /** 商品打包信息 */
+ @JsonProperty("audit_items")
+ private List auditItems;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/delivery/PackageAuditInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/delivery/PackageAuditInfo.java
new file mode 100644
index 0000000000..3ff399648d
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/delivery/PackageAuditInfo.java
@@ -0,0 +1,32 @@
+package com.binarywang.wxjava.store.bean.delivery;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.enums.PackageAuditItemType;
+
+/**
+ * 商品打包信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class PackageAuditInfo implements Serializable {
+ private static final long serialVersionUID = 1118087167138310282L;
+
+ /**
+ * 审核项名称,枚举类型参考 {@link PackageAuditItemType}
+ * 使用方法:DeliveryAuditItemType.EXPRESS_PIC.getKey()
+ */
+ @JsonProperty("item_name")
+ private String itemName;
+
+ /** 图片/视频url */
+ @JsonProperty("item_value")
+ private String itemValue;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/AbstractEwaybillRequest.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/AbstractEwaybillRequest.java
new file mode 100644
index 0000000000..7a40ab2936
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/AbstractEwaybillRequest.java
@@ -0,0 +1,37 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import java.io.Serializable;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 电子面单通用请求参数容器。
+ *
+ * 字段按官方文档动态透传,避免非官方字段定义。
+ *
+ * @author GitHub Copilot
+ */
+@Data
+@NoArgsConstructor
+public abstract class AbstractEwaybillRequest implements Serializable {
+
+ private static final long serialVersionUID = 4213577159985597237L;
+
+ @JsonIgnore
+ private Map params = new LinkedHashMap<>();
+
+ @JsonAnySetter
+ public void addParam(String key, Object value) {
+ params.put(key, value);
+ }
+
+ @JsonAnyGetter
+ public Map anyParams() {
+ return params;
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/AbstractEwaybillResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/AbstractEwaybillResponse.java
new file mode 100644
index 0000000000..18d125cbd9
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/AbstractEwaybillResponse.java
@@ -0,0 +1,33 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 电子面单通用响应参数容器。
+ *
+ * 未显式声明字段将保存到 extra 字段,便于兼容官方接口变更。
+ *
+ * @author GitHub Copilot
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public abstract class AbstractEwaybillResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = -2460196179063989718L;
+
+ @JsonIgnore
+ private Map extra = new LinkedHashMap<>();
+
+ @JsonAnySetter
+ public void addExtra(String key, Object value) {
+ extra.put(key, value);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/AccountInfoResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/AccountInfoResponse.java
new file mode 100644
index 0000000000..24cd2ebb68
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/AccountInfoResponse.java
@@ -0,0 +1,10 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+/**
+ * 电子面单网点/账号信息响应。
+ *
+ * @author GitHub Copilot
+ */
+public class AccountInfoResponse extends AbstractEwaybillResponse {
+ private static final long serialVersionUID = 5682783958522805959L;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/AddSubOrderRequest.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/AddSubOrderRequest.java
new file mode 100644
index 0000000000..b38dc825d0
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/AddSubOrderRequest.java
@@ -0,0 +1,10 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+/**
+ * 电子面单子件追加请求。
+ *
+ * @author GitHub Copilot
+ */
+public class AddSubOrderRequest extends AbstractEwaybillRequest {
+ private static final long serialVersionUID = 4250200603210217269L;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/BatchPrintOrderRequest.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/BatchPrintOrderRequest.java
new file mode 100644
index 0000000000..964552d982
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/BatchPrintOrderRequest.java
@@ -0,0 +1,12 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+public class BatchPrintOrderRequest {
+ @JsonProperty("req_list") private List reqList;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/CreateOrderRequest.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/CreateOrderRequest.java
new file mode 100644
index 0000000000..dff09d2e15
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/CreateOrderRequest.java
@@ -0,0 +1,10 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+/**
+ * 电子面单取号请求。
+ *
+ * @author GitHub Copilot
+ */
+public class CreateOrderRequest extends AbstractEwaybillRequest {
+ private static final long serialVersionUID = 2521225918646916853L;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/CreateOrderResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/CreateOrderResponse.java
new file mode 100644
index 0000000000..25af553a29
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/CreateOrderResponse.java
@@ -0,0 +1,10 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+/**
+ * 电子面单取号响应。
+ *
+ * @author GitHub Copilot
+ */
+public class CreateOrderResponse extends AbstractEwaybillResponse {
+ private static final long serialVersionUID = 9115454170108519187L;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/DeliveryListResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/DeliveryListResponse.java
new file mode 100644
index 0000000000..47aa0ea27d
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/DeliveryListResponse.java
@@ -0,0 +1,10 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+/**
+ * 开通快递公司列表响应。
+ *
+ * @author GitHub Copilot
+ */
+public class DeliveryListResponse extends AbstractEwaybillResponse {
+ private static final long serialVersionUID = 494164885034906535L;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/EwaybillOrderIdParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/EwaybillOrderIdParam.java
new file mode 100644
index 0000000000..633a25658f
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/EwaybillOrderIdParam.java
@@ -0,0 +1,14 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class EwaybillOrderIdParam {
+ @JsonProperty("ewaybill_order_id")
+ private String ewaybillOrderId;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/OrderDetailResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/OrderDetailResponse.java
new file mode 100644
index 0000000000..4350094b09
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/OrderDetailResponse.java
@@ -0,0 +1,10 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+/**
+ * 面单详情响应。
+ *
+ * @author GitHub Copilot
+ */
+public class OrderDetailResponse extends AbstractEwaybillResponse {
+ private static final long serialVersionUID = -2406734055149395916L;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/PreCreateRequest.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/PreCreateRequest.java
new file mode 100644
index 0000000000..b43dd5de0b
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/PreCreateRequest.java
@@ -0,0 +1,10 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+/**
+ * 电子面单预取号请求。
+ *
+ * @author GitHub Copilot
+ */
+public class PreCreateRequest extends AbstractEwaybillRequest {
+ private static final long serialVersionUID = 3761501770378571724L;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/PreCreateResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/PreCreateResponse.java
new file mode 100644
index 0000000000..714a0d9408
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/PreCreateResponse.java
@@ -0,0 +1,10 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+/**
+ * 电子面单预取号响应。
+ *
+ * @author GitHub Copilot
+ */
+public class PreCreateResponse extends AbstractEwaybillResponse {
+ private static final long serialVersionUID = -6302826807350860584L;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/PrintContentParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/PrintContentParam.java
new file mode 100644
index 0000000000..3f0c587365
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/PrintContentParam.java
@@ -0,0 +1,22 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/** 获取电子面单打印报文请求参数。 */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class PrintContentParam implements Serializable {
+ private static final long serialVersionUID = 6898522842175667816L;
+
+ @JsonProperty("ewaybill_order_id")
+ private String ewaybillOrderId;
+
+ @JsonProperty("template_id")
+ private String templateId;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/PrintContentResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/PrintContentResponse.java
new file mode 100644
index 0000000000..f29a2c5467
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/PrintContentResponse.java
@@ -0,0 +1,10 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+/**
+ * 打印报文响应。
+ *
+ * @author GitHub Copilot
+ */
+public class PrintContentResponse extends AbstractEwaybillResponse {
+ private static final long serialVersionUID = 1097526332493027364L;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/PrintOrderRequest.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/PrintOrderRequest.java
new file mode 100644
index 0000000000..eb5281340f
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/PrintOrderRequest.java
@@ -0,0 +1,13 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+public class PrintOrderRequest extends EwaybillOrderIdParam {
+ @JsonProperty("delivery_id") private String deliveryId;
+ @JsonProperty("waybill_id") private String waybillId;
+ @JsonProperty("re_print") private Boolean rePrint;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/TemplateCodeParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/TemplateCodeParam.java
new file mode 100644
index 0000000000..b6ec868532
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/TemplateCodeParam.java
@@ -0,0 +1,18 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/** 面单标准模板编码请求参数。 */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class TemplateCodeParam implements Serializable {
+ private static final long serialVersionUID = 4473438799300843172L;
+
+ @JsonProperty("template_code")
+ private String templateCode;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/TemplateConfigResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/TemplateConfigResponse.java
new file mode 100644
index 0000000000..2c8101245a
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/TemplateConfigResponse.java
@@ -0,0 +1,10 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+/**
+ * 面单标准模板响应。
+ *
+ * @author GitHub Copilot
+ */
+public class TemplateConfigResponse extends AbstractEwaybillResponse {
+ private static final long serialVersionUID = 6779567498624326386L;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/TemplateCreateRequest.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/TemplateCreateRequest.java
new file mode 100644
index 0000000000..e77ef91614
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/TemplateCreateRequest.java
@@ -0,0 +1,10 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+/**
+ * 新增面单模板请求。
+ *
+ * @author GitHub Copilot
+ */
+public class TemplateCreateRequest extends AbstractEwaybillRequest {
+ private static final long serialVersionUID = 2974771986022948202L;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/TemplateIdParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/TemplateIdParam.java
new file mode 100644
index 0000000000..bf089f359d
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/TemplateIdParam.java
@@ -0,0 +1,22 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 模板ID请求参数。
+ *
+ * @author GitHub Copilot
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class TemplateIdParam implements Serializable {
+ private static final long serialVersionUID = -2397006631686547550L;
+
+ @JsonProperty("template_id")
+ private String templateId;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/TemplateIdResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/TemplateIdResponse.java
new file mode 100644
index 0000000000..d28ddecdd8
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/TemplateIdResponse.java
@@ -0,0 +1,21 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * 面单模板ID响应。
+ *
+ * @author GitHub Copilot
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class TemplateIdResponse extends AbstractEwaybillResponse {
+ private static final long serialVersionUID = -6756111662032438585L;
+
+ @JsonProperty("template_id")
+ private String templateId;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/TemplateInfoResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/TemplateInfoResponse.java
new file mode 100644
index 0000000000..4565cf0178
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/TemplateInfoResponse.java
@@ -0,0 +1,10 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+/**
+ * 面单模板信息响应。
+ *
+ * @author GitHub Copilot
+ */
+public class TemplateInfoResponse extends AbstractEwaybillResponse {
+ private static final long serialVersionUID = 5718279884380636289L;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/TemplateUpdateRequest.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/TemplateUpdateRequest.java
new file mode 100644
index 0000000000..93433ed731
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/TemplateUpdateRequest.java
@@ -0,0 +1,10 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+/**
+ * 更新面单模板请求。
+ *
+ * @author GitHub Copilot
+ */
+public class TemplateUpdateRequest extends AbstractEwaybillRequest {
+ private static final long serialVersionUID = -6201137374059216895L;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/WaybillIdParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/WaybillIdParam.java
new file mode 100644
index 0000000000..e7248771b8
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/WaybillIdParam.java
@@ -0,0 +1,22 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 运单ID请求参数。
+ *
+ * @author GitHub Copilot
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class WaybillIdParam implements Serializable {
+ private static final long serialVersionUID = -7601452772833268240L;
+
+ @JsonProperty("waybill_id")
+ private String waybillId;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/WaybillIdsParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/WaybillIdsParam.java
new file mode 100644
index 0000000000..9b631cd796
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/ewaybill/WaybillIdsParam.java
@@ -0,0 +1,23 @@
+package com.binarywang.wxjava.store.bean.ewaybill;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 批量运单ID请求参数。
+ *
+ * @author GitHub Copilot
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class WaybillIdsParam implements Serializable {
+ private static final long serialVersionUID = -9030594599179993010L;
+
+ @JsonProperty("waybill_ids")
+ private List waybillIds;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/favorite/FavoriteCountResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/favorite/FavoriteCountResponse.java
new file mode 100644
index 0000000000..3ebdffc963
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/favorite/FavoriteCountResponse.java
@@ -0,0 +1,38 @@
+package com.binarywang.wxjava.store.bean.favorite;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 店铺收藏人数 响应
+ *
+ * @author GitHub Copilot
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class FavoriteCountResponse extends WxStoreBaseResponse {
+
+ /** 店铺首页收藏用户数 */
+ @JsonProperty("favor_uv_acc_shop_homepage")
+ private Long favorUvAccShopHomepage;
+
+ /** 订单详情页收藏用户数 */
+ @JsonProperty("favor_uv_acc_order_detail")
+ private Long favorUvAccOrderDetail;
+
+ /** 商品详情页收藏用户数 */
+ @JsonProperty("favor_uv_acc_product_detail")
+ private Long favorUvAccProductDetail;
+
+ /** 其他场景收藏用户数 */
+ @JsonProperty("favor_uv_acc_other_scene")
+ private Long favorUvAccOtherScene;
+
+ /** 所有收藏用户数 */
+ @JsonProperty("favor_uv_acc_all")
+ private Long favorUvAccAll;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/AddressInfoList.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/AddressInfoList.java
new file mode 100644
index 0000000000..adbb6d2ad1
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/AddressInfoList.java
@@ -0,0 +1,23 @@
+package com.binarywang.wxjava.store.bean.freight;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.AddressInfo;
+
+/**
+ * 地址列表
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class AddressInfoList implements Serializable {
+
+ private static final long serialVersionUID = 5923805297331862706L;
+ /** 地址列表 */
+ @JsonProperty("address_infos")
+ private List addressInfos;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/AllConditionFreeDetail.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/AllConditionFreeDetail.java
new file mode 100644
index 0000000000..f8d269c994
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/AllConditionFreeDetail.java
@@ -0,0 +1,32 @@
+package com.binarywang.wxjava.store.bean.freight;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 计费规则列表
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class AllConditionFreeDetail implements Serializable {
+
+ private static final long serialVersionUID = -1649520737632417036L;
+ /** 计费规则列表 */
+ @JsonProperty("condition_free_detail_list")
+ private List list;
+
+ @JsonIgnore
+ public void addDetail(ConditionFreeDetail detail) {
+ if (list == null) {
+ list = new ArrayList<>(16);
+ }
+ list.add(detail);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/AllFreightCalcMethod.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/AllFreightCalcMethod.java
new file mode 100644
index 0000000000..04cc095614
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/AllFreightCalcMethod.java
@@ -0,0 +1,31 @@
+package com.binarywang.wxjava.store.bean.freight;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import lombok.Data;
+
+/**
+ * 具体计费方法,默认运费,指定地区运费等
+ *
+ * @author Zeyes
+ */
+@Data
+public class AllFreightCalcMethod implements Serializable {
+
+ private static final long serialVersionUID = 6330919525271991949L;
+ /** 计算方法列表 */
+ @JsonProperty("freight_calc_method_list")
+ private List list;
+
+ public AllFreightCalcMethod() {
+ }
+
+ public void addDetail(FreightCalcMethod detail) {
+ if (list == null) {
+ list = new ArrayList<>(16);
+ }
+ list.add(detail);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/ConditionFreeDetail.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/ConditionFreeDetail.java
new file mode 100644
index 0000000000..30bed0e768
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/ConditionFreeDetail.java
@@ -0,0 +1,38 @@
+package com.binarywang.wxjava.store.bean.freight;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * 计费规则
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class ConditionFreeDetail extends AddressInfoList {
+
+ private static final long serialVersionUID = 9204578767029379142L;
+ /** 最低件数 */
+ @JsonProperty("min_piece")
+ private Integer minPiece;
+
+ /** 最低重量,单位千克,订单商品总质量小于一千克,算作一千克 */
+ @JsonProperty("min_weight")
+ private Double minWeight;
+
+ /** 最低金额,单位(分) */
+ @JsonProperty("min_amount")
+ private Integer minAmount;
+
+ /** 计费方式对应的选项是否已设置 */
+ @JsonProperty("valuation_flag")
+ private Integer valuationFlag;
+
+ /** 金额是否设置 */
+ @JsonProperty("amount_flag")
+ private Integer amountFlag;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/FreightCalcMethod.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/FreightCalcMethod.java
new file mode 100644
index 0000000000..934cbfd9c6
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/FreightCalcMethod.java
@@ -0,0 +1,43 @@
+package com.binarywang.wxjava.store.bean.freight;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * 运费计算方法
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class FreightCalcMethod extends AddressInfoList {
+
+ private static final long serialVersionUID = -8857987538121721376L;
+ /** 是否默认运费 */
+ @JsonProperty("is_default")
+ private Boolean isDefault;
+
+ /** 快递公司 */
+ @JsonProperty("delivery_id")
+ private String deliveryId;
+
+ /** 首段运费需要满足的数量 */
+ @JsonProperty("first_val_amount")
+ private Integer firstValAmount;
+
+ /** 首段运费的金额 */
+ @JsonProperty("first_price")
+ private Integer firstPrice;
+
+ /** 续费的数量 */
+ @JsonProperty("second_val_amount")
+ private Integer secondValAmount;
+
+ /** 续费的金额 */
+ @JsonProperty("second_price")
+ private Integer secondPrice;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/FreightTemplate.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/FreightTemplate.java
new file mode 100644
index 0000000000..c33aad36fa
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/FreightTemplate.java
@@ -0,0 +1,71 @@
+package com.binarywang.wxjava.store.bean.freight;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.AddressInfo;
+
+/**
+ * 运费模板
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class FreightTemplate implements Serializable {
+
+ private static final long serialVersionUID = -7876281924385999053L;
+ /** 模板id */
+ @JsonProperty("template_id")
+ private String templateId;
+
+ /** 模板名称 */
+ @JsonProperty("name")
+ private String name;
+
+ /** 计费类型,PIECE:按件数,WEIGHT:按重量 */
+ @JsonProperty("valuation_type")
+ private String valuationType;
+
+ /** 发货时间期限 {@link com.binarywang.wxjava.store.enums.SendTime} */
+ @JsonProperty("send_time")
+ private String sendTime;
+
+ /** 发货地址 */
+ @JsonProperty("address_info")
+ private AddressInfo addressInfo;
+
+ /** 运输方式,EXPRESS:快递 */
+ @JsonProperty("delivery_type")
+ private String deliveryType;
+
+ /** 计费方式:FREE包邮 CONDITION_FREE条件包邮 NO_FREE不包邮 */
+ @JsonProperty("shipping_method")
+ private String shippingMethod;
+
+ /** 条件包邮详情 */
+ @JsonProperty("all_condition_free_detail")
+ private AllConditionFreeDetail allConditionFreeDetail;
+
+ /** 具体计费方法,默认运费,指定地区运费等 */
+ @JsonProperty("all_freight_calc_method")
+ private AllFreightCalcMethod allFreightCalcMethod;
+
+ /** 创建时间戳 */
+ @JsonProperty("create_time")
+ private Long createTime;
+
+ /** 更新时间戳 */
+ @JsonProperty("update_time")
+ private Long updateTime;
+
+ /** 是否默认模板 */
+ @JsonProperty("is_default")
+ private Boolean isDefault;
+
+ /** 不发货区域 */
+ @JsonProperty("not_send_area")
+ private NotSendArea notSendArea;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/NotSendArea.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/NotSendArea.java
new file mode 100644
index 0000000000..c89dd7b7fd
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/NotSendArea.java
@@ -0,0 +1,18 @@
+package com.binarywang.wxjava.store.bean.freight;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * 不发货区域
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class NotSendArea extends AddressInfoList {
+
+ private static final long serialVersionUID = -1836467830293286560L;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/TemplateAddParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/TemplateAddParam.java
new file mode 100644
index 0000000000..7d93e2b5b9
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/TemplateAddParam.java
@@ -0,0 +1,26 @@
+package com.binarywang.wxjava.store.bean.freight;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 运费模板 请求参数
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(Include.NON_NULL)
+public class TemplateAddParam implements Serializable {
+
+ private static final long serialVersionUID = 2602919369418149309L;
+ /** 起始位置 */
+ @JsonProperty("freight_template")
+ private FreightTemplate template;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/TemplateIdResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/TemplateIdResponse.java
new file mode 100644
index 0000000000..ef0e498af2
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/TemplateIdResponse.java
@@ -0,0 +1,24 @@
+package com.binarywang.wxjava.store.bean.freight;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 运费模板 列表 响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class TemplateIdResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 5179651364165620640L;
+ /** 运费模板id */
+ @JsonProperty("template_id")
+ private String templateId;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/TemplateInfoResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/TemplateInfoResponse.java
new file mode 100644
index 0000000000..4883e56e7d
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/TemplateInfoResponse.java
@@ -0,0 +1,24 @@
+package com.binarywang.wxjava.store.bean.freight;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 运费模板 响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class TemplateInfoResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = -8381510839783330617L;
+ /** 运费模板id */
+ @JsonProperty("freight_template")
+ private FreightTemplate template;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/TemplateListParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/TemplateListParam.java
new file mode 100644
index 0000000000..410c644f6a
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/TemplateListParam.java
@@ -0,0 +1,27 @@
+package com.binarywang.wxjava.store.bean.freight;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.binarywang.wxjava.store.bean.base.OffsetParam;
+
+/**
+ * 运费模板 列表 请求参数
+ *
+ * @author Zeyes
+ */
+@Data
+@JsonInclude(Include.NON_NULL)
+@EqualsAndHashCode(callSuper = true)
+public class TemplateListParam extends OffsetParam {
+
+ private static final long serialVersionUID = -6716154891499581562L;
+
+ public TemplateListParam() {
+ }
+
+ public TemplateListParam(Integer offset, Integer limit) {
+ super(offset, limit);
+ }
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/TemplateListResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/TemplateListResponse.java
new file mode 100644
index 0000000000..caf50b5400
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/freight/TemplateListResponse.java
@@ -0,0 +1,24 @@
+package com.binarywang.wxjava.store.bean.freight;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 运费模板 列表 响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class TemplateListResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 5375602442595264719L;
+ /** 运费模板 id 列表 */
+ @JsonProperty("template_id_list")
+ private List ids;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/AccountInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/AccountInfo.java
new file mode 100644
index 0000000000..684b2656ab
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/AccountInfo.java
@@ -0,0 +1,53 @@
+package com.binarywang.wxjava.store.bean.fund;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 账户信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class AccountInfo implements Serializable {
+
+ private static final long serialVersionUID = -2107134853480093451L;
+ /** 账户类型 {@link com.binarywang.wxjava.store.enums.AccountType} */
+ @JsonProperty("bank_account_type")
+ private String bankAccountType;
+
+ /** 开户银行 */
+ @JsonProperty("account_bank")
+ private String accountBank;
+
+ /** 开户银行省市编码 */
+ @JsonProperty("bank_address_code")
+ private String bankAddressCode;
+
+ /** 开户银行联行号 */
+ @JsonProperty("bank_branch_id")
+ private String bankBranchId;
+
+ /** 开户银行全称 */
+ @JsonProperty("bank_name")
+ private String bankName;
+
+ /** 银行账号 */
+ @JsonProperty("account_number")
+ private String accountNumber;
+
+ /** 开户银行名称前端展示值 */
+ @JsonProperty("account_bank4show")
+ private String accountBank4show;
+
+ /** 账户名称 */
+ @JsonProperty("account_name")
+ private String accountName;
+
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/AccountInfoParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/AccountInfoParam.java
new file mode 100644
index 0000000000..533d5268e0
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/AccountInfoParam.java
@@ -0,0 +1,25 @@
+package com.binarywang.wxjava.store.bean.fund;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 账户信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class AccountInfoParam implements Serializable {
+
+ private static final long serialVersionUID = 1689204583402779134L;
+ @JsonProperty("account_info")
+ private AccountInfo accountInfo;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/AccountInfoResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/AccountInfoResponse.java
new file mode 100644
index 0000000000..e3073b2f17
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/AccountInfoResponse.java
@@ -0,0 +1,23 @@
+package com.binarywang.wxjava.store.bean.fund;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 账户信息响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class AccountInfoResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = -8316068503468969533L;
+ /** 账户信息 */
+ @JsonProperty("account_info")
+ private AccountInfo accountInfo;
+
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/BalanceInfoResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/BalanceInfoResponse.java
new file mode 100644
index 0000000000..a00d01b876
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/BalanceInfoResponse.java
@@ -0,0 +1,30 @@
+package com.binarywang.wxjava.store.bean.fund;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 账户余额信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class BalanceInfoResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 4480496860612566921L;
+ /** 可提现余额 */
+ @JsonProperty("available_amount")
+ private Integer availableAmount;
+
+ /** 待结算余额 */
+ @JsonProperty("pending_amount")
+ private Integer pendingAmount;
+
+ /** 二级商户号 */
+ @JsonProperty("sub_mchid")
+ private String subMchid;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/FlowListResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/FlowListResponse.java
new file mode 100644
index 0000000000..e84a272252
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/FlowListResponse.java
@@ -0,0 +1,30 @@
+package com.binarywang.wxjava.store.bean.fund;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 流水列表响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class FlowListResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 8017827444308973489L;
+ /** 流水单号列表 */
+ @JsonProperty("flow_ids")
+ private List flowIds;
+
+ /** 是否还有下一页 */
+ @JsonProperty("has_more")
+ private boolean hasMore;
+
+ /** 分页参数,深翻页时使用 */
+ @JsonProperty("next_key")
+ private String nextKey;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/FlowRelatedInfo.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/FlowRelatedInfo.java
new file mode 100644
index 0000000000..c0e55692f2
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/FlowRelatedInfo.java
@@ -0,0 +1,45 @@
+package com.binarywang.wxjava.store.bean.fund;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 流水关联信息
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class FlowRelatedInfo implements Serializable {
+
+ private static final long serialVersionUID = 3757839018198212504L;
+ /** 关联类型, 1 订单, 2售后,3 提现,4 运费险 */
+ @JsonProperty("related_type")
+ private Integer relatedType;
+
+ /** 关联订单号 */
+ @JsonProperty("order_id")
+ private String orderId;
+
+ /** 关联售后单号 */
+ @JsonProperty("aftersale_id")
+ private String afterSaleId;
+
+ /** 关联提现单号 */
+ @JsonProperty("withdraw_id")
+ private String withdrawId;
+
+ /** 记账时间 */
+ @JsonProperty("bookkeeping_time")
+ private String bookkeepingTime;
+
+ /** 关联运费险单号 */
+ @JsonProperty("insurance_id")
+ private String insuranceId;
+
+ /** 关联支付单号 */
+ @JsonProperty("transaction_id")
+ private String transactionId;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/FundsFlow.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/FundsFlow.java
new file mode 100644
index 0000000000..0701f3e046
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/FundsFlow.java
@@ -0,0 +1,51 @@
+package com.binarywang.wxjava.store.bean.fund;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.List;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 资金流水
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class FundsFlow implements Serializable {
+
+ private static final long serialVersionUID = -2785498655066305510L;
+ /** 流水id */
+ @JsonProperty("flow_id")
+ private String flowId;
+
+ /** 资金类型,见 {@link com.binarywang.wxjava.store.enums.FundsType} */
+ @JsonProperty("funds_type")
+ private Integer fundsType;
+
+ /** 流水类型, 1 收入,2 支出 */
+ @JsonProperty("flow_type")
+ private Integer flowType;
+
+ /** 流水金额 */
+ @JsonProperty("amount")
+ private Integer amount;
+
+ /** 余额 */
+ @JsonProperty("balance")
+ private Integer balance;
+
+ /** 流水关联信息 */
+ @JsonProperty("related_info_list")
+ private List relatedInfos;
+
+ /** 记账时间 */
+ @JsonProperty("bookkeeping_time")
+ private String bookkeepingTime;
+
+ /** 备注 */
+ @JsonProperty("remark")
+ private String remark;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/FundsFlowResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/FundsFlowResponse.java
new file mode 100644
index 0000000000..f279c704fc
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/FundsFlowResponse.java
@@ -0,0 +1,23 @@
+package com.binarywang.wxjava.store.bean.fund;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 资金流水响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class FundsFlowResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = -1130785908352355914L;
+ /** 流水信息 */
+ @JsonProperty("funds_flow")
+ private FundsFlow fundsFlow;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/FundsListParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/FundsListParam.java
new file mode 100644
index 0000000000..5de8bcfbe4
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/FundsListParam.java
@@ -0,0 +1,49 @@
+package com.binarywang.wxjava.store.bean.fund;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 资金流水参数
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class FundsListParam implements Serializable {
+
+ private static final long serialVersionUID = 2998955690332382229L;
+ /** 页码,从1开始 */
+ @JsonProperty("page")
+ private Integer page;
+
+ /** 页数,不填默认为10 */
+ @JsonProperty("page_size")
+ protected Integer pageSize;
+
+ /** 流水产生的开始时间,uinx时间戳 */
+ @JsonProperty("start_time")
+ private Long startTime;
+
+ /** 流水产生的结束时间,unix时间戳 */
+ @JsonProperty("end_time")
+ private Long endTime;
+
+ /** 流水类型, 1 收入,2 支出 */
+ @JsonProperty("flow_type")
+ private Integer flowType;
+
+ /** 关联支付单号 */
+ @JsonProperty("transaction_id")
+ private String transactionId;
+
+ /**
+ * 分页参数,翻页时写入上一页返回的next_key(page为上一页加一, 并且page_size与上一页相同的时候才生效),page * page_size >= 10000时必填
+ */
+ @JsonProperty("next_key")
+ private String nextKey;
+
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/WithdrawDetailResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/WithdrawDetailResponse.java
new file mode 100644
index 0000000000..5294bd7e2c
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/WithdrawDetailResponse.java
@@ -0,0 +1,55 @@
+package com.binarywang.wxjava.store.bean.fund;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 提现详情响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class WithdrawDetailResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = 1473346677401168323L;
+ /** 金额 */
+ @JsonProperty("amount")
+ private Integer amount;
+
+ /** 创建时间 */
+ @JsonProperty("create_time")
+ private Long createTime;
+
+ /** 更新时间 */
+ @JsonProperty("update_time")
+ private Long updateTime;
+
+ /** 失败原因 */
+ @JsonProperty("reason")
+ private String reason;
+
+ /** 备注 */
+ @JsonProperty("remark")
+ private String remark;
+
+ /** 银行附言 */
+ @JsonProperty("bank_memo")
+ private String bankMemo;
+
+ /** 银行名称 */
+ @JsonProperty("bank_name")
+ private String bankName;
+
+ /** 银行账户 */
+ @JsonProperty("bank_num")
+ private String bankNum;
+
+ /** 提现状态 {@link com.binarywang.wxjava.store.enums.WithdrawStatus} */
+ @JsonProperty("status")
+ private String status;
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/WithdrawListParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/WithdrawListParam.java
new file mode 100644
index 0000000000..daae0ec846
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/WithdrawListParam.java
@@ -0,0 +1,36 @@
+package com.binarywang.wxjava.store.bean.fund;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 提现列表参数
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class WithdrawListParam implements Serializable {
+
+ private static final long serialVersionUID = -672422656564313999L;
+ /** 页码,从1开始 */
+ @JsonProperty("page_num")
+ private Integer pageNum;
+
+ /** 页数 */
+ @JsonProperty("page_size")
+ private Integer pageSize;
+
+ /** 开始时间 */
+ @JsonProperty("start_time")
+ private Long startTime;
+
+ /** 结束时间 */
+ @JsonProperty("end_time")
+ private Long endTime;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/WithdrawListResponse.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/WithdrawListResponse.java
new file mode 100644
index 0000000000..2d0693e037
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/WithdrawListResponse.java
@@ -0,0 +1,23 @@
+package com.binarywang.wxjava.store.bean.fund;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import com.binarywang.wxjava.store.bean.base.WxStoreBaseResponse;
+
+/**
+ * 提现列表响应
+ *
+ * @author Zeyes
+ */
+@Data
+@NoArgsConstructor
+public class WithdrawListResponse extends WxStoreBaseResponse {
+
+ private static final long serialVersionUID = -7950467108750325235L;
+ /** 提现单号列表 */
+ @JsonProperty("withdraw_ids")
+ private List withdrawIds;
+
+}
diff --git a/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/WithdrawSubmitParam.java b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/WithdrawSubmitParam.java
new file mode 100644
index 0000000000..4fb55add9c
--- /dev/null
+++ b/weixin-java-store/src/main/java/com/binarywang/wxjava/store/bean/fund/WithdrawSubmitParam.java
@@ -0,0 +1,32 @@
+package com.binarywang.wxjava.store.bean.fund;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 提现提交参数
+ *
+ * @author