getRunStepInfo(String sessionKey, String encryptedData, String ivStr);
+
+}
diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java
index 90e9545f..8d5fbc3c 100644
--- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java
+++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java
@@ -152,39 +152,45 @@ public interface WxMaService {
WxMaTemplateService getTemplateService();
/**
- * 数据分析相关查询服务
+ * 数据分析相关查询服务.
*
* @return WxMaAnalysisService
*/
WxMaAnalysisService getAnalysisService();
/**
- * 返回代码操作相关的 API
+ * 返回代码操作相关的 API.
*
* @return WxMaCodeService
*/
WxMaCodeService getCodeService();
/**
- * 返回jsapi操作相关的 API服务类对象
+ * 返回jsapi操作相关的 API服务类对象.
*
* @return WxMaJsapiService
*/
WxMaJsapiService getJsapiService();
/**
- * 小程序修改服务器地址、成员管理 API
+ * 小程序修改服务器地址、成员管理 API.
*
* @return WxMaSettingService
*/
WxMaSettingService getSettingService();
/**
- * 返回分享相关查询服务
+ * 返回分享相关查询服务.
* @return WxMaShareService
*/
WxMaShareService getShareService();
+ /**
+ * 返回维新运动相关接口服务对象.
+ * @return WxMaShareService
+ */
+ WxMaRunService getRunService();
+
/**
* 初始化http请求对象.
*/
diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaRunServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaRunServiceImpl.java
new file mode 100644
index 00000000..9ddad0d3
--- /dev/null
+++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaRunServiceImpl.java
@@ -0,0 +1,29 @@
+package cn.binarywang.wx.miniapp.api.impl;
+
+import java.util.List;
+
+import cn.binarywang.wx.miniapp.api.WxMaRunService;
+import cn.binarywang.wx.miniapp.api.WxMaService;
+import cn.binarywang.wx.miniapp.bean.WxMaRunStepInfo;
+import cn.binarywang.wx.miniapp.util.crypt.WxMaCryptUtils;
+
+/**
+ *
+ *
+ * Created by Binary Wang on 2018/11/4.
+ *
+ *
+ * @author Binary Wang
+ */
+public class WxMaRunServiceImpl implements WxMaRunService {
+ private WxMaService service;
+
+ public WxMaRunServiceImpl(WxMaService service) {
+ this.service = service;
+ }
+
+ @Override
+ public List getRunStepInfo(String sessionKey, String encryptedData, String ivStr) {
+ return WxMaRunStepInfo.fromJson(WxMaCryptUtils.decrypt(sessionKey, encryptedData, ivStr));
+ }
+}
diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaServiceImpl.java
index e28bcdcd..82265b9b 100644
--- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaServiceImpl.java
+++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaServiceImpl.java
@@ -6,7 +6,6 @@ import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.Lock;
-import cn.binarywang.wx.miniapp.api.*;
import org.apache.http.HttpHost;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
@@ -16,6 +15,18 @@ import org.apache.http.impl.client.CloseableHttpClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import cn.binarywang.wx.miniapp.api.WxMaAnalysisService;
+import cn.binarywang.wx.miniapp.api.WxMaCodeService;
+import cn.binarywang.wx.miniapp.api.WxMaJsapiService;
+import cn.binarywang.wx.miniapp.api.WxMaMediaService;
+import cn.binarywang.wx.miniapp.api.WxMaMsgService;
+import cn.binarywang.wx.miniapp.api.WxMaQrcodeService;
+import cn.binarywang.wx.miniapp.api.WxMaRunService;
+import cn.binarywang.wx.miniapp.api.WxMaService;
+import cn.binarywang.wx.miniapp.api.WxMaSettingService;
+import cn.binarywang.wx.miniapp.api.WxMaShareService;
+import cn.binarywang.wx.miniapp.api.WxMaTemplateService;
+import cn.binarywang.wx.miniapp.api.WxMaUserService;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.config.WxMaConfig;
import com.google.common.base.Joiner;
@@ -57,6 +68,7 @@ public class WxMaServiceImpl implements WxMaService, RequestHttpBinary Wang
+ */
+@Data
+public class WxMaRunStepInfo implements Serializable {
+ private static final JsonParser JSON_PARSER = new JsonParser();
+ private static final long serialVersionUID = -7496372171398607044L;
+
+ /**
+ * 时间戳,表示数据对应的时间.
+ */
+ private Long timestamp;
+
+ /**
+ * 微信运动步数.
+ */
+ private Integer step;
+
+ public static List fromJson(String json) {
+ JsonObject jsonObject = JSON_PARSER.parse(json).getAsJsonObject();
+ return WxMaGsonBuilder.create().fromJson(jsonObject.get("stepInfoList").toString(),
+ new TypeToken>() {
+ }.getType());
+ }
+}
diff --git a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/bean/WxMaRunStepInfoTest.java b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/bean/WxMaRunStepInfoTest.java
new file mode 100644
index 00000000..ef09e073
--- /dev/null
+++ b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/bean/WxMaRunStepInfoTest.java
@@ -0,0 +1,43 @@
+package cn.binarywang.wx.miniapp.bean;
+
+import java.util.List;
+
+import org.testng.annotations.*;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.testng.Assert.*;
+
+/**
+ *
+ *
+ * Created by Binary Wang on 2018/11/4.
+ *
+ *
+ * @author Binary Wang
+ */
+public class WxMaRunStepInfoTest {
+
+ @Test
+ public void testFromJson() {
+ // 数据来源:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/werun/wx.getWeRunData.html
+ String json = "{\n" +
+ " \"stepInfoList\": [\n" +
+ " {\n" +
+ " \"timestamp\": 1445866601,\n" +
+ " \"step\": 100\n" +
+ " },\n" +
+ " {\n" +
+ " \"timestamp\": 1445876601,\n" +
+ " \"step\": 120\n" +
+ " }\n" +
+ " ]\n" +
+ "}";
+
+ final List stepInfoList = WxMaRunStepInfo.fromJson(json);
+ assertThat(stepInfoList).isNotEmpty();
+ assertThat(stepInfoList.get(0).getStep()).isEqualTo(100);
+ assertThat(stepInfoList.get(0).getTimestamp()).isEqualTo(1445866601);
+ assertThat(stepInfoList.get(1).getStep()).isEqualTo(120);
+ assertThat(stepInfoList.get(1).getTimestamp()).isEqualTo(1445876601);
+ }
+}