package com.gustz.dove.mpcli.api.hwdevice.service.impl;
import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.sinovatech.rd.wcsb.cli.api.service.conf.WebsUrlParam;
import com.sinovatech.rd.wcsb.cli.api.service.impl.AbstBaseService;
import com.sinovatech.rd.wcsb.cli.api.service.vo.AbstBaseReq;
import com.sinovatech.rd.wcsb.cli.api.service.vo.CommRsp;
import com.sinovatech.rd.wcsb.mpcli.api.hwdevice.req.BindUserHwdReq;
import com.sinovatech.rd.wcsb.mpcli.api.hwdevice.req.HwdBindOpenIdReq;
import com.sinovatech.rd.wcsb.mpcli.api.hwdevice.req.HwdQrcodeReq;
import com.sinovatech.rd.wcsb.mpcli.api.hwdevice.req.HwdeviceReq;
import com.sinovatech.rd.wcsb.mpcli.api.hwdevice.rsp.BindHwdeviceRsp;
import com.sinovatech.rd.wcsb.mpcli.api.hwdevice.rsp.BindUserHwdRsp;
import com.sinovatech.rd.wcsb.mpcli.api.hwdevice.rsp.HwdBindOpenIdRsp;
import com.sinovatech.rd.wcsb.mpcli.api.hwdevice.rsp.HwdQrcodeRsp;
import com.sinovatech.rd.wcsb.mpcli.api.hwdevice.rsp.HwdStatusRsp;
import com.sinovatech.rd.wcsb.mpcli.api.hwdevice.rsp.HwdeviceRsp;
import com.sinovatech.rd.wcsb.mpcli.api.hwdevice.service.HwdeviceMpService;
import com.sinovatech.rd.wcsb.mpcli.api.security.service.AcTokenMpService;
import com.gustz.dove.mpcli.api.service.conf.HwdeviceWsUrl;
/**
*
* TODO: 硬件设备服务的接口实现
*
* @author ZHENFENG ZHANG
* @since [ Aug 3, 2015 ]
*/
@Service
public class HwdeviceMpServiceImpl extends AbstBaseService<AbstBaseReq<?>> implements HwdeviceMpService {
@Autowired
private AcTokenMpService acTokenMpService;
/**
* 生成设备二维码
*
* @param sn
* @param cliAppCode
* @param req
* @return
*/
@Override
public HwdQrcodeRsp createHwdQrcode(long sn, String cliAppCode, HwdQrcodeReq req) {
HwdeviceWsUrl _wsUrl = HwdeviceWsUrl.WSC08001MP;
//
this.setAccessTokenX(sn, cliAppCode, req.getDevAcCode());
//
return this.httpPost(_wsUrl, sn, cliAppCode, req, new HwdQrcodeRsp(sn, _wsUrl.getWebsCode()));
}
/**
* 设备授权
*
* @param sn
* @param cliAppCode
* @param req
* @return
*/
@Override
public HwdeviceRsp authHwDevice(long sn, String cliAppCode, HwdeviceReq req) {
HwdeviceWsUrl _wsUrl = HwdeviceWsUrl.WSC08002MP;
//
this.setAccessTokenX(sn, cliAppCode, req.getDevAcCode());
//
return this.httpPost(_wsUrl, sn, cliAppCode, req, new HwdeviceRsp(sn, _wsUrl.getWebsCode()));
}
/**
* 获取设备ID和二维码(新接口)
*
* @param sn
* @param cliAppCode
* @param devAcCode
* @return
*/
@Override
public CommRsp getHwdQrcode(long sn, String cliAppCode, String devAcCode) {
HwdeviceWsUrl _wsUrl = HwdeviceWsUrl.WSC08003MP;
//
this.setAccessTokenX(sn, cliAppCode, devAcCode);
//
return this.httpGet(_wsUrl, sn, cliAppCode, new CommRsp(sn, _wsUrl.getWebsCode()));
}
/**
* 查询设备状态
*
* @param sn
* @param cliAppCode
* @param devAcCode
* @param deviceId
* @return
*/
@Override
public HwdStatusRsp getHwdStatus(long sn, String cliAppCode, String devAcCode, String deviceId) {
HwdeviceWsUrl _wsUrl = HwdeviceWsUrl.WSC08008MP;
//
this.setAccessTokenX(sn, cliAppCode, devAcCode);
Map<String, String> _map = new HashMap<String, String>();
_map.put(WebsUrlParam.DEVICE_ID, deviceId);
this.setWebsUrlParamMap(_map);
//
return this.httpGet(_wsUrl, sn, cliAppCode, new HwdStatusRsp(sn, _wsUrl.getWebsCode()));
}
/**
* 获取设备绑定的OpenID
*
* @param sn
* @param cliAppCode
* @param req
* @return
*/
@Override
public HwdBindOpenIdRsp getHwdBindOpenId(long sn, String cliAppCode, HwdBindOpenIdReq req) {
HwdeviceWsUrl _wsUrl = HwdeviceWsUrl.WSC08010MP;
//
this.setAccessTokenX(sn, cliAppCode, req.getDevAcCode());
Map<String, String> _map = new HashMap<String, String>();
_map.put(WebsUrlParam.DEVICE_ID, req.getBody().getDeviceId());
_map.put(WebsUrlParam.DEVICE_TYPE, req.getBody().getDeviceType());
this.setWebsUrlParamMap(_map);
//
return this.httpGet(_wsUrl, sn, cliAppCode, new HwdBindOpenIdRsp(sn, _wsUrl.getWebsCode()));
}
/**
* 获取用户绑定的设备
*
* @param sn
* @param cliAppCode
* @param devAcCode
* @param openId
* @return
*/
@Override
public BindHwdeviceRsp getBindHwdevice(long sn, String cliAppCode, String devAcCode, String openId) {
HwdeviceWsUrl _wsUrl = HwdeviceWsUrl.WSC08011MP;
//
this.setAccessTokenX(sn, cliAppCode, devAcCode);
Map<String, String> _map = new HashMap<String, String>();
_map.put(WebsUrlParam.OPEN_ID, openId);
this.setWebsUrlParamMap(_map);
//
return this.httpGet(_wsUrl, sn, cliAppCode, new BindHwdeviceRsp(sn, _wsUrl.getWebsCode()));
}
/**
* 绑定用户和设备
*
* @param sn
* @param cliAppCode
* @param devAcCode
* @param req
* @return
*/
@Override
public BindUserHwdRsp bindUHwd(long sn, String cliAppCode, BindUserHwdReq req) {
//
return this.doBindUserHwdReq(HwdeviceWsUrl.WSC08004MP, sn, cliAppCode, req);
}
/**
* 解绑用户和设备
*
* @param sn
* @param cliAppCode
* @param devAcCode
* @param req
* @return
*/
@Override
public BindUserHwdRsp unbindUHwd(long sn, String cliAppCode, BindUserHwdReq req) {
//
return this.doBindUserHwdReq(HwdeviceWsUrl.WSC08005MP, sn, cliAppCode, req);
}
/**
* 强制绑定用户和设备
*
* @param sn
* @param cliAppCode
* @param devAcCode
* @param req
* @return
*/
@Override
public BindUserHwdRsp compelBindUHwd(long sn, String cliAppCode, BindUserHwdReq req) {
//
return this.doBindUserHwdReq(HwdeviceWsUrl.WSC08006MP, sn, cliAppCode, req);
}
/**
* 强制绑定用户和设备
*
* @param sn
* @param cliAppCode
* @param devAcCode
* @param req
* @return
*/
@Override
public BindUserHwdRsp compelUnbindUHwd(long sn, String cliAppCode, BindUserHwdReq req) {
//
return this.doBindUserHwdReq(HwdeviceWsUrl.WSC08007MP, sn, cliAppCode, req);
}
private BindUserHwdRsp doBindUserHwdReq(HwdeviceWsUrl wsUrl, long sn, String cliAppCode, BindUserHwdReq req) {
this.setAccessTokenX(sn, cliAppCode, req.getDevAcCode());
//
return this.httpPost(wsUrl, sn, cliAppCode, req, new BindUserHwdRsp(sn, wsUrl.getWebsCode()));
}
@Override
protected void setAccessTokenX(long sn, String cliAppCode, String devAcCode) {
this.setAccessToken(acTokenMpService.getAccessTokenMp(sn, cliAppCode, devAcCode));
}
}