优化门店查询列表的接口, for issue #17

This commit is contained in:
Binary Wang 2016-09-27 23:51:29 +08:00
parent c7a04d5fe4
commit 94b42ee9ae
3 changed files with 23 additions and 30 deletions

View File

@ -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<WxMpStoreInfo> list(int begin, int limit) throws WxErrorException;
WxMpStoreListResult list(int begin, int limit) throws WxErrorException;
/**
* <pre>

View File

@ -67,7 +67,7 @@ public class WxMpStoreServiceImpl implements WxMpStoreService {
}
@Override
public List<WxMpStoreInfo> 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<WxMpStoreInfo> 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);
int limit = 50;
WxMpStoreListResult list = this.list(0, limit);
List<WxMpStoreInfo> 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);
}
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;

View File

@ -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)
@ -44,10 +45,9 @@ public class WxMpStoreServiceImplTest {
}
public void testList() throws WxErrorException {
List<WxMpStoreInfo> 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 {