From 41b4900a6a8340c70876fecbdb684474b18a69c4 Mon Sep 17 00:00:00 2001 From: baishou <2710684311@qq.com> Date: Fri, 24 May 2019 10:57:44 +0800 Subject: [PATCH] 涂鸦云服务对接接口封装以及代码优化 --- springboot/src/main/java/com/sincre/springboot/ApiModel/TuYaResResult.java | 6 +++--- springboot/src/main/java/com/sincre/springboot/controller/TuYaYunController.java | 66 +++++++++++++++++++++++++++++++++++++++--------------------------- springboot/src/main/java/com/sincre/springboot/controller/YinShiController.java | 66 ++++++++++++++++++++++++++++++++++++++++++------------------------ springboot/src/main/java/com/sincre/springboot/utils/ResultUtils.java | 90 +++++++++++++++++++++++++++++++++++++++--------------------------------------------------- 4 files changed, 123 insertions(+), 105 deletions(-) diff --git a/springboot/src/main/java/com/sincre/springboot/ApiModel/TuYaResResult.java b/springboot/src/main/java/com/sincre/springboot/ApiModel/TuYaResResult.java index 2161a55..099213d 100644 --- a/springboot/src/main/java/com/sincre/springboot/ApiModel/TuYaResResult.java +++ b/springboot/src/main/java/com/sincre/springboot/ApiModel/TuYaResResult.java @@ -5,11 +5,11 @@ import com.fasterxml.jackson.annotation.JsonInclude; @JsonInclude(JsonInclude.Include.NON_EMPTY) public class TuYaResResult { - public String getSuccess() { + public Boolean getSuccess() { return success; } - public void setSuccess(String success) { + public void setSuccess(Boolean success) { this.success = success; } @@ -45,7 +45,7 @@ public class TuYaResResult { this.t = t; } - private String success; + private Boolean success; private String code; private String msg; private Long t; diff --git a/springboot/src/main/java/com/sincre/springboot/controller/TuYaYunController.java b/springboot/src/main/java/com/sincre/springboot/controller/TuYaYunController.java index f434486..841d47f 100644 --- a/springboot/src/main/java/com/sincre/springboot/controller/TuYaYunController.java +++ b/springboot/src/main/java/com/sincre/springboot/controller/TuYaYunController.java @@ -1,16 +1,18 @@ package com.sincre.springboot.controller; +import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import com.sincre.springboot.ApiModel.DeviceToken; -import com.sincre.springboot.ApiModel.TuYaDevicesList; -import com.sincre.springboot.ApiModel.TuYaResResult; -import com.sincre.springboot.ApiModel.UserInfo; +import com.sincre.springboot.ApiModel.*; import com.sincre.springboot.ApiPlatform.TuYaCloudService; +import com.sincre.springboot.common.ServerResponse; import com.sincre.springboot.utils.ApiHelper; import com.sincre.springboot.utils.CacheHelper; import com.sincre.springboot.utils.ResultUtils; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; import java.util.HashMap; @@ -22,7 +24,7 @@ import java.util.Map; public class TuYaYunController { @GetMapping("GetDevicesInfo") - public TuYaResResult getTuYaDevicesInfo(){ + public ServerResponse getTuYaDevicesInfo(){ String apiUrl = "/v1.0/devices?device_ids="; Long t = System.currentTimeMillis(); @@ -36,16 +38,18 @@ public class TuYaYunController { map.put("t",t.toString()); String result = ApiHelper.doGet(TuYaCloudService.TuYaOpenUrl + apiUrl,map); - TuYaResResult resResult = null; - try{ - ObjectMapper objectMapper = new ObjectMapper(); - TypeReference> reference = new TypeReference>(){}; - resResult = objectMapper.readValue(result,reference); - } catch(Exception ex){ - System.out.println(ex.getMessage()); - } +// TuYaResResult resResult = null; +// try{ +// ObjectMapper objectMapper = new ObjectMapper(); +// TypeReference> reference = new TypeReference>(){}; +// resResult = objectMapper.readValue(result,reference); +// } catch(Exception ex){ +// System.out.println(ex.getMessage()); +// } System.out.println(result); - return resResult; + + TuYaResResult tuYaResResult = JSON.parseObject(result,TuYaResResult.class); + return ResultUtils.getInstance().returnResultTuYa(tuYaResResult); } @@ -56,8 +60,13 @@ public class TuYaYunController { * @param pageSize 大小 * @return */ + @ApiOperation(value = "获取用户信息列表") + @ApiImplicitParams({ + @ApiImplicitParam(name="pageIndex", value = "分页起始页,从1开始",required = true), + @ApiImplicitParam(name="pageSize", value = "分页大小,默认为10,最大为50") + }) @GetMapping("{AppId}/GetTuYaAPPUser") - public String getTuYaAPPUser(@PathVariable("AppId") String AppId, @RequestParam int pageIndex, @RequestParam int pageSize){ + public ServerResponse getTuYaAPPUser(@PathVariable("AppId") String AppId, @RequestParam int pageIndex, @RequestParam(defaultValue = "10") int pageSize){ String apiUrl = String.format("/v1.0/apps/%s/users?page_no=%d&page_size=%d",AppId,pageIndex,pageSize);//iotshunzhi Long t = System.currentTimeMillis(); @@ -73,12 +82,13 @@ public class TuYaYunController { String result = ApiHelper.doGet(TuYaCloudService.TuYaOpenUrl + apiUrl,headMap); - return result; + TuYaResResult tuYaResResult = JSON.parseObject(result,TuYaResResult.class); + return ResultUtils.getInstance().returnResultTuYa(tuYaResResult); } @PostMapping("{AppId}/AddTuYaAPPUser") - public String addTuYaAPPUser(@PathVariable("AppId") String AppId,@RequestBody UserInfo userInfo){ + public ServerResponse addTuYaAPPUser(@PathVariable("AppId") String AppId, @RequestBody UserInfo userInfo){ String apiUrl = String.format("/v1.0/apps/%s/user",AppId);//应用标识iotshunzhi Long t = System.currentTimeMillis(); @@ -93,7 +103,6 @@ public class TuYaYunController { headMap.put("t",t.toString()); ObjectMapper objectMapper = new ObjectMapper(); - String jsonResult = ""; try { jsonResult = objectMapper.writeValueAsString(userInfo); @@ -103,9 +112,8 @@ public class TuYaYunController { String result = ApiHelper.doPost(TuYaCloudService.TuYaOpenUrl + apiUrl,headMap,jsonResult); - TuYaResResult resResult = null; - - return result; + TuYaResResult tuYaResResult = JSON.parseObject(result,TuYaResResult.class); + return ResultUtils.getInstance().returnResultTuYa(tuYaResResult); } /** @@ -114,7 +122,7 @@ public class TuYaYunController { * @return */ @GetMapping("{uid}/GetDevicesByUid") - public String getDevicesByUid(@PathVariable("uid") String uid){ + public ServerResponse getDevicesByUid(@PathVariable("uid") String uid){ String apiUrl = String.format("/v1.0/users/%s/devices",uid); Long t = System.currentTimeMillis(); @@ -130,14 +138,16 @@ public class TuYaYunController { String result = ApiHelper.doGet(TuYaCloudService.TuYaOpenUrl + apiUrl,map); - return result; + System.out.println(result); + TuYaResResult tuYaResResult = JSON.parseObject(result,TuYaResResult.class); + return ResultUtils.getInstance().returnResultTuYa(tuYaResResult); } /** * 生成配网的Token * @return */ @GetMapping("AddDevicesToken") - public String addDevicesToken(@RequestParam String UId){ + public ServerResponse addDevicesToken(@RequestParam String UId){ String apiUrl = String.format("/v1.0/devices/token"); Long t = System.currentTimeMillis(); @@ -164,11 +174,12 @@ public class TuYaYunController { } String result = ApiHelper.doPost(TuYaCloudService.TuYaOpenUrl + apiUrl,map,jsonResult); - return result; + TuYaResResult tuYaResResult = JSON.parseObject(result,TuYaResResult.class); + return ResultUtils.getInstance().returnResultTuYa(tuYaResResult); } @GetMapping("{token}/GetDevicesByToken") - public String getDevicesByToken(@PathVariable("token") String token){ + public ServerResponse getDevicesByToken(@PathVariable("token") String token){ String apiUrl = String.format("/v1.0/devices/tokens/%s",token); Long t = System.currentTimeMillis(); @@ -184,6 +195,7 @@ public class TuYaYunController { String result = ApiHelper.doGet(TuYaCloudService.TuYaOpenUrl + apiUrl,map); - return result; + TuYaResResult tuYaResResult = JSON.parseObject(result,TuYaResResult.class); + return ResultUtils.getInstance().returnResultTuYa(tuYaResResult); } } diff --git a/springboot/src/main/java/com/sincre/springboot/controller/YinShiController.java b/springboot/src/main/java/com/sincre/springboot/controller/YinShiController.java index 8fc877c..e7e4b0a 100644 --- a/springboot/src/main/java/com/sincre/springboot/controller/YinShiController.java +++ b/springboot/src/main/java/com/sincre/springboot/controller/YinShiController.java @@ -3,6 +3,7 @@ package com.sincre.springboot.controller; import com.alibaba.fastjson.JSON; import com.sincre.springboot.ApiModel.YinShiResResult; +import com.sincre.springboot.ApiPlatform.YinShiServiceConfig; import com.sincre.springboot.common.MD5; import com.sincre.springboot.common.ResponseCode; import com.sincre.springboot.common.ServerResponse; @@ -10,19 +11,17 @@ import com.sincre.springboot.utils.ApiHelper; import com.sincre.springboot.utils.CacheHelper; import com.sincre.springboot.utils.ResultUtils; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import org.json.JSONObject; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import java.util.Date; import java.util.HashMap; import java.util.Map; -import com.sincre.springboot.ApiPlatform.YinShiServiceConfig; - @RestController @RequestMapping("/YinShi") @Api(value = "YinShiController", tags = "萤石对接接口") @@ -39,7 +38,7 @@ public class YinShiController { @ApiOperation(value = "增加子账号") @GetMapping("/addChildAccount") - public String addChildAccount(@RequestParam String accountName, @RequestParam String password) { + public ServerResponse addChildAccount(@RequestParam String accountName, @RequestParam String password) { String url = YinShiServiceConfig.HostUrl + "lapp/ram/account/create"; Map map = new HashMap<>(); @@ -54,28 +53,38 @@ public class YinShiController { map.put("accountName", accountName); map.put("password", password); String result = ApiHelper.doPost(url, new HashMap(), map); - return result;//ResultUtils.getInstance().resturnResultYingshi(result); + + YinShiResResult yinShiResResult = JSON.parseObject(result,YinShiResResult.class); + + System.out.println(result); + return ResultUtils.getInstance().returnResultYingshi(yinShiResResult); } @ApiOperation(value = "获取单个子账户信息") + @ApiImplicitParam(name="accountId",value = "子账号标识",required = true,dataType = "String") @GetMapping("getChildAccount") - public String getChildAccount(@RequestParam String accountId, @RequestParam String accountName) { + public ServerResponse getChildAccount(@RequestParam String accountId) { String url = YinShiServiceConfig.HostUrl + "lapp/ram/account/get"; Map map = new HashMap<>(); map.put("accessToken", YinShiServiceConfig.AccessToken); map.put("accountId", accountId); - map.put("accountName", accountName); String result = ApiHelper.doPost(url, new HashMap(), map); + YinShiResResult yinShiResResult = JSON.parseObject(result,YinShiResResult.class); - return result; + return ResultUtils.getInstance().returnResultYingshi(yinShiResResult); } @ApiOperation(value = "获取子账号信息列表") + @ApiImplicitParams({ + @ApiImplicitParam(name="pageIndex", value = "分页起始页,从1开始",required = true), + @ApiImplicitParam(name="pageSize", value = "分页大小,默认为10,最大为50") + }) @GetMapping("getChildAccountList") - public ServerResponse getChildAccountList(@RequestParam("pageIndex") Integer pageIndex, @RequestParam("pageSize") Integer pageSize) { + public ServerResponse getChildAccountList(@RequestParam("pageIndex") Integer pageIndex, @RequestParam(defaultValue = "10") Integer pageSize) { + pageIndex = pageIndex - 1; String url = YinShiServiceConfig.HostUrl + "lapp/ram/account/list"; Map map = new HashMap<>(); @@ -84,15 +93,14 @@ public class YinShiController { map.put("pageSize", pageSize); String result = ApiHelper.doPost(url, new HashMap(), map); - System.out.println(result); YinShiResResult yinShiResResult = JSON.parseObject(result,YinShiResResult.class); - return ResultUtils.getInstance().resturnResultYingshi(yinShiResResult); + return ResultUtils.getInstance().returnResultYingshi(yinShiResResult); } @ApiOperation(value = "修改当前子账户密码") @GetMapping("updateChildPassword") - public String updateChildPassword(@RequestParam("accountId") String accountId, @RequestParam("newPassword") String newPassword, @RequestParam("oldPassword") String oldPassword) { + public ServerResponse updateChildPassword(@RequestParam("accountId") String accountId, @RequestParam("newPassword") String newPassword, @RequestParam("oldPassword") String oldPassword) { String url = YinShiServiceConfig.HostUrl + "lapp/ram/account/updatePassword"; Map map = new HashMap<>(); @@ -110,13 +118,14 @@ public class YinShiController { map.put("oldPassword", oldPassword); map.put("newPassword", newPassword); String result = ApiHelper.doPost(url, new HashMap(), map); + YinShiResResult yinShiResResult = JSON.parseObject(result,YinShiResResult.class); - return result; + return ResultUtils.getInstance().returnResultYingshi(yinShiResResult); } @ApiOperation(value = "删除指定子账户") @GetMapping("deleteChildAccount") - public String deleteChildAccount(@RequestParam String accountId) { + public ServerResponse deleteChildAccount(@RequestParam String accountId) { String url = YinShiServiceConfig.HostUrl + "lapp/ram/account/delete"; Map map = new HashMap<>(); @@ -124,14 +133,15 @@ public class YinShiController { map.put("accessToken", YinShiServiceConfig.AccessToken); map.put("accountId", accountId); String result = ApiHelper.doPost(url, new HashMap(), map); + YinShiResResult yinShiResResult = JSON.parseObject(result,YinShiResResult.class); - return result; + return ResultUtils.getInstance().returnResultYingshi(yinShiResResult); } @ApiOperation(value = "设置子账户的授权策略") @GetMapping("policySet") - public String policySet(@RequestParam String accountId, @RequestParam String policy) { + public ServerResponse policySet(@RequestParam String accountId, @RequestParam String policy) { String url = YinShiServiceConfig.HostUrl + "lapp/ram/policy/set"; Map map = new HashMap<>(); @@ -141,12 +151,14 @@ public class YinShiController { map.put("policy", policy); String result = ApiHelper.doPost(url, new HashMap(), map); - return result; + YinShiResResult yinShiResResult = JSON.parseObject(result,YinShiResResult.class); + + return ResultUtils.getInstance().returnResultYingshi(yinShiResResult); } @ApiOperation(value = "增加子账户授权策略中的授权语句") @GetMapping("policyAdd") - public String policyAdd(@RequestParam String accountId, @RequestParam String statement) { + public ServerResponse policyAdd(@RequestParam String accountId, @RequestParam String statement) { String url = YinShiServiceConfig.HostUrl + "lapp/ram/statement/add"; Map map = new HashMap<>(); @@ -156,12 +168,14 @@ public class YinShiController { map.put("statement", statement); String result = ApiHelper.doPost(url, new HashMap(), map); - return result; + YinShiResResult yinShiResResult = JSON.parseObject(result,YinShiResResult.class); + + return ResultUtils.getInstance().returnResultYingshi(yinShiResResult); } @ApiOperation(value = "删除子账户授权策略中指定设备的所有授权语句") @GetMapping("policyDelete") - public String policyDelete(@RequestParam String accountId, @RequestParam String deviceSerial) { + public ServerResponse policyDelete(@RequestParam String accountId, @RequestParam String deviceSerial) { String url = YinShiServiceConfig.HostUrl + "lapp/ram/statement/delete"; Map map = new HashMap<>(); @@ -171,12 +185,14 @@ public class YinShiController { map.put("deviceSerial", deviceSerial); String result = ApiHelper.doPost(url, new HashMap(), map); - return result; + YinShiResResult yinShiResResult = JSON.parseObject(result,YinShiResResult.class); + + return ResultUtils.getInstance().returnResultYingshi(yinShiResResult); } @ApiOperation(value = "获取B模式子账户accessToken") @GetMapping("getChildAccountToken") - public String getChildAccountToken(@RequestParam String accountId) { + public ServerResponse getChildAccountToken(@RequestParam String accountId) { String url = YinShiServiceConfig.HostUrl + "lapp/ram/token/get"; Map map1 = new HashMap<>(); @@ -185,6 +201,8 @@ public class YinShiController { map1.put("accountId", accountId); String result = ApiHelper.doPost(url, new HashMap(), map1); - return result; + YinShiResResult yinShiResResult = JSON.parseObject(result,YinShiResResult.class); + + return ResultUtils.getInstance().returnResultYingshi(yinShiResResult); } } diff --git a/springboot/src/main/java/com/sincre/springboot/utils/ResultUtils.java b/springboot/src/main/java/com/sincre/springboot/utils/ResultUtils.java index f714a90..e1ce2f2 100644 --- a/springboot/src/main/java/com/sincre/springboot/utils/ResultUtils.java +++ b/springboot/src/main/java/com/sincre/springboot/utils/ResultUtils.java @@ -1,11 +1,10 @@ package com.sincre.springboot.utils; +import com.sincre.springboot.ApiModel.TuYaResResult; import com.sincre.springboot.ApiModel.YinShiResResult; import com.sincre.springboot.common.ResponseCode; import com.sincre.springboot.common.ServerResponse; -import com.sincre.springboot.model.ResultModelObj; -import org.json.JSONObject; /** * 结果返回工具类 @@ -34,65 +33,54 @@ public class ResultUtils { * @param yinShiResResult 萤石接口返回对象的字符串 * @return 返回的data可以是对象或者集合,都以字符串形式返回 */ - public ServerResponse resturnResultYingshi(YinShiResResult yinShiResResult) { -// JSONObject jsonObject = new JSONObject(result); -// ResultModelObj resultModelObj = new ResultModelObj(); -// long code = jsonObject.optLong("code"); -// if (code==10002){//accesstoken过期 -// new YinShiController().GetYinShiToken(); -// try { -// Thread.sleep(1000); -// } catch (InterruptedException e) { -// e.printStackTrace(); -// } -// } -// resultModelObj.setCode(code); -// resultModelObj.setData(jsonObject.optString("data")); -// resultModelObj.setMsg(jsonObject.optString("msg")); -// resultModelObj.setTotal(jsonObject.optInt("page")); -// return resultModelObj.toString(); + public ServerResponse returnResultYingshi(YinShiResResult yinShiResResult) { - int code = yinShiResResult.getCode(); - System.out.println(yinShiResResult.getPage().getTotal()); - if(code == 200){ - return ServerResponse.createBySuccess(yinShiResResult.getPage().getTotal().toString(), ResponseCode.SUCCESS.getDesc(),yinShiResResult.getData()); - } - else { - if (code==10002){//accessToken过期或异常 - CacheHelper.GetYinShiToken(); - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - e.printStackTrace(); + try { + int code = yinShiResResult.getCode(); + + if (code == 200) { + String total = null; + if (yinShiResResult.getPage() != null) { + total = yinShiResResult.getPage().getTotal().toString(); + } + return ServerResponse.createBySuccess(total, ResponseCode.SUCCESS.getDesc(), yinShiResResult.getData()); + } else { + if (code == 10002) {//accessToken过期或异常 + CacheHelper.GetYinShiToken(); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + return ServerResponse.createByErrorCodeMessage(code, yinShiResResult.getMsg()); } } - return ServerResponse.createByErrorMessage(yinShiResResult.getMsg()); + catch (Exception ex){ + return ServerResponse.createByErrorMessage("服务器内部处理出错!"); } } - - private void getYinShiToken(){ - - } - + /** * 涂鸦云返回结果 - * @param result + * @param * @return */ - public String resturnResultTuya(String result) { - JSONObject jsonObject = new JSONObject(result); - boolean success = jsonObject.optBoolean("success"); - ResultModelObj resultModelObj = new ResultModelObj(); - if (success){//成功 - resultModelObj.setCode(200); - resultModelObj.setData(jsonObject.optString("result")); - resultModelObj.setMsg(jsonObject.optString("msg")); - }else {//失败 - resultModelObj.setCode(jsonObject.optLong("code")); - resultModelObj.setData("{}"); - resultModelObj.setMsg(jsonObject.optString("msg")); + public ServerResponse returnResultTuYa(TuYaResResult tuYaResResult) { + try { + boolean success = tuYaResResult.getSuccess(); + + if (success) { + + return ServerResponse.createBySuccess(ResponseCode.SUCCESS.getDesc(), tuYaResResult.getResult()); + } + + int code = Integer.valueOf(tuYaResResult.getCode()); + return ServerResponse.createByErrorCodeMessage(code, tuYaResResult.getMsg()); + } + catch (Exception ex){ + return ServerResponse.createByErrorMessage("服务器内部处理出错!"); } - return resultModelObj.toString(); } } -- libgit2 0.21.0