|
@ -91,42 +91,54 @@ public class YsDeviceService {
|
|
* @return
|
|
* @return
|
|
* @throws Exception
|
|
* @throws Exception
|
|
*/
|
|
*/
|
|
public String getIotAccessToken(String deviceSn) throws Exception {
|
|
|
|
|
|
public synchronized String getIotAccessToken(String deviceSn) throws Exception {
|
|
YsConfigDo YSCONFIGDO = ysConfig.getConfig(deviceSn);
|
|
YsConfigDo YSCONFIGDO = ysConfig.getConfig(deviceSn);
|
|
|
|
|
|
if(redisTemplate.hasKey(YSCONFIGDO.getIotAccessTokenKey())){
|
|
if(redisTemplate.hasKey(YSCONFIGDO.getIotAccessTokenKey())){
|
|
return redisTemplate.opsForValue().get(YSCONFIGDO.getIotAccessTokenKey());
|
|
return redisTemplate.opsForValue().get(YSCONFIGDO.getIotAccessTokenKey());
|
|
}
|
|
}
|
|
JSONObject responseBody = null;
|
|
JSONObject responseBody = null;
|
|
|
|
String assToken = null;
|
|
|
|
|
|
if (1==YSCONFIGDO.getConfigId()||2==YSCONFIGDO.getConfigId()){//兼容智居平台设备,后续全部迁移可删除改代码
|
|
if (1==YSCONFIGDO.getConfigId()||2==YSCONFIGDO.getConfigId()){//兼容智居平台设备,后续全部迁移可删除改代码
|
|
JSONObject param = new JSONObject();
|
|
JSONObject param = new JSONObject();
|
|
param.put("accessToken",getAccessToken(deviceSn));
|
|
param.put("accessToken",getAccessToken(deviceSn));
|
|
HttpEntity<JSONObject> response = httpClientUtil.assesTokenPostHttp(YsConfig.iotAssesToken,param, HttpMethod.POST);
|
|
HttpEntity<JSONObject> response = httpClientUtil.assesTokenPostHttp(YsConfig.iotAssesToken,param, HttpMethod.POST);
|
|
responseBody = response.getBody();
|
|
responseBody = response.getBody();
|
|
|
|
if (responseBody.getInteger("code")==200){
|
|
|
|
assToken = responseBody.getJSONObject("data").getString("ezOpenAccessToken");
|
|
|
|
Long expireTime = responseBody.getJSONObject("data").getLong("expireTime");//token有效截止日期
|
|
|
|
Long nowTime = System.currentTimeMillis();
|
|
|
|
expireTime = expireTime-nowTime;
|
|
|
|
|
|
|
|
redisTemplate.opsForValue().set(YSCONFIGDO.getIotAccessTokenKey(),assToken,expireTime, TimeUnit.MILLISECONDS);
|
|
|
|
//设备解密密钥
|
|
|
|
String secretKey = responseBody.getJSONObject("data").getString("secretKey");
|
|
|
|
redisTemplate.opsForValue().set(YSCONFIGDO.getSecretKey(),secretKey,expireTime, TimeUnit.MILLISECONDS);
|
|
|
|
}else {
|
|
|
|
throw new Exception("获取token失败");
|
|
|
|
}
|
|
}else {
|
|
}else {
|
|
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();;
|
|
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();;
|
|
params.add("appKey",getIotAccessToken(YSCONFIGDO.getAppKey()));
|
|
|
|
params.add("appSecret",getIotAccessToken(YSCONFIGDO.getAppSecret()));
|
|
|
|
|
|
params.add("appKey",YSCONFIGDO.getAppKey());
|
|
|
|
params.add("appSecret",YSCONFIGDO.getAppSecret());
|
|
HttpEntity<JSONObject> response = httpClientUtil.iotAssesTokenPostHttp(YsConfig.iotAssesToken2,params, HttpMethod.POST);
|
|
HttpEntity<JSONObject> response = httpClientUtil.iotAssesTokenPostHttp(YsConfig.iotAssesToken2,params, HttpMethod.POST);
|
|
responseBody = response.getBody();
|
|
responseBody = response.getBody();
|
|
|
|
if (responseBody.getInteger("code")==200){
|
|
|
|
assToken = responseBody.getJSONObject("data").getString("accessToken");
|
|
|
|
Long expireTime = responseBody.getJSONObject("data").getLong("expireTime");//token有效截止日期
|
|
|
|
Long nowTime = System.currentTimeMillis();
|
|
|
|
expireTime = expireTime-nowTime;
|
|
|
|
|
|
|
|
redisTemplate.opsForValue().set(YSCONFIGDO.getIotAccessTokenKey(),assToken,expireTime, TimeUnit.MILLISECONDS);
|
|
|
|
//设备解密密钥
|
|
|
|
// String secretKey = responseBody.getJSONObject("data").getString("secretKey");
|
|
|
|
// redisTemplate.opsForValue().set(YSCONFIGDO.getSecretKey(),secretKey,expireTime, TimeUnit.MILLISECONDS);
|
|
|
|
}else {
|
|
|
|
throw new Exception("获取token失败");
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
String assToken = null;
|
|
|
|
if (responseBody.getInteger("code")==200){
|
|
|
|
assToken = responseBody.getJSONObject("data").getString("ezOpenAccessToken");
|
|
|
|
Long expireTime = responseBody.getJSONObject("data").getLong("expireTime");//token有效截止日期
|
|
|
|
Long nowTime = System.currentTimeMillis();
|
|
|
|
expireTime = expireTime-nowTime;
|
|
|
|
|
|
|
|
redisTemplate.opsForValue().set(YSCONFIGDO.getIotAccessTokenKey(),assToken,expireTime, TimeUnit.MILLISECONDS);
|
|
|
|
//设备解密密钥
|
|
|
|
String secretKey = responseBody.getJSONObject("data").getString("secretKey");
|
|
|
|
redisTemplate.opsForValue().set(YSCONFIGDO.getSecretKey(),secretKey,expireTime, TimeUnit.MILLISECONDS);
|
|
|
|
// Long ss= redisTemplate.getExpire(YsConfig.iotRedisKey);
|
|
|
|
// System.out.println(expireTime+"---"+ss);
|
|
|
|
}else {
|
|
|
|
throw new Exception("获取token失败");
|
|
|
|
}
|
|
|
|
return assToken;
|
|
return assToken;
|
|
}
|
|
}
|
|
|
|
|