فهرست منبع

ac设备的用户获取

weclouds 1 سال پیش
والد
کامیت
300a5fdf5a

+ 9 - 1
src/main/java/com/welampiot/common/InterfaceResultEnum.java

@@ -232,7 +232,15 @@ public enum InterfaceResultEnum {
 
 
     //分组 0600-0699 分组名称必须在1-255数字范围内
-    GROUP_NUMBER_RAND_ERROR("0600","分组名称必须在1-255数字范围内","The group name must be in the range of 1-255 digits","Имя группы должно быть в диапазоне от 1 до 255")
+    GROUP_NUMBER_RAND_ERROR("0600","分组名称必须在1-255数字范围内","The group name must be in the range of 1-255 digits","Имя группы должно быть в диапазоне от 1 до 255"),
+
+    //AC 0700-0799
+    AC_RAND_CODE_ERROR("0700","获取随机码失败","Failed to obtain random code","Ошибка получения случайного кода"),
+    AC_CONFIG_ADDRESS_ERROR("0701","请正确配置ip地址或端口配置","Please properly configure the IP address or port configuration","Настройка ip - адреса или порта"),
+    AC_USER_LIST_ERROR("0702","获取用户列表失败","Failed to get user list","Не удалось получить список пользователей"),
+    AC_TOKEN_ERROR("0703","刷新令牌失败","Refresh token failed","Не удалось обновить токен"),
+    AC_GET_TOKEN_ERROR("0704","获取令牌失败","Failed to get token","Ошибка получения маркера"),
+
     ;
     private String code;
     private String msgCn;

+ 395 - 3
src/main/java/com/welampiot/controller/AcDeviceController.java

@@ -1,5 +1,8 @@
 package com.welampiot.controller;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.welampiot.common.BaseResult;
 import com.welampiot.common.InterfaceResultEnum;
 import com.welampiot.dto.AcDevInfoDTO;
@@ -7,17 +10,20 @@ import com.welampiot.service.AcDevInfoService;
 import com.welampiot.utils.ExcelUtil;
 import com.welampiot.utils.ToolUtils;
 import com.welampiot.vo.AcDevInfoVO;
+import jdk.nashorn.internal.runtime.Version;
+import org.apache.commons.collections4.Put;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.DigestUtils;
 import org.springframework.web.bind.annotation.CrossOrigin;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
 
 /**
  * ClassName: AcDeviceController
@@ -37,6 +43,10 @@ public class AcDeviceController {
     @Autowired
     private AcDevInfoService acDevInfoService;
 
+    //锐捷ap
+    private final static String appid = "macc2b6d2fd0fa71";
+    private final static String secret = "b3b5a0e09293424392ee5e39c4620e4f";
+    private final static String cookie = "username=033fc7838388kkdjee"; //随便
     /**
      * 获取AC的列表
      * @param request sectionList,page,count,keyword
@@ -185,4 +195,386 @@ public class AcDeviceController {
         }
         return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
     }
+    @RequestMapping(value = "getUserList",method = RequestMethod.POST)
+    public BaseResult<?> getUserList(HttpServletRequest request) {
+        Integer version = request.getParameter("version") == null ? 0 : Integer.parseInt(request.getParameter("version"));
+        Integer id = request.getParameter("id")== null ? 0 : Integer.parseInt(request.getParameter("id"));
+        if (id == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR, version);
+
+        Integer page = request.getParameter("page") == null ? 1 : Integer.parseInt(request.getParameter("page"));
+        Integer count = request.getParameter("count") == null ? 16 : Integer.parseInt(request.getParameter("count"));
+        Integer areaId = request.getParameter("areaId") == null || request.getParameter("areaId") == "" ? null : Integer.parseInt(request.getParameter("areaId"));
+        Integer sectionId = request.getParameter("sectionId") == null || request.getParameter("sectionId") == "" ? null : Integer.parseInt(request.getParameter("sectionId"));
+        String keyword = request.getParameter("keyword") == null ? "" : request.getParameter("keyword");
+        String download = request.getParameter("download") == null ? "" : request.getParameter("keyword");
+        String action = request.getParameter("action");
+        String searchKey = request.getParameter("searchKey")  == null ? "" : request.getParameter("searchKey");;
+
+        Integer limit = count;
+        Integer offset = (page-1)*count;
+
+        AcDevInfoDTO acDevInfoDTO = acDevInfoService.getOneById(id);
+        AcDevInfoVO responeAc = new AcDevInfoVO();
+        responeAc.setStaNum(0);
+        List<AcDevInfoVO> acDevInfoVOList = new ArrayList<>();
+        responeAc.setStaList(acDevInfoVOList);
+
+        if (acDevInfoDTO.getType() == 0){
+            //云之声
+            String networkIP = acDevInfoDTO.getNetworkIP();
+            //获取随机码与登录
+            String loginResult = this.getPassword(networkIP);
+            if (loginResult.equals("获取随机码失败")){
+                return toolUtils.response(InterfaceResultEnum.AC_RAND_CODE_ERROR,version);
+            } else if (loginResult.equals("登录失败")) {
+                return toolUtils.response(InterfaceResultEnum.USER_LOGIN_ERROR,version);
+            }
+            String url = "http://"+networkIP+"/api/apmgr";
+            if (action == null) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+            JSONObject body = new JSONObject();
+            body.put("action",action);
+            body.put("searchkey",searchKey);
+            body.put("numperpage",count);
+            body.put("pagenum",page);
+            try {
+                String respone = toolUtils.sendHttp("post",url,body.toString(),4, ToolUtils.ContentTypeEnum.CONTENT_TYPE_FORM,cookie);
+                if (respone == null || respone.contains("404 Not Found")){
+                    return toolUtils.response(InterfaceResultEnum.AC_CONFIG_ADDRESS_ERROR,version);
+                }else {
+                    JSONObject responeObject = JSON.parseObject(respone);
+                    Integer ret = responeObject.getInteger("ret");
+                   // AcDevInfoVO responeAc = new AcDevInfoVO();
+                    if (ret == 1){
+                        //数组
+                        JSONArray jsonArray = responeObject.getJSONArray("stalist");
+                        Integer staNum = responeObject.getInteger("stanum");
+                        //List<AcDevInfoVO> acDevInfoVOList = new ArrayList<>();
+                        for (Object value: jsonArray) {
+
+                            AcDevInfoVO acDevInfoVO = new AcDevInfoVO();
+                            JSONObject item =  (JSONObject) value;
+                            acDevInfoVO.setMacInfo(item.getString("macinfo"));
+                            acDevInfoVO.setRxRate(item.getLong("rx_rate"));
+                            acDevInfoVO.setTxRate(item.getLong("tx_rate"));
+                            acDevInfoVO.setRxPackets(item.getLong("rx_packets"));
+                            acDevInfoVO.setTxPackets(item.getLong("tx_packets"));
+                            acDevInfoVO.setLastTime(item.getString("lasttime"));
+                            acDevInfoVO.setApMac(item.getString("apmac"));
+                            acDevInfoVO.setMac(acDevInfoDTO.getAcAddress());
+                            acDevInfoVOList.add(acDevInfoVO);
+                        }
+                        responeAc.setStaNum(staNum);
+                        responeAc.setStaList(acDevInfoVOList);
+                        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,responeAc);
+                    }else {
+                        responeAc.setStaNum(0);
+                        //List<AcDevInfoVO> acDevInfoVOList = new ArrayList<>();
+                        responeAc.setStaList(acDevInfoVOList);
+                        return toolUtils.response(InterfaceResultEnum.AC_USER_LIST_ERROR,version,responeAc);
+                    }
+                }
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
+
+        }else {
+            //锐捷
+            Date day = new Date();
+            SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
+            String currentDate = sdf.format(day);
+
+            Date date = null;
+            try {
+                date = sdf.parse(currentDate);
+            } catch (ParseException e) {
+                throw new RuntimeException(e);
+            }
+            long timestamp = date.getTime();
+            String[] oldDateArr = acDevInfoDTO.getUpdateTime().split(" ");
+            Date oldDate = null;
+            try {
+                oldDate = sdf.parse(oldDateArr[0]);
+            } catch (ParseException e) {
+                throw new RuntimeException(e);
+            }
+            long oldTimestamp = oldDate.getTime();
+
+            String networkIP = "https://api.cloud.ruijie.com.cn";
+            if (timestamp != oldTimestamp){
+                //获取token
+                String url = networkIP+"/oauth2/access_token?grant_type=client_credential&client_id="+appid+"&client_secret="+secret;
+               System.out.println("=====进来====");
+                String respone = null;
+                try {
+                    respone = toolUtils.sendHttp("get",url,null,4, ToolUtils.ContentTypeEnum.CONTENT_TYPE_JSON,null);
+                } catch (IOException e) {
+                    throw new RuntimeException(e);
+                }
+//                AcDevInfoVO responeAc = new AcDevInfoVO();
+//                responeAc.setStaNum(0);
+//                List<AcDevInfoVO> acDevInfoVOList = new ArrayList<>();
+//                responeAc.setStaList(acDevInfoVOList);
+                if (respone == null){
+                    return toolUtils.response(InterfaceResultEnum.AC_GET_TOKEN_ERROR,version,responeAc);
+                }else {
+                    JSONObject tokeRespone = JSON.parseObject(respone);
+                    Integer code = tokeRespone.getInteger("code");
+                    if (code == 0){
+                        //成功
+                        String access_token = tokeRespone.getString("access_token");
+                        String refresh_token = tokeRespone.getString("refresh_token");
+                       SimpleDateFormat upSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                       String updateTime = upSdf.format(day);
+
+                        //更新数据
+                        AcDevInfoDTO acDevInfo = new AcDevInfoDTO();
+                        acDevInfo.setAccessToken(access_token);
+                        acDevInfo.setRefreshToken(refresh_token);
+                        acDevInfo.setUpdateTime(updateTime);
+                        acDevInfo.setId(id);
+                        acDevInfoService.updateByAcDevData(acDevInfo);
+                         /*1.获取到了token  OMxMalZpqxToW9n5oi7w4c5R5r7V9o5Y
+                           * 2. 获取用户
+                         */
+                        Object ruiJieUser = this.getRuiJieUserList(networkIP, access_token, page, count, acDevInfoDTO);
+                        if (ruiJieUser instanceof AcDevInfoVO){
+                            //成功
+                            responeAc = (AcDevInfoVO)ruiJieUser;
+                            return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,responeAc);
+                        }else {
+                          //不成功
+                            String errorCode = (String) ruiJieUser;
+                            if (errorCode.equals("0389")){
+                                //无效的令牌
+                                return toolUtils.response(InterfaceResultEnum.INVALID_TOKEN_ERROR,version,responeAc);
+                            }else {
+                                //刷新令牌失败
+                                return toolUtils.response(InterfaceResultEnum.AC_TOKEN_ERROR,version,responeAc);
+                            }
+
+                        }
+                    }
+                }
+            }else {
+                /*1.获取到了token  OMxMalZpqxToW9n5oi7w4c5R5r7V9o5Y
+                 * 2. 获取用户
+                 */
+                Object ruiJieUser = this.getRuiJieUserList(networkIP, acDevInfoDTO.getAccessToken(), page, count, acDevInfoDTO);
+                if (ruiJieUser instanceof AcDevInfoVO){
+                    //成功
+                    responeAc = (AcDevInfoVO)ruiJieUser;
+                    return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,responeAc);
+                }else {
+                    //不成功
+                    String errorCode = (String) ruiJieUser;
+                    if (errorCode.equals("0389")){
+                        //无效的令牌
+                        return toolUtils.response(InterfaceResultEnum.INVALID_TOKEN_ERROR,version,responeAc);
+                    }else {
+                        //刷新令牌失败
+                        return toolUtils.response(InterfaceResultEnum.AC_TOKEN_ERROR,version,responeAc);
+                    }
+                }
+            }
+        }
+
+        return toolUtils.response(InterfaceResultEnum.AC_USER_LIST_ERROR,version,responeAc);
+    }
+    private Object getRuiJieUserList(String networkIP,String access_token,Integer page,Integer count,AcDevInfoDTO acDevInfoDTO){
+        AcDevInfoVO responeAc = new AcDevInfoVO();
+        responeAc.setStaNum(0);
+        List<AcDevInfoVO> acDevInfoVOList = new ArrayList<>();
+        responeAc.setStaList(acDevInfoVOList);
+
+       String url = networkIP+"/sta/current_users?access_token="+access_token+"&page="+page+"&per_page="+count+"&sn="+acDevInfoDTO.getAcAddress();
+        String userRestult = null;
+        try {
+            userRestult = toolUtils.sendHttp("get",url,null,6, ToolUtils.ContentTypeEnum.CONTENT_TYPE_JSON,null);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        if (userRestult == null){
+            return "0703";
+            //return toolUtils.response(InterfaceResultEnum.AC_TOKEN_ERROR,version,responeAc);
+        }else {
+            JSONObject parseObject = JSON.parseObject(userRestult);
+            Integer reCode = parseObject.getInteger("code");
+            if (reCode == 0) {
+                //成功
+                Integer total = parseObject.getInteger("count");
+                JSONArray jsonArray = parseObject.getJSONArray("list");
+                //List<AcDevInfoVO> userList = new ArrayList<>();
+                for (Object value : jsonArray) {
+                    AcDevInfoVO acDevInfoVO = new AcDevInfoVO();
+                    JSONObject item = (JSONObject) value;
+                    String mac = item.getString("mac");
+                    if (mac == null) {
+                        acDevInfoVO.setMac("");
+                    } else {
+                        acDevInfoVO.setMac(mac);
+                    }
+                    String macinfo = item.getString("manufacture");
+                    if (macinfo == null) {
+                        acDevInfoVO.setMacInfo("");
+                    } else {
+                        acDevInfoVO.setMacInfo(macinfo);
+                    }
+                    acDevInfoVO.setRxRate(item.getLong("uplinkRate"));
+                    acDevInfoVO.setTxRate(item.getLong("downlinkRate"));
+                    acDevInfoVO.setRxPackets(item.getLong("wifiUp"));
+                    acDevInfoVO.setTxPackets(item.getLong("wifiDown"));
+                    acDevInfoVO.setVlan("");
+                    String radio = item.getString("capability");
+                    if (radio == null) {
+                        acDevInfoVO.setRadio("");
+                    } else {
+                        acDevInfoVO.setRadio(radio);
+                    }
+                    String signal = item.getString("rssi");
+                    if (signal == null) {
+                        acDevInfoVO.setSignal("");
+                    } else {
+                        acDevInfoVO.setSignal(signal);
+                    }
+                    acDevInfoVO.setLastTime("");
+                    acDevInfoVO.setApMac("");
+                    String ssid = item.getString("ssid");
+                    if (ssid == null) {
+                        acDevInfoVO.setSsid("");
+                    } else {
+                        acDevInfoVO.setSsid(ssid);
+                    }
+                    String deviceAliasName = item.getString("deviceAliasName");
+                    if (deviceAliasName == null) {
+                        acDevInfoVO.setName("");
+                    } else {
+                        acDevInfoVO.setName(deviceAliasName);
+                    }
+                    acDevInfoVOList.add(acDevInfoVO);
+                }
+                responeAc.setStaNum(total);
+                responeAc.setStaList(acDevInfoVOList);
+                return responeAc;
+                //return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,responeAc);
+            } else {
+                //无效的token
+                return "0389";
+            }
+        }
+    }
+    //get/post的请求
+    private String getPassword(String networkIP){
+        Random random = new Random();
+        int min = 10000;
+        int max = 99999999;
+        Integer randcode = random.nextInt(max-min) + min;
+        String url = "http://"+networkIP+"/api/login?randtime="+randcode;
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("randtime",randcode);
+        try {
+            //获取随机码
+            String respone = toolUtils.sendHttp("get", url, jsonObject.toString(), 4, ToolUtils.ContentTypeEnum.CONTENT_TYPE_JSON,null);
+            if (respone == null){
+                return "获取随机码失败";
+            }else {
+                JSONObject responeObject = JSON.parseObject(respone);
+                Integer ret = responeObject.getInteger("ret");
+                if (ret == 1){
+                    String msg = responeObject.getString("msg");
+                    //登录 - post
+                    url = "http://"+networkIP+"/api/login";
+                    //帐号: admin , 密码: changemeplease
+
+                    String pwdMd5 = DigestUtils.md5DigestAsHex("changemeplease".getBytes()); //md5加密
+                    String joinCode = DigestUtils.md5DigestAsHex((pwdMd5+msg).getBytes()); //md5加密
+
+                    JSONObject body = new JSONObject();
+                   body.put("loginid","admin");
+                   body.put("passwd",joinCode);
+
+                  String passJson =  toolUtils.sendHttp("post",url,body.toString(),4, ToolUtils.ContentTypeEnum.CONTENT_TYPE_JSON,cookie);
+                  if (passJson == null){
+                      return "登录失败";
+                  }else {
+                      JSONObject passObject = JSON.parseObject(passJson);
+                      Integer passRet = passObject.getInteger("ret");
+                      if (passRet == 1){
+                          return "登录成功";
+                      }else {
+                          return "登录失败";
+                      }
+                  }
+
+                }else {
+                    return "获取随机码失败";
+                }
+            }
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+//    private function initCul()
+//    {
+//        //$this->initCul();
+//
+//        //初始化
+//        $this->curl = curl_init();
+//        $content = $this->getRandCode();
+//
+//        if (empty($content)) return '1604'; //获取随机码失败
+//        $code = json_decode($content,true);
+//        //获取密码
+//        $this->getPassword($code['msg']);
+//        if (empty($this->result)) return '1908'; //登录失败
+//
+//    }
+//    //获取密码
+//    private function getPassword($code){
+//
+//        $this->url = 'http://'.$this->networkIP.'/api/login';
+//
+//        $this->header = array(
+//                'Content-Type: application/x-www-form-urlencoded'
+//        );
+//        //帐号: admin , 密码: changemeplease
+//        $pwdMd5 = md5('changemeplease');
+//        $joinCode = md5($pwdMd5.$code);
+//
+//        $body = array('loginid'=>'admin','passwd'=>$joinCode);
+//
+//        //发送json
+//        //$data = json_encode($body, true);
+//        $cookieSuccess = dirname(__FILE__)."/cookie.tmp";
+//
+//        curl_setopt($this->curl, CURLOPT_COOKIEJAR, $cookieSuccess);
+//        //发送请求
+//        $this->result = $this->curlSendCmd($body,'POST');
+//
+//    }
+//
+//    //获取随机码 - get请求
+//    private function getRandCode(){
+//        $randcode = rand(10000,99999999);
+//
+//        $this->url = 'http://'.$this->networkIP.'/api/login?randtime='.$randcode;
+//
+//        //1.创建一个新cURL资源
+//        $this->curl = curl_init();
+//
+//        //设置抓取的url
+//        curl_setopt($this->curl, CURLOPT_URL, $this->url);
+//        curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1);
+//        curl_setopt($this->curl, CURLOPT_HEADER, 0);
+//
+//        //设置超时时间
+//        curl_setopt($this->curl, CURLOPT_CONNECTTIMEOUT, 0);
+//        curl_setopt($this->curl, CURLOPT_TIMEOUT, 3); //timeout in seconds
+//
+//
+//        //执行命令
+//        $data = curl_exec($this->curl);
+//
+//        return $data;
+//
+//    }
 }

+ 7 - 7
src/main/java/com/welampiot/controller/LampController.java

@@ -754,7 +754,7 @@ public class LampController {
         String url = "http://47.112.108.98:8090/api/devices";
         String respone = null;
         try {
-            respone = toolUtils.sendHttp("post", url, data.toString(), token, null, 5, null, ToolUtils.ContentTypeEnum.CONTENT_TYPE_JSON);
+            respone = toolUtils.sendHttp("post", url, data.toString(), token, null, 5, null, ToolUtils.ContentTypeEnum.CONTENT_TYPE_JSON,null);
             System.out.println("=====dddd:"+respone);
             if (respone == null){
                 respone = jwtUtil.setActivate(deviceId);
@@ -1050,7 +1050,7 @@ public class LampController {
         String bodyStr = this.encryptAndMd5(objectString);
         String result = null;
         try {
-            result = toolUtils.sendHttp("post", url, bodyStr,3, ToolUtils.ContentTypeEnum.CONTENT_TYPE_JSON);
+            result = toolUtils.sendHttp("post", url, bodyStr,3, ToolUtils.ContentTypeEnum.CONTENT_TYPE_JSON,null);
         } catch (IOException e) {
             throw new RuntimeException(e);
         }
@@ -1117,7 +1117,7 @@ public class LampController {
 
         String respone = null;
         try {
-            respone = toolUtils.sendHttp("post",url,bodyJsonString,tokenObject.getToken(),null,4,"Bearer", ToolUtils.ContentTypeEnum.CONTENT_TYPE_JSON);
+            respone = toolUtils.sendHttp("post",url,bodyJsonString,tokenObject.getToken(),null,4,"Bearer", ToolUtils.ContentTypeEnum.CONTENT_TYPE_JSON,null);
             JSONObject parseObject = JSON.parseObject(respone);
             System.out.println("======ddd:"+parseObject);
             Integer ret = parseObject.getInteger("Ret");
@@ -1205,7 +1205,7 @@ public class LampController {
 
         String respone = null;
         try {
-            respone = toolUtils.sendHttp("post",url,bodyStr,token,sessionId,4,"Bearer", ToolUtils.ContentTypeEnum.CONTENT_TYPE_JSON);
+            respone = toolUtils.sendHttp("post",url,bodyStr,token,sessionId,4,"Bearer", ToolUtils.ContentTypeEnum.CONTENT_TYPE_JSON,null);
             System.out.println("=====diming:"+respone);
             JSONObject parseObject = JSON.parseObject(respone);
             Integer ret = parseObject.getInteger("Ret");
@@ -1289,7 +1289,7 @@ public class LampController {
         String sessionId = ((ZhongLightPlcVO) loginObject).getSessionId();
         String respone = null;
         try {
-            respone = toolUtils.sendHttp("post", url, bodyStr, token, sessionId, 5,"Bearer", ToolUtils.ContentTypeEnum.CONTENT_TYPE_JSON);
+            respone = toolUtils.sendHttp("post", url, bodyStr, token, sessionId, 5,"Bearer", ToolUtils.ContentTypeEnum.CONTENT_TYPE_JSON,null);
             System.out.println("===dd:"+respone);
 
             JSONObject parseObject = JSON.parseObject(respone);
@@ -1362,7 +1362,7 @@ public class LampController {
         String sessionId = ((ZhongLightPlcVO) loginObject).getSessionId();
         String respone = null;
         try {
-            respone = toolUtils.sendHttp("post", url, bodyStr, token, sessionId, 5,"Bearer", ToolUtils.ContentTypeEnum.CONTENT_TYPE_JSON);
+            respone = toolUtils.sendHttp("post", url, bodyStr, token, sessionId, 5,"Bearer", ToolUtils.ContentTypeEnum.CONTENT_TYPE_JSON,null);
             System.out.println("===light:"+respone);
 
             JSONObject parseObject = JSON.parseObject(respone);
@@ -1461,7 +1461,7 @@ public class LampController {
         //发送post请求
         String result = null;
         try {
-             result = toolUtils.sendHttp("post",plcUrl, json, timeOut, ToolUtils.ContentTypeEnum.CONTENT_TYPE_JSON);
+             result = toolUtils.sendHttp("post",plcUrl, json, timeOut, ToolUtils.ContentTypeEnum.CONTENT_TYPE_JSON,null);
         } catch (IOException e) {
             throw new RuntimeException(e);
         }

+ 2 - 0
src/main/java/com/welampiot/dao/AcDevInfoDao.java

@@ -27,4 +27,6 @@ public interface AcDevInfoDao {
     void updateAcDevData(AcDevInfoDTO dto);
 
     Integer checkAcDevData(AcDevInfoDTO dto);
+    AcDevInfoDTO getOneById( Integer id);
+    void updateByAcDevData(AcDevInfoDTO dto);
 }

+ 3 - 0
src/main/java/com/welampiot/service/AcDevInfoService.java

@@ -2,6 +2,7 @@ package com.welampiot.service;
 
 import com.welampiot.dto.AcDevInfoDTO;
 import com.welampiot.vo.AcDevInfoVO;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -26,4 +27,6 @@ public interface AcDevInfoService {
     void updateAcDevData(AcDevInfoDTO dto);
 
     Integer checkAcDevData(AcDevInfoDTO dto);
+    AcDevInfoDTO getOneById(Integer id);
+    void updateByAcDevData(AcDevInfoDTO dto);
 }

+ 10 - 0
src/main/java/com/welampiot/service/impl/AcDevInfoServiceImpl.java

@@ -4,6 +4,7 @@ import com.welampiot.dao.AcDevInfoDao;
 import com.welampiot.dto.AcDevInfoDTO;
 import com.welampiot.service.AcDevInfoService;
 import com.welampiot.vo.AcDevInfoVO;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -52,4 +53,13 @@ public class AcDevInfoServiceImpl implements AcDevInfoService {
     public Integer checkAcDevData(AcDevInfoDTO dto) {
         return acDevInfoDao.checkAcDevData(dto);
     }
+    @Override
+    public AcDevInfoDTO getOneById( Integer id){
+        return acDevInfoDao.getOneById(id);
+    }
+
+    @Override
+    public void updateByAcDevData(AcDevInfoDTO dto){
+        acDevInfoDao.updateByAcDevData( dto);
+    }
 }

+ 1 - 1
src/main/java/com/welampiot/utils/JwtUtil.java

@@ -95,7 +95,7 @@ public class JwtUtil {
         String url = "http://47.112.108.98:8090/api/devices/00000000"+deviceId+"/activate";
         String respone = null;
         try {
-            respone = toolUtils.sendHttp("post", url, data.toString(), token, null, 5, null, ToolUtils.ContentTypeEnum.CONTENT_TYPE_JSON);
+            respone = toolUtils.sendHttp("post", url, data.toString(), token, null, 5, null, ToolUtils.ContentTypeEnum.CONTENT_TYPE_JSON,null);
         } catch (IOException e) {
             throw new RuntimeException(e);
         }

+ 34 - 23
src/main/java/com/welampiot/utils/ToolUtils.java

@@ -1078,13 +1078,13 @@ System.out.println(res);
     }
 
     /* 向第三方请求post
-     *@param  request:请求方式
+     *@param  requestMethod:请求方式
      * @param  url:路径
-     * @param param:参数(get请求时,url上的参数要与param传的一致)
+     * @param param:参数
      * @param ContentTypeEnum: 编码类型
      * @return 返回类型字符串
     */
-    public  String sendHttp(String request,String url, String param,Integer timeOut,ContentTypeEnum typeEnum) throws IOException {
+    public  String sendHttp(String requestMethod,String url, String param,Integer timeOut,ContentTypeEnum typeEnum,String cookie) throws IOException {
         String result = "";
         URL postUrl = new URL(url);
         // 打开连接
@@ -1101,7 +1101,7 @@ System.out.println(res);
             connection.setReadTimeout(timeOut * 1000); //单位:毫秒
         }
         // Set the post method. Default is GET
-        connection.setRequestMethod(request.toUpperCase());
+        connection.setRequestMethod(requestMethod.toUpperCase());
         // Post 请求不能使用缓存
         connection.setUseCaches(false);
         // URLConnection.setInstanceFollowRedirects是成员函数,仅作用于当前函数
@@ -1113,17 +1113,23 @@ System.out.println(res);
         }else {
             connection.setRequestProperty("Content-Type",typeEnum.contentType);
         }
+        if (cookie != null){
+            connection.setRequestProperty("Cookie",cookie);
+        }
         // 连接,从postUrl.openConnection()至此的配置必须要在connect之前完成,
         // 要注意的是connection.getOutputStream会隐含的进行connect。
         connection.connect();
-        DataOutputStream out = new DataOutputStream(connection.getOutputStream());
-        // 正文,正文内容其实跟get的URL中'?'后的参数字符串一致
-        // DataOutputStream.writeBytes将字符串中的16位的unicode字符以8位的字符形式写道流里面
-        out.writeBytes(param);
-        out.flush();
-        out.close(); // flush and close
-        BufferedReader reader = new BufferedReader(new InputStreamReader(
-                connection.getInputStream()));
+        if (!requestMethod.equals("GET") && !requestMethod.equals("get")){
+            DataOutputStream out = new DataOutputStream(connection.getOutputStream());
+            // 正文,正文内容其实跟get的URL中'?'后的参数字符串一致
+            // DataOutputStream.writeBytes将字符串中的16位的unicode字符以8位的字符形式写道流里面
+            out.writeBytes(param);
+            out.flush();
+            out.close(); // flush and close
+        }
+
+        //读取服务器返回的数据
+        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
         String line;
         while ((line = reader.readLine()) != null) {
             result += line;
@@ -1136,7 +1142,7 @@ System.out.println(res);
     /* 向第三方请求post
      *@param  request:请求方式
      * @param  url:路径
-     * @param param:参数(get请求时,url上的参数要与param传的一致)
+     * @param param:参数
      *  @param token:令牌
      *  @param sessionId:会话id
      *  @param timeOut:超时
@@ -1144,7 +1150,7 @@ System.out.println(res);
      * @param typeEnum: 编码类型
      * @return 返回类型字符串
      */
-    public  String sendHttp(String request,String url, String param,String token,String sessionId,Integer timeOut,String mark,ContentTypeEnum typeEnum) throws IOException {
+    public  String sendHttp(String requestMethod,String url, String param,String token,String sessionId,Integer timeOut,String mark,ContentTypeEnum typeEnum,String cookie) throws IOException {
         String result = "";
         URL postUrl = new URL(url);
         // 打开连接
@@ -1154,7 +1160,7 @@ System.out.println(res);
         connection.setDoOutput(true);
         connection.setDoInput(true);
         // Set the post method. Default is GET
-        connection.setRequestMethod(request.toUpperCase());
+        connection.setRequestMethod(requestMethod.toUpperCase());
         // Post 请求不能使用缓存
         connection.setUseCaches(false);
         // URLConnection.setInstanceFollowRedirects是成员函数,仅作用于当前函数
@@ -1175,6 +1181,9 @@ System.out.println(res);
         }else {
             connection.setRequestProperty("Authorization",token);
         }
+        if (cookie != null){
+            connection.setRequestProperty("Cookie",cookie);
+        }
 
         if (sessionId != null){
             connection.setRequestProperty("SessionId"," "+sessionId);
@@ -1189,12 +1198,14 @@ System.out.println(res);
         // 连接,从postUrl.openConnection()至此的配置必须要在connect之前完成,
         // 要注意的是connection.getOutputStream会隐含的进行connect。
         connection.connect();
-        DataOutputStream out = new DataOutputStream(connection.getOutputStream());
-        // 正文,正文内容其实跟get的URL中'?'后的参数字符串一致
-        // DataOutputStream.writeBytes将字符串中的16位的unicode字符以8位的字符形式写道流里面
-        out.writeBytes(param);
-        out.flush();
-        out.close(); // flush and close
+        if (!requestMethod.equals("GET") && !requestMethod.equals("get")){
+            DataOutputStream out = new DataOutputStream(connection.getOutputStream());
+            // 正文,正文内容其实跟get的URL中'?'后的参数字符串一致
+            // DataOutputStream.writeBytes将字符串中的16位的unicode字符以8位的字符形式写道流里面
+            out.writeBytes(param);
+            out.flush();
+            out.close(); // flush and close
+        }
         BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
         String line;
         while ((line = reader.readLine()) != null) {
@@ -1219,7 +1230,7 @@ System.out.println(res);
         String token = "HpumrF3BKBo3mOFIhkyf5MtIIOc=";
         String respone = null;
         try {
-            respone = this.sendHttp("post", url, device.toString(), token, null, 5, "api-key", ContentTypeEnum.CONTENT_TYPE_JSON);
+            respone = this.sendHttp("post", url, device.toString(), token, null, 5, "api-key", ContentTypeEnum.CONTENT_TYPE_JSON,null);
         } catch (IOException e) {
             throw new RuntimeException(e);
         }
@@ -1314,7 +1325,7 @@ System.out.println(res);
                 jsonObject.put("co",null);
                 jsonObject.put("resource_id",600);
                 jsonObject.put("oe","utf8");
-                String respone = this.sendHttp("get", url, jsonObject.toString(), 4, ContentTypeEnum.CONTENT_TYPE_JSON);
+                String respone = this.sendHttp("get", url, jsonObject.toString(), 4, ContentTypeEnum.CONTENT_TYPE_JSON,null);
                 if (respone != null){
                     JSONObject responeJson = JSON.parseObject(respone);
                     String status = responeJson.getString("status");

+ 15 - 0
src/main/java/com/welampiot/vo/AcDevInfoVO.java

@@ -34,8 +34,23 @@ public class AcDevInfoVO implements Serializable {
     private List<Integer> sectionList;
 
     private List<AcDevInfoDTO> list;
+    private List<AcDevInfoVO> staList;
 
     private Integer total;
 
     private static final long serialVersionUID = 1L;
+    private String macInfo; //厂家信息
+    private Long rxRate; //上行速率,单位是Kbyte
+    private Long txRate; //下行速率,单位是Kbyte
+    private Long rxPackets;
+    private Long txPackets;
+    private String lastTime; //最后响应时间,单位是毫秒
+    private String apMac; //AP的MAC地址
+    private Integer staNum;
+    private String mac;
+    private String vlan;
+    private String radio;
+    private String signal;
+    private String ssid;
+    private String name;
 }

+ 13 - 0
src/main/resources/mapper/AcDevInfoMapper.xml

@@ -142,4 +142,17 @@
         </if>
     </select>
 
+    <select id="getOneById" parameterType="Integer" resultType="AcDevInfoDTO">
+        select id,acAddress,type,networkIP,access_token as accessToken,refresh_token as refreshToken,updatetime as updateTime
+        from ac_dev_info where id = #{id}
+    </select>
+
+    <update id="updateByAcDevData" parameterType="AcDevInfoDTO">
+        update
+            ac_dev_info
+        set
+            access_token = #{accessToken},refresh_token = #{refreshToken},updatetime = #{updateTime}
+        where
+            id = #{id}
+    </update>
 </mapper>

+ 7 - 6
src/test/java/com/welampiot/service/UserServiceTest.java

@@ -1,6 +1,7 @@
 package com.welampiot.service;
 
 import com.welampiot.configuration.LastSqlInterceptor;
+import com.welampiot.dto.AcDevInfoDTO;
 import com.welampiot.dto.GroupDTO;
 import com.welampiot.dto.LampInfoDTO;
 import com.welampiot.dto.OperationLogDTO;
@@ -29,16 +30,16 @@ public class UserServiceTest {
     @Resource
     private LastSqlInterceptor lastSqlInterceptor;
     @Autowired
-    private LampService lampService;
+    private AcDevInfoService acDevInfoService;
 
 
     @Test
     public void testConnection() throws Exception {
-        LampInfoDTO lampInfoDTO = new LampInfoDTO();
-        lampInfoDTO.setAddress("12000000");
-        lampInfoDTO.setId(108);
-        lampService.updateById(lampInfoDTO);//updateById ,addById
-         System.out.println("====dd:"+lastSqlInterceptor.sqlContent);
+//        LampInfoDTO lampInfoDTO = new LampInfoDTO();
+//        lampInfoDTO.setAddress("12000000");
+//        lampInfoDTO.setId(108);
+//        lampService.updateById(lampInfoDTO);//updateById ,addById
+//        System.out.println("====dd:"+oneById);
 
         //schemaParamsterInterceptor.intercept()
 //        long l = System.currentTimeMillis() - (24L * 3600 * 30*1000);