From b435d4d9c900e6a4614c77a7705d3518f1f1b18f Mon Sep 17 00:00:00 2001 From: zhangjianrock@163.com <zhangjianrock@163.com> Date: 星期一, 29 一月 2024 15:40:15 +0800 Subject: [PATCH] 无人机读取配置文件 --- ard-work/src/main/java/com/ruoyi/device/uav/service/UavService.java | 100 ++++++++++++++++++++++++++++++++++--------------- 1 files changed, 69 insertions(+), 31 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/device/uav/service/UavService.java b/ard-work/src/main/java/com/ruoyi/device/uav/service/UavService.java index 14acb4d..1f91fd8 100644 --- a/ard-work/src/main/java/com/ruoyi/device/uav/service/UavService.java +++ b/ard-work/src/main/java/com/ruoyi/device/uav/service/UavService.java @@ -5,10 +5,14 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; +import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.common.utils.ConfigUtils; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.utils.forest.UavClient; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpMethod; import org.springframework.beans.factory.annotation.Autowired; @@ -25,23 +29,46 @@ @Service @Slf4j(topic = "uav") public class UavService { - public static final String USERNAME = "ardbailu";//鐢ㄦ埛鍚� - public static final String PASSWORD = "ardkj12345";//瀵嗙爜 - public static final String SALT = "0123456789012345";//鐩� + /*uav: + host: http://112.98.126.2:6100/ + username: kaifabailu + password: ardkj@2014 + salt: 0123456789012345 + */ + private String username;//鐢ㄦ埛鍚� - //token 鐧婚檰鍚庢瘡娆¤姹�,鍦╤eader涓惡甯� - private String token;//鐧诲綍鎴愬姛杩斿洖鐨則oken + private String password;//瀵嗙爜 + + private String salt; //鐩� + + private String host;//uav鏈嶅姟鍣�11 + + private Map uavUser;//鐧诲綍鐨勭敤鎴蜂俊鎭� private ObjectMapper om = new ObjectMapper(); @Autowired private UavClient uavClient; + @Autowired + private RedisCache redisCache; @PostConstruct public void created() { + + getUavConfig(); this.login(); } + private void getUavConfig() { + this.host = ConfigUtils.getConfigValue("uav_host"); + this.salt = ConfigUtils.getConfigValue("uav_salt"); + if (StringUtils.isEmpty(this.host) || StringUtils.isEmpty(this.username) || StringUtils.isEmpty(this.password) || StringUtils.isEmpty(this.salt)) { + throw new RuntimeException("鏃犱汉鏈哄弬鏁伴厤缃己澶�:"); + } + } + public String doUavRequest(HttpMethod method, String url, String data) { + + getUavConfig(); String res = null; Method requestMethod = null; //鑾峰彇method @@ -51,53 +78,64 @@ e.printStackTrace(); } //鎵цmethod + // this.getToken();//鑾峰彇token楠岃瘉,楠岃瘉token鏈夋晥鎬� try { - res = (String) requestMethod.invoke(this.uavClient, url, this.token, data); - } catch (InvocationTargetException e) { - ForestNetworkException fe = (ForestNetworkException) e.getCause(); - if (fe.getStatusCode() == 401) {//token澶辨晥,閲嶆柊鐧诲綍 - this.login(); - } - try {//鍐嶆璋冪敤鎺ュ彛 - res = (String) requestMethod.invoke(this.uavClient, url, this.token, data); - } catch (IllegalAccessException ex) { - ex.printStackTrace(); - } catch (InvocationTargetException ex) { - ex.printStackTrace(); - } + String token = this.getToken(); + res = (String) requestMethod.invoke(this.uavClient, this.host + url, token, data); } catch (IllegalAccessException e) { - throw new RuntimeException(e); + log.error("doUavRequest 璁块棶澶辫触" + e.getMessage()); + } catch (InvocationTargetException e) { + log.error("doUavRequest 鎵ц澶辫触" + e.getMessage()); + e.printStackTrace(); } return res; } public Map getUavUser() { - if (this.uavUser == null) { - this.login(); + return redisCache.getCacheMap("uav:uavUser"); + } + + public String getToken() { + //鑾峰彇uav鐢ㄦ埛淇℃伅 + Map uavUser = redisCache.getCacheMap("uav:uavUser"); + String token = (String) uavUser.get("access_token"); + //楠岃瘉token鏈夋晥鎬� + try { + String res = uavClient.GET(this.host+"manage/api/v1/devices", token, "{}"); + res+=""; + //System.out.println(res); + } catch (ForestNetworkException fe) { + if (fe.getStatusCode() == 401) {//token澶辨晥,閲嶆柊鐧诲綍 + this.login(); + //鍐嶆鑾峰彇token + uavUser = redisCache.getCacheMap("uav:uavUser"); + token = (String) uavUser.get("access_token"); + return token; + } } - return this.uavUser; + return token; } public void login() { + + getUavConfig(); log.debug("鐧诲綍鏃犱汉鏈哄閮ㄦ帴鍙�"); - String codedPassword = this.Encrypt(PASSWORD, SALT); - String body = "{\"username\":\"" + USERNAME + "\",\"password\":\"" + codedPassword + "\"}"; + String codedPassword = this.Encrypt(password, salt); + String body = "{\"username\":\"" + username + "\",\"password\":\"" + codedPassword + "\"}"; + log.debug("body:" + body); try { - String res = uavClient.POST("login", null, body); + //uavClient.GET("logout", null, "{}"); + String res = uavClient.POST(this.host+"login", null, body); Map resMap = om.readValue(res, Map.class); - this.uavUser = (Map) resMap.get("data"); - if (this.uavUser != null) { - this.token = (String) this.uavUser.get("access_token"); + if (resMap != null) { + redisCache.setCacheMap("uav:uavUser", (Map) resMap.get("data")); } } catch (ForestRuntimeException e) { log.error("鏃犱汉鏈鸿繛鎺ヨ秴鏃�" + e.getMessage()); } catch (JsonMappingException e) { - e.printStackTrace(); } catch (JsonProcessingException e) { - e.printStackTrace(); } catch (IOException e) { - e.printStackTrace(); } } -- Gitblit v1.9.3