김성원 김성원 2023-07-25
전송 LOG API 추가
@83bcc0d71967b1efed2c81abc706ac9756ba0aae
pom.xml
--- pom.xml
+++ pom.xml
@@ -201,14 +201,16 @@
             <artifactId>commons-lang3</artifactId>
             <version>3.12.0</version>
         </dependency>
-
-
         <dependency>
             <groupId>javax.xml.bind</groupId>
             <artifactId>jaxb-api</artifactId>
             <version>2.3.1</version>
         </dependency>
-
+        <dependency>
+            <groupId>com.googlecode.json-simple</groupId>
+            <artifactId>json-simple</artifactId>
+            <version>1.1.1</version>
+        </dependency>
 
         <!-- 표준프레임워크 실행환경 (시작) -->
         <!--<dependency>
server/main/java/common/vo/ResultObject.java
--- server/main/java/common/vo/ResultObject.java
+++ server/main/java/common/vo/ResultObject.java
@@ -21,38 +21,42 @@
     private Object resultData;
 
     // API 키 불일치 메세지
-    private final String not_found_apiKey = "유효하지 않은 APIKEY입니다.";
+    private final String not_found_apiKey = "유효하지 않은 APIKEY";
 
     // API 키 불일치 메세지
-    private final String missing_required_value = "필수값이 누락되었습니다.";
+    private final String missing_required_value = "필수값이 누락";
 
     // API 키 불일치 메세지
-    private final String unknown_error = "잘못된 요청입니다.";
+    private final String unknown_error = "분류되지 않은 에러";
 
 
     // 생성자
     public ResultObject(){
-        this.resultCode = "200";
+        this.resultCode = "1000";
         this.resultDesc = "SUCCESS";
     }
 
     // 메세지 세팅(임시)
     public void setErrorDesc(String msg){
+        this.resultCode = "9900";
         this.resultCode = msg;
     }
 
     // api키 불일치
     public void not_found_apiKey_error(){
+        this.resultCode = "9901";
         this.resultDesc = this.not_found_apiKey;
     }
 
     // 필수 데이터 누락
     public void missing_required_value_error(){
+        this.resultCode = "9902";
         this.resultDesc = this.missing_required_value;
     }
 
     // 알수없는 에러
     public void unknown_error(){
+        this.resultCode = "9900";
         this.resultDesc = this.unknown_error;
     }
 
@@ -63,6 +67,7 @@
 
     public HashMap<String, Object> getResult(){
         HashMap<String, Object> returnMap = new HashMap<String, Object>();
+        returnMap.put("resultCode",this.resultCode);
         returnMap.put("resultDesc",this.resultDesc);
         returnMap.put("resultData", this.resultData);
 
server/main/java/kr/co/takensoft/crosswalk/apiManagement/dao/ApiManagementDAO.java
--- server/main/java/kr/co/takensoft/crosswalk/apiManagement/dao/ApiManagementDAO.java
+++ server/main/java/kr/co/takensoft/crosswalk/apiManagement/dao/ApiManagementDAO.java
@@ -163,4 +163,40 @@
      */
     public Integer insertApiKey(ApiKeyVO apiKeyVO) throws Exception;
 
+
+    /**
+     * 등록된 노드 리스트
+     *
+     * @author 김성원
+     * @since 2023.07.03
+     */
+    public List<Long> selectNodeList() throws Exception;
+
+    /**
+     * 서비스중인 노드정보  등록
+     *
+     * @author 김성원
+     * @since 2023.07.03
+     */
+    public Integer updateNodeInfo(HashMap<String,Object> map) throws Exception;
+
+
+    /**
+     * 서비스중인 노드정보 리스트
+     *
+     * @author 김성원
+     * @since 2023.07.07
+     */
+    public List<HashMap<String,Object>> selectServiceNodeList() throws Exception;
+
+    /**
+     * respons 리스트 API용 검색
+     *
+     * @author 김성원
+     * @since 2023.07.07
+     */
+    public List<HashMap<String,Object>> responsLogInfo(HashMap<String,Object> map) throws Exception;
+    
+
+
 }
