Browse Source

新增接口:摇一摇周边获取设备及用户信息 (#243)

#240
master
Bob 8 years ago
committed by Binary Wang
parent
commit
ea13197844
7 changed files with 314 additions and 0 deletions
  1. +6
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java
  2. +27
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpShakeService.java
  3. +6
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/AbstractWxMpServiceImpl.java
  4. +39
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpShakeServiceImpl.java
  5. +164
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpShakeInfoResult.java
  6. +41
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpShakeQuery.java
  7. +31
    -0
      weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpShakeServiceImplTest.java

+ 6
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java View File

@@ -409,6 +409,12 @@ public interface WxMpService {
*/
WxMpDeviceService getDeviceService();

/**
* 返回摇一摇周边相关接口方法的实现类对象,以方便调用其各个接口
*
* @return WxMpShakeService
*/
WxMpShakeService getShakeService();

/**
* 初始化http请求对象


+ 27
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpShakeService.java View File

@@ -0,0 +1,27 @@
package me.chanjar.weixin.mp.api;

import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.mp.bean.WxMpShakeInfoResult;
import me.chanjar.weixin.mp.bean.WxMpShakeQuery;

/**
* 摇一摇周边的相关接口
*
* @author rememberber
*/
public interface WxMpShakeService {

/**
* <pre>
* 获取设备及用户信息<br/>
* 获取设备信息,包括UUID、major、minor,以及距离、openID等信息。
* 详情请见: https://mp.weixin.qq.com/wiki?action=doc&id=mp1443447963
* http请求方式: POST(请使用https协议)
* 接口地址:https://api.weixin.qq.com/shakearound/user/getshakeinfo?access_token=ACCESS_TOKE
* </pre>
*
* @param wxMpShakeQuery 查询参数
*/
WxMpShakeInfoResult getShakeInfo(WxMpShakeQuery wxMpShakeQuery) throws WxErrorException;

}

+ 6
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/AbstractWxMpServiceImpl.java View File

@@ -41,6 +41,7 @@ public abstract class AbstractWxMpServiceImpl<H, P> implements WxMpService, Requ
private WxMpUserBlacklistService blackListService = new WxMpUserBlacklistServiceImpl(this);
private WxMpTemplateMsgService templateMsgService = new WxMpTemplateMsgServiceImpl(this);
private WxMpDeviceService deviceService = new WxMpDeviceServiceImpl(this);
private WxMpShakeService shakeService = new WxMpShakeServiceImpl(this);

private int retrySleepMillis = 1000;
private int maxRetryTimes = 5;
@@ -394,4 +395,9 @@ public abstract class AbstractWxMpServiceImpl<H, P> implements WxMpService, Requ
public WxMpDeviceService getDeviceService() {
return this.deviceService;
}

@Override
public WxMpShakeService getShakeService(){
return this.shakeService;
}
}

+ 39
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpShakeServiceImpl.java View File

@@ -0,0 +1,39 @@
package me.chanjar.weixin.mp.api.impl;

import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.WxMpShakeService;
import me.chanjar.weixin.mp.bean.WxMpShakeInfoResult;
import me.chanjar.weixin.mp.bean.WxMpShakeQuery;

/**
* Created by rememberber on 2017/6/5.
* @author rememberber
*/
public class WxMpShakeServiceImpl implements WxMpShakeService {

private WxMpService wxMpService;

public WxMpShakeServiceImpl(WxMpService wxMpService) {
this.wxMpService = wxMpService;
}

/**
* <pre>
* 获取设备及用户信息<br/>
* 获取设备信息,包括UUID、major、minor,以及距离、openID等信息。
* 详情请见: https://mp.weixin.qq.com/wiki?action=doc&id=mp1443447963
* http请求方式: POST(请使用https协议)
* 接口地址:https://api.weixin.qq.com/shakearound/user/getshakeinfo?access_token=ACCESS_TOKE
* </pre>
*
* @param wxMpShakeQuery 查询参数
*/
@Override
public WxMpShakeInfoResult getShakeInfo(WxMpShakeQuery wxMpShakeQuery) throws WxErrorException {
String url = "https://api.weixin.qq.com/shakearound/user/getshakeinfo";
String postData = wxMpShakeQuery.toJsonString();
String responseContent = this.wxMpService.post(url, postData);
return WxMpShakeInfoResult.fromJson(responseContent);
}
}

+ 164
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpShakeInfoResult.java View File

@@ -0,0 +1,164 @@
package me.chanjar.weixin.mp.bean;

import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;

import java.io.Serializable;

/**
* 摇一摇周边:获取设备及用户信息接口返回JSON数据接收类
* Created by rememberber on 2017/6/5.
*
* @author rememberber
*/
public class WxMpShakeInfoResult implements Serializable {

private Integer errcode;

private String errmsg;

private Data data;

public static WxMpShakeInfoResult fromJson(String json) {
return WxMpGsonBuilder.INSTANCE.create().fromJson(json, WxMpShakeInfoResult.class);
}

public class Data {

private String page_id;

private String openid;

private String poi_id;

private String brand_userame;

private BeaconInfo beacon_info;

public class BeaconInfo {

private double distance;

private Integer major;

private Integer measure_power;

private Integer minor;

private Integer rssi;

private String uuid;

public double getDistance() {
return distance;
}

public void setDistance(double distance) {
this.distance = distance;
}

public Integer getMajor() {
return major;
}

public void setMajor(Integer major) {
this.major = major;
}

public Integer getMeasure_power() {
return measure_power;
}

public void setMeasure_power(Integer measure_power) {
this.measure_power = measure_power;
}

public Integer getMinor() {
return minor;
}

public void setMinor(Integer minor) {
this.minor = minor;
}

public Integer getRssi() {
return rssi;
}

public void setRssi(Integer rssi) {
this.rssi = rssi;
}

public String getUuid() {
return uuid;
}

public void setUuid(String uuid) {
this.uuid = uuid;
}
}

public String getPage_id() {
return page_id;
}

public void setPage_id(String page_id) {
this.page_id = page_id;
}

public String getOpenid() {
return openid;
}

public void setOpenid(String openid) {
this.openid = openid;
}

public String getPoi_id() {
return poi_id;
}

public void setPoi_id(String poi_id) {
this.poi_id = poi_id;
}

public BeaconInfo getBeacon_info() {
return beacon_info;
}

public void setBeacon_info(BeaconInfo beacon_info) {
this.beacon_info = beacon_info;
}

public String getBrand_userame() {
return brand_userame;
}

public void setBrand_userame(String brand_userame) {
this.brand_userame = brand_userame;
}
}

public Integer getErrcode() {
return errcode;
}

public void setErrcode(Integer errcode) {
this.errcode = errcode;
}

public String getErrmsg() {
return errmsg;
}

public void setErrmsg(String errmsg) {
this.errmsg = errmsg;
}

public Data getData() {
return data;
}

public void setData(Data data) {
this.data = data;
}
}

+ 41
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpShakeQuery.java View File

@@ -0,0 +1,41 @@
package me.chanjar.weixin.mp.bean;

import com.google.gson.Gson;

import java.util.HashMap;
import java.util.Map;

/**
* Created by rememberber on 2017/6/5.
*
* @author rememberber
*/
public class WxMpShakeQuery {

private String ticket;

private int needPoi;

public String toJsonString() {
Map<String, Object> map = new HashMap<>();
map.put("ticket", this.ticket);
map.put("need_poi", this.needPoi);
return new Gson().toJson(map);
}

public String getTicket() {
return ticket;
}

public void setTicket(String ticket) {
this.ticket = ticket;
}

public int getNeedPoi() {
return needPoi;
}

public void setNeedPoi(int needPoi) {
this.needPoi = needPoi;
}
}

+ 31
- 0
weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpShakeServiceImplTest.java View File

@@ -0,0 +1,31 @@
package me.chanjar.weixin.mp.api.impl;

import com.google.inject.Inject;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.test.ApiTestModule;
import me.chanjar.weixin.mp.bean.WxMpShakeInfoResult;
import me.chanjar.weixin.mp.bean.WxMpShakeQuery;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;

/**
* 测试摇一摇周边相关的接口
*
* @author rememberber
*/
@Test(groups = "userAPI")
@Guice(modules = ApiTestModule.class)
public class WxMpShakeServiceImplTest {
@Inject
private WxMpService wxService;

public void testGetShakeInfo() throws Exception {
WxMpShakeQuery wxMpShakeQuery = new WxMpShakeQuery();
wxMpShakeQuery.setTicket("b87db7df490e5cbe4f598272f77f46be");
wxMpShakeQuery.setNeedPoi(1);
WxMpShakeInfoResult wxMpShakeInfoResult = this.wxService.getShakeService().getShakeInfo(wxMpShakeQuery);

System.out.println();
}

}

Loading…
Cancel
Save