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 f4f3ccb6..e9adbf4c 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 @@ -1,12 +1,12 @@ package me.chanjar.weixin.mp.api; -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; +import java.util.List; + /** * 门店管理的相关接口代码 * @author binarywang(https://github.com/binarywang) @@ -27,6 +27,21 @@ public interface WxMpStoreService { */ void add(WxMpStoreBaseInfo request) throws WxErrorException; + + /** + *
+ * 查询门店信息 + * 创建门店后获取poi_id 后,商户可以利用poi_id,查询具体某条门店的信息。 + * 若在查询时,update_status 字段为1,表明在5 个工作日内曾用update 接口修改过门店扩展字段,该扩展字段为最新的修改字段,尚未经过审核采纳,因此不是最终结果。 + * 最终结果会在5 个工作日内,最终确认是否采纳,并前端生效(但该扩展字段的采纳过程不影响门店的可用性,即available_state仍为审核通过状态) + * 注:扩展字段为公共编辑信息(大家都可修改),修改将会审核,并决定是否对修改建议进行采纳,但不会影响该门店的生效可用状态。 + * 详情请见: 微信门店接口 + *+ * @param poiId 门店poiId + * @throws WxErrorException + */ + WxMpStoreBaseInfo get(String poiId) 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 99740d45..d5f50b14 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 @@ -1,14 +1,8 @@ package me.chanjar.weixin.mp.api.impl; -import java.lang.reflect.Field; -import java.util.List; -import java.util.Map.Entry; - -import org.joor.Reflect; - import com.google.common.collect.Lists; import com.google.gson.JsonObject; - +import com.google.gson.JsonParser; import me.chanjar.weixin.common.annotation.Required; import me.chanjar.weixin.common.bean.result.WxError; import me.chanjar.weixin.common.exception.WxErrorException; @@ -17,6 +11,11 @@ import me.chanjar.weixin.mp.api.WxMpStoreService; import me.chanjar.weixin.mp.bean.store.WxMpStoreBaseInfo; import me.chanjar.weixin.mp.bean.store.WxMpStoreInfo; import me.chanjar.weixin.mp.bean.store.WxMpStoreListResult; +import org.joor.Reflect; + +import java.lang.reflect.Field; +import java.util.List; +import java.util.Map.Entry; /** * Created by Binary Wang on 2016/9/26. @@ -44,6 +43,20 @@ public class WxMpStoreServiceImpl implements WxMpStoreService { } } + @Override + public WxMpStoreBaseInfo get(String poiId) throws WxErrorException { + String url = API_BASE_URL + "/getpoi"; + JsonObject paramObject = new JsonObject(); + paramObject.addProperty("poi_id",poiId); + String response = this.wxMpService.post(url, paramObject.toString()); + WxError wxError = WxError.fromJson(response); + if (wxError.getErrorCode() != 0) { + throw new WxErrorException(wxError); + } + return WxMpStoreBaseInfo.fromJson(new JsonParser().parse(response).getAsJsonObject() + .get("business").getAsJsonObject().get("base_info").toString()); + } + private void checkParameters(WxMpStoreBaseInfo request) { ListnullFields = Lists.newArrayList(); for (Entry entry : Reflect.on(request).fields() diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/store/WxMpStoreBaseInfo.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/store/WxMpStoreBaseInfo.java index 06a5b178..dcfd3153 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/store/WxMpStoreBaseInfo.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/store/WxMpStoreBaseInfo.java @@ -1,17 +1,15 @@ package me.chanjar.weixin.mp.bean.store; -import java.math.BigDecimal; -import java.util.List; - -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.annotations.SerializedName; - import me.chanjar.weixin.common.annotation.Required; import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.math.BigDecimal; +import java.util.List; /** * 门店基础信息 @@ -24,6 +22,10 @@ public class WxMpStoreBaseInfo { return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE); } + public static WxMpStoreBaseInfo fromJson(String json) { + return WxMpGsonBuilder.create().fromJson(json, WxMpStoreBaseInfo.class); + } + public String toJson() { JsonElement base_info = WxMpGsonBuilder.create().toJsonTree(this); JsonObject jsonObject = new JsonObject(); diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/store/WxMpStoreInfo.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/store/WxMpStoreInfo.java index 48b01822..5b44b860 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/store/WxMpStoreInfo.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/store/WxMpStoreInfo.java @@ -1,5 +1,6 @@ package me.chanjar.weixin.mp.bean.store; +import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -22,4 +23,4 @@ public class WxMpStoreInfo { this.baseInfo = baseInfo; } -} \ No newline at end of file +} 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 9c28dfa7..3efaf8de 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 @@ -1,20 +1,18 @@ package me.chanjar.weixin.mp.api.impl; -import static org.junit.Assert.assertNotNull; - -import java.math.BigDecimal; -import java.util.List; - -import org.testng.annotations.Guice; -import org.testng.annotations.Test; - import com.google.inject.Inject; - 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; +import org.testng.annotations.Guice; +import org.testng.annotations.Test; + +import java.math.BigDecimal; +import java.util.List; + +import static org.junit.Assert.assertNotNull; /** * @author 王彬 (Binary Wang) @@ -28,18 +26,23 @@ public class WxMpStoreServiceImplTest { /** * Test method for {@link me.chanjar.weixin.mp.api.impl.WxMpStoreServiceImpl#add(me.chanjar.weixin.mp.bean.store.WxMpStoreBaseInfo)}. - * @throws WxErrorException + * @throws WxErrorException */ public void testAdd() throws WxErrorException { this.wxMpService.getStoreService() .add(WxMpStoreBaseInfo.builder().businessName("haha").branchName("abc") - .province("aaa").district("aaa").telephone("122").address("abc") -.categories(new String[] { "美食,江浙菜" }) + .province("aaa").district("aaa").telephone("122").address("abc").categories(new String[] { "美食,江浙菜" }) .longitude(new BigDecimal("115.32375")) .latitude(new BigDecimal("25.097486")).city("aaa").offsetType(1) .build()); } + public void testGet() throws WxErrorException { + WxMpStoreBaseInfo result = this.wxMpService.getStoreService().get("291503654"); + assertNotNull(result); + System.err.println(result); + } + public void testList() throws WxErrorException { WxMpStoreListResult result = this.wxMpService.getStoreService().list(0, 10); assertNotNull(result);