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) {
     List nullFields = 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);