server/main/java/kr/co/takensoft/crosswalk/apiManagement/service/ApiManagementService.java
--- server/main/java/kr/co/takensoft/crosswalk/apiManagement/service/ApiManagementService.java
+++ server/main/java/kr/co/takensoft/crosswalk/apiManagement/service/ApiManagementService.java
@@ -104,5 +104,38 @@
     public HashMap<String, Object> userLogin(Map<String, Object> params, HttpServletRequest reuqest) throws Exception;
 
 
+    /**
+     * 등록된 노드 리스트
+     *
+     * @author 김성원
+     * @since 2023.07.03
+     */
+    public List<Long> selectNodeList() throws Exception;
+
+    /**
+     * 등록된 노드 리스트
+     *
+     * @author 김성원
+     * @since 2023.07.03
+     */
+    public Integer updateNodeInfo(HashMap<String,Object> map) throws Exception;
+
+    /**
+     * 서비스중인 노드정보 리스트
+     *
+     * @author 김성원
+     * @since 2023.07.07
+     */
+    public ResultObject selectServiceNodeList(HttpServletRequest request) throws Exception;
+
+    /**
+     * respons 리스트 API용 검색
+     *
+     * @author 김성원
+     * @since 2023.07.07
+     */
+    public ResultObject responsLogInfo(HttpServletRequest request) throws Exception;
+
+
 
 }
server/main/java/kr/co/takensoft/crosswalk/apiManagement/service/impl/ApimanagementServiceImpl.java
--- server/main/java/kr/co/takensoft/crosswalk/apiManagement/service/impl/ApimanagementServiceImpl.java
+++ server/main/java/kr/co/takensoft/crosswalk/apiManagement/service/impl/ApimanagementServiceImpl.java
@@ -16,11 +16,7 @@
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
-import java.net.http.HttpRequest;
 import java.sql.Timestamp;
