Commit 7539135b9beeffa1eb420b4e1b51c4c8b770361c

Authored by baishou_zjx
1 parent 3d76350e
Exists in master

涂鸦红外接口对接完成添加遥控器的增删改æŸ

springboot/src/main/java/com/sincre/springboot/ApiModel/TuYaInfrared.java 0 → 100644
@@ -0,0 +1,81 @@ @@ -0,0 +1,81 @@
  1 +package com.sincre.springboot.ApiModel;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonInclude;
  4 +
  5 +/**
  6 + * 红外所需要的类
  7 + */
  8 +
  9 +@JsonInclude(JsonInclude.Include.NON_EMPTY)
  10 +public class TuYaInfrared {
  11 +
  12 + private String category_id;
  13 +
  14 + public String getCategory_id() {
  15 + return category_id;
  16 + }
  17 +
  18 + public void setCategory_id(String category_id) {
  19 + this.category_id = category_id;
  20 + }
  21 +
  22 + public String getCategory_name() {
  23 + return category_name;
  24 + }
  25 +
  26 + public void setCategory_name(String category_name) {
  27 + this.category_name = category_name;
  28 + }
  29 +
  30 + public String getBrand_id() {
  31 + return brand_id;
  32 + }
  33 +
  34 + public void setBrand_id(String brand_id) {
  35 + this.brand_id = brand_id;
  36 + }
  37 +
  38 + public String getBrand_name() {
  39 + return brand_name;
  40 + }
  41 +
  42 + public void setBrand_name(String brand_name) {
  43 + this.brand_name = brand_name;
  44 + }
  45 +
  46 + public String getRemote_index() {
  47 + return remote_index;
  48 + }
  49 +
  50 + public void setRemote_index(String remote_index) {
  51 + this.remote_index = remote_index;
  52 + }
  53 +
  54 +
  55 + private String category_name;
  56 +
  57 + private String brand_id;
  58 +
  59 + private String brand_name;
  60 +
  61 + private String remote_index;
  62 + private String remote_id;
  63 +
  64 + public String getRemote_id() {
  65 + return remote_id;
  66 + }
  67 +
  68 + public void setRemote_id(String remote_id) {
  69 + this.remote_id = remote_id;
  70 + }
  71 +
  72 + public String getRemote_name() {
  73 + return remote_name;
  74 + }
  75 +
  76 + public void setRemote_name(String remote_name) {
  77 + this.remote_name = remote_name;
  78 + }
  79 +
  80 + private String remote_name;
  81 +}
springboot/src/main/java/com/sincre/springboot/common/ValidParam.java 0 → 100644
@@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
  1 +package com.sincre.springboot.common;
  2 +
  3 +public class ValidParam {
  4 +
  5 +}
springboot/src/main/java/com/sincre/springboot/controller/TuYaYunController.java
@@ -13,7 +13,9 @@ import io.swagger.annotations.Api; @@ -13,7 +13,9 @@ import io.swagger.annotations.Api;
13 import io.swagger.annotations.ApiImplicitParam; 13 import io.swagger.annotations.ApiImplicitParam;
14 import io.swagger.annotations.ApiImplicitParams; 14 import io.swagger.annotations.ApiImplicitParams;
15 import io.swagger.annotations.ApiOperation; 15 import io.swagger.annotations.ApiOperation;
  16 +import org.apache.commons.lang3.StringUtils;
16 import org.springframework.web.bind.annotation.*; 17 import org.springframework.web.bind.annotation.*;
  18 +import springfox.documentation.spring.web.json.Json;
