CacheHelper.java
5.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package com.sincre.springboot.utils;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.sincre.springboot.ApiModel.TuYaResResult;
import com.sincre.springboot.ApiModel.TuYaResTokenObj;
import com.sincre.springboot.ApiPlatform.TuYaCloudService;
import com.sincre.springboot.ApiPlatform.YinShiServiceConfig;
import com.sincre.springboot.common.EhcacheUtil;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class CacheHelper {
static EhcacheUtil ehcacheUtil = new EhcacheUtil();
static String TuYaTokenKey = "TuYa_Token";
static String TuYaRefreshTokenKey = "TuYa_Re_Token";
private static void setTuYaToken(){
String apiUrl = "/v1.0/token?grant_type=1";
Long t = System.currentTimeMillis();
//Token获取前的签名
String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+t,TuYaCloudService.Secret);
Map<String,String> map = new HashMap();
map.put("client_id", TuYaCloudService.ClientId);
map.put("sign",sign);
map.put("sign_method",TuYaCloudService.Sign_method);
map.put("t",t.toString());
String result = ApiHelper.doGet(TuYaCloudService.TuYaOpenUrl + apiUrl,map);
System.out.println(result);
TuYaResResult<TuYaResTokenObj> resResult ;
try{
ObjectMapper objectMapper = new ObjectMapper();
resResult = objectMapper.readValue(result,new TypeReference<TuYaResResult<TuYaResTokenObj>>(){});
String access_Token = resResult.getResult().getAccess_token(); //存储第一次获取的Token
String refresh_Token = resResult.getResult().getRefresh_token();
// 第一次缓存数据的时候,不刷新,后期刷新
if(StringUtils.isNotBlank(ehcacheUtil.get(TuYaTokenKey))){
TuYaRefresh(resResult.getResult());
}else {
ehcacheUtil.setex(TuYaTokenKey, access_Token, resResult.getResult().getExpire_time()); // 储存二个小时
ehcacheUtil.setex(TuYaRefreshTokenKey,refresh_Token,60 * 60); // 储存一个小时
System.out.println("获取Token:"+ access_Token);
System.out.println("刷新Token:"+ refresh_Token);
}
} catch(Exception ex){
System.out.println(ex.getMessage());
}
}
/**
* 获取涂鸦Api 访问的Token
* @return
*/
public static String getTuYaToken(){
if(StringUtils.isBlank(ehcacheUtil.get(TuYaRefreshTokenKey))){
setTuYaToken();
}
return ehcacheUtil.get(TuYaTokenKey);
}
private static void TuYaRefresh(TuYaResTokenObj tuYaResTokenObj){
String apiUrl = "/v1.0/token/"+tuYaResTokenObj.getRefresh_token();
Long t = System.currentTimeMillis();
String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+t,TuYaCloudService.Secret);
Map<String,String> map = new HashMap();
map.put("client_id", TuYaCloudService.ClientId);
map.put("sign",sign);
map.put("sign_method",TuYaCloudService.Sign_method);
map.put("t",t.toString());
String result = ApiHelper.doGet(TuYaCloudService.TuYaOpenUrl + apiUrl,map);
TuYaResResult<TuYaResTokenObj> resResult;
try{
ObjectMapper objectMapper = new ObjectMapper();
TypeReference<TuYaResResult<TuYaResTokenObj>> reference = new TypeReference<TuYaResResult<TuYaResTokenObj>>(){};
resResult = objectMapper.readValue(result,reference);
String re_access_Token = resResult.getResult().getAccess_token(); //重新刷新后获取的Token
String refresh_Token = resResult.getResult().getRefresh_token();
System.out.println("刷新后的Token:"+re_access_Token);
ehcacheUtil.setex(TuYaTokenKey,re_access_Token,resResult.getResult().getExpire_time()); // 储存两个小时
ehcacheUtil.setex(TuYaRefreshTokenKey,refresh_Token,60 * 60); //储存一个小时
} catch(Exception ex){
System.out.println(ex.getMessage());
}
}
/**
* 获取萤石云token
* @return
*/
public static String getYingshiYunToken(){
return ehcacheUtil.get(YinShiServiceConfig.accessToken);
}
/**
* 设置萤石云token
* @param token
* @param time
*/
public static void putYingshiYunToken(String token,int time){
ehcacheUtil.setex(YinShiServiceConfig.accessToken,token,time);
}
/**
* 获得萤石管理权限的Token
*/
public static void GetYinShiToken() {
String appKey = YinShiServiceConfig.appKey;
String appSecret = YinShiServiceConfig.appSecret;
String url = YinShiServiceConfig.HostUrl + "lapp/token/get";
Map<String, Object> map = new HashMap<>();
map.put("appKey", appKey);
map.put("appSecret", appSecret);
String result = ApiHelper.doPost(url, new HashMap<String, String>(), map);
JSONObject jsonObject = new JSONObject(result);
JSONObject data = jsonObject.optJSONObject("data");
YinShiServiceConfig.AccessToken = data.optString("accessToken");
}
}