-import java.text.SimpleDateFormat;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
 import java.util.*;
 
 /**
@@ -62,27 +58,41 @@
         // 업데이트 결과 변수
         int result = 0;
 
-        // 키검출(함수 필요)
-        boolean keyCheck = apiMange.checkApiKey(params.get("api_key").toString().trim());
+
         // api 로그  생성
         ApiLogVO apiLogVo = null;
 
         try {
+            // 키검출(함수 필요)
+            boolean keyCheck = apiMange.checkApiKey(params.get("api_key").toString().trim());
+
             apiLogVo = new ApiLogVO( params.get("nodeID").toString(), Integer.toString((int)params.get("bearingCode")), params.get("api_key").toString());
             apiLogVo.setContents( params.get("contents").toString());
+            apiLogVo.setCntn_ip(params.get("cntn_ip").toString());
 
             // API 키체크
             if(keyCheck) {
 
                 // 서비스 타입
-                int serviceDataType = (int) params.get("serviceDataType");
+                int serviceDataType = 1;
+                if(params.get("serviceDataType") == null){
+                    serviceDataType = (int) params.get("servicemessageType");
+                }else{
+                    serviceDataType = (int) params.get("serviceDataType");
+                }
 
+                int timestamp = 0;
+                if(params.get("timestamp") instanceof Double){
+                    timestamp = Double.valueOf(Optional.ofNullable((double)params.get("timestamp")).orElse(0.0)).intValue();
+                }else{
+                    timestamp = (int)params.get("timestamp");
+                }
 
                 // 객체 생성
                 CrosswalkDataVO crosswalkVo = new CrosswalkDataVO(
                         params.get("nodeID").toString()
                         , Integer.toString((int)params.get("bearingCode"))
-                        , (int)params.get("timestamp"));
+                        , timestamp);
 
                 /******************  보행자 및 대기자 정보 처리  ******************/
                 if (serviceDataType == 0) {
@@ -174,7 +184,7 @@
         // 키검출(함수 필요)
         boolean keyCheck = apiMange.checkApiKey(request.getParameter("apiKey"));
         apiLogVo = new ApiLogVO( nodeID, bearingCode ,apiKey);
-
+        apiLogVo.setCntn_ip(request.getRemoteAddr());
         try {
             // apiKey 검증
             if (keyCheck) {
@@ -200,21 +210,15 @@
                     TSIHubAPI.TrafficSignalStatueNodeInfo trafiicInfo = TSIHubAPI.getTrafficSignalStatueNodeInfo(data.get("nodeId").toString());
 
                     HashMap<String, TSIHubAPI.TrafficSignalStatue> tempData = trafiicInfo.getWalkTrafficSignalStatues();
-                    TSIHubAPI.TrafficSignalStatue tampData2 = tempData.get(data.get("bearingCode").toString());
 
-                    System.out.println("getCurrentSignalRemainTime : " +  tampData2.getCurrentSignalRemainTime());
-                    System.out.println("getCurrentSignalTotalTime : " +  tampData2.getCurrentSignalTotalTime());
+                    if(tempData.get(data.get("bearingCode").toString()) != null) {
+                        TSIHubAPI.TrafficSignalStatue tampData2 = tempData.get(data.get("bearingCode").toString());
 
-
-                    System.out.println("getDirectionCode : " +  tampData2.getDirectionCode());
-                    System.out.println("getTrafficSignalStatue : " +  tampData2.getTrafficSignalStatue());
-                    System.out.println("getDirectionCode : " +  tampData2.getDirectionCode());
-
-                    data.put("pedSignalState",  tampData2.getTrafficSignalStatueCode());
-                    data.put("pedSignalTime", tampData2.getCurrentSignalTotalTime());
-                    data.put("remainingTime", tampData2.getCurrentSignalRemainTime());
-                    data.put("pedSignalStateTimestamp",  trafiicInfo.getTimestamp().getTime());
-
+                        data.put("pedSignalState", tampData2.getTrafficSignalStatueCode());
+                        data.put("pedSignalTime", tampData2.getCurrentSignalTotalTime());
+                        data.put("remainingTime", tampData2.getCurrentSignalRemainTime());
+                        data.put("pedSignalStateTimestamp", trafiicInfo.getTimestamp().getTime());
+                    }
                     if(trafiicInfo.isSCUError() || trafiicInfo.isContradictionError() || trafiicInfo.isContradictionError()){
                         data.put("trafLighAnomInfo", "1");
                     }else{
@@ -293,7 +297,6 @@
         apiLogVo.setTotalRow(apiManagementDAO.getApiResponseLogCount(apiLogVo));
         List<ApiLogVO> list = apiManagementDAO.getApiResponseLog(apiLogVo);
         return list;
-
     }
 
     @Override
@@ -330,14 +333,76 @@
             returnMap.put("message","아이디와 비밀번호가 일치하지 안습니다.");
         }else{
             HttpSession session = reuqest.getSession();
+            String sessions = (String)session.getAttribute("login");
             session.setAttribute("login", "success");
         }
+        return returnMap;
+    }
 
+    @Override
+    public List<Long> selectNodeList() throws Exception {
+        return apiManagementDAO.selectNodeList();
+    }
 
+    @Override
+    public Integer updateNodeInfo(HashMap<String, Object> map) throws Exception {
 
+        return apiManagementDAO.updateNodeInfo(map);
+    }
 
+    @Override
+    public ResultObject selectServiceNodeList(HttpServletRequest request) throws Exception {
 
-        return null;
+        // 결과 메세지 객체 생성
+        ResultObject resultObject = new ResultObject();
+
+        // api_key 검증
+        ApiManageList apiMange = ApiManageList.getInstance();
+
+        // api 로그  생성
+        ApiLogVO apiLogVo = null;
+
+        boolean keyCheck = apiMange.checkApiKey(request.getParameter("apiKey"));
+
+        // API 키 체크
+        if(keyCheck){
+            resultObject.setResultData(apiManagementDAO.selectServiceNodeList());
+        }else{
+            resultObject.not_found_apiKey_error();
+        }
+
+        return resultObject;
+    }
+
+    @Override
+    public ResultObject responsLogInfo(HttpServletRequest request) throws Exception {
+
+        // 결과 메세지 객체 생성
+        ResultObject resultObject = new ResultObject();
+
+        // api_key 검증
+        ApiManageList apiMange = ApiManageList.getInstance();
+
+        // api 로그  생성
+        ApiLogVO apiLogVo = null;
+
+        boolean keyCheck = apiMange.checkApiKey(request.getParameter("apiKey"));
+
+        // API 키 체크
+        if(keyCheck){
+
+            if(StringUtil.isEmpty(request.getParameter("call_dt"))){
+                resultObject.missing_required_value_error();
+            }else{
+                HashMap<String,Object> map = new HashMap<>();
+                map.put("call_dt",request.getParameter("call_dt"));
+                resultObject.setResultData(apiManagementDAO.responsLogInfo(map));
+            }
+        }else{
+            resultObject.not_found_apiKey_error();
+        }
+
+        return resultObject;
     }
 
 
server/main/java/kr/co/takensoft/crosswalk/apiManagement/vo/ApiLogVO.java
--- server/main/java/kr/co/takensoft/crosswalk/apiManagement/vo/ApiLogVO.java
+++ server/main/java/kr/co/takensoft/crosswalk/apiManagement/vo/ApiLogVO.java
@@ -38,6 +38,9 @@
     // 통신 내용
     private String contents;
 
+    // 접속 IP
+    private String cntn_ip;
+
     public ApiLogVO(){
         this.err_yn = "N";
         this.msg = "success";
@@ -143,4 +146,12 @@
     public void setContents(String contents) {
         this.contents = contents;
     }
+
+    public String getCntn_ip() {
+        return cntn_ip;
+    }
+
+    public void setCntn_ip(String cntn_ip) {
+        this.cntn_ip = cntn_ip;
+    }
 }
server/main/java/kr/co/takensoft/crosswalk/apiManagement/web/ApiManagementController.java
--- server/main/java/kr/co/takensoft/crosswalk/apiManagement/web/ApiManagementController.java
+++ server/main/java/kr/co/takensoft/crosswalk/apiManagement/web/ApiManagementController.java
@@ -46,49 +46,28 @@
 
         ServletInputStream inputStream = request.getInputStream();
         String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);
