diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java index e0c98ec..c7ea179 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java @@ -1,11 +1,13 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.OceanDetailDTO; import com.casic.missiles.modular.system.dto.TyphoonDTO; import com.casic.missiles.modular.system.dto.TyphoonDetailDTO; import com.casic.missiles.modular.system.service.IOceanService; import com.casic.missiles.modular.system.service.ITyphoonService; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -18,6 +20,7 @@ * * @author a203 */ +@Slf4j @Controller @RequestMapping("/environment") public class EnvironmentController { @@ -56,6 +59,7 @@ @ResponseBody public Object oceanDetail(double lng, double lat, String date, String days, String hour) { OceanDetailDTO detailDTO = oceanService.oceanDetail(lng, lat, date, days, hour); + log.info("oceanDetail ===> " + JSONObject.toJSONString(detailDTO)); return ResponseData.success(detailDTO); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java index e0c98ec..c7ea179 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java @@ -1,11 +1,13 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.OceanDetailDTO; import com.casic.missiles.modular.system.dto.TyphoonDTO; import com.casic.missiles.modular.system.dto.TyphoonDetailDTO; import com.casic.missiles.modular.system.service.IOceanService; import com.casic.missiles.modular.system.service.ITyphoonService; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -18,6 +20,7 @@ * * @author a203 */ +@Slf4j @Controller @RequestMapping("/environment") public class EnvironmentController { @@ -56,6 +59,7 @@ @ResponseBody public Object oceanDetail(double lng, double lat, String date, String days, String hour) { OceanDetailDTO detailDTO = oceanService.oceanDetail(lng, lat, date, days, hour); + log.info("oceanDetail ===> " + JSONObject.toJSONString(detailDTO)); return ResponseData.success(detailDTO); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java index fa8caab..567e912 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java @@ -1,41 +1,119 @@ package com.casic.missiles.modular.system.service.impl; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONException; +import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.casic.missiles.modular.system.dto.OceanDetailDTO; import com.casic.missiles.modular.system.model.OceanDetailModel; import com.casic.missiles.modular.system.service.IOceanService; +import com.casic.missiles.modular.system.utils.Constant; import com.casic.missiles.modular.system.utils.HttpRequestHelper; +import okhttp3.*; import org.springframework.stereotype.Service; +import java.io.IOException; + /** * 洋流数据信息 服务实现类 * * @author a203 */ - @Service public class OceanServiceImpl implements IOceanService { private static final String SUCCESS_CODE = "0"; + private String getOceanCode(String value) { + if ("".equals(value)) { + return value; + } + JSONObject jsonObject = JSON.parseObject(value); + Integer code = jsonObject.getInteger("code"); + return String.valueOf(code); + } + public OceanServiceImpl() { } @Override public OceanDetailDTO oceanDetail(double lng, double lat, String date, String days, String hour) { - String oceanData = HttpRequestHelper.obtainOceanData(lng, lat, date, days, hour); /** - * 解析洋流数据返回给前端 + * 获取洋流数据Token * */ - if (SUCCESS_CODE.equals(HttpRequestHelper.getOceanCode(oceanData))) { - OceanDetailModel remoteData = JSON.parseObject(oceanData, new TypeReference() { - }); - if (remoteData == null) { + JSONObject tokenObject = new JSONObject(); + try { + tokenObject.put("appId", Constant.OCEAN_APPID); + tokenObject.put("appKey", Constant.OCEAN_APP_KEY); + } catch (JSONException e) { + e.printStackTrace(); + } + Request tokenRequest = new Request.Builder() + .url("http://api.meteo.open.ninecosmos.cn/us/users/open/token") + .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), tokenObject.toJSONString())) + .build(); + Call tokenCall = HttpRequestHelper.HTTP_CLIENT.newCall(tokenRequest); + try { + Response response = tokenCall.execute(); + ResponseBody tokenBody = response.body(); + if (tokenBody != null) { + String tokenResult = tokenBody.string(); + if ("".equals(tokenResult)) { + return null; + } + /** + * 解析token + * */ + JSONObject tokenJson = JSON.parseObject(tokenResult); + JSONObject dataObject = tokenJson.getJSONObject("data"); + String token = dataObject.getString("token"); + /** + * 封装请求参数 + * */ + JSONObject resultObject = new JSONObject(); + try { + resultObject.put("lon", lng); + resultObject.put("lat", lat); + resultObject.put("date", date); + resultObject.put("hour", days); + resultObject.put("days", hour); + } catch (JSONException e) { + e.printStackTrace(); + } + /** + * 获取洋流数据 + * */ + Request resultRequest = new Request.Builder() + .addHeader("Authorization", token) + .url("http://api.meteo.open.ninecosmos.cn/mr/netcdf/meteo/ytx") + .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), resultObject.toJSONString())) + .build(); + Call resultCall = HttpRequestHelper.HTTP_CLIENT.newCall(resultRequest); + try { + Response resultResponse = resultCall.execute(); + ResponseBody resultBody = resultResponse.body(); + if (resultBody != null) { + String oceanData = resultBody.string(); + /** + * 解析洋流数据返回给前端 + * */ + if (SUCCESS_CODE.equals(getOceanCode(oceanData))) { + OceanDetailModel remoteData = JSON.parseObject(oceanData, new TypeReference() { + }); + if (remoteData == null) { + return null; + } + return new OceanDetailDTO(remoteData); + } + } + } catch (IOException e) { + e.printStackTrace(); + } return null; } - return new OceanDetailDTO(remoteData); + } catch (IOException e) { + e.printStackTrace(); } return null; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java index e0c98ec..c7ea179 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java @@ -1,11 +1,13 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.OceanDetailDTO; import com.casic.missiles.modular.system.dto.TyphoonDTO; import com.casic.missiles.modular.system.dto.TyphoonDetailDTO; import com.casic.missiles.modular.system.service.IOceanService; import com.casic.missiles.modular.system.service.ITyphoonService; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -18,6 +20,7 @@ * * @author a203 */ +@Slf4j @Controller @RequestMapping("/environment") public class EnvironmentController { @@ -56,6 +59,7 @@ @ResponseBody public Object oceanDetail(double lng, double lat, String date, String days, String hour) { OceanDetailDTO detailDTO = oceanService.oceanDetail(lng, lat, date, days, hour); + log.info("oceanDetail ===> " + JSONObject.toJSONString(detailDTO)); return ResponseData.success(detailDTO); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java index fa8caab..567e912 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java @@ -1,41 +1,119 @@ package com.casic.missiles.modular.system.service.impl; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONException; +import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.casic.missiles.modular.system.dto.OceanDetailDTO; import com.casic.missiles.modular.system.model.OceanDetailModel; import com.casic.missiles.modular.system.service.IOceanService; +import com.casic.missiles.modular.system.utils.Constant; import com.casic.missiles.modular.system.utils.HttpRequestHelper; +import okhttp3.*; import org.springframework.stereotype.Service; +import java.io.IOException; + /** * 洋流数据信息 服务实现类 * * @author a203 */ - @Service public class OceanServiceImpl implements IOceanService { private static final String SUCCESS_CODE = "0"; + private String getOceanCode(String value) { + if ("".equals(value)) { + return value; + } + JSONObject jsonObject = JSON.parseObject(value); + Integer code = jsonObject.getInteger("code"); + return String.valueOf(code); + } + public OceanServiceImpl() { } @Override public OceanDetailDTO oceanDetail(double lng, double lat, String date, String days, String hour) { - String oceanData = HttpRequestHelper.obtainOceanData(lng, lat, date, days, hour); /** - * 解析洋流数据返回给前端 + * 获取洋流数据Token * */ - if (SUCCESS_CODE.equals(HttpRequestHelper.getOceanCode(oceanData))) { - OceanDetailModel remoteData = JSON.parseObject(oceanData, new TypeReference() { - }); - if (remoteData == null) { + JSONObject tokenObject = new JSONObject(); + try { + tokenObject.put("appId", Constant.OCEAN_APPID); + tokenObject.put("appKey", Constant.OCEAN_APP_KEY); + } catch (JSONException e) { + e.printStackTrace(); + } + Request tokenRequest = new Request.Builder() + .url("http://api.meteo.open.ninecosmos.cn/us/users/open/token") + .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), tokenObject.toJSONString())) + .build(); + Call tokenCall = HttpRequestHelper.HTTP_CLIENT.newCall(tokenRequest); + try { + Response response = tokenCall.execute(); + ResponseBody tokenBody = response.body(); + if (tokenBody != null) { + String tokenResult = tokenBody.string(); + if ("".equals(tokenResult)) { + return null; + } + /** + * 解析token + * */ + JSONObject tokenJson = JSON.parseObject(tokenResult); + JSONObject dataObject = tokenJson.getJSONObject("data"); + String token = dataObject.getString("token"); + /** + * 封装请求参数 + * */ + JSONObject resultObject = new JSONObject(); + try { + resultObject.put("lon", lng); + resultObject.put("lat", lat); + resultObject.put("date", date); + resultObject.put("hour", days); + resultObject.put("days", hour); + } catch (JSONException e) { + e.printStackTrace(); + } + /** + * 获取洋流数据 + * */ + Request resultRequest = new Request.Builder() + .addHeader("Authorization", token) + .url("http://api.meteo.open.ninecosmos.cn/mr/netcdf/meteo/ytx") + .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), resultObject.toJSONString())) + .build(); + Call resultCall = HttpRequestHelper.HTTP_CLIENT.newCall(resultRequest); + try { + Response resultResponse = resultCall.execute(); + ResponseBody resultBody = resultResponse.body(); + if (resultBody != null) { + String oceanData = resultBody.string(); + /** + * 解析洋流数据返回给前端 + * */ + if (SUCCESS_CODE.equals(getOceanCode(oceanData))) { + OceanDetailModel remoteData = JSON.parseObject(oceanData, new TypeReference() { + }); + if (remoteData == null) { + return null; + } + return new OceanDetailDTO(remoteData); + } + } + } catch (IOException e) { + e.printStackTrace(); + } return null; } - return new OceanDetailDTO(remoteData); + } catch (IOException e) { + e.printStackTrace(); } return null; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Constant.java b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Constant.java index 552a6e9..c34600a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Constant.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Constant.java @@ -27,11 +27,6 @@ /** * 洋流相关常量 */ - private static final String OCEAN_BASE_URL = "http://api.meteo.open.ninecosmos.cn"; - public static final String OCEAN_HEADER_NAME = "Authorization"; public static final String OCEAN_APPID = "WXZH888888"; public static final String OCEAN_APP_KEY = "xb#bD&xtho@b80scbDb"; - - public static final String OCEAN_TOKEN = OCEAN_BASE_URL + "/us/users/open/token"; - public static final String OCEAN_DETAIL = OCEAN_BASE_URL + "/mr/netcdf/meteo/ytx"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java index e0c98ec..c7ea179 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java @@ -1,11 +1,13 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.OceanDetailDTO; import com.casic.missiles.modular.system.dto.TyphoonDTO; import com.casic.missiles.modular.system.dto.TyphoonDetailDTO; import com.casic.missiles.modular.system.service.IOceanService; import com.casic.missiles.modular.system.service.ITyphoonService; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -18,6 +20,7 @@ * * @author a203 */ +@Slf4j @Controller @RequestMapping("/environment") public class EnvironmentController { @@ -56,6 +59,7 @@ @ResponseBody public Object oceanDetail(double lng, double lat, String date, String days, String hour) { OceanDetailDTO detailDTO = oceanService.oceanDetail(lng, lat, date, days, hour); + log.info("oceanDetail ===> " + JSONObject.toJSONString(detailDTO)); return ResponseData.success(detailDTO); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java index fa8caab..567e912 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java @@ -1,41 +1,119 @@ package com.casic.missiles.modular.system.service.impl; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONException; +import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.casic.missiles.modular.system.dto.OceanDetailDTO; import com.casic.missiles.modular.system.model.OceanDetailModel; import com.casic.missiles.modular.system.service.IOceanService; +import com.casic.missiles.modular.system.utils.Constant; import com.casic.missiles.modular.system.utils.HttpRequestHelper; +import okhttp3.*; import org.springframework.stereotype.Service; +import java.io.IOException; + /** * 洋流数据信息 服务实现类 * * @author a203 */ - @Service public class OceanServiceImpl implements IOceanService { private static final String SUCCESS_CODE = "0"; + private String getOceanCode(String value) { + if ("".equals(value)) { + return value; + } + JSONObject jsonObject = JSON.parseObject(value); + Integer code = jsonObject.getInteger("code"); + return String.valueOf(code); + } + public OceanServiceImpl() { } @Override public OceanDetailDTO oceanDetail(double lng, double lat, String date, String days, String hour) { - String oceanData = HttpRequestHelper.obtainOceanData(lng, lat, date, days, hour); /** - * 解析洋流数据返回给前端 + * 获取洋流数据Token * */ - if (SUCCESS_CODE.equals(HttpRequestHelper.getOceanCode(oceanData))) { - OceanDetailModel remoteData = JSON.parseObject(oceanData, new TypeReference() { - }); - if (remoteData == null) { + JSONObject tokenObject = new JSONObject(); + try { + tokenObject.put("appId", Constant.OCEAN_APPID); + tokenObject.put("appKey", Constant.OCEAN_APP_KEY); + } catch (JSONException e) { + e.printStackTrace(); + } + Request tokenRequest = new Request.Builder() + .url("http://api.meteo.open.ninecosmos.cn/us/users/open/token") + .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), tokenObject.toJSONString())) + .build(); + Call tokenCall = HttpRequestHelper.HTTP_CLIENT.newCall(tokenRequest); + try { + Response response = tokenCall.execute(); + ResponseBody tokenBody = response.body(); + if (tokenBody != null) { + String tokenResult = tokenBody.string(); + if ("".equals(tokenResult)) { + return null; + } + /** + * 解析token + * */ + JSONObject tokenJson = JSON.parseObject(tokenResult); + JSONObject dataObject = tokenJson.getJSONObject("data"); + String token = dataObject.getString("token"); + /** + * 封装请求参数 + * */ + JSONObject resultObject = new JSONObject(); + try { + resultObject.put("lon", lng); + resultObject.put("lat", lat); + resultObject.put("date", date); + resultObject.put("hour", days); + resultObject.put("days", hour); + } catch (JSONException e) { + e.printStackTrace(); + } + /** + * 获取洋流数据 + * */ + Request resultRequest = new Request.Builder() + .addHeader("Authorization", token) + .url("http://api.meteo.open.ninecosmos.cn/mr/netcdf/meteo/ytx") + .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), resultObject.toJSONString())) + .build(); + Call resultCall = HttpRequestHelper.HTTP_CLIENT.newCall(resultRequest); + try { + Response resultResponse = resultCall.execute(); + ResponseBody resultBody = resultResponse.body(); + if (resultBody != null) { + String oceanData = resultBody.string(); + /** + * 解析洋流数据返回给前端 + * */ + if (SUCCESS_CODE.equals(getOceanCode(oceanData))) { + OceanDetailModel remoteData = JSON.parseObject(oceanData, new TypeReference() { + }); + if (remoteData == null) { + return null; + } + return new OceanDetailDTO(remoteData); + } + } + } catch (IOException e) { + e.printStackTrace(); + } return null; } - return new OceanDetailDTO(remoteData); + } catch (IOException e) { + e.printStackTrace(); } return null; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Constant.java b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Constant.java index 552a6e9..c34600a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Constant.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Constant.java @@ -27,11 +27,6 @@ /** * 洋流相关常量 */ - private static final String OCEAN_BASE_URL = "http://api.meteo.open.ninecosmos.cn"; - public static final String OCEAN_HEADER_NAME = "Authorization"; public static final String OCEAN_APPID = "WXZH888888"; public static final String OCEAN_APP_KEY = "xb#bD&xtho@b80scbDb"; - - public static final String OCEAN_TOKEN = OCEAN_BASE_URL + "/us/users/open/token"; - public static final String OCEAN_DETAIL = OCEAN_BASE_URL + "/mr/netcdf/meteo/ytx"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java index 1e0cd94..c819054 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.system.utils; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONException; import com.alibaba.fastjson.JSONObject; -import lombok.NonNull; -import okhttp3.*; +import lombok.extern.slf4j.Slf4j; +import okhttp3.Call; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; import java.io.IOException; import java.util.Objects; @@ -15,87 +17,28 @@ * * @author a203 */ +@Slf4j public class HttpRequestHelper { - - public static RequestBody createRequestBody(String value) { - return RequestBody.create(MediaType.parse("application/json; charset=utf-8"), value); - } - - public static String doPost(Request request) { - return streamResponse(request); - } + public static final OkHttpClient HTTP_CLIENT = new OkHttpClient.Builder() + .connectTimeout(30, TimeUnit.SECONDS) + .writeTimeout(30, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) + .build(); public static String doGet(String url) { - return streamResponse(new Request.Builder() - .url(url) - .build()); - } - - private static String streamResponse(@NonNull Request request) { - OkHttpClient httpClient = new OkHttpClient.Builder() - .connectTimeout(10, TimeUnit.SECONDS) - .writeTimeout(10, TimeUnit.SECONDS) - .readTimeout(20, TimeUnit.SECONDS) - .build(); - Call call = httpClient.newCall(request); + Request request = new Request.Builder().url(url).build(); + Call call = HTTP_CLIENT.newCall(request); try { Response response = call.execute(); - return response.body() != null ? Objects.requireNonNull(response.body()).string() : ""; + String result = response.body() != null ? Objects.requireNonNull(response.body()).string() : ""; + log.info("result ===> " + result); + return result; } catch (IOException e) { e.printStackTrace(); } return ""; } - public static String obtainOceanData(double lng, double lat, String date, String days, String hour) { - /** - * 获取洋流数据Token - * */ - JSONObject object = new JSONObject(); - try { - object.put("appId", Constant.OCEAN_APPID); - object.put("appKey", Constant.OCEAN_APP_KEY); - } catch (JSONException e) { - e.printStackTrace(); - } - Request tokenRequest = new Request.Builder() - .url(Constant.OCEAN_TOKEN) - .post(HttpRequestHelper.createRequestBody(object.toJSONString())) - .build(); - String tokenJson = HttpRequestHelper.doPost(tokenRequest); - if ("".equals(tokenJson)) { - return null; - } - /** - * 解析token - * */ - JSONObject tokenObject = JSON.parseObject(tokenJson); - JSONObject dataObject = tokenObject.getJSONObject("data"); - String token = dataObject.getString("token"); - /** - * 封装请求参数 - * */ - JSONObject jsonObject = new JSONObject(); - try { - jsonObject.put("lon", lng); - jsonObject.put("lat", lat); - jsonObject.put("date", date); - jsonObject.put("hour", days); - jsonObject.put("days", hour); - } catch (JSONException e) { - e.printStackTrace(); - } - /** - * 获取洋流数据 - * */ - Request request = new Request.Builder() - .addHeader(Constant.OCEAN_HEADER_NAME, token) - .url(Constant.OCEAN_DETAIL) - .post(HttpRequestHelper.createRequestBody(jsonObject.toJSONString())) - .build(); - return HttpRequestHelper.doPost(request); - } - public static String getTyphoonCode(String value) { if ("".equals(value)) { return value; @@ -103,13 +46,4 @@ JSONObject jsonObject = JSON.parseObject(value); return jsonObject.getString("showapi_res_code"); } - - public static String getOceanCode(String value) { - if ("".equals(value)) { - return value; - } - JSONObject jsonObject = JSON.parseObject(value); - Integer code = jsonObject.getInteger("code"); - return String.valueOf(code); - } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java index e0c98ec..c7ea179 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java @@ -1,11 +1,13 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.OceanDetailDTO; import com.casic.missiles.modular.system.dto.TyphoonDTO; import com.casic.missiles.modular.system.dto.TyphoonDetailDTO; import com.casic.missiles.modular.system.service.IOceanService; import com.casic.missiles.modular.system.service.ITyphoonService; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -18,6 +20,7 @@ * * @author a203 */ +@Slf4j @Controller @RequestMapping("/environment") public class EnvironmentController { @@ -56,6 +59,7 @@ @ResponseBody public Object oceanDetail(double lng, double lat, String date, String days, String hour) { OceanDetailDTO detailDTO = oceanService.oceanDetail(lng, lat, date, days, hour); + log.info("oceanDetail ===> " + JSONObject.toJSONString(detailDTO)); return ResponseData.success(detailDTO); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java index fa8caab..567e912 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java @@ -1,41 +1,119 @@ package com.casic.missiles.modular.system.service.impl; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONException; +import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.casic.missiles.modular.system.dto.OceanDetailDTO; import com.casic.missiles.modular.system.model.OceanDetailModel; import com.casic.missiles.modular.system.service.IOceanService; +import com.casic.missiles.modular.system.utils.Constant; import com.casic.missiles.modular.system.utils.HttpRequestHelper; +import okhttp3.*; import org.springframework.stereotype.Service; +import java.io.IOException; + /** * 洋流数据信息 服务实现类 * * @author a203 */ - @Service public class OceanServiceImpl implements IOceanService { private static final String SUCCESS_CODE = "0"; + private String getOceanCode(String value) { + if ("".equals(value)) { + return value; + } + JSONObject jsonObject = JSON.parseObject(value); + Integer code = jsonObject.getInteger("code"); + return String.valueOf(code); + } + public OceanServiceImpl() { } @Override public OceanDetailDTO oceanDetail(double lng, double lat, String date, String days, String hour) { - String oceanData = HttpRequestHelper.obtainOceanData(lng, lat, date, days, hour); /** - * 解析洋流数据返回给前端 + * 获取洋流数据Token * */ - if (SUCCESS_CODE.equals(HttpRequestHelper.getOceanCode(oceanData))) { - OceanDetailModel remoteData = JSON.parseObject(oceanData, new TypeReference() { - }); - if (remoteData == null) { + JSONObject tokenObject = new JSONObject(); + try { + tokenObject.put("appId", Constant.OCEAN_APPID); + tokenObject.put("appKey", Constant.OCEAN_APP_KEY); + } catch (JSONException e) { + e.printStackTrace(); + } + Request tokenRequest = new Request.Builder() + .url("http://api.meteo.open.ninecosmos.cn/us/users/open/token") + .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), tokenObject.toJSONString())) + .build(); + Call tokenCall = HttpRequestHelper.HTTP_CLIENT.newCall(tokenRequest); + try { + Response response = tokenCall.execute(); + ResponseBody tokenBody = response.body(); + if (tokenBody != null) { + String tokenResult = tokenBody.string(); + if ("".equals(tokenResult)) { + return null; + } + /** + * 解析token + * */ + JSONObject tokenJson = JSON.parseObject(tokenResult); + JSONObject dataObject = tokenJson.getJSONObject("data"); + String token = dataObject.getString("token"); + /** + * 封装请求参数 + * */ + JSONObject resultObject = new JSONObject(); + try { + resultObject.put("lon", lng); + resultObject.put("lat", lat); + resultObject.put("date", date); + resultObject.put("hour", days); + resultObject.put("days", hour); + } catch (JSONException e) { + e.printStackTrace(); + } + /** + * 获取洋流数据 + * */ + Request resultRequest = new Request.Builder() + .addHeader("Authorization", token) + .url("http://api.meteo.open.ninecosmos.cn/mr/netcdf/meteo/ytx") + .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), resultObject.toJSONString())) + .build(); + Call resultCall = HttpRequestHelper.HTTP_CLIENT.newCall(resultRequest); + try { + Response resultResponse = resultCall.execute(); + ResponseBody resultBody = resultResponse.body(); + if (resultBody != null) { + String oceanData = resultBody.string(); + /** + * 解析洋流数据返回给前端 + * */ + if (SUCCESS_CODE.equals(getOceanCode(oceanData))) { + OceanDetailModel remoteData = JSON.parseObject(oceanData, new TypeReference() { + }); + if (remoteData == null) { + return null; + } + return new OceanDetailDTO(remoteData); + } + } + } catch (IOException e) { + e.printStackTrace(); + } return null; } - return new OceanDetailDTO(remoteData); + } catch (IOException e) { + e.printStackTrace(); } return null; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Constant.java b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Constant.java index 552a6e9..c34600a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Constant.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Constant.java @@ -27,11 +27,6 @@ /** * 洋流相关常量 */ - private static final String OCEAN_BASE_URL = "http://api.meteo.open.ninecosmos.cn"; - public static final String OCEAN_HEADER_NAME = "Authorization"; public static final String OCEAN_APPID = "WXZH888888"; public static final String OCEAN_APP_KEY = "xb#bD&xtho@b80scbDb"; - - public static final String OCEAN_TOKEN = OCEAN_BASE_URL + "/us/users/open/token"; - public static final String OCEAN_DETAIL = OCEAN_BASE_URL + "/mr/netcdf/meteo/ytx"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java index 1e0cd94..c819054 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.system.utils; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONException; import com.alibaba.fastjson.JSONObject; -import lombok.NonNull; -import okhttp3.*; +import lombok.extern.slf4j.Slf4j; +import okhttp3.Call; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; import java.io.IOException; import java.util.Objects; @@ -15,87 +17,28 @@ * * @author a203 */ +@Slf4j public class HttpRequestHelper { - - public static RequestBody createRequestBody(String value) { - return RequestBody.create(MediaType.parse("application/json; charset=utf-8"), value); - } - - public static String doPost(Request request) { - return streamResponse(request); - } + public static final OkHttpClient HTTP_CLIENT = new OkHttpClient.Builder() + .connectTimeout(30, TimeUnit.SECONDS) + .writeTimeout(30, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) + .build(); public static String doGet(String url) { - return streamResponse(new Request.Builder() - .url(url) - .build()); - } - - private static String streamResponse(@NonNull Request request) { - OkHttpClient httpClient = new OkHttpClient.Builder() - .connectTimeout(10, TimeUnit.SECONDS) - .writeTimeout(10, TimeUnit.SECONDS) - .readTimeout(20, TimeUnit.SECONDS) - .build(); - Call call = httpClient.newCall(request); + Request request = new Request.Builder().url(url).build(); + Call call = HTTP_CLIENT.newCall(request); try { Response response = call.execute(); - return response.body() != null ? Objects.requireNonNull(response.body()).string() : ""; + String result = response.body() != null ? Objects.requireNonNull(response.body()).string() : ""; + log.info("result ===> " + result); + return result; } catch (IOException e) { e.printStackTrace(); } return ""; } - public static String obtainOceanData(double lng, double lat, String date, String days, String hour) { - /** - * 获取洋流数据Token - * */ - JSONObject object = new JSONObject(); - try { - object.put("appId", Constant.OCEAN_APPID); - object.put("appKey", Constant.OCEAN_APP_KEY); - } catch (JSONException e) { - e.printStackTrace(); - } - Request tokenRequest = new Request.Builder() - .url(Constant.OCEAN_TOKEN) - .post(HttpRequestHelper.createRequestBody(object.toJSONString())) - .build(); - String tokenJson = HttpRequestHelper.doPost(tokenRequest); - if ("".equals(tokenJson)) { - return null; - } - /** - * 解析token - * */ - JSONObject tokenObject = JSON.parseObject(tokenJson); - JSONObject dataObject = tokenObject.getJSONObject("data"); - String token = dataObject.getString("token"); - /** - * 封装请求参数 - * */ - JSONObject jsonObject = new JSONObject(); - try { - jsonObject.put("lon", lng); - jsonObject.put("lat", lat); - jsonObject.put("date", date); - jsonObject.put("hour", days); - jsonObject.put("days", hour); - } catch (JSONException e) { - e.printStackTrace(); - } - /** - * 获取洋流数据 - * */ - Request request = new Request.Builder() - .addHeader(Constant.OCEAN_HEADER_NAME, token) - .url(Constant.OCEAN_DETAIL) - .post(HttpRequestHelper.createRequestBody(jsonObject.toJSONString())) - .build(); - return HttpRequestHelper.doPost(request); - } - public static String getTyphoonCode(String value) { if ("".equals(value)) { return value; @@ -103,13 +46,4 @@ JSONObject jsonObject = JSON.parseObject(value); return jsonObject.getString("showapi_res_code"); } - - public static String getOceanCode(String value) { - if ("".equals(value)) { - return value; - } - JSONObject jsonObject = JSON.parseObject(value); - Integer code = jsonObject.getInteger("code"); - return String.valueOf(code); - } } diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java index d477840..5c47c73 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java @@ -8,12 +8,13 @@ import com.casic.missiles.modular.system.model.ShipModel; import com.casic.missiles.modular.system.service.IShipService; import com.casic.missiles.modular.system.utils.Constant; -import com.casic.missiles.modular.system.utils.HttpRequestHelper; -import okhttp3.Request; +import okhttp3.*; import org.springframework.stereotype.Service; +import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.TimeUnit; /** * 船舶数据信息 服务实现类 @@ -24,6 +25,11 @@ @Service public class ShipServiceImpl implements IShipService { + private static final OkHttpClient HTTP_CLIENT = new OkHttpClient.Builder() + .connectTimeout(10, TimeUnit.SECONDS) + .writeTimeout(10, TimeUnit.SECONDS) + .readTimeout(20, TimeUnit.SECONDS) + .build(); private static final String SUCCESS_CODE = "0"; public ShipServiceImpl() { @@ -48,26 +54,34 @@ } catch (JSONException e) { e.printStackTrace(); } - List shipDTOList = new ArrayList<>(); + List shipList = new ArrayList<>(); /** * 获取AIS接口数据 * */ - String requestBody = jsonObject.toJSONString(); Request request = new Request.Builder() .addHeader(Constant.AIS_HEADER_NAME, Constant.AIS_KEY_VALUE) .url(Constant.SHIPS_IN_CIRCLE) - .post(HttpRequestHelper.createRequestBody(requestBody)) + .post(RequestBody.create(MediaType.parse(Constant.CONTENT_TYPE), jsonObject.toJSONString())) .build(); - String res = HttpRequestHelper.doPost(request); - //先解析出code,根据code判断 - if (SUCCESS_CODE.equals(getResponseCode(res))) { - ShipModel remoteData = JSON.parseObject(res, new TypeReference() { - }); - for (ShipModel.DataBean data : remoteData.getData()) { - shipDTOList.add(new ShipDTO(data)); + Call call = HTTP_CLIENT.newCall(request); + try { + Response response = call.execute(); + ResponseBody body = response.body(); + if (body != null) { + String res = body.string(); + //先解析出code,根据code判断 + if (SUCCESS_CODE.equals(getResponseCode(res))) { + ShipModel remoteData = JSON.parseObject(res, new TypeReference() { + }); + for (ShipModel.DataBean data : remoteData.getData()) { + shipList.add(new ShipDTO(data)); + } + } } + } catch (IOException e) { + e.printStackTrace(); } - return shipDTOList; + return shipList; } /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java index e0c98ec..c7ea179 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java @@ -1,11 +1,13 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.OceanDetailDTO; import com.casic.missiles.modular.system.dto.TyphoonDTO; import com.casic.missiles.modular.system.dto.TyphoonDetailDTO; import com.casic.missiles.modular.system.service.IOceanService; import com.casic.missiles.modular.system.service.ITyphoonService; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -18,6 +20,7 @@ * * @author a203 */ +@Slf4j @Controller @RequestMapping("/environment") public class EnvironmentController { @@ -56,6 +59,7 @@ @ResponseBody public Object oceanDetail(double lng, double lat, String date, String days, String hour) { OceanDetailDTO detailDTO = oceanService.oceanDetail(lng, lat, date, days, hour); + log.info("oceanDetail ===> " + JSONObject.toJSONString(detailDTO)); return ResponseData.success(detailDTO); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java index fa8caab..567e912 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java @@ -1,41 +1,119 @@ package com.casic.missiles.modular.system.service.impl; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONException; +import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.casic.missiles.modular.system.dto.OceanDetailDTO; import com.casic.missiles.modular.system.model.OceanDetailModel; import com.casic.missiles.modular.system.service.IOceanService; +import com.casic.missiles.modular.system.utils.Constant; import com.casic.missiles.modular.system.utils.HttpRequestHelper; +import okhttp3.*; import org.springframework.stereotype.Service; +import java.io.IOException; + /** * 洋流数据信息 服务实现类 * * @author a203 */ - @Service public class OceanServiceImpl implements IOceanService { private static final String SUCCESS_CODE = "0"; + private String getOceanCode(String value) { + if ("".equals(value)) { + return value; + } + JSONObject jsonObject = JSON.parseObject(value); + Integer code = jsonObject.getInteger("code"); + return String.valueOf(code); + } + public OceanServiceImpl() { } @Override public OceanDetailDTO oceanDetail(double lng, double lat, String date, String days, String hour) { - String oceanData = HttpRequestHelper.obtainOceanData(lng, lat, date, days, hour); /** - * 解析洋流数据返回给前端 + * 获取洋流数据Token * */ - if (SUCCESS_CODE.equals(HttpRequestHelper.getOceanCode(oceanData))) { - OceanDetailModel remoteData = JSON.parseObject(oceanData, new TypeReference() { - }); - if (remoteData == null) { + JSONObject tokenObject = new JSONObject(); + try { + tokenObject.put("appId", Constant.OCEAN_APPID); + tokenObject.put("appKey", Constant.OCEAN_APP_KEY); + } catch (JSONException e) { + e.printStackTrace(); + } + Request tokenRequest = new Request.Builder() + .url("http://api.meteo.open.ninecosmos.cn/us/users/open/token") + .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), tokenObject.toJSONString())) + .build(); + Call tokenCall = HttpRequestHelper.HTTP_CLIENT.newCall(tokenRequest); + try { + Response response = tokenCall.execute(); + ResponseBody tokenBody = response.body(); + if (tokenBody != null) { + String tokenResult = tokenBody.string(); + if ("".equals(tokenResult)) { + return null; + } + /** + * 解析token + * */ + JSONObject tokenJson = JSON.parseObject(tokenResult); + JSONObject dataObject = tokenJson.getJSONObject("data"); + String token = dataObject.getString("token"); + /** + * 封装请求参数 + * */ + JSONObject resultObject = new JSONObject(); + try { + resultObject.put("lon", lng); + resultObject.put("lat", lat); + resultObject.put("date", date); + resultObject.put("hour", days); + resultObject.put("days", hour); + } catch (JSONException e) { + e.printStackTrace(); + } + /** + * 获取洋流数据 + * */ + Request resultRequest = new Request.Builder() + .addHeader("Authorization", token) + .url("http://api.meteo.open.ninecosmos.cn/mr/netcdf/meteo/ytx") + .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), resultObject.toJSONString())) + .build(); + Call resultCall = HttpRequestHelper.HTTP_CLIENT.newCall(resultRequest); + try { + Response resultResponse = resultCall.execute(); + ResponseBody resultBody = resultResponse.body(); + if (resultBody != null) { + String oceanData = resultBody.string(); + /** + * 解析洋流数据返回给前端 + * */ + if (SUCCESS_CODE.equals(getOceanCode(oceanData))) { + OceanDetailModel remoteData = JSON.parseObject(oceanData, new TypeReference() { + }); + if (remoteData == null) { + return null; + } + return new OceanDetailDTO(remoteData); + } + } + } catch (IOException e) { + e.printStackTrace(); + } return null; } - return new OceanDetailDTO(remoteData); + } catch (IOException e) { + e.printStackTrace(); } return null; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Constant.java b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Constant.java index 552a6e9..c34600a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Constant.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Constant.java @@ -27,11 +27,6 @@ /** * 洋流相关常量 */ - private static final String OCEAN_BASE_URL = "http://api.meteo.open.ninecosmos.cn"; - public static final String OCEAN_HEADER_NAME = "Authorization"; public static final String OCEAN_APPID = "WXZH888888"; public static final String OCEAN_APP_KEY = "xb#bD&xtho@b80scbDb"; - - public static final String OCEAN_TOKEN = OCEAN_BASE_URL + "/us/users/open/token"; - public static final String OCEAN_DETAIL = OCEAN_BASE_URL + "/mr/netcdf/meteo/ytx"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java index 1e0cd94..c819054 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.system.utils; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONException; import com.alibaba.fastjson.JSONObject; -import lombok.NonNull; -import okhttp3.*; +import lombok.extern.slf4j.Slf4j; +import okhttp3.Call; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; import java.io.IOException; import java.util.Objects; @@ -15,87 +17,28 @@ * * @author a203 */ +@Slf4j public class HttpRequestHelper { - - public static RequestBody createRequestBody(String value) { - return RequestBody.create(MediaType.parse("application/json; charset=utf-8"), value); - } - - public static String doPost(Request request) { - return streamResponse(request); - } + public static final OkHttpClient HTTP_CLIENT = new OkHttpClient.Builder() + .connectTimeout(30, TimeUnit.SECONDS) + .writeTimeout(30, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) + .build(); public static String doGet(String url) { - return streamResponse(new Request.Builder() - .url(url) - .build()); - } - - private static String streamResponse(@NonNull Request request) { - OkHttpClient httpClient = new OkHttpClient.Builder() - .connectTimeout(10, TimeUnit.SECONDS) - .writeTimeout(10, TimeUnit.SECONDS) - .readTimeout(20, TimeUnit.SECONDS) - .build(); - Call call = httpClient.newCall(request); + Request request = new Request.Builder().url(url).build(); + Call call = HTTP_CLIENT.newCall(request); try { Response response = call.execute(); - return response.body() != null ? Objects.requireNonNull(response.body()).string() : ""; + String result = response.body() != null ? Objects.requireNonNull(response.body()).string() : ""; + log.info("result ===> " + result); + return result; } catch (IOException e) { e.printStackTrace(); } return ""; } - public static String obtainOceanData(double lng, double lat, String date, String days, String hour) { - /** - * 获取洋流数据Token - * */ - JSONObject object = new JSONObject(); - try { - object.put("appId", Constant.OCEAN_APPID); - object.put("appKey", Constant.OCEAN_APP_KEY); - } catch (JSONException e) { - e.printStackTrace(); - } - Request tokenRequest = new Request.Builder() - .url(Constant.OCEAN_TOKEN) - .post(HttpRequestHelper.createRequestBody(object.toJSONString())) - .build(); - String tokenJson = HttpRequestHelper.doPost(tokenRequest); - if ("".equals(tokenJson)) { - return null; - } - /** - * 解析token - * */ - JSONObject tokenObject = JSON.parseObject(tokenJson); - JSONObject dataObject = tokenObject.getJSONObject("data"); - String token = dataObject.getString("token"); - /** - * 封装请求参数 - * */ - JSONObject jsonObject = new JSONObject(); - try { - jsonObject.put("lon", lng); - jsonObject.put("lat", lat); - jsonObject.put("date", date); - jsonObject.put("hour", days); - jsonObject.put("days", hour); - } catch (JSONException e) { - e.printStackTrace(); - } - /** - * 获取洋流数据 - * */ - Request request = new Request.Builder() - .addHeader(Constant.OCEAN_HEADER_NAME, token) - .url(Constant.OCEAN_DETAIL) - .post(HttpRequestHelper.createRequestBody(jsonObject.toJSONString())) - .build(); - return HttpRequestHelper.doPost(request); - } - public static String getTyphoonCode(String value) { if ("".equals(value)) { return value; @@ -103,13 +46,4 @@ JSONObject jsonObject = JSON.parseObject(value); return jsonObject.getString("showapi_res_code"); } - - public static String getOceanCode(String value) { - if ("".equals(value)) { - return value; - } - JSONObject jsonObject = JSON.parseObject(value); - Integer code = jsonObject.getInteger("code"); - return String.valueOf(code); - } } diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java index d477840..5c47c73 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java @@ -8,12 +8,13 @@ import com.casic.missiles.modular.system.model.ShipModel; import com.casic.missiles.modular.system.service.IShipService; import com.casic.missiles.modular.system.utils.Constant; -import com.casic.missiles.modular.system.utils.HttpRequestHelper; -import okhttp3.Request; +import okhttp3.*; import org.springframework.stereotype.Service; +import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.TimeUnit; /** * 船舶数据信息 服务实现类 @@ -24,6 +25,11 @@ @Service public class ShipServiceImpl implements IShipService { + private static final OkHttpClient HTTP_CLIENT = new OkHttpClient.Builder() + .connectTimeout(10, TimeUnit.SECONDS) + .writeTimeout(10, TimeUnit.SECONDS) + .readTimeout(20, TimeUnit.SECONDS) + .build(); private static final String SUCCESS_CODE = "0"; public ShipServiceImpl() { @@ -48,26 +54,34 @@ } catch (JSONException e) { e.printStackTrace(); } - List shipDTOList = new ArrayList<>(); + List shipList = new ArrayList<>(); /** * 获取AIS接口数据 * */ - String requestBody = jsonObject.toJSONString(); Request request = new Request.Builder() .addHeader(Constant.AIS_HEADER_NAME, Constant.AIS_KEY_VALUE) .url(Constant.SHIPS_IN_CIRCLE) - .post(HttpRequestHelper.createRequestBody(requestBody)) + .post(RequestBody.create(MediaType.parse(Constant.CONTENT_TYPE), jsonObject.toJSONString())) .build(); - String res = HttpRequestHelper.doPost(request); - //先解析出code,根据code判断 - if (SUCCESS_CODE.equals(getResponseCode(res))) { - ShipModel remoteData = JSON.parseObject(res, new TypeReference() { - }); - for (ShipModel.DataBean data : remoteData.getData()) { - shipDTOList.add(new ShipDTO(data)); + Call call = HTTP_CLIENT.newCall(request); + try { + Response response = call.execute(); + ResponseBody body = response.body(); + if (body != null) { + String res = body.string(); + //先解析出code,根据code判断 + if (SUCCESS_CODE.equals(getResponseCode(res))) { + ShipModel remoteData = JSON.parseObject(res, new TypeReference() { + }); + for (ShipModel.DataBean data : remoteData.getData()) { + shipList.add(new ShipDTO(data)); + } + } } + } catch (IOException e) { + e.printStackTrace(); } - return shipDTOList; + return shipList; } /** diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java deleted file mode 100644 index c2e936d..0000000 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.missiles.modular.system.utils; - -import lombok.NonNull; -import okhttp3.*; - -import java.io.IOException; -import java.util.Objects; -import java.util.concurrent.TimeUnit; - -/** - * 网络请求工具 - * - * @author a203 - */ -public class HttpRequestHelper { - - public static RequestBody createRequestBody(String value) { - return RequestBody.create(MediaType.parse(Constant.CONTENT_TYPE), value); - } - - public static String doPost(Request request) { - return streamResponse(request); - } - - public static String doGet(String url) { - return streamResponse(new Request.Builder() - .url(url) - .build()); - } - - private static String streamResponse(@NonNull Request request) { - OkHttpClient httpClient = new OkHttpClient.Builder() - .connectTimeout(10, TimeUnit.SECONDS) - .writeTimeout(10, TimeUnit.SECONDS) - .readTimeout(20, TimeUnit.SECONDS) - .build(); - Call call = httpClient.newCall(request); - try { - Response response = call.execute(); - return response.body() != null ? Objects.requireNonNull(response.body()).string() : ""; - } catch (IOException e) { - e.printStackTrace(); - } - return ""; - } -} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java index e0c98ec..c7ea179 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/EnvironmentController.java @@ -1,11 +1,13 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.OceanDetailDTO; import com.casic.missiles.modular.system.dto.TyphoonDTO; import com.casic.missiles.modular.system.dto.TyphoonDetailDTO; import com.casic.missiles.modular.system.service.IOceanService; import com.casic.missiles.modular.system.service.ITyphoonService; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -18,6 +20,7 @@ * * @author a203 */ +@Slf4j @Controller @RequestMapping("/environment") public class EnvironmentController { @@ -56,6 +59,7 @@ @ResponseBody public Object oceanDetail(double lng, double lat, String date, String days, String hour) { OceanDetailDTO detailDTO = oceanService.oceanDetail(lng, lat, date, days, hour); + log.info("oceanDetail ===> " + JSONObject.toJSONString(detailDTO)); return ResponseData.success(detailDTO); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java index fa8caab..567e912 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/OceanServiceImpl.java @@ -1,41 +1,119 @@ package com.casic.missiles.modular.system.service.impl; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONException; +import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.casic.missiles.modular.system.dto.OceanDetailDTO; import com.casic.missiles.modular.system.model.OceanDetailModel; import com.casic.missiles.modular.system.service.IOceanService; +import com.casic.missiles.modular.system.utils.Constant; import com.casic.missiles.modular.system.utils.HttpRequestHelper; +import okhttp3.*; import org.springframework.stereotype.Service; +import java.io.IOException; + /** * 洋流数据信息 服务实现类 * * @author a203 */ - @Service public class OceanServiceImpl implements IOceanService { private static final String SUCCESS_CODE = "0"; + private String getOceanCode(String value) { + if ("".equals(value)) { + return value; + } + JSONObject jsonObject = JSON.parseObject(value); + Integer code = jsonObject.getInteger("code"); + return String.valueOf(code); + } + public OceanServiceImpl() { } @Override public OceanDetailDTO oceanDetail(double lng, double lat, String date, String days, String hour) { - String oceanData = HttpRequestHelper.obtainOceanData(lng, lat, date, days, hour); /** - * 解析洋流数据返回给前端 + * 获取洋流数据Token * */ - if (SUCCESS_CODE.equals(HttpRequestHelper.getOceanCode(oceanData))) { - OceanDetailModel remoteData = JSON.parseObject(oceanData, new TypeReference() { - }); - if (remoteData == null) { + JSONObject tokenObject = new JSONObject(); + try { + tokenObject.put("appId", Constant.OCEAN_APPID); + tokenObject.put("appKey", Constant.OCEAN_APP_KEY); + } catch (JSONException e) { + e.printStackTrace(); + } + Request tokenRequest = new Request.Builder() + .url("http://api.meteo.open.ninecosmos.cn/us/users/open/token") + .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), tokenObject.toJSONString())) + .build(); + Call tokenCall = HttpRequestHelper.HTTP_CLIENT.newCall(tokenRequest); + try { + Response response = tokenCall.execute(); + ResponseBody tokenBody = response.body(); + if (tokenBody != null) { + String tokenResult = tokenBody.string(); + if ("".equals(tokenResult)) { + return null; + } + /** + * 解析token + * */ + JSONObject tokenJson = JSON.parseObject(tokenResult); + JSONObject dataObject = tokenJson.getJSONObject("data"); + String token = dataObject.getString("token"); + /** + * 封装请求参数 + * */ + JSONObject resultObject = new JSONObject(); + try { + resultObject.put("lon", lng); + resultObject.put("lat", lat); + resultObject.put("date", date); + resultObject.put("hour", days); + resultObject.put("days", hour); + } catch (JSONException e) { + e.printStackTrace(); + } + /** + * 获取洋流数据 + * */ + Request resultRequest = new Request.Builder() + .addHeader("Authorization", token) + .url("http://api.meteo.open.ninecosmos.cn/mr/netcdf/meteo/ytx") + .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), resultObject.toJSONString())) + .build(); + Call resultCall = HttpRequestHelper.HTTP_CLIENT.newCall(resultRequest); + try { + Response resultResponse = resultCall.execute(); + ResponseBody resultBody = resultResponse.body(); + if (resultBody != null) { + String oceanData = resultBody.string(); + /** + * 解析洋流数据返回给前端 + * */ + if (SUCCESS_CODE.equals(getOceanCode(oceanData))) { + OceanDetailModel remoteData = JSON.parseObject(oceanData, new TypeReference() { + }); + if (remoteData == null) { + return null; + } + return new OceanDetailDTO(remoteData); + } + } + } catch (IOException e) { + e.printStackTrace(); + } return null; } - return new OceanDetailDTO(remoteData); + } catch (IOException e) { + e.printStackTrace(); } return null; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Constant.java b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Constant.java index 552a6e9..c34600a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Constant.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Constant.java @@ -27,11 +27,6 @@ /** * 洋流相关常量 */ - private static final String OCEAN_BASE_URL = "http://api.meteo.open.ninecosmos.cn"; - public static final String OCEAN_HEADER_NAME = "Authorization"; public static final String OCEAN_APPID = "WXZH888888"; public static final String OCEAN_APP_KEY = "xb#bD&xtho@b80scbDb"; - - public static final String OCEAN_TOKEN = OCEAN_BASE_URL + "/us/users/open/token"; - public static final String OCEAN_DETAIL = OCEAN_BASE_URL + "/mr/netcdf/meteo/ytx"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java index 1e0cd94..c819054 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.system.utils; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONException; import com.alibaba.fastjson.JSONObject; -import lombok.NonNull; -import okhttp3.*; +import lombok.extern.slf4j.Slf4j; +import okhttp3.Call; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; import java.io.IOException; import java.util.Objects; @@ -15,87 +17,28 @@ * * @author a203 */ +@Slf4j public class HttpRequestHelper { - - public static RequestBody createRequestBody(String value) { - return RequestBody.create(MediaType.parse("application/json; charset=utf-8"), value); - } - - public static String doPost(Request request) { - return streamResponse(request); - } + public static final OkHttpClient HTTP_CLIENT = new OkHttpClient.Builder() + .connectTimeout(30, TimeUnit.SECONDS) + .writeTimeout(30, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) + .build(); public static String doGet(String url) { - return streamResponse(new Request.Builder() - .url(url) - .build()); - } - - private static String streamResponse(@NonNull Request request) { - OkHttpClient httpClient = new OkHttpClient.Builder() - .connectTimeout(10, TimeUnit.SECONDS) - .writeTimeout(10, TimeUnit.SECONDS) - .readTimeout(20, TimeUnit.SECONDS) - .build(); - Call call = httpClient.newCall(request); + Request request = new Request.Builder().url(url).build(); + Call call = HTTP_CLIENT.newCall(request); try { Response response = call.execute(); - return response.body() != null ? Objects.requireNonNull(response.body()).string() : ""; + String result = response.body() != null ? Objects.requireNonNull(response.body()).string() : ""; + log.info("result ===> " + result); + return result; } catch (IOException e) { e.printStackTrace(); } return ""; } - public static String obtainOceanData(double lng, double lat, String date, String days, String hour) { - /** - * 获取洋流数据Token - * */ - JSONObject object = new JSONObject(); - try { - object.put("appId", Constant.OCEAN_APPID); - object.put("appKey", Constant.OCEAN_APP_KEY); - } catch (JSONException e) { - e.printStackTrace(); - } - Request tokenRequest = new Request.Builder() - .url(Constant.OCEAN_TOKEN) - .post(HttpRequestHelper.createRequestBody(object.toJSONString())) - .build(); - String tokenJson = HttpRequestHelper.doPost(tokenRequest); - if ("".equals(tokenJson)) { - return null; - } - /** - * 解析token - * */ - JSONObject tokenObject = JSON.parseObject(tokenJson); - JSONObject dataObject = tokenObject.getJSONObject("data"); - String token = dataObject.getString("token"); - /** - * 封装请求参数 - * */ - JSONObject jsonObject = new JSONObject(); - try { - jsonObject.put("lon", lng); - jsonObject.put("lat", lat); - jsonObject.put("date", date); - jsonObject.put("hour", days); - jsonObject.put("days", hour); - } catch (JSONException e) { - e.printStackTrace(); - } - /** - * 获取洋流数据 - * */ - Request request = new Request.Builder() - .addHeader(Constant.OCEAN_HEADER_NAME, token) - .url(Constant.OCEAN_DETAIL) - .post(HttpRequestHelper.createRequestBody(jsonObject.toJSONString())) - .build(); - return HttpRequestHelper.doPost(request); - } - public static String getTyphoonCode(String value) { if ("".equals(value)) { return value; @@ -103,13 +46,4 @@ JSONObject jsonObject = JSON.parseObject(value); return jsonObject.getString("showapi_res_code"); } - - public static String getOceanCode(String value) { - if ("".equals(value)) { - return value; - } - JSONObject jsonObject = JSON.parseObject(value); - Integer code = jsonObject.getInteger("code"); - return String.valueOf(code); - } } diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java index d477840..5c47c73 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java @@ -8,12 +8,13 @@ import com.casic.missiles.modular.system.model.ShipModel; import com.casic.missiles.modular.system.service.IShipService; import com.casic.missiles.modular.system.utils.Constant; -import com.casic.missiles.modular.system.utils.HttpRequestHelper; -import okhttp3.Request; +import okhttp3.*; import org.springframework.stereotype.Service; +import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.TimeUnit; /** * 船舶数据信息 服务实现类 @@ -24,6 +25,11 @@ @Service public class ShipServiceImpl implements IShipService { + private static final OkHttpClient HTTP_CLIENT = new OkHttpClient.Builder() + .connectTimeout(10, TimeUnit.SECONDS) + .writeTimeout(10, TimeUnit.SECONDS) + .readTimeout(20, TimeUnit.SECONDS) + .build(); private static final String SUCCESS_CODE = "0"; public ShipServiceImpl() { @@ -48,26 +54,34 @@ } catch (JSONException e) { e.printStackTrace(); } - List shipDTOList = new ArrayList<>(); + List shipList = new ArrayList<>(); /** * 获取AIS接口数据 * */ - String requestBody = jsonObject.toJSONString(); Request request = new Request.Builder() .addHeader(Constant.AIS_HEADER_NAME, Constant.AIS_KEY_VALUE) .url(Constant.SHIPS_IN_CIRCLE) - .post(HttpRequestHelper.createRequestBody(requestBody)) + .post(RequestBody.create(MediaType.parse(Constant.CONTENT_TYPE), jsonObject.toJSONString())) .build(); - String res = HttpRequestHelper.doPost(request); - //先解析出code,根据code判断 - if (SUCCESS_CODE.equals(getResponseCode(res))) { - ShipModel remoteData = JSON.parseObject(res, new TypeReference() { - }); - for (ShipModel.DataBean data : remoteData.getData()) { - shipDTOList.add(new ShipDTO(data)); + Call call = HTTP_CLIENT.newCall(request); + try { + Response response = call.execute(); + ResponseBody body = response.body(); + if (body != null) { + String res = body.string(); + //先解析出code,根据code判断 + if (SUCCESS_CODE.equals(getResponseCode(res))) { + ShipModel remoteData = JSON.parseObject(res, new TypeReference() { + }); + for (ShipModel.DataBean data : remoteData.getData()) { + shipList.add(new ShipDTO(data)); + } + } } + } catch (IOException e) { + e.printStackTrace(); } - return shipDTOList; + return shipList; } /** diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java deleted file mode 100644 index c2e936d..0000000 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.missiles.modular.system.utils; - -import lombok.NonNull; -import okhttp3.*; - -import java.io.IOException; -import java.util.Objects; -import java.util.concurrent.TimeUnit; - -/** - * 网络请求工具 - * - * @author a203 - */ -public class HttpRequestHelper { - - public static RequestBody createRequestBody(String value) { - return RequestBody.create(MediaType.parse(Constant.CONTENT_TYPE), value); - } - - public static String doPost(Request request) { - return streamResponse(request); - } - - public static String doGet(String url) { - return streamResponse(new Request.Builder() - .url(url) - .build()); - } - - private static String streamResponse(@NonNull Request request) { - OkHttpClient httpClient = new OkHttpClient.Builder() - .connectTimeout(10, TimeUnit.SECONDS) - .writeTimeout(10, TimeUnit.SECONDS) - .readTimeout(20, TimeUnit.SECONDS) - .build(); - Call call = httpClient.newCall(request); - try { - Response response = call.execute(); - return response.body() != null ? Objects.requireNonNull(response.body()).string() : ""; - } catch (IOException e) { - e.printStackTrace(); - } - return ""; - } -} \ No newline at end of file diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 013057d..7a946b6 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -1,5 +1,5 @@ server: - port: 8085 + port: 12207 ################### spring配置 ################### spring: datasource: @@ -8,7 +8,7 @@ username: root password: Casic203 jms: - pub-sub-domain: true + pub-sub-domain: true # session: # store-type: redis # redis: @@ -19,7 +19,7 @@ # redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer casic: #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/environment/**,/ais/** + no-login-urls: /user/login,/user/appLogin,/kaptcha/base64,/config/baseConfig,/route/mockToken,/environment/saveTyphoon,/environment/typhoonDetail,/environment/ocean,/ais/shipsInCircle #flowable数据源和多数据源配置 db: init: