Browse Source

update

master
dongfuqiang 8 years ago
parent
commit
a7c72f613a
16 changed files with 668 additions and 0 deletions
  1. +80
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpDeviceService.java
  2. +7
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java
  3. +72
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpDeviceServiceImpl.java
  4. +6
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceImpl.java
  5. +12
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/AbstractDeviceBean.java
  6. +55
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/BaseResp.java
  7. +26
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/RespMsg.java
  8. +49
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/TransMsgResp.java
  9. +106
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDevice.java
  10. +36
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceAuthorize.java
  11. +24
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceAuthorizeResult.java
  12. +34
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceBind.java
  13. +22
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceBindResult.java
  14. +50
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceMsg.java
  15. +49
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceQrCodeResult.java
  16. +40
    -0
      weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpDeviceServiceImplTest.java

+ 80
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpDeviceService.java View File

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

import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.mp.bean.device.*;

/**
* Created by keungtung on 10/12/2016.
*/
public interface WxMpDeviceService {
/**
* <pre>
* 主动发送消息给设备
* 详情请见:http://iot.weixin.qq.com/wiki/new/index.html?page=3-4-3
* </pre>
*/
TransMsgResp transMsg(WxDeviceMsg msg) throws WxErrorException;

/**
* <pre>
* 获取一组新的deviceid和设备二维码
* 详情请见:http://iot.weixin.qq.com/wiki/new/index.html?page=3-4-6
* </pre>
* @param productId 产品id
* @return 返回WxDeviceQrCodeResult
*/
WxDeviceQrCodeResult getQrCode(String productId) throws WxErrorException;

/**
* <pre>
* 将device id及其属性信息提交公众平台进行授权
* 详情请见:http://iot.weixin.qq.com/wiki/new/index.html?page=3-4-6
* </pre>
* @param wxDeviceAuthorize 授权请求对象
* @return WxDeviceAuthorizeResult
*/
WxDeviceAuthorizeResult authorize(WxDeviceAuthorize wxDeviceAuthorize) throws WxErrorException;


/**
* <pre>
* 第三方后台绑定成功后,通知公众平台
* 详情请见:http://iot.weixin.qq.com/wiki/new/index.html/page=3-4-7
* </pre>
* @param wxDeviceBind 绑定请求对象
* @return WxDeviceBindResult
*/
WxDeviceBindResult bind(WxDeviceBind wxDeviceBind) throws WxErrorException;

/**
* <pre>
* 强制绑定用户和设备
* 详情请见:http://iot.weixin.qq.com/wiki/new/index.html?page=3-4-7
* </pre>
* @param wxDeviceBind 强制绑定请求对象
* @return WxDeviceBindResult
*/
WxDeviceBindResult compelBind(WxDeviceBind wxDeviceBind) throws WxErrorException;

/**
* <pre>
* 第三方确认用户和设备的解绑操作
* 详情请见:http://iot.weixin.qq.com/wiki/new/index.html/page=3-4-7
* </pre>
* @param wxDeviceBind 绑定请求对象
* @return WxDeviceBidResult
*/
WxDeviceBindResult unbind(WxDeviceBind wxDeviceBind) throws WxErrorException;

/**
* <pre>
* 强制解绑用户和设备
* 详情请见:http://iot.weixin.qq.com/wiki/new/index.html?page=3-4-7
* </pre>
* @param wxDeviceBind 强制解绑请求对象
* @return WxDeviceBindResult
*/
WxDeviceBindResult compelUnbind(WxDeviceBind wxDeviceBind) throws WxErrorException;


}

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

@@ -345,4 +345,11 @@ public interface WxMpService {
* @return WxMpTemplateMsgService
*/
WxMpTemplateMsgService getTemplateMsgService();

/**
* 返回硬件平台相关接口方法的实现类对象,以方便调用其各个接口
*
* @return WxMpDeviceService
*/
WxMpDeviceService getDeviceService();
}

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

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