-
+        System.out.println(messageBody);
         HashMap<String, Object> params = objectMapper.readValue(messageBody, new TypeReference<HashMap<String, Object>>(){});
-        params.put("contents", messageBody);
-        params.put("api_key", request.getParameter("key"));
 
-        apiManagementService.setCrossWalkData(params);
+        params.put("contents", messageBody);
+        params.put("cntn_ip", request.getRemoteAddr());
+
+        if(request.getParameter("key") == null){
+            params.put("api_key", request.getParameter("Key"));
+        }else{
+            params.put("api_key", request.getParameter("key"));
+        }
+
+        HashMap<String, Object>  resultData = apiManagementService.setCrossWalkData(params);
 
         ModelAndView mav = new ModelAndView("jsonView");
+        mav.addObject("result", resultData);
+
         return mav;
     }
 
     /**
-     * 보행자 및 대기자 정보 수집
-     *
-     * @author 김성원
-     * @since 2023.06.29
-     */
- /*   @RequestMapping(value = "/aiSafetyCrossing/koroad/pdstrnAndAwiter.json",  method = RequestMethod.POST)
-    public ModelAndView pdstrnAndAwiter (HttpServletRequest request) throws Exception {
-
-        ServletInputStream inputStream = request.getInputStream();
-
-        HashMap<String, Object> params = objectMapper.readValue( StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8), new TypeReference<HashMap<String, Object>>(){});
-
-        ModelAndView mav = new ModelAndView("jsonView");
-        return mav;
-    }*/
-
-    /**
-     * 무단횡단 정보 수집
-     *
-     * @author 김성원
-     * @since 2023.06.29
-     */
-   /* @RequestMapping(value = "/aiSafetyCrossing/koroad/wtrms.json",  method = RequestMethod.POST)
-    public ModelAndView wtrms (HttpServletRequest request) throws Exception {
-
-        ModelAndView mav = new ModelAndView("jsonView");
-        return mav;
-    }*/
-
-    /**
-     * 횡단보도 데이터 호출먹힘
+     * 횡단보도 데이터 호출
      *
      * @author 김성원
      * @since 2023.06.29
@@ -96,11 +75,24 @@
     @RequestMapping(value = "/aiSafetyCrossing/navi/pdstrnDetctAndSignl.json" ,  method = RequestMethod.POST)
     public ModelAndView pdstrnDetctAndSignl (HttpServletRequest request) throws Exception {
 
-        System.out.println("apiKey : "+request.getParameter("apiKey"));
-        System.out.println("nodeID : "+request.getParameter("nodeID"));
-        System.out.println("bearingCode : "+request.getParameter("bearingCode"));
-
         ResultObject resultObject = apiManagementService.getCrossWalkInfo(request);
+
+        ModelAndView mav = new ModelAndView("jsonView");
+        mav.addObject("result", resultObject.getResult());
+
+        return mav;
+    }
+
+    /**
+     * 횡단보도 데이터 호출
+     *
+     * @author 김성원
+     * @since 2023.06.29
+     */
+    @RequestMapping(value = "/aiSafetyCrossing/navi/nodeInfo.json" ,  method = RequestMethod.POST)
+    public ModelAndView nodeInfo (HttpServletRequest request) throws Exception {
+
+        ResultObject resultObject = apiManagementService.selectServiceNodeList(request);
 
         ModelAndView mav = new ModelAndView("jsonView");
         mav.addObject("result", resultObject.getResult());
@@ -180,11 +172,22 @@
      * @since 2023.07.13
      */
     @RequestMapping(value = "/userLogin.json" ,  method = RequestMethod.POST)
-    public ModelAndView userLogin (@RequestBody Map<String, Object> params) throws Exception {
-
+    public ModelAndView userLogin (@RequestBody Map<String, Object> params, HttpServletRequest reuqest) throws Exception {
         ModelAndView mav = new ModelAndView("jsonView");
+        mav.addObject("apiLogList",apiManagementService.userLogin(params,reuqest));
+        return mav;
+    }
 
-
+    /**
+     * 사용자 로그인
+     *
+     * @author 김성원
+     * @since 2023.07.13
+     */
+    @RequestMapping(value = "/aiSafetyCrossing/responsLogInfo.json" ,  method = RequestMethod.POST)
+    public ModelAndView responsLogInfo (@RequestBody Map<String, Object> params, HttpServletRequest reuqest) throws Exception {
+        ModelAndView mav = new ModelAndView("jsonView");
+        mav.addObject("apiLogList",apiManagementService.responsLogInfo(reuqest));
         return mav;
     }
 
server/main/java/kr/co/takensoft/crosswalk/common/service/ScedulerService.java
--- server/main/java/kr/co/takensoft/crosswalk/common/service/ScedulerService.java
+++ server/main/java/kr/co/takensoft/crosswalk/common/service/ScedulerService.java
@@ -3,12 +3,21 @@
 import common.vo.ApiManageList;
 import kr.co.takensoft.crosswalk.apiManagement.service.ApiManagementService;
 import kr.co.takensoft.crosswalk.apiManagement.util.tshub.TSIHubAPI;
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -28,6 +37,7 @@
     @Autowired
     private ApiManagementService apiManagementService;
 
+    private static final String HOST_URL = "https://tsihub-api.koroad.or.kr:18877/api/nodeInfo/8396f144c62283d56d30dec29c4229cdf9bc03de7ed2461a446c0b1bd954ccdd";
 
     // api key 초기화
     @Override
@@ -41,19 +51,82 @@
             apiManageList.addApiKey(key.get("api_key").toString(), key.get("user_nm").toString(), key.get("key_type").toString());
         }
 
+
+
         // 카프카 서버 시작
-
         TSIHubAPI tsiHubAPI= new TSIHubAPI();
-
         List<String> topic = new ArrayList<>();
+        topic.add("1520002200");
+        topic.add("1520002211");
+        topic.add("1520002701");
         topic.add("1520002712");
-
+        topic.add("1520003902");
+        topic.add("1520005022");
         tsiHubAPI.consumeTrafficSignalStatueInfoAsync(topic);
 
-
-
     }
 