17 19
18 import java.util.HashMap; 20 import java.util.HashMap;
19 import java.util.Map; 21 import java.util.Map;
@@ -337,6 +339,113 @@ public class TuYaYunController { @@ -337,6 +339,113 @@ public class TuYaYunController {
337 public ServerResponse removeDevice(String deviceId){ 339 public ServerResponse removeDevice(String deviceId){
338 340
339 String apiUrl = String.format("/v1.0/devices/%s",deviceId); 341 String apiUrl = String.format("/v1.0/devices/%s",deviceId);
  342 + Map<String,String> map = headContent();
  343 + String result = ApiHelper.doDelete(TuYaCloudService.TuYaOpenUrl + apiUrl,map);
  344 + TuYaResResult tuYaResResult = JSON.parseObject(result,TuYaResResult.class);
  345 + return ResultUtils.getInstance().returnResultTuYa(tuYaResResult);
  346 + }
  347 +
  348 + @ApiOperation("获取红外设备支持的设 备类型")
  349 + @ApiImplicitParam(name="infraredId",value = "设备ID",required = true)
  350 + @GetMapping("getHWCategories")
  351 + public ServerResponse getHWCategories(String infraredId){
  352 +
  353 + String apiUrl = String.format("/v1.0/infrareds/%s/categories",infraredId);
  354 +
  355 + Map<String,String> map = headContent();
  356 + String result = ApiHelper.doGet(TuYaCloudService.TuYaOpenUrl + apiUrl,map);
  357 + TuYaResResult tuYaResResult = JSON.parseObject(result,TuYaResResult.class);
  358 + return ResultUtils.getInstance().returnResultTuYa(tuYaResResult);
  359 + }
  360 +
  361 + @ApiOperation("获取红外设备支持的设备品牌")
  362 + @ApiImplicitParam(name="infraredId",value = "设备ID",required = true)
  363 + @GetMapping("getHWBrands")
  364 + public ServerResponse getHWBrands(String infraredId,String categoryId){
  365 +
  366 + String apiUrl = String.format("/v1.0/infrareds/%s/categories/%s/brands",infraredId,categoryId);
  367 + Map<String,String> map = headContent();
  368 + String result = ApiHelper.doGet(TuYaCloudService.TuYaOpenUrl + apiUrl,map);
  369 + TuYaResResult tuYaResResult = JSON.parseObject(result,TuYaResResult.class);
  370 + return ResultUtils.getInstance().returnResultTuYa(tuYaResResult);
  371 + }
  372 + @ApiOperation("获取设备品牌支持的遥控器索引")
  373 + @ApiImplicitParam(name="infraredId",value = "设备ID",required = true)
  374 + @GetMapping("getHWBrandsIndex")
  375 + public ServerResponse getHWBrandsIndex(String infraredId,String categoryId,String brandId){
  376 +
  377 + String apiUrl = String.format("/v1.0/infrareds/%s/categories/%s/brands/%s",infraredId,categoryId,brandId);
  378 + Map<String,String> map = headContent();
  379 + String result = ApiHelper.doGet(TuYaCloudService.TuYaOpenUrl + apiUrl,map);
  380 + TuYaResResult tuYaResResult = JSON.parseObject(result,TuYaResResult.class);
  381 + return ResultUtils.getInstance().returnResultTuYa(tuYaResResult);
  382 + }
  383 +
  384 + @ApiOperation("向红外设备添加普通遥控器")
  385 + @ApiImplicitParam(name="infrared_id",value = "设备ID",required = true,paramType = "path")
  386 + @PostMapping("{infrared_id}/addHWRemote")
  387 + public ServerResponse addHWRemote(@RequestBody TuYaInfrared tuYaInfrared,@PathVariable String infrared_id){
  388 +
  389 + if(StringUtils.isBlank(infrared_id)||tuYaInfrared==null){
  390 + return ServerResponse.createByErrorCodeMessage(400,"参数错误");
  391 + }
  392 + else{
  393 + if(StringUtils.isBlank(tuYaInfrared.getBrand_id())||StringUtils.isBlank(tuYaInfrared.getCategory_id())||StringUtils.isBlank(tuYaInfrared.getRemote_index())){
  394 + return ServerResponse.createByErrorCodeMessage(400,"参数错误");
  395 + }
  396 + }
  397 + String apiUrl = String.format("/v1.0/infrareds/%s/normal/add-remote",infrared_id);
  398 + Map<String,String> map = headContent();
  399 +
  400 + String json = JSON.toJSONString(tuYaInfrared);
  401 + String result = ApiHelper.doPost(TuYaCloudService.TuYaOpenUrl + apiUrl,map,json);
  402 + TuYaResResult tuYaResResult = JSON.parseObject(result,TuYaResResult.class);
  403 + return ResultUtils.getInstance().returnResultTuYa(tuYaResResult);
  404 + }
  405 +
  406 + @ApiOperation("删除红外设备下的遥控器")
  407 + @ApiImplicitParams({
  408 + @ApiImplicitParam(name="infrared_id",value = "设备ID",required = true,paramType = "path"),
  409 + @ApiImplicitParam(name="remote_id",value = "设备ID",required = true,paramType = "path")
  410 + })
  411 + @DeleteMapping("{infrared_id}/delHWRemote/{remote_id}")
  412 + public ServerResponse delHWRemote(@PathVariable String infrared_id,@PathVariable String remote_id){
  413 +
  414 + String apiUrl = String.format("/v1.0/infrareds/%s/remotes/%s",infrared_id,remote_id);
  415 + Map<String,String> map = headContent();
  416 + String result = ApiHelper.doDelete(TuYaCloudService.TuYaOpenUrl + apiUrl,map);
  417 + TuYaResResult tuYaResResult = JSON.parseObject(result,TuYaResResult.class);
  418 + return ResultUtils.getInstance().returnResultTuYa(tuYaResResult);
  419 + }
  420 +
  421 + @ApiOperation("编辑红外设备下的遥控器的名称")
  422 + @ApiImplicitParams({
  423 + @ApiImplicitParam(name="infrared_id",value = "设备ID",required = true,paramType = "path")
  424 + })
  425 + @PutMapping("{infrared_id}/editHWRemote")
  426 + public ServerResponse editHWRemote(@PathVariable String infrared_id,@RequestBody TuYaInfrared tuYaInfrared){
  427 +
  428 + if(tuYaInfrared==null){
  429 + return ServerResponse.createByErrorCodeMessage(400,"参数错误");
  430 + }
  431 + else{
  432 + if(StringUtils.isBlank(tuYaInfrared.getRemote_id())||StringUtils.isBlank(tuYaInfrared.getRemote_name())){
  433 + return ServerResponse.createByErrorCodeMessage(400,"参数错误");
  434 + }
  435 + }
  436 + String apiUrl = String.format("/v1.0/infrareds/%s",infrared_id);
  437 + Map<String,String> map = headContent();
  438 + String json = JSON.toJSONString(tuYaInfrared);
  439 + String result = ApiHelper.doPut(TuYaCloudService.TuYaOpenUrl + apiUrl,map,json);
  440 + TuYaResResult tuYaResResult = JSON.parseObject(result,TuYaResResult.class);
  441 + return ResultUtils.getInstance().returnResultTuYa(tuYaResResult);
  442 + }
  443 + /**
  444 + * 请求头的参数
  445 + * @return
  446 + */
  447 + private Map<String,String> headContent(){
  448 +
340 Long t = System.currentTimeMillis(); 449 Long t = System.currentTimeMillis();
341 String access_Token = CacheHelper.getTuYaToken(); 450 String access_Token = CacheHelper.getTuYaToken();
342 String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+access_Token+t,TuYaCloudService.Secret); 451 String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+access_Token+t,TuYaCloudService.Secret);
@@ -347,9 +456,7 @@ public class TuYaYunController { @@ -347,9 +456,7 @@ public class TuYaYunController {
347 map.put("sign",sign); 456 map.put("sign",sign);
348 map.put("sign_method",TuYaCloudService.Sign_method); 457 map.put("sign_method",TuYaCloudService.Sign_method);
349 map.put("t",t.toString()); 458 map.put("t",t.toString());
350 - String result = ApiHelper.doDelete(TuYaCloudService.TuYaOpenUrl + apiUrl,map);  
351 459
352 - TuYaResResult tuYaResResult = JSON.parseObject(result,TuYaResResult.class);  
353 - return ResultUtils.getInstance().returnResultTuYa(tuYaResResult); 460 + return map;
354 } 461 }
355 } 462 }
springboot/src/main/java/com/sincre/springboot/utils/ApiHelper.java
@@ -5,10 +5,7 @@ import org.apache.http.NameValuePair; @@ -5,10 +5,7 @@ import org.apache.http.NameValuePair;
5 import org.apache.http.client.ClientProtocolException; 5 import org.apache.http.client.ClientProtocolException;
6 import org.apache.http.client.config.RequestConfig; 6 import org.apache.http.client.config.RequestConfig;
7 import org.apache.http.client.entity.UrlEncodedFormEntity; 7 import org.apache.http.client.entity.UrlEncodedFormEntity;
8 -import org.apache.http.client.methods.CloseableHttpResponse;  
9 -import org.apache.http.client.methods.HttpDelete;  
10 -import org.apache.http.client.methods.HttpGet;  
11 -import org.apache.http.client.methods.HttpPost; 8 +import org.apache.http.client.methods.*;
12 import org.apache.http.entity.ContentType; 9 import org.apache.http.entity.ContentType;
13 import org.apache.http.entity.StringEntity; 10 import org.apache.http.entity.StringEntity;
14 import org.apache.http.impl.client.CloseableHttpClient; 11 import org.apache.http.impl.client.CloseableHttpClient;
@@ -36,13 +33,8 @@ public class ApiHelper { @@ -36,13 +33,8 @@ public class ApiHelper {
36 httpGet.setHeader(entry.getKey(),entry.getValue()); 33 httpGet.setHeader(entry.getKey(),entry.getValue());
37 } 34 }
38 35
39 - // 设置配置请求参数  
40 - RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)// 连接主机服务超时时间  
41 - .setConnectionRequestTimeout(35000)// 请求超时时间  
42 - .setSocketTimeout(60000)// 数据读取超时时间  
43 - .build();  
44 // 为httpGet实例设置配置 36 // 为httpGet实例设置配置
45 - httpGet.setConfig(requestConfig); 37 + httpGet.setConfig(setRequestConfig());
46 // 执行get请求得到返回对象 38 // 执行get请求得到返回对象
47 response = httpClient.execute(httpGet); 39 response = httpClient.execute(httpGet);
48 // 通过返回对象获取返回数据 40 // 通过返回对象获取返回数据
@@ -74,6 +66,7 @@ public class ApiHelper { @@ -74,6 +66,7 @@ public class ApiHelper {
74 } 66 }
75 67
76 68
  69 +