import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpDeviceService;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.device.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* Created by keungtung on 10/12/2016.
*/
public class WxMpDeviceServiceImpl implements WxMpDeviceService {
private static final String API_URL_PREFIX = "https://api.weixin.qq.com/device";
private static Logger log = LoggerFactory.getLogger(WxMpMenuServiceImpl.class);

private WxMpService wxMpService;

WxMpDeviceServiceImpl(WxMpService wxMpService) {
this.wxMpService = wxMpService;
}

@Override
public TransMsgResp transMsg(WxDeviceMsg msg) throws WxErrorException {
String url = API_URL_PREFIX + "/transmsg";
String response = this.wxMpService.post(url,msg.toJson());
return TransMsgResp.fromJson(response);
}

@Override
public WxDeviceQrCodeResult getQrCode(String productId) throws WxErrorException {
String url = API_URL_PREFIX + "/getqrcode";
String response = this.wxMpService.get(url, "product_id=" + productId);
return WxDeviceQrCodeResult.fromJson(response);
}

@Override
public WxDeviceAuthorizeResult authorize(WxDeviceAuthorize wxDeviceAuthorize) throws WxErrorException {
String url = API_URL_PREFIX + "/authorize_device";
String response = this.wxMpService.post(url,wxDeviceAuthorize.toJson());
return WxDeviceAuthorizeResult.fromJson(response);
}

@Override
public WxDeviceBindResult bind(WxDeviceBind wxDeviceBind) throws WxErrorException {
String url = API_URL_PREFIX + "/bind";
String response = this.wxMpService.post(url,wxDeviceBind.toJson());
return WxDeviceBindResult.fromJson(response);
}

@Override
public WxDeviceBindResult compelBind(WxDeviceBind wxDeviceBind) throws WxErrorException {
String url = API_URL_PREFIX + "/compel_bind";
String response = this.wxMpService.post(url,wxDeviceBind.toJson());
return WxDeviceBindResult.fromJson(response);
}

@Override
public WxDeviceBindResult unbind(WxDeviceBind wxDeviceBind) throws WxErrorException {
String url = API_URL_PREFIX + "/unbind?";
String response = this.wxMpService.post(url, wxDeviceBind.toJson());
return WxDeviceBindResult.fromJson(response);
}

@Override
public WxDeviceBindResult compelUnbind(WxDeviceBind wxDeviceBind) throws WxErrorException {
String url = API_URL_PREFIX + "/compel_unbind?";
String response = this.wxMpService.post(url, wxDeviceBind.toJson());
return WxDeviceBindResult.fromJson(response);
}
}


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

@@ -62,6 +62,8 @@ public class WxMpServiceImpl implements WxMpService {

private WxMpTemplateMsgService templateMsgService = new WxMpTemplateMsgServiceImpl(this);

private WxMpDeviceService deviceService = new WxMpDeviceServiceImpl(this);

private CloseableHttpClient httpClient;

private HttpHost httpProxy;
@@ -540,4 +542,8 @@ public class WxMpServiceImpl implements WxMpService {
return this.templateMsgService;
}

@Override
public WxMpDeviceService getDeviceService() {
return this.deviceService;
}
}

+ 12
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/AbstractDeviceBean.java View File

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

import me.chanjar.weixin.common.util.json.WxGsonBuilder;

/**
* Created by keungtung on 14/12/2016.
*/
public abstract class AbstractDeviceBean {
public String toJson() {
return WxGsonBuilder.create().toJson(this);
}
}

+ 55
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/BaseResp.java View File

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

/**
* Created by keungtung on 10/12/2016.
*/
public class BaseResp extends AbstractDeviceBean{
private BaseInfo base_info;
private Integer errcode;
private String errmsg;

public Integer getErrcode() {
return errcode;
}

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

public BaseInfo getBase_info() {
return base_info;
}

public void setBase_info(BaseInfo base_info) {
this.base_info = base_info;
}

public String getErrmsg() {
return errmsg;
}

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

private class BaseInfo {
private String device_type;
private String device_id;

public String getDevice_type() {
return device_type;
}

public void setDevice_type(String device_type) {
this.device_type = device_type;
}

public String getDevice_id() {
return device_id;
}

public void setDevice_id(String device_id) {
this.device_id = device_id;
}
}
}

