diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaRunService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaRunService.java new file mode 100644 index 00000000..fe764d69 --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaRunService.java @@ -0,0 +1,24 @@ +package cn.binarywang.wx.miniapp.api; + +import java.util.List; + +import cn.binarywang.wx.miniapp.bean.WxMaRunStepInfo; + +/** + * 微信运动相关操作接口. + * + * @author Binary Wang + */ +public interface WxMaRunService { + + /** + * 解密分享敏感数据. + * 文档地址:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/werun/wx.getWeRunData.html + * + * @param sessionKey 会话密钥 + * @param encryptedData 消息密文 + * @param ivStr 加密算法的初始向量 + */ + List 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); + } +}