+
+    @Scheduled(fixedRate = 10000)
+    public void updateNodeInfo() throws Exception {
+
+        HttpURLConnection conn = null;
+        JSONParser parser = new JSONParser();
+
+        List<Long> node_list = apiManagementService.selectNodeList();
+
+        for(Long data : node_list){
+           // System.out.println(data);
+        }
+
+
+        try {
+            URL url = new URL(HOST_URL);
+            conn = (HttpURLConnection)url.openConnection();
+            conn.setRequestMethod("GET");
+            int responseCode = conn.getResponseCode();
+            if (responseCode == 400 || responseCode == 401 || responseCode == 500 ) {
+                System.out.println(responseCode + " Error!");
+            } else {
+                BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
+                StringBuilder sb = new StringBuilder();
+                String line = "";
+
+                while ((line = br.readLine()) != null) {
+                    sb.append(line);
+                }
+                Object obj = parser.parse(sb.toString());
+                JSONObject jsonObj = (JSONObject)obj;
+                JSONArray jsonArr = (JSONArray)jsonObj.get("resultData");
+
+                if (jsonArr.size() > 0){
+                   // List<HashMap<String, Object>>  node_datas = new ArrayList<>();
+
+                    for(int i=0; i<jsonArr.size(); i++){
+                        JSONObject temp = (JSONObject)jsonArr.get(i);
+                        if(node_list.contains((Long)temp.get("node_id"))){
+                            HashMap<String, Object> temp_map = new HashMap<String, Object>();
+                            temp_map.put("node_id",temp.get("node_id"));
+                            temp_map.put("node_name",temp.get("node_name"));
+                            temp_map.put("latitude",temp.get("latitude"));
+                            temp_map.put("longitude",temp.get("longitude"));
+                            apiManagementService.updateNodeInfo(temp_map);
+                        }
+                    }
+                    // StudyingAzae, Soodal 출력
+                }
+                // System.out.println(sb.toString());
+            }
+        } catch (MalformedURLException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+
     /**
      * 테스트용 더미데이터 생성 스케줄러
      *
 
server/main/java/kr/co/takensoft/crosswalk/test/service/httpTest.java (added)
+++ server/main/java/kr/co/takensoft/crosswalk/test/service/httpTest.java
@@ -0,0 +1,68 @@
+package kr.co.takensoft.crosswalk.test.service;
+
+import kr.co.takensoft.crosswalk.apiManagement.service.ApiManagementService;
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.List;
+
+public class httpTest {
+
+
+    private static final String HOST_URL = "https://tsihub-api.koroad.or.kr:18877/api/nodeInfo/8396f144c62283d56d30dec29c4229cdf9bc03de7ed2461a446c0b1bd954ccdd";
+
+
+    public static void main(String args[]) throws Exception {
+        HttpURLConnection conn = null;
+        JSONParser parser = new JSONParser();
+
+        try {
+            URL url = new URL(HOST_URL);
+            conn = (HttpURLConnection)url.openConnection();
+            conn.setRequestMethod("GET");
+            int responseCode = conn.getResponseCode();
+            if (responseCode == 400 || responseCode == 401 || responseCode == 500 ) {
+                System.out.println(responseCode + " Error!");
+            } else {
+                BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
+                StringBuilder sb = new StringBuilder();
+                String line = "";
+
+                while ((line = br.readLine()) != null) {
+                    sb.append(line);
+                }
+                Object obj = parser.parse(sb.toString());
+                JSONObject jsonObj = (JSONObject)obj;
+                JSONArray jsonArr = (JSONArray)jsonObj.get("resultData");
+
+
+
+                if (jsonArr.size() > 0){
+                    for(int i=0; i<jsonArr.size(); i++){
+                        JSONObject temp = (JSONObject)jsonArr.get(i);
+                        System.out.print(temp.get("node_id"));
+                        System.out.print(", " + temp.get("node_name"));
+                        System.out.print(", " + temp.get("latitude"));
+                        System.out.println(", " + temp.get("longitude"));
+                    }
+                    // StudyingAzae, Soodal 출력
+                }
+               // System.out.println(sb.toString());
+            }
+        } catch (MalformedURLException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}
server/main/resources/mybatis/main/apiManagemant-SQL.xml
--- server/main/resources/mybatis/main/apiManagemant-SQL.xml
+++ server/main/resources/mybatis/main/apiManagemant-SQL.xml
@@ -169,15 +169,17 @@
              , crslk_az
              , api_key
              , contents
+             , cntn_ip
              )
              VALUES(
-               NOW()
+              NOW()
              , #{err_yn}
              , #{msg}
              , #{node_id}
              , #{crslk_az}
              , #{api_key}
-             , #{contents});
+             , #{contents}
+             , #{cntn_ip});
     </insert>
 
     <select id="getApiRequestLogCount" parameterType="ApiLog" resultType="Long">
@@ -207,6 +209,7 @@
         , node_id
         , crslk_az
         , api_key
+        , cntn_ip
         FROM api_request_log arl
         LEFT JOIN (SELECT user_nm, api_key AS api_key_v  FROM api_key_manage) akm ON arl.api_key = akm.api_key_v
         WHERE 1=1
@@ -240,6 +243,7 @@
              , crslk_az
              , api_key
              , contents
+             , cntn_ip
              )
              VALUES(
                NOW()
@@ -249,6 +253,7 @@
              , #{crslk_az}
              , #{api_key}
              , #{contents}
+             , #{cntn_ip}
              );
     </insert>
 
@@ -281,6 +286,7 @@
             , crslk_az
             , api_key
             , user_nm
+            , cntn_ip
         FROM api_response_log arl
         LEFT JOIN (SELECT user_nm, api_key AS api_key_v  FROM api_key_manage) akm ON arl.api_key  = akm.api_key_v
         WHERE 1=1
@@ -420,4 +426,78 @@
     </select>
 
 
+    <!--
+        작성자 : 김성원
+        작성일 : 2023.07.11
+        내용 : 등록중인 노드 리스트
+     -->
+    <select id="selectNodeList" resultType="Long">
+        SELECT node_id::numeric
+        FROM crosswalk
+        group by node_id
+    </select>
+
+    <!--
+        작성자 : 김성원
+        작성일 : 2023.07.11
+        내용 : 서비스 노드 정보 등록
+     -->
+    <update id="updateNodeInfo" parameterType="HashMap">
+        INSERT INTO node_info
+            (
+            node_id
+            , node_name
+            , latitude
+            , longitude
+            )
+        VALUES(
+            #{node_id}
+            , #{node_name}
+            , #{latitude}
+            , #{longitude}
+            )
+        ON CONFLICT (node_id)
+        DO UPDATE
+        SET
+            node_name = #{node_name}
+            , latitude = #{latitude}
+            , longitude = #{longitude}
+    </update>
+
+    <!--
+           작성자 : 김성원
+           작성일 : 2023.07.11
+           내용 : 서비스(운영중인) 노드 정보
+    -->
+    <select id="selectServiceNodeList" resultType="HashMap">
+        SELECT
+            node_id::numeric
+            , node_name
+            , latitude
+            , longitude
+        FROM node_info
+    </select>
+
+    <!--
+           작성자 : 김성원
+           작성일 : 2023.07.11
+           내용 : 외부 전송로그 확인 API
+    -->
+    <select id="responsLogInfo" parameterType="HashMap" resultType="HashMap">
+        select
+             call_dt
+            , err_yn
+            , msg
+            , node_id
+            , crslk_az
+            , arl.api_key
+            , contents
+            , cntn_ip
+            , akm.user_nm
+            from api_response_log arl
+            left join api_key_manage akm on arl.api_key  = akm.api_key
+            where call_dt <![CDATA[>]]> to_timestamp(#{call_dt}, 'YYYY-MM-DD HH24:MI:SS.MS');
+    </select>
+
+
 </mapper>
(No newline at end of file)
Add a comment
List