+ 26
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/RespMsg.java View File

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

/**
* Created by keungtung on 10/12/2016.
*/

public class RespMsg extends AbstractDeviceBean{
private Integer retCode;
private String errorInfo;

public Integer getRetCode() {
return retCode;
}

public void setRetCode(Integer retCode) {
this.retCode = retCode;
}

public String getErrorInfo() {
return errorInfo;
}

public void setErrorInfo(String errorInfo) {
this.errorInfo = errorInfo;
}
}

+ 49
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/TransMsgResp.java View File

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

import me.chanjar.weixin.common.util.json.WxGsonBuilder;

/**
* Created by keungtung on 14/12/2016.
*/
public class TransMsgResp extends AbstractDeviceBean{
private Integer ret;
private String ret_info;
private Integer errcode;
private String errmsg;

public static TransMsgResp fromJson(String json) {
return WxGsonBuilder.create().fromJson(json, TransMsgResp.class);
}

public Integer getRet() {
return ret;
}

public void setRet(Integer ret) {
this.ret = ret;
}

public String getRet_info() {
return ret_info;
}

public void setRet_info(String ret_info) {
this.ret_info = ret_info;
}

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

+ 106
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDevice.java View File

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

/**
* Created by keungtung on 10/12/2016.
*/
public class WxDevice {
private String id;
private String mac;
private String connect_protocol;
private String auth_key;
private String close_strategy;
private String conn_strategy;
private String crypt_method;
private String auth_ver;
private String manu_mac_pos;
private String ser_mac_pos;
private String ble_simple_protocol;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getMac() {
return mac;
}

public void setMac(String mac) {
this.mac = mac;
}

public String getConnect_protocol() {
return connect_protocol;
}

public void setConnect_protocol(String connect_protocol) {
this.connect_protocol = connect_protocol;
}

public String getAuth_key() {
return auth_key;
}

public void setAuth_key(String auth_key) {
this.auth_key = auth_key;
}

public String getClose_strategy() {
return close_strategy;
}

public void setClose_strategy(String close_strategy) {
this.close_strategy = close_strategy;
}

public String getConn_strategy() {
return conn_strategy;
}

public void setConn_strategy(String conn_strategy) {
this.conn_strategy = conn_strategy;
}

public String getCrypt_method() {
return crypt_method;
}

public void setCrypt_method(String crypt_method) {
this.crypt_method = crypt_method;
}

public String getAuth_ver() {
return auth_ver;
}

public void setAuth_ver(String auth_ver) {
this.auth_ver = auth_ver;
}

public String getManu_mac_pos() {
return manu_mac_pos;
}

public void setManu_mac_pos(String manu_mac_pos) {
this.manu_mac_pos = manu_mac_pos;
}

public String getSer_mac_pos() {
return ser_mac_pos;
}

public void setSer_mac_pos(String ser_mac_pos) {
this.ser_mac_pos = ser_mac_pos;
}

public String getBle_simple_protocol() {
return ble_simple_protocol;
}

public void setBle_simple_protocol(String ble_simple_protocol) {
this.ble_simple_protocol = ble_simple_protocol;
}
}

+ 36
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceAuthorize.java View File

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

import java.util.List;

/**
* Created by keungtung on 10/12/2016.
*/
public class WxDeviceAuthorize extends AbstractDeviceBean{
private String deivce_num;
private String op_type;
private List<WxDevice> device_list;

public String getDeivce_num() {
return deivce_num;
}

public void setDeivce_num(String deivce_num) {
this.deivce_num = deivce_num;
}

public String getOp_type() {
return op_type;
}

public void setOp_type(String op_type) {
this.op_type = op_type;
}

public List<WxDevice> getDevice_list() {
return device_list;
}

public void setDevice_list(List<WxDevice> device_list) {
this.device_list = device_list;
}
}

+ 24
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceAuthorizeResult.java View File

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

import me.chanjar.weixin.common.util.json.WxGsonBuilder;

import java.util.List;

/**
* Created by keungtung on 10/12/2016.
*/
public class WxDeviceAuthorizeResult extends AbstractDeviceBean{
private List<BaseResp> resp;

public static WxDeviceAuthorizeResult fromJson(String response) {
return WxGsonBuilder.create().fromJson(response, WxDeviceAuthorizeResult.class);
}

public List<BaseResp> getResp() {
return resp;
}

public void setResp(List<BaseResp> resp) {
this.resp = resp;
}
}

+ 34
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceBind.java View File

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

/**
* Created by keungtung on 10/12/2016.
*/
public class WxDeviceBind extends AbstractDeviceBean{
private String ticket;
private String device_id;
private String openid;

public String getTicket() {
return ticket;
}

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

public String getDevice_id() {
return device_id;
}

public void setDevice_id(String device_id) {
this.device_id = device_id;
}

public String getOpenid() {
return openid;
}

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

+ 22
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceBindResult.java View File

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

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

/**
* Created by keungtung on 10/12/2016.
*/
public class WxDeviceBindResult extends AbstractDeviceBean{
private BaseResp base_resp;

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

public BaseResp getBase_resp() {
return base_resp;
}

public void setBase_resp(BaseResp base_resp) {
this.base_resp = base_resp;
}
}

+ 50
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceMsg.java View File

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

import me.chanjar.weixin.common.util.ToStringUtils;

/**
* Created by keungtung on 10/12/2016.
*/
public class WxDeviceMsg extends AbstractDeviceBean{
private String deviceType;
private String deviceId;
private String openId;
private String content;

@Override
public String toString() {
return ToStringUtils.toSimpleString(this);
}

public String getDeviceType() {
return deviceType;
}

public void setDeviceType(String deviceType) {
this.deviceType = deviceType;
}

public String getDeviceId() {
return deviceId;
}

public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}

public String getOpenId() {
return openId;
}

public void setOpenId(String openId) {
this.openId = openId;
}

public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}
}