77 public static String doDelete(String url,Map<String, String> headerParamMap) { 70 public static String doDelete(String url,Map<String, String> headerParamMap) {
78 CloseableHttpClient httpClient = null; 71 CloseableHttpClient httpClient = null;
79 CloseableHttpResponse response = null; 72 CloseableHttpResponse response = null;
@@ -87,14 +80,8 @@ public class ApiHelper { @@ -87,14 +80,8 @@ public class ApiHelper {
87 for (Map.Entry<String, String> entry : headerParamMap.entrySet()) { 80 for (Map.Entry<String, String> entry : headerParamMap.entrySet()) {
88 httpDelete.setHeader(entry.getKey(),entry.getValue()); 81 httpDelete.setHeader(entry.getKey(),entry.getValue());
89 } 82 }
90 -  
91 - // 设置配置请求参数  
92 - RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)// 连接主机服务超时时间  
93 - .setConnectionRequestTimeout(35000)// 请求超时时间  
94 - .setSocketTimeout(60000)// 数据读取超时时间  
95 - .build();  
96 // 为httpGet实例设置配置 83 // 为httpGet实例设置配置
97 - httpDelete.setConfig(requestConfig); 84 + httpDelete.setConfig(setRequestConfig());
98 // 执行get请求得到返回对象 85 // 执行get请求得到返回对象
99 response = httpClient.execute(httpDelete); 86 response = httpClient.execute(httpDelete);
100 // 通过返回对象获取返回数据 87 // 通过返回对象获取返回数据
@@ -145,13 +132,8 @@ public class ApiHelper { @@ -145,13 +132,8 @@ public class ApiHelper {
145 for (Map.Entry<String, String> entry : headerParamMap.entrySet()) { 132 for (Map.Entry<String, String> entry : headerParamMap.entrySet()) {
146 httpPost.setHeader(entry.getKey(), entry.getValue()); 133 httpPost.setHeader(entry.getKey(), entry.getValue());
147 } 134 }
148 - // 配置请求参数实例  
149 - RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)// 设置连接主机服务超时时间  
150 - .setConnectionRequestTimeout(35000)// 设置连接请求超时时间  
151 - .setSocketTimeout(60000)// 设置读取数据连接超时时间  
152 - .build();  
153 // 为httpPost实例设置配置 135 // 为httpPost实例设置配置
154 - httpPost.setConfig(requestConfig); 136 + httpPost.setConfig(setRequestConfig());
155 137
156 // 封装post请求参数 138 // 封装post请求参数
157 if (null != paramMap && paramMap.size() > 0) { 139 if (null != paramMap && paramMap.size() > 0) {
@@ -173,7 +155,7 @@ public class ApiHelper { @@ -173,7 +155,7 @@ public class ApiHelper {
173 e.printStackTrace(); 155 e.printStackTrace();
174 } 156 }
175 } 157 }
176 - result = closeHttpAndResult(httpClient, httpPost); 158 + result = closeHttpAndResult(httpClient, httpPost,null);
177 return result; 159 return result;
178 } 160 }
179 /** 161 /**
@@ -185,7 +167,6 @@ public class ApiHelper { @@ -185,7 +167,6 @@ public class ApiHelper {
185 */ 167 */
186 public static String doPost(String url, Map<String, String> headerParamMap, String jsonParam) { 168 public static String doPost(String url, Map<String, String> headerParamMap, String jsonParam) {
187 CloseableHttpClient httpClient; 169 CloseableHttpClient httpClient;
188 -// CloseableHttpResponse httpResponse = null;  
189 String result; 170 String result;
190 // 创建httpClient实例 171 // 创建httpClient实例
191 httpClient = HttpClients.createDefault(); 172 httpClient = HttpClients.createDefault();
@@ -196,13 +177,8 @@ public class ApiHelper { @@ -196,13 +177,8 @@ public class ApiHelper {
196 for (Map.Entry<String, String> entry : headerParamMap.entrySet()) { 177 for (Map.Entry<String, String> entry : headerParamMap.entrySet()) {
197 httpPost.setHeader(entry.getKey(),entry.getValue()); 178 httpPost.setHeader(entry.getKey(),entry.getValue());
198 } 179 }
199 - // 配置请求参数实例  
200 - RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)// 设置连接主机服务超时时间  
201 - .setConnectionRequestTimeout(35000)// 设置连接请求超时时间  
202 - .setSocketTimeout(60000)// 设置读取数据连接超时时间  
203 - .build();  
204 // 为httpPost实例设置配置 180 // 为httpPost实例设置配置
205 - httpPost.setConfig(requestConfig); 181 + httpPost.setConfig(setRequestConfig());
206 // try { 182 // try {
207 StringEntity stringEntity = new StringEntity(jsonParam, ContentType.create("application/json","UTF-8")); 183 StringEntity stringEntity = new StringEntity(jsonParam, ContentType.create("application/json","UTF-8"));
208 // stringEntity.setContentType("application/json"); 184 // stringEntity.setContentType("application/json");
@@ -211,16 +187,44 @@ public class ApiHelper { @@ -211,16 +187,44 @@ public class ApiHelper {
211 // }catch (UnsupportedEncodingException e){ 187 // }catch (UnsupportedEncodingException e){
212 // e.printStackTrace(); 188 // e.printStackTrace();
213 // } 189 // }
214 - result = closeHttpAndResult(httpClient,httpPost); 190 + result = closeHttpAndResult(httpClient,httpPost,null);
215 return result; 191 return result;
216 } 192 }
217 193
218 - private static String closeHttpAndResult(CloseableHttpClient httpClient,HttpPost httpPost){ 194 + public static String doPut(String url, Map<String, String> headerParamMap, String jsonParam) {
  195 + CloseableHttpClient httpClient;
  196 + String result;
  197 + // 创建httpClient实例
  198 + httpClient = HttpClients.createDefault();
  199 + // 创建httpPost远程连接实例
  200 + HttpPut httpPut= new HttpPut(url);
  201 + // 设置请求头
  202 + httpPut.addHeader("Content-Type", "application/json");
  203 + for (Map.Entry<String, String> entry : headerParamMap.entrySet()) {
  204 + httpPut.setHeader(entry.getKey(),entry.getValue());
  205 + }
  206 + // 为httpPut实例设置配置
  207 + httpPut.setConfig(setRequestConfig());
  208 +
  209 + StringEntity stringEntity = new StringEntity(jsonParam, ContentType.create("application/json","UTF-8"));
  210 +
  211 + httpPut.setEntity(stringEntity);
  212 +
  213 + result = closeHttpAndResult(httpClient,null,httpPut);
  214 + return result;
  215 + }
  216 +
  217 +
  218 + private static String closeHttpAndResult(CloseableHttpClient httpClient,HttpPost httpPost,HttpPut httpPut){
219 CloseableHttpResponse httpResponse = null; 219 CloseableHttpResponse httpResponse = null;
220 String result = null; 220 String result = null;
221 try { 221 try {
222 - // httpClient对象执行post请求,并返回响应参数对象  
223 - httpResponse = httpClient.execute(httpPost); 222 + // httpClient对象执行post或者是put请求,并返回响应参数对象
  223 + if(httpPost != null) {
  224 + httpResponse = httpClient.execute(httpPost);
  225 + }else {
  226 + httpResponse = httpClient.execute(httpPut);
  227 + }
224 // 从响应对象中获取响应内容 228 // 从响应对象中获取响应内容
225 HttpEntity entity = httpResponse.getEntity(); 229 HttpEntity entity = httpResponse.getEntity();
226 result = EntityUtils.toString(entity); 230 result = EntityUtils.toString(entity);
@@ -248,5 +252,19 @@ public class ApiHelper { @@ -248,5 +252,19 @@ public class ApiHelper {
248 252
249 return result; 253 return result;
250 } 254 }
  255 +
  256 +
  257 + /**
  258 + * 设置配置请求参数
  259 + * @return
  260 + */
  261 + private static RequestConfig setRequestConfig(){
  262 + RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)// 连接主机服务超时时间
  263 + .setConnectionRequestTimeout(35000)// 请求超时时间
  264 + .setSocketTimeout(60000)// 数据读取超时时间
  265 + .build();
  266 +
  267 + return requestConfig;
  268 + }
251 } 269 }
252 270