From 94b42ee9ae8bb472dfe4c43e35728f42b19298ae Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Tue, 27 Sep 2016 23:51:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=97=A8=E5=BA=97=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=88=97=E8=A1=A8=E7=9A=84=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=20for=20issue=20#17?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../weixin/mp/api/WxMpStoreService.java | 3 +- .../mp/api/impl/WxMpStoreServiceImpl.java | 40 ++++++++----------- .../mp/api/impl/WxMpStoreServiceImplTest.java | 10 ++--- 3 files changed, 23 insertions(+), 30 deletions(-) diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpStoreService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpStoreService.java index 421204e6..f4f3ccb6 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpStoreService.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpStoreService.java @@ -5,6 +5,7 @@ import java.util.List; import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.mp.bean.store.WxMpStoreBaseInfo; import me.chanjar.weixin.mp.bean.store.WxMpStoreInfo; +import me.chanjar.weixin.mp.bean.store.WxMpStoreListResult; /** * 门店管理的相关接口代码 @@ -36,7 +37,7 @@ public interface WxMpStoreService { * @param limit 返回数据条数,最大允许50,默认为20 * @throws WxErrorException */ - List list(int begin, int limit) throws WxErrorException; + WxMpStoreListResult list(int begin, int limit) throws WxErrorException; /** *
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpStoreServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpStoreServiceImpl.java
index 83d6a0f0..99740d45 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpStoreServiceImpl.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpStoreServiceImpl.java
@@ -67,7 +67,7 @@ public class WxMpStoreServiceImpl implements WxMpStoreService {
   }
 
   @Override
-  public List list(int begin, int limit)
+  public WxMpStoreListResult list(int begin, int limit)
       throws WxErrorException {
     String url = API_BASE_URL + "/getpoilist";
     JsonObject params = new JsonObject();
@@ -80,33 +80,25 @@ public class WxMpStoreServiceImpl implements WxMpStoreService {
       throw new WxErrorException(wxError);
     }
 
-    return WxMpStoreListResult.fromJson(response).getBusinessList();
+    return WxMpStoreListResult.fromJson(response);
   }
 
   @Override
   public List listAll() throws WxErrorException {
-    int limit = 10;
-    String url = API_BASE_URL + "/getpoilist";
-    JsonObject params = new JsonObject();
-    params.addProperty("begin", 0);
-    params.addProperty("limit", limit);//返回数据条数,最大允许50,默认为20
-    String response = this.wxMpService.post(url, params.toString());
-
-    WxError wxError = WxError.fromJson(response);
-    if (wxError.getErrorCode() != 0) {
-      throw new WxErrorException(wxError);
-    }
-
-    WxMpStoreListResult listResult = WxMpStoreListResult.fromJson(response);
-    List stores = Lists
-        .newArrayList(listResult.getBusinessList());
-    if (listResult.getTotalCount() > limit) {
-      params = new JsonObject();
-      params.addProperty("begin", limit);
-      params.addProperty("limit", listResult.getTotalCount() - limit);
-      stores.addAll(WxMpStoreListResult
-          .fromJson(this.wxMpService.post(url, params.toString()))
-          .getBusinessList());
+    int limit = 50;
+    WxMpStoreListResult list = this.list(0, limit);
+    List stores = list.getBusinessList();
+    if (list.getTotalCount() > limit) {
+      int begin = limit;
+      WxMpStoreListResult followingList = this.list(begin, limit);
+      while (followingList.getBusinessList().size() > 0) {
+        stores.addAll(followingList.getBusinessList());
+        begin += limit;
+        if (begin >= list.getTotalCount()) {
+          break;
+        }
+        followingList = this.list(begin, limit);
+      }
     }
 
     return stores;
diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpStoreServiceImplTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpStoreServiceImplTest.java
index 6f655232..9c01c431 100644
--- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpStoreServiceImplTest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpStoreServiceImplTest.java
@@ -18,6 +18,7 @@ import me.chanjar.weixin.common.exception.WxErrorException;
 import me.chanjar.weixin.mp.api.ApiTestModule;
 import me.chanjar.weixin.mp.bean.store.WxMpStoreBaseInfo;
 import me.chanjar.weixin.mp.bean.store.WxMpStoreInfo;
+import me.chanjar.weixin.mp.bean.store.WxMpStoreListResult;
 
 /**
  * @author 王彬 (Binary Wang)
@@ -37,17 +38,16 @@ public class WxMpStoreServiceImplTest {
     this.wxMpService.getStoreService()
         .add(WxMpStoreBaseInfo.builder().businessName("haha").branchName("abc")
             .province("aaa").district("aaa").telephone("122").address("abc")
-            .categories(new String[] { "美食,江浙菜" })
+.categories(new String[] { "美食,江浙菜" })
             .longitude(new BigDecimal("115.32375"))
             .latitude(new BigDecimal("25.097486")).city("aaa").offsetType(1)
             .build());
   }
 
   public void testList() throws WxErrorException {
-    List list = this.wxMpService.getStoreService().list(0, 10);
-    assertNotNull(list);
-    System.err.println(list.size());
-    System.err.println(list);
+    WxMpStoreListResult result = this.wxMpService.getStoreService().list(0, 10);
+    assertNotNull(result);
+    System.err.println(result);
   }
 
   public void testListAll() throws WxErrorException {