From ba7905a205bfef67869c26ba7f019bd0c4a1f114 Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Sun, 10 Jun 2018 22:26:42 +0800 Subject: [PATCH] =?UTF-8?q?#516=20=E5=A2=9E=E5=8A=A0=E8=8E=B7=E5=8F=96Wi-F?= =?UTF-8?q?i=E9=97=A8=E5=BA=97=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/chanjar/weixin/mp/api/WxMpService.java | 7 ++ .../weixin/mp/api/WxMpWifiService.java | 28 ++++++ .../mp/api/impl/BaseWxMpServiceImpl.java | 6 ++ .../mp/api/impl/WxMpWifiServiceImpl.java | 31 +++++++ .../mp/bean/wifi/WxMpWifiShopListResult.java | 90 +++++++++++++++++++ .../mp/api/impl/WxMpWifiServiceImplTest.java | 31 +++++++ 6 files changed, 193 insertions(+) create mode 100644 weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpWifiService.java create mode 100644 weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpWifiServiceImpl.java create mode 100644 weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/wifi/WxMpWifiShopListResult.java create mode 100644 weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpWifiServiceImplTest.java diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java index dc45e9a8..c4212aff 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java @@ -415,6 +415,13 @@ public interface WxMpService { */ WxMpAiOpenService getAiOpenService(); + /** + * 返回WIFI接口方法的实现类对象,以方便调用其各个接口 + * + * @return WxMpWifiService + */ + WxMpWifiService getWifiService(); + void setKefuService(WxMpKefuService kefuService); void setMaterialService(WxMpMaterialService materialService); diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpWifiService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpWifiService.java new file mode 100644 index 00000000..9cda53bb --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpWifiService.java @@ -0,0 +1,28 @@ +package me.chanjar.weixin.mp.api; + +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.mp.bean.wifi.WxMpWifiShopListResult; + +/** + *
+ *  微信连接WI-FI接口.
+ *  Created by BinaryWang on 2018/6/10.
+ * 
+ * + * @author Binary Wang + */ +public interface WxMpWifiService { + /** + *
+   * 获取Wi-Fi门店列表.
+   * 通过此接口获取WiFi的门店列表,该列表包括公众平台的门店信息、以及添加设备后的WiFi相关信息。创建门店方法请参考“微信门店接口”。
+   * 注:微信连Wi-Fi下的所有接口中的shop_id,必需先通过此接口获取。
+   *
+   * http请求方式: POST
+   * 请求URL:https://api.weixin.qq.com/bizwifi/shop/list?access_token=ACCESS_TOKEN
+   * 
+ * @param pageIndex 分页下标,默认从1开始 + * @param pageSize 每页的个数,默认10个,最大20个 + */ + WxMpWifiShopListResult listShop(int pageIndex, int pageSize) throws WxErrorException; +} diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java index a874a117..09d21bac 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java @@ -53,6 +53,7 @@ public abstract class BaseWxMpServiceImpl implements WxMpService, RequestH private WxMpMemberCardService memberCardService = new WxMpMemberCardServiceImpl(this); private WxMpMassMessageService massMessageService = new WxMpMassMessageServiceImpl(this); private WxMpAiOpenService aiOpenService = new WxMpAiOpenServiceImpl(this); + private WxMpWifiService wifiService = new WxMpWifiServiceImpl(this); private int retrySleepMillis = 1000; private int maxRetryTimes = 5; @@ -501,4 +502,9 @@ public abstract class BaseWxMpServiceImpl implements WxMpService, RequestH public void setAiOpenService(WxMpAiOpenService aiOpenService) { this.aiOpenService = aiOpenService; } + + @Override + public WxMpWifiService getWifiService() { + return this.wifiService; + } } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpWifiServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpWifiServiceImpl.java new file mode 100644 index 00000000..f87c784b --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpWifiServiceImpl.java @@ -0,0 +1,31 @@ +package me.chanjar.weixin.mp.api.impl; + +import com.google.gson.JsonObject; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.api.WxMpWifiService; +import me.chanjar.weixin.mp.bean.wifi.WxMpWifiShopListResult; + +/** + *
+ *  Created by BinaryWang on 2018/6/10.
+ * 
+ * + * @author Binary Wang + */ +public class WxMpWifiServiceImpl implements WxMpWifiService { + private WxMpService wxMpService; + + public WxMpWifiServiceImpl(WxMpService wxMpService) { + this.wxMpService = wxMpService; + } + + @Override + public WxMpWifiShopListResult listShop(int pageIndex, int pageSize) throws WxErrorException { + JsonObject json = new JsonObject(); + json.addProperty("pageindex", pageIndex); + json.addProperty("pagesize", pageSize); + final String result = this.wxMpService.post("https://api.weixin.qq.com/bizwifi/shop/list", json.toString()); + return WxMpWifiShopListResult.fromJson(result); + } +} diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/wifi/WxMpWifiShopListResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/wifi/WxMpWifiShopListResult.java new file mode 100644 index 00000000..69947aef --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/wifi/WxMpWifiShopListResult.java @@ -0,0 +1,90 @@ +package me.chanjar.weixin.mp.bean.wifi; + +import com.google.gson.JsonParser; +import com.google.gson.annotations.SerializedName; +import lombok.Data; +import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; + +import java.util.List; + +/** + *
+ *  Created by BinaryWang on 2018/6/10.
+ * 
+ * + * @author Binary Wang + */ +@Data +public class WxMpWifiShopListResult { + public static WxMpWifiShopListResult fromJson(String json) { + return WxMpGsonBuilder.create().fromJson( + new JsonParser().parse(json).getAsJsonObject().get("data"), + WxMpWifiShopListResult.class); + } + + /** + * 总数 + */ + @SerializedName("totalcount") + private int totalCount; + + /** + * 分页下标 + */ + @SerializedName("pageindex") + private int pageIndex; + + /** + * 分页页数 + */ + @SerializedName("pagecount") + private int pageCount; + + private List records; + + @Data + public static class Record { + + /** + * 门店ID(适用于微信连Wi-Fi业务) + */ + @SerializedName("shop_id") + private Integer shopId; + + /** + * 门店名称 + */ + @SerializedName("shop_name") + private String shopName; + + /** + * 无线网络设备的ssid,未添加设备为空,多个ssid时显示第一个 + */ + @SerializedName("ssid") + private String ssid; + + /** + * 无线网络设备的ssid列表,返回数组格式 + */ + @SerializedName("ssid_list") + private List ssidList; + + /** + * 门店内设备的设备类型,0-未添加设备,1-专业型设备,4-密码型设备,5-portal自助型设备,31-portal改造型设备 + */ + @SerializedName("protocol_type") + private Integer protocolType; + + /** + * 商户自己的id,与门店poi_id对应关系,建议在添加门店时候建立关联关系,具体请参考“微信门店接口” + */ + @SerializedName("sid") + private String sid; + + /** + * 门店ID(适用于微信卡券、微信门店业务),具体定义参考微信门店,与shop_id一一对应 + */ + @SerializedName("poi_id") + private String poiId; + } +} diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpWifiServiceImplTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpWifiServiceImplTest.java new file mode 100644 index 00000000..e129474e --- /dev/null +++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpWifiServiceImplTest.java @@ -0,0 +1,31 @@ +package me.chanjar.weixin.mp.api.impl; + +import com.google.inject.Inject; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.api.test.ApiTestModule; +import me.chanjar.weixin.mp.bean.wifi.WxMpWifiShopListResult; +import org.testng.annotations.Guice; +import org.testng.annotations.Test; + +import static org.testng.Assert.*; + +/** + *
+ *  Created by BinaryWang on 2018/6/10.
+ * 
+ * + * @author Binary Wang + */ +@Test +@Guice(modules = ApiTestModule.class) +public class WxMpWifiServiceImplTest { + @Inject + private WxMpService wxService; + + @Test + public void testListShop() throws WxErrorException { + final WxMpWifiShopListResult result = this.wxService.getWifiService().listShop(1, 2); + System.out.println(result); + } +}