mirror of
				https://gitee.com/binary/weixin-java-tools.git
				synced 2025-10-31 02:28:25 +08:00 
			
		
		
		
	优化门店查询列表的接口, for issue #17
This commit is contained in:
		| @ -5,6 +5,7 @@ import java.util.List; | |||||||
| import me.chanjar.weixin.common.exception.WxErrorException; | import me.chanjar.weixin.common.exception.WxErrorException; | ||||||
| import me.chanjar.weixin.mp.bean.store.WxMpStoreBaseInfo; | import me.chanjar.weixin.mp.bean.store.WxMpStoreBaseInfo; | ||||||
| import me.chanjar.weixin.mp.bean.store.WxMpStoreInfo; | 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 |    * @param limit 返回数据条数,最大允许50,默认为20 | ||||||
|    * @throws WxErrorException |    * @throws WxErrorException | ||||||
|    */ |    */ | ||||||
|   List<WxMpStoreInfo> list(int begin, int limit) throws WxErrorException; |   WxMpStoreListResult list(int begin, int limit) throws WxErrorException; | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * <pre> |    * <pre> | ||||||
|  | |||||||
| @ -67,7 +67,7 @@ public class WxMpStoreServiceImpl implements WxMpStoreService { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Override |   @Override | ||||||
|   public List<WxMpStoreInfo> list(int begin, int limit) |   public WxMpStoreListResult list(int begin, int limit) | ||||||
|       throws WxErrorException { |       throws WxErrorException { | ||||||
|     String url = API_BASE_URL + "/getpoilist"; |     String url = API_BASE_URL + "/getpoilist"; | ||||||
|     JsonObject params = new JsonObject(); |     JsonObject params = new JsonObject(); | ||||||
| @ -80,33 +80,25 @@ public class WxMpStoreServiceImpl implements WxMpStoreService { | |||||||
|       throw new WxErrorException(wxError); |       throw new WxErrorException(wxError); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     return WxMpStoreListResult.fromJson(response).getBusinessList(); |     return WxMpStoreListResult.fromJson(response); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Override |   @Override | ||||||
|   public List<WxMpStoreInfo> listAll() throws WxErrorException { |   public List<WxMpStoreInfo> listAll() throws WxErrorException { | ||||||
|     int limit = 10; |     int limit = 50; | ||||||
|     String url = API_BASE_URL + "/getpoilist"; |     WxMpStoreListResult list = this.list(0, limit); | ||||||
|     JsonObject params = new JsonObject(); |     List<WxMpStoreInfo> stores = list.getBusinessList(); | ||||||
|     params.addProperty("begin", 0); |     if (list.getTotalCount() > limit) { | ||||||
|     params.addProperty("limit", limit);//返回数据条数,最大允许50,默认为20 |       int begin = limit; | ||||||
|     String response = this.wxMpService.post(url, params.toString()); |       WxMpStoreListResult followingList = this.list(begin, limit); | ||||||
|  |       while (followingList.getBusinessList().size() > 0) { | ||||||
|     WxError wxError = WxError.fromJson(response); |         stores.addAll(followingList.getBusinessList()); | ||||||
|     if (wxError.getErrorCode() != 0) { |         begin += limit; | ||||||
|       throw new WxErrorException(wxError); |         if (begin >= list.getTotalCount()) { | ||||||
|  |           break; | ||||||
|  |         } | ||||||
|  |         followingList = this.list(begin, limit); | ||||||
|       } |       } | ||||||
|  |  | ||||||
|     WxMpStoreListResult listResult = WxMpStoreListResult.fromJson(response); |  | ||||||
|     List<WxMpStoreInfo> 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()); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     return stores; |     return stores; | ||||||
|  | |||||||
| @ -18,6 +18,7 @@ import me.chanjar.weixin.common.exception.WxErrorException; | |||||||
| import me.chanjar.weixin.mp.api.ApiTestModule; | import me.chanjar.weixin.mp.api.ApiTestModule; | ||||||
| import me.chanjar.weixin.mp.bean.store.WxMpStoreBaseInfo; | import me.chanjar.weixin.mp.bean.store.WxMpStoreBaseInfo; | ||||||
| import me.chanjar.weixin.mp.bean.store.WxMpStoreInfo; | import me.chanjar.weixin.mp.bean.store.WxMpStoreInfo; | ||||||
|  | import me.chanjar.weixin.mp.bean.store.WxMpStoreListResult; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * @author 王彬 (Binary Wang) |  * @author 王彬 (Binary Wang) | ||||||
| @ -44,10 +45,9 @@ public class WxMpStoreServiceImplTest { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   public void testList() throws WxErrorException { |   public void testList() throws WxErrorException { | ||||||
|     List<WxMpStoreInfo> list = this.wxMpService.getStoreService().list(0, 10); |     WxMpStoreListResult result = this.wxMpService.getStoreService().list(0, 10); | ||||||
|     assertNotNull(list); |     assertNotNull(result); | ||||||
|     System.err.println(list.size()); |     System.err.println(result); | ||||||
|     System.err.println(list); |  | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   public void testListAll() throws WxErrorException { |   public void testListAll() throws WxErrorException { | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Binary Wang
					Binary Wang