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

#240
This commit is contained in:
Bob 2017-06-06 16:36:18 +08:00 committed by Binary Wang
parent ff2caf76db
commit ea13197844
7 changed files with 314 additions and 0 deletions

View File

@ -409,6 +409,12 @@ public interface WxMpService {
*/
WxMpDeviceService getDeviceService();
/**
* 返回摇一摇周边相关接口方法的实现类对象以方便调用其各个接口
*
* @return WxMpShakeService
*/
WxMpShakeService getShakeService();
/**
* 初始化http请求对象

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/>
* 获取设备信息包括UUIDmajorminor以及距离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;
}

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;
}
}

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/>
* 获取设备信息包括UUIDmajorminor以及距离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);
}
}

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;
}
}

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;
}
}

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();
}
}