+ 49
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceQrCodeResult.java View File

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

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

/**
* Created by keungtung on 10/12/2016.
*/
public class WxDeviceQrCodeResult extends AbstractDeviceBean{
private String deviceid;
private String qrticket;
private String devcielicence;
private RespMsg resp_msg;

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

public String getDevcielicence() {
return devcielicence;
}

public void setDevcielicence(String devcielicence) {
this.devcielicence = devcielicence;
}

public RespMsg getResp_msg() {
return resp_msg;
}

public void setResp_msg(RespMsg resp_msg) {
this.resp_msg = resp_msg;
}

public String getDeviceid() {
return deviceid;
}

public void setDeviceid(String deviceid) {
this.deviceid = deviceid;
}

public String getQrticket() {
return qrticket;
}

public void setQrticket(String qrticket) {
this.qrticket = qrticket;
}
}

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

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


import com.google.inject.Inject;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.mp.api.ApiTestModule;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.device.WxDeviceQrCodeResult;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;

/**
* Created by keungtung on 14/12/2016.
*/
@Test(groups = "deviceApi")
@Guice(modules = ApiTestModule.class)
public class WxMpDeviceServiceImplTest {
@Inject
protected WxMpService wxService;

@Test(dataProvider = "productId")
public void testGetQrcode(String productId) {
try {
WxDeviceQrCodeResult result = wxService.getDeviceService().getQrCode(productId);
println(result.toJson());
} catch (WxErrorException e) {
println(e.getMessage());
}
}

private void println(String content) {
System.out.println(content);
}

@DataProvider(name = "productId")
public Object[][] getProductId() {
return new Object[][]{new Object[]{"25639"}};
}
}

Loading…
Cancel
Save