TuYaYunController.java 8.73 KB
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.*;
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;
import java.util.Map;

@RestController
@RequestMapping(value = "/TuYa/*")
@Api(tags = "涂鸦云服务API调用")
public class TuYaYunController {

    @GetMapping("GetDevicesInfo")
    public ServerResponse getTuYaDevicesInfo(){

        String apiUrl = "/v1.0/devices?device_ids=";
        Long t = System.currentTimeMillis();
        String access_Token = CacheHelper.getTuYaToken();
        String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+access_Token+t,TuYaCloudService.Secret);
        Map<String,String> map = new HashMap();
        map.put("client_id", TuYaCloudService.ClientId);
        map.put("access_token",access_Token);
        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<TuYaDevicesList> resResult = null;
//        try{
//            ObjectMapper objectMapper = new ObjectMapper();
//            TypeReference<TuYaResResult<TuYaDevicesList>> reference = new TypeReference<TuYaResResult<TuYaDevicesList>>(){};
//            resResult = objectMapper.readValue(result,reference);
//        } catch(Exception ex){
//            System.out.println(ex.getMessage());
//        }
        System.out.println(result);

        TuYaResResult tuYaResResult = JSON.parseObject(result,TuYaResResult.class);
        return ResultUtils.getInstance().returnResultTuYa(tuYaResResult);
    }


    /**
     * 根据schema分页获取开发者App下的用户列表
     * @param AppId  应用标识
     * @param pageIndex  页码
     * @param pageSize   大小
     * @return
     */
    @ApiOperation(value = "获取用户信息列表")
    @ApiImplicitParams({
            @ApiImplicitParam(name="pageIndex", value = "分页起始页,从1开始",required = true),
            @ApiImplicitParam(name="pageSize", value = "分页大小,默认为10,最大为50")
    })
    @GetMapping("{AppId}/GetTuYaAPPUser")
    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();
        String access_Token = CacheHelper.getTuYaToken();
        //Token获取后的签名
        String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+access_Token+t,TuYaCloudService.Secret);
        Map<String,String> headMap = new HashMap();
        headMap.put("client_id", TuYaCloudService.ClientId);
        headMap.put("access_token",access_Token);
        headMap.put("sign",sign);
        headMap.put("sign_method",TuYaCloudService.Sign_method);
        headMap.put("t",t.toString());

        String result = ApiHelper.doGet(TuYaCloudService.TuYaOpenUrl + apiUrl,headMap);

        TuYaResResult tuYaResResult = JSON.parseObject(result,TuYaResResult.class);
        return ResultUtils.getInstance().returnResultTuYa(tuYaResResult);
    }


    @PostMapping("{AppId}/AddTuYaAPPUser")
    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();
        String access_Token = CacheHelper.getTuYaToken();
        //Token获取后的签名
        String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+access_Token+t,TuYaCloudService.Secret);
        Map<String,String> headMap = new HashMap();
        headMap.put("client_id", TuYaCloudService.ClientId);
        headMap.put("access_token",access_Token);
        headMap.put("sign",sign);
        headMap.put("sign_method",TuYaCloudService.Sign_method);
        headMap.put("t",t.toString());

        ObjectMapper objectMapper = new ObjectMapper();
        String jsonResult = "";
        try {
            jsonResult = objectMapper.writeValueAsString(userInfo);
        }catch (com.fasterxml.jackson.core.JsonProcessingException ex){
            ex.printStackTrace();
        }

        String result = ApiHelper.doPost(TuYaCloudService.TuYaOpenUrl + apiUrl,headMap,jsonResult);

        TuYaResResult tuYaResResult = JSON.parseObject(result,TuYaResResult.class);
        return ResultUtils.getInstance().returnResultTuYa(tuYaResResult);
    }

    /**
     * 根据用户ID来获取用户账号下的所有设备
     * @param uid
     * @return
     */
    @GetMapping("{uid}/GetDevicesByUid")
    public ServerResponse getDevicesByUid(@PathVariable("uid") String uid){

        String apiUrl = String.format("/v1.0/users/%s/devices",uid);
        Long t = System.currentTimeMillis();
        String access_Token = CacheHelper.getTuYaToken();
        //Token获取后的签名
        String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+access_Token+t,TuYaCloudService.Secret);
        Map<String,String> map = new HashMap();
        map.put("client_id", TuYaCloudService.ClientId);
        map.put("access_token",access_Token);
        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 tuYaResResult = JSON.parseObject(result,TuYaResResult.class);
        return ResultUtils.getInstance().returnResultTuYa(tuYaResResult);
    }
    /**
     * 生成配网的Token
     * @return
     */
    @GetMapping("AddDevicesToken")
    public ServerResponse addDevicesToken(@RequestParam String UId){

        String apiUrl = String.format("/v1.0/devices/token");
        Long t = System.currentTimeMillis();
        String access_Token = CacheHelper.getTuYaToken();
        //Token获取后的签名
        String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+access_Token+t,TuYaCloudService.Secret);
        Map<String,String> map = new HashMap();
        map.put("client_id", TuYaCloudService.ClientId);
        map.put("access_token",access_Token);
        map.put("sign",sign);
        map.put("sign_method",TuYaCloudService.Sign_method);
        map.put("t",t.toString());

        ObjectMapper objectMapper = new ObjectMapper();
        DeviceToken deviceToken = new DeviceToken();
        deviceToken.setUid(UId);
        deviceToken.setTimeZoneId("Asia/ZheJiang");

        String jsonResult = "";
        try {
            jsonResult = objectMapper.writeValueAsString(deviceToken);
        }catch (com.fasterxml.jackson.core.JsonProcessingException ex){
            ex.printStackTrace();
        }
        String result = ApiHelper.doPost(TuYaCloudService.TuYaOpenUrl + apiUrl,map,jsonResult);

        TuYaResResult tuYaResResult = JSON.parseObject(result,TuYaResResult.class);
        return ResultUtils.getInstance().returnResultTuYa(tuYaResResult);
    }

    @GetMapping("{token}/GetDevicesByToken")
    public ServerResponse getDevicesByToken(@PathVariable("token") String token){

        String apiUrl = String.format("/v1.0/devices/tokens/%s",token);
        Long t = System.currentTimeMillis();
        String access_Token = CacheHelper.getTuYaToken();
        //Token获取后的签名
        String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+access_Token+t,TuYaCloudService.Secret);
        Map<String,String> map = new HashMap();
        map.put("client_id", TuYaCloudService.ClientId);
        map.put("access_token",access_Token);
        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 tuYaResResult = JSON.parseObject(result,TuYaResResult.class);
        return ResultUtils.getInstance().returnResultTuYa(tuYaResResult);
    }
}