diff --git a/src/main/java/geoinfo/admins/apiManagement/ApiManagementController.java b/src/main/java/geoinfo/admins/apiManagement/ApiInDataManagementController.java similarity index 55% rename from src/main/java/geoinfo/admins/apiManagement/ApiManagementController.java rename to src/main/java/geoinfo/admins/apiManagement/ApiInDataManagementController.java index cf17f17..c404258 100644 --- a/src/main/java/geoinfo/admins/apiManagement/ApiManagementController.java +++ b/src/main/java/geoinfo/admins/apiManagement/ApiInDataManagementController.java @@ -15,16 +15,16 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import egovframework.rte.psl.dataaccess.util.EgovMap; -import geoinfo.admins.apiManagement.service.ApiManagementService; +import geoinfo.admins.apiManagement.service.ApiInDataManagementService; import geoinfo.comm.util.strUtil; import geoinfo.session.UserInfo; @Controller -public class ApiManagementController { - @Resource(name = "apiManagementService") - private ApiManagementService apiManagementService; +public class ApiInDataManagementController { + @Resource(name = "apiInDataManagementService") + private ApiInDataManagementService apiInDataManagementService; /** * API 관리 > API 통계 화면 @@ -62,7 +62,7 @@ public class ApiManagementController { HashMap result = new HashMap(); String CHART_DATE = sUtil.checkNull((String)params.get("chartDate")); params.put("CHART_DATE", CHART_DATE); - EgovMap chartData = apiManagementService.selectDailyAccessCountByHour(params); + EgovMap chartData = apiInDataManagementService.selectDailyAccessCountByHour(params); result.put("code", "SUCCESS"); result.put("msg", "일일접속량 데이터 조회를 성공했습니다."); @@ -85,7 +85,7 @@ public class ApiManagementController { public HashMap getMgmtApiList(@RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { HashMap result = new HashMap(); - List listData = apiManagementService.selectInfo(params); + List listData = apiInDataManagementService.selectInfo(params); result.put("code", "SUCCESS"); result.put("msg", "관리 API 목록 조회를 성공했습니다."); @@ -117,9 +117,9 @@ public class ApiManagementController { params.put("idxArr", idxArr); params.put("activeYn", activeYn); - apiManagementService.updateInfoStatus(params); + apiInDataManagementService.updateInfoStatus(params); - List listData = apiManagementService.selectInfo(params); + List listData = apiInDataManagementService.selectInfo(params); result.put("code", "SUCCESS"); result.put("msg", "관리 API 목록 조회를 성공했습니다."); @@ -142,7 +142,7 @@ public class ApiManagementController { public HashMap getMgmtApiLogList(@RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { HashMap result = new HashMap(); - List listData = apiManagementService.selectWebApiLogList(params); + List listData = apiInDataManagementService.selectWebApiLogList(params); result.put("code", "SUCCESS"); result.put("msg", "API 호출 로그 목록 조회를 성공했습니다."); @@ -150,106 +150,5 @@ public class ApiManagementController { return result; } - - /** - * API 관리 > API 신청 관리 화면 - * @param params - * @param model - * @param response - * @param request - * @return - * @throws Exception - */ - @RequestMapping(value = "admins/mgmtApi/mgmt-api-key.do") - public String goMgmtApiKey(@RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { - if (!UserInfo.isValidSession(request, response, "admin")) { - return ""; - } - - - model.addAttribute("params", params); - return "admins/mgmtApi/mgmt-api-key"; - } - - /** - * API 관리 > 관리 API 신청 목록 - * @param params - * @param model - * @param response - * @param request - * @return - * @throws Exception - */ - @ResponseBody - @RequestMapping(value = "/admins/mgmtApiKey/list.do", method = RequestMethod.POST) - public HashMap getMgmtApiKeyList(@RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { - HashMap result = new HashMap(); - - List listData = apiManagementService.selectWebApiKeyList(params); - - result.put("code", "SUCCESS"); - result.put("msg", "API 신청 목록 조회를 성공했습니다."); - result.put("data", listData); - - return result; - } - - - /** - * API 관리 > API 호출 활성상태 변경 - * @param params - * @param model - * @param response - * @param request - * @return - * @throws Exception - */ - @ResponseBody - @RequestMapping(value = "/admins/mgmtApiKey/approve.do", method = RequestMethod.POST) - public HashMap modMgmtApiKeyApprove(@RequestParam(value="apiSeq") int apiSeq, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { - HashMap result = new HashMap(); - - HashMap params = new HashMap<>(); - params.put("apiSeq", apiSeq); - params.put("approveYn", "Y"); - - apiManagementService.updateWebApiKeyApprove(params); - - List listData = apiManagementService.selectWebApiKeyList(params); - - result.put("code", "SUCCESS"); - result.put("msg", " API 신청 목록 조회를 성공했습니다."); - result.put("data", listData); - - return result; - } - - /** - * API 관리 > 사용자의 API 신청을 삭제한다. - * @param params - * @param model - * @param response - * @param request - * @return - * @throws Exception - */ - @ResponseBody - @RequestMapping(value = "/admins/mgmtApiKey/revoke.do", method = RequestMethod.POST) - public HashMap modMgmtApiKeyRevoke(@RequestParam(value="apiSeq") int apiSeq, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { - HashMap result = new HashMap(); - - HashMap params = new HashMap<>(); - params.put("apiSeq", apiSeq); - - apiManagementService.deleteWebApiKey(params); - - List listData = apiManagementService.selectWebApiKeyList(params); - - result.put("code", "SUCCESS"); - result.put("msg", " API 신청 목록 조회를 성공했습니다."); - result.put("data", listData); - - return result; - } } diff --git a/src/main/java/geoinfo/admins/apiManagement/ApiKeyManagementController.java b/src/main/java/geoinfo/admins/apiManagement/ApiKeyManagementController.java new file mode 100644 index 0000000..c77ca86 --- /dev/null +++ b/src/main/java/geoinfo/admins/apiManagement/ApiKeyManagementController.java @@ -0,0 +1,130 @@ +package geoinfo.admins.apiManagement; + +import java.util.HashMap; +import java.util.List; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import egovframework.rte.psl.dataaccess.util.EgovMap; +import geoinfo.admins.apiManagement.service.ApiKeyManagementService; +import geoinfo.comm.util.strUtil; +import geoinfo.session.UserInfo; + + + +@Controller +public class ApiKeyManagementController { + @Resource(name = "apiKeyManagementService") + private ApiKeyManagementService apiKeyManagementService; + + /** + * API 관리 > API 신청 관리 화면 + * @param params + * @param model + * @param response + * @param request + * @return + * @throws Exception + */ + @RequestMapping(value = "admins/mgmtApi/mgmt-api-key.do") + public String goMgmtApiKey(@RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { + + if (!UserInfo.isValidSession(request, response, "admin")) { + return ""; + } + + + model.addAttribute("params", params); + return "admins/mgmtApi/mgmt-api-key"; + } + + /** + * API 관리 > 관리 API 신청 목록 + * @param params + * @param model + * @param response + * @param request + * @return + * @throws Exception + */ + @ResponseBody + @RequestMapping(value = "/admins/mgmtApiKey/list.do", method = RequestMethod.POST) + public HashMap getMgmtApiKeyList(@RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { + HashMap result = new HashMap(); + + List listData = apiKeyManagementService.selectWebApiKeyList(params); + + result.put("code", "SUCCESS"); + result.put("msg", "API 신청 목록 조회를 성공했습니다."); + result.put("data", listData); + + return result; + } + + + /** + * API 관리 > API신청 승인상태 변경 + * @param params + * @param model + * @param response + * @param request + * @return + * @throws Exception + */ + @ResponseBody + @RequestMapping(value = "/admins/mgmtApiKey/approve.do", method = RequestMethod.POST) + public HashMap modMgmtApiKeyApprove(@RequestParam(value="apiSeq") int apiSeq, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { + HashMap result = new HashMap(); + + HashMap params = new HashMap<>(); + params.put("apiSeq", apiSeq); + params.put("approveYn", "Y"); + + apiKeyManagementService.updateWebApiKeyApprove(params); + + List listData = apiKeyManagementService.selectWebApiKeyList(params); + + result.put("code", "SUCCESS"); + result.put("msg", " API 신청 목록 조회를 성공했습니다."); + result.put("data", listData); + + return result; + } + + /** + * API 관리 > 사용자의 API 신청을 삭제한다. + * @param params + * @param model + * @param response + * @param request + * @return + * @throws Exception + */ + @ResponseBody + @RequestMapping(value = "/admins/mgmtApiKey/revoke.do", method = RequestMethod.POST) + public HashMap modMgmtApiKeyRevoke(@RequestParam(value="apiSeq") int apiSeq, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { + HashMap result = new HashMap(); + + HashMap params = new HashMap<>(); + params.put("apiSeq", apiSeq); + + apiKeyManagementService.deleteWebApiKey(params); + + List listData = apiKeyManagementService.selectWebApiKeyList(params); + + result.put("code", "SUCCESS"); + result.put("msg", " API 신청 목록 조회를 성공했습니다."); + result.put("data", listData); + + return result; + } +} diff --git a/src/main/java/geoinfo/admins/apiManagement/ApiOutDataManagementController.java b/src/main/java/geoinfo/admins/apiManagement/ApiOutDataManagementController.java new file mode 100644 index 0000000..15b97fd --- /dev/null +++ b/src/main/java/geoinfo/admins/apiManagement/ApiOutDataManagementController.java @@ -0,0 +1,192 @@ +package geoinfo.admins.apiManagement; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import egovframework.rte.psl.dataaccess.util.EgovMap; +import geoinfo.admins.apiManagement.service.ApiOutDataManagementService; +import geoinfo.comm.util.strUtil; +import geoinfo.session.UserInfo; + + + +@Controller +public class ApiOutDataManagementController { + @Resource(name = "apiOutDataManagementService") + private ApiOutDataManagementService apiOutDataManagementService; + + /** + * API 관리 > API 통계(외부 데이타) + * @param params + * @param model + * @param response + * @param request + * @return + * @throws Exception + */ + @RequestMapping(value = "admins/mgmtApi/mgmt-api-outdata.do") + public String goMgmtApiOutdata(@RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { + + if (!UserInfo.isValidSession(request, response, "admin")) { + return ""; + } + + model.addAttribute("params", params); + return "admins/mgmtApi/mgmt-api-outdata"; + } + + /** + * API 관리 > 일일접속량 차트 + * @param params + * @param model + * @param response + * @param request + * @return + * @throws Exception + */ + @ResponseBody + @RequestMapping(value = "/admins/mgmtApi/o_charts.do", method = RequestMethod.POST) + public HashMap getMgmtApiOutDataAccessChart(@RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { + strUtil sUtil = new strUtil(); + HashMap result = new HashMap(); + String CHART_DATE = sUtil.checkNull((String)params.get("chartDate")); + params.put("CHART_DATE", CHART_DATE); + EgovMap chartData = apiOutDataManagementService.selectDailyAccessCountByHour(params); + + result.put("code", "SUCCESS"); + result.put("msg", "일일접속량 데이터 조회를 성공했습니다."); + result.put("data", chartData); + + return result; + } + + /** + * API 관리 > API 호출 통계 + * @param params + * @param model + * @param response + * @param request + * @return + * @throws Exception + */ + @ResponseBody + @RequestMapping(value = "/admins/mgmtApi/o_counts.do", method = RequestMethod.POST) + public HashMap getMgmtApiOutDataCounts(@RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { + strUtil sUtil = new strUtil(); + HashMap result = new HashMap(); + String STAT_TYPE = sUtil.checkNull((String)params.get("statType")); + String COUNT_FROM_DT = sUtil.checkNull((String)params.get("countFromDt")); + String COUNT_TO_DT = sUtil.checkNull((String)params.get("countToDt")); + params.put("COUNT_FROM_DT", COUNT_FROM_DT); + params.put("COUNT_TO_DT", COUNT_TO_DT); + List countList = new ArrayList<>(); + + if("monthly".equals(STAT_TYPE)) { + countList = apiOutDataManagementService.selectWebApiLogMonthlyCount(params); + } else if("yearly".equals(STAT_TYPE)) { + countList = apiOutDataManagementService.selectWebApiLogYearlyCount(params); + } else { // daily(기본) + countList = apiOutDataManagementService.selectWebApiLogDailyCount(params); + + } + + + result.put("code", "SUCCESS"); + result.put("msg", "일일접속량 데이터 조회를 성공했습니다."); + result.put("data", countList); + + return result; + } + + /** + * API 관리 > 관리 API 목록 + * @param params + * @param model + * @param response + * @param request + * @return + * @throws Exception + */ + @ResponseBody + @RequestMapping(value = "/admins/mgmtApi/o_list.do", method = RequestMethod.POST) + public HashMap getMgmtApiOutDataList(@RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { + HashMap result = new HashMap(); + + List listData = apiOutDataManagementService.selectInfo(params); + + result.put("code", "SUCCESS"); + result.put("msg", "관리 API 목록 조회를 성공했습니다."); + result.put("data", listData); + + return result; + } + + /** + * API 관리 > API 호출 활성상태 변경 + * @param params + * @param model + * @param response + * @param request + * @return + * @throws Exception + */ + @ResponseBody + @RequestMapping(value = "/admins/mgmtApi/o_toggleSts.do", method = RequestMethod.POST) + public HashMap modMgmtApiOutDataActiveYn( + @RequestParam(value="idxArr") List idxArr, + @RequestParam(value="activeYn", required=false) String activeYn, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { + HashMap result = new HashMap(); +// String sIdxArr[] = params.get("idx").toString().split(","); + System.out.println("idxArr = " + idxArr); + System.out.println("activeYn = " + activeYn); + + HashMap params = new HashMap<>(); + params.put("idxArr", idxArr); + params.put("activeYn", activeYn); + + apiOutDataManagementService.updateInfoStatus(params); + + List listData = apiOutDataManagementService.selectInfo(params); + + result.put("code", "SUCCESS"); + result.put("msg", "관리 API 목록 조회를 성공했습니다."); + result.put("data", listData); + + return result; + } + + /** + * API 관리 > 관리 API 호출 로그 목록 + * @param params + * @param model + * @param response + * @param request + * @return + * @throws Exception + */ + @ResponseBody + @RequestMapping(value = "/admins/mgmtApi/o_logList.do", method = RequestMethod.POST) + public HashMap getMgmtApiOutDataLogList(@RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { + HashMap result = new HashMap(); + + List listData = apiOutDataManagementService.selectWebApiLogList(params); + + result.put("code", "SUCCESS"); + result.put("msg", "API 호출 로그 목록 조회를 성공했습니다."); + result.put("data", listData); + + return result; + } +} diff --git a/src/main/java/geoinfo/admins/apiManagement/service/ApiInDataManagementMapper.java b/src/main/java/geoinfo/admins/apiManagement/service/ApiInDataManagementMapper.java new file mode 100644 index 0000000..8469234 --- /dev/null +++ b/src/main/java/geoinfo/admins/apiManagement/service/ApiInDataManagementMapper.java @@ -0,0 +1,21 @@ +package geoinfo.admins.apiManagement.service; + +import java.util.HashMap; +import java.util.List; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import egovframework.rte.psl.dataaccess.util.EgovMap; + +@Mapper("apiInDataManagementMapper") +public interface ApiInDataManagementMapper { + + public EgovMap selectDailyAccessCountByHour(HashMap params) throws Exception; + + public List selectInfo(HashMap params) throws Exception; + + public List selectWebApiLogList(HashMap params) throws Exception; + + public void saveInfo(HashMap params) throws Exception; + + public void updateInfoStatus(HashMap params) throws Exception; +} diff --git a/src/main/java/geoinfo/admins/apiManagement/service/ApiInDataManagementService.java b/src/main/java/geoinfo/admins/apiManagement/service/ApiInDataManagementService.java new file mode 100644 index 0000000..9ff5c1e --- /dev/null +++ b/src/main/java/geoinfo/admins/apiManagement/service/ApiInDataManagementService.java @@ -0,0 +1,22 @@ +package geoinfo.admins.apiManagement.service; + +import java.util.HashMap; +import java.util.List; + +import egovframework.rte.psl.dataaccess.util.EgovMap; + + + +public interface ApiInDataManagementService { + + public EgovMap selectDailyAccessCountByHour(HashMap params) throws Exception; + + public List selectInfo(HashMap params) throws Exception; + + public List selectWebApiLogList(HashMap params) throws Exception; + + public void saveInfo(HashMap params) throws Exception; + + public void updateInfoStatus(HashMap params) throws Exception; + +} diff --git a/src/main/java/geoinfo/admins/apiManagement/service/ApiKeyManagementMapper.java b/src/main/java/geoinfo/admins/apiManagement/service/ApiKeyManagementMapper.java new file mode 100644 index 0000000..eb6bc33 --- /dev/null +++ b/src/main/java/geoinfo/admins/apiManagement/service/ApiKeyManagementMapper.java @@ -0,0 +1,17 @@ +package geoinfo.admins.apiManagement.service; + +import java.util.HashMap; +import java.util.List; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import egovframework.rte.psl.dataaccess.util.EgovMap; + +@Mapper("apiKeyManagementMapper") +public interface ApiKeyManagementMapper { + + public List selectWebApiKeyList(HashMap params) throws Exception; + + public void updateWebApiKeyApprove(HashMap params) throws Exception; + + public void deleteWebApiKey(HashMap params) throws Exception; +} diff --git a/src/main/java/geoinfo/admins/apiManagement/service/ApiKeyManagementService.java b/src/main/java/geoinfo/admins/apiManagement/service/ApiKeyManagementService.java new file mode 100644 index 0000000..786ab05 --- /dev/null +++ b/src/main/java/geoinfo/admins/apiManagement/service/ApiKeyManagementService.java @@ -0,0 +1,17 @@ +package geoinfo.admins.apiManagement.service; + +import java.util.HashMap; +import java.util.List; + +import egovframework.rte.psl.dataaccess.util.EgovMap; + + + +public interface ApiKeyManagementService { + + public List selectWebApiKeyList(HashMap params) throws Exception; + + public void updateWebApiKeyApprove(HashMap params) throws Exception; + + public void deleteWebApiKey(HashMap params) throws Exception; +} diff --git a/src/main/java/geoinfo/admins/apiManagement/service/ApiManagementMapper.java b/src/main/java/geoinfo/admins/apiManagement/service/ApiOutDataManagementMapper.java similarity index 52% rename from src/main/java/geoinfo/admins/apiManagement/service/ApiManagementMapper.java rename to src/main/java/geoinfo/admins/apiManagement/service/ApiOutDataManagementMapper.java index c89ef0e..4896b22 100644 --- a/src/main/java/geoinfo/admins/apiManagement/service/ApiManagementMapper.java +++ b/src/main/java/geoinfo/admins/apiManagement/service/ApiOutDataManagementMapper.java @@ -6,10 +6,16 @@ import java.util.List; import egovframework.rte.psl.dataaccess.mapper.Mapper; import egovframework.rte.psl.dataaccess.util.EgovMap; -@Mapper("ApiManagementMapper") -public interface ApiManagementMapper { +@Mapper("apiOutDataManagementMapper") +public interface ApiOutDataManagementMapper { public EgovMap selectDailyAccessCountByHour(HashMap params) throws Exception; + + public List selectWebApiLogDailyCount(HashMap params) throws Exception; + + public List selectWebApiLogMonthlyCount(HashMap params) throws Exception; + + public List selectWebApiLogYearlyCount(HashMap params) throws Exception; public List selectInfo(HashMap params) throws Exception; @@ -17,17 +23,6 @@ public interface ApiManagementMapper { public void saveInfo(HashMap params) throws Exception; -// public EgovMap selectDetailInfo(HashMap params) throws Exception; - -// public void deleteInfo(HashMap params) throws Exception; - -// public EgovMap selectModifyInfo(HashMap params) throws Exception; - public void updateInfoStatus(HashMap params) throws Exception; - public List selectWebApiKeyList(HashMap params) throws Exception; - - public void updateWebApiKeyApprove(HashMap params) throws Exception; - - public void deleteWebApiKey(HashMap params) throws Exception; } diff --git a/src/main/java/geoinfo/admins/apiManagement/service/ApiManagementService.java b/src/main/java/geoinfo/admins/apiManagement/service/ApiOutDataManagementService.java similarity index 51% rename from src/main/java/geoinfo/admins/apiManagement/service/ApiManagementService.java rename to src/main/java/geoinfo/admins/apiManagement/service/ApiOutDataManagementService.java index bb57386..0c7e16b 100644 --- a/src/main/java/geoinfo/admins/apiManagement/service/ApiManagementService.java +++ b/src/main/java/geoinfo/admins/apiManagement/service/ApiOutDataManagementService.java @@ -7,27 +7,21 @@ import egovframework.rte.psl.dataaccess.util.EgovMap; -public interface ApiManagementService { +public interface ApiOutDataManagementService { public EgovMap selectDailyAccessCountByHour(HashMap params) throws Exception; + + public List selectWebApiLogDailyCount(HashMap params) throws Exception; + + public List selectWebApiLogMonthlyCount(HashMap params) throws Exception; + + public List selectWebApiLogYearlyCount(HashMap params) throws Exception; public List selectInfo(HashMap params) throws Exception; public List selectWebApiLogList(HashMap params) throws Exception; public void saveInfo(HashMap params) throws Exception; - -// public EgovMap selectDetailInfo(HashMap params) throws Exception; - -// public void deleteInfo(HashMap params) throws Exception; - -// public EgovMap selectModifyInfo(HashMap params) throws Exception; - + public void updateInfoStatus(HashMap params) throws Exception; - - public List selectWebApiKeyList(HashMap params) throws Exception; - - public void updateWebApiKeyApprove(HashMap params) throws Exception; - - public void deleteWebApiKey(HashMap params) throws Exception; } diff --git a/src/main/java/geoinfo/admins/apiManagement/service/impl/ApiInDataManagementServiceImpl.java b/src/main/java/geoinfo/admins/apiManagement/service/impl/ApiInDataManagementServiceImpl.java new file mode 100644 index 0000000..9cf2082 --- /dev/null +++ b/src/main/java/geoinfo/admins/apiManagement/service/impl/ApiInDataManagementServiceImpl.java @@ -0,0 +1,45 @@ +package geoinfo.admins.apiManagement.service.impl; + +import java.util.HashMap; +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import egovframework.rte.psl.dataaccess.util.EgovMap; +import geoinfo.admins.apiManagement.service.ApiInDataManagementMapper; +import geoinfo.admins.apiManagement.service.ApiInDataManagementService; + +@Service("apiInDataManagementService") +public class ApiInDataManagementServiceImpl implements ApiInDataManagementService { + + @Resource(name = "apiInDataManagementMapper") + private ApiInDataManagementMapper masterMapper; + + @Override + public EgovMap selectDailyAccessCountByHour(HashMap params) throws Exception { + return masterMapper.selectDailyAccessCountByHour(params); + } + + @Override + public List selectInfo(HashMap params) throws Exception { + return masterMapper.selectInfo(params); + } + + @Override + public List selectWebApiLogList(HashMap params) throws Exception { + return masterMapper.selectWebApiLogList(params); + } + + @Override + public void saveInfo(HashMap params) throws Exception { + masterMapper.saveInfo(params); + } + + @Override + public void updateInfoStatus(HashMap params) throws Exception { + masterMapper.updateInfoStatus(params); + } + +} diff --git a/src/main/java/geoinfo/admins/apiManagement/service/impl/ApiKeyManagementServiceImpl.java b/src/main/java/geoinfo/admins/apiManagement/service/impl/ApiKeyManagementServiceImpl.java new file mode 100644 index 0000000..19de7aa --- /dev/null +++ b/src/main/java/geoinfo/admins/apiManagement/service/impl/ApiKeyManagementServiceImpl.java @@ -0,0 +1,35 @@ +package geoinfo.admins.apiManagement.service.impl; + +import java.util.HashMap; +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import geoinfo.admins.apiManagement.service.ApiKeyManagementMapper; +import geoinfo.admins.apiManagement.service.ApiKeyManagementService; + +@Service("apiKeyManagementService") +public class ApiKeyManagementServiceImpl implements ApiKeyManagementService { + + @Resource(name = "apiKeyManagementMapper") + private ApiKeyManagementMapper masterMapper; + + @Override + public List selectWebApiKeyList(HashMap params) throws Exception { + return masterMapper.selectWebApiKeyList(params); + } + + @Override + public void updateWebApiKeyApprove(HashMap params) throws Exception { + masterMapper.updateWebApiKeyApprove(params); + } + + @Override + public void deleteWebApiKey(HashMap params) throws Exception { + masterMapper.deleteWebApiKey(params); + + } + +} diff --git a/src/main/java/geoinfo/admins/apiManagement/service/impl/ApiManagementServiceImpl.java b/src/main/java/geoinfo/admins/apiManagement/service/impl/ApiManagementServiceImpl.java deleted file mode 100644 index 22decf7..0000000 --- a/src/main/java/geoinfo/admins/apiManagement/service/impl/ApiManagementServiceImpl.java +++ /dev/null @@ -1,76 +0,0 @@ -package geoinfo.admins.apiManagement.service.impl; - -import java.util.HashMap; -import java.util.List; - -import javax.annotation.Resource; - -import org.springframework.stereotype.Service; - -import egovframework.rte.psl.dataaccess.util.EgovMap; -import geoinfo.admins.apiManagement.service.ApiManagementMapper; -import geoinfo.admins.apiManagement.service.ApiManagementService; - -@Service("apiManagementService") -public class ApiManagementServiceImpl implements ApiManagementService { - - @Resource(name = "ApiManagementMapper") - private ApiManagementMapper masterMapper; - - @Override - public EgovMap selectDailyAccessCountByHour(HashMap params) throws Exception { - return masterMapper.selectDailyAccessCountByHour(params); - } - - @Override - public List selectInfo(HashMap params) throws Exception { - return masterMapper.selectInfo(params); - } - - @Override - public List selectWebApiLogList(HashMap params) throws Exception { - return masterMapper.selectWebApiLogList(params); - } - - @Override - public void saveInfo(HashMap params) throws Exception { - masterMapper.saveInfo(params); - } - -// @Override -// public EgovMap selectDetailInfo(HashMap params) throws Exception { -// return masterMapper.selectDetailInfo(params); -// } - -// @Override -// public void deleteInfo(HashMap params) throws Exception { -// masterMapper.deleteInfo(params); -// } - -// @Override -// public EgovMap selectModifyInfo(HashMap params) throws Exception { -// return masterMapper.selectModifyInfo(params); -// } - - @Override - public void updateInfoStatus(HashMap params) throws Exception { - masterMapper.updateInfoStatus(params); - } - - @Override - public List selectWebApiKeyList(HashMap params) throws Exception { - return masterMapper.selectWebApiKeyList(params); - } - - @Override - public void updateWebApiKeyApprove(HashMap params) throws Exception { - masterMapper.updateWebApiKeyApprove(params); - } - - @Override - public void deleteWebApiKey(HashMap params) throws Exception { - masterMapper.deleteWebApiKey(params); - - } - -} diff --git a/src/main/java/geoinfo/admins/apiManagement/service/impl/ApiOutDataManagementServiceImpl.java b/src/main/java/geoinfo/admins/apiManagement/service/impl/ApiOutDataManagementServiceImpl.java new file mode 100644 index 0000000..25abcf9 --- /dev/null +++ b/src/main/java/geoinfo/admins/apiManagement/service/impl/ApiOutDataManagementServiceImpl.java @@ -0,0 +1,59 @@ +package geoinfo.admins.apiManagement.service.impl; + +import java.util.HashMap; +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import egovframework.rte.psl.dataaccess.util.EgovMap; +import geoinfo.admins.apiManagement.service.ApiOutDataManagementMapper; +import geoinfo.admins.apiManagement.service.ApiOutDataManagementService; + +@Service("apiOutDataManagementService") +public class ApiOutDataManagementServiceImpl implements ApiOutDataManagementService { + + @Resource(name = "apiOutDataManagementMapper") + private ApiOutDataManagementMapper masterMapper; + + @Override + public EgovMap selectDailyAccessCountByHour(HashMap params) throws Exception { + return masterMapper.selectDailyAccessCountByHour(params); + } + + @Override + public List selectWebApiLogDailyCount(HashMap params) throws Exception { + return masterMapper.selectWebApiLogDailyCount(params); + } + + @Override + public List selectWebApiLogMonthlyCount(HashMap params) throws Exception { + return masterMapper.selectWebApiLogMonthlyCount(params); + } + + @Override + public List selectWebApiLogYearlyCount(HashMap params) throws Exception { + return masterMapper.selectWebApiLogYearlyCount(params); + } + + @Override + public List selectInfo(HashMap params) throws Exception { + return masterMapper.selectInfo(params); + } + + @Override + public List selectWebApiLogList(HashMap params) throws Exception { + return masterMapper.selectWebApiLogList(params); + } + + @Override + public void saveInfo(HashMap params) throws Exception { + masterMapper.saveInfo(params); + } + + @Override + public void updateInfoStatus(HashMap params) throws Exception { + masterMapper.updateInfoStatus(params); + } +} diff --git a/src/main/resources/geoinfo/sqlmap/mappers/admins/mgmt/Mgmt_Api_SQL.xml b/src/main/resources/geoinfo/sqlmap/mappers/admins/mgmt/Mgmt_Api_Indata_SQL.xml similarity index 63% rename from src/main/resources/geoinfo/sqlmap/mappers/admins/mgmt/Mgmt_Api_SQL.xml rename to src/main/resources/geoinfo/sqlmap/mappers/admins/mgmt/Mgmt_Api_Indata_SQL.xml index 430332b..7e3ea91 100644 --- a/src/main/resources/geoinfo/sqlmap/mappers/admins/mgmt/Mgmt_Api_SQL.xml +++ b/src/main/resources/geoinfo/sqlmap/mappers/admins/mgmt/Mgmt_Api_Indata_SQL.xml @@ -1,7 +1,7 @@ - + - - - - - - - - @@ -121,46 +94,4 @@ ) - - - - - - - - UPDATE WEB_API_KEY - SET - - APPROVE_YN = #{approveYn} - - WHERE API_SEQ IN (#{apiSeq}) - - - - - DELETE - FROM WEB_API_KEY - WHERE API_SEQ IN (#{apiSeq}) - \ No newline at end of file diff --git a/src/main/resources/geoinfo/sqlmap/mappers/admins/mgmt/Mgmt_Api_Key_SQL.xml b/src/main/resources/geoinfo/sqlmap/mappers/admins/mgmt/Mgmt_Api_Key_SQL.xml new file mode 100644 index 0000000..054dc20 --- /dev/null +++ b/src/main/resources/geoinfo/sqlmap/mappers/admins/mgmt/Mgmt_Api_Key_SQL.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + UPDATE WEB_API_KEY + SET + + APPROVE_YN = #{approveYn} + + WHERE API_SEQ IN (#{apiSeq}) + + + + + DELETE + FROM WEB_API_KEY + WHERE API_SEQ IN (#{apiSeq}) + + \ No newline at end of file diff --git a/src/main/resources/geoinfo/sqlmap/mappers/admins/mgmt/Mgmt_Api_Outdata_SQL.xml b/src/main/resources/geoinfo/sqlmap/mappers/admins/mgmt/Mgmt_Api_Outdata_SQL.xml new file mode 100644 index 0000000..6a98884 --- /dev/null +++ b/src/main/resources/geoinfo/sqlmap/mappers/admins/mgmt/Mgmt_Api_Outdata_SQL.xml @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE WEB_API_INBOUND + SET + + ACTIVE_YN = #{activeYn} + + WHERE IDX IN ( + + #{item} + + ) + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/admins/mgmtApi/api-request-statistics-index.jsp b/src/main/webapp/WEB-INF/views/admins/mgmtApi/api-request-statistics-index.jsp index 7ad1702..352c1e5 100644 --- a/src/main/webapp/WEB-INF/views/admins/mgmtApi/api-request-statistics-index.jsp +++ b/src/main/webapp/WEB-INF/views/admins/mgmtApi/api-request-statistics-index.jsp @@ -3,10 +3,13 @@ <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> - - + + - + + + + @@ -14,16 +17,129 @@ - + @@ -190,10 +317,79 @@

📈 일일 접속량

- + +
+ +
+ +
+
+

국토지반 API 호출 통계

+ +
+ + + +
+
+ ~ + +
+
+

일별 API 호출 현황

+ + + + + + + + + + + +
날짜API 명호출 건수
표시 할 통계데이타가 없습니다.
+
+
+

월별 API 호출 현황

+ + + + + + + + + + + +
API 명총 호출 건수
표시 할 통계데이타가 없습니다.
+
+
+

연도별 API 호출 현황

+ + + + + + + + + + + +
연도API 명총 호출 건수
표시 할 통계데이타가 없습니다.
+
+
+
+
@@ -315,15 +511,103 @@ } let trafficChart; // 전역 변수 + + + var today = new Date(); // (기준)오늘 날짜 + var thisYear = today.getFullYear(); // (기준)올해연도 + var thisMonth = today.getMonth+1; // (기준)이번달 + var toDate = new Date(today.getFullYear(), today.getMonth(), 1); // (기준)이번달1일 + + var weekAgo = new Date(); // 7일 전 날짜 + weekAgo.setDate(today.getDate() - 7); + + var fvMonthAgo = new Date(); + fvMonthAgo.setMonth(toDate.getMonth() -5); $(document).ready(function(){ + // ---------------------------------------------------- + // 1. 날짜 선택기 초기화 + // ---------------------------------------------------- + // datepicker - $("#chartDate").datepicker({ - format: "yyyy-mm-dd", + $("#chartDate, #count_from_dt, #count_to_dt").datepicker({ + format: "yyyy-mm-dd", language: "ko", - autoclose: true + autoclose: true, + todayHighlight: true, + container: $("#chartDate").closest(".datepicker-wrapper") }).datepicker("setDate", new Date()); + + $("#count_from_dt").datepicker("setDate", weekAgo); // 국토지반 API 호출 통계 시작일 셋팅(저번주) - // API 호출 현황 + // ---------------------------------------------------- + // 2. 탭 전환 처리 + // ---------------------------------------------------- + $('.tab-link').on('click', function() { + const targetId = $(this).data('tab'); + + $('.tab-link').removeClass('active'); + $(this).addClass('active'); + + $('.tab-content').removeClass('active'); + $('#' + targetId).addClass('active'); + + $("#count_from_dt, #count_to_dt").datepicker('destroy'); // datepicker 재선언(format 변경) + // 일별 탭 클릭 시 + if (targetId === 'daily') { + // 월 단위 datepicker 재초기화 + $("#count_from_dt, #count_to_dt").datepicker({ + format: "yyyy-mm-dd", + language: "ko", + autoclose: true, + minViewMode: 0, // 월 단위 + todayHighlight: true, + container: $("#count_from_dt").closest(".datepicker-wrapper") + }); + $("#count_to_dt").datepicker("setDate", today); // 국토지반 API 호출 통계 시작일 셋팅(저번주) + $("#count_from_dt").datepicker("setDate", weekAgo); // 국토지반 API 호출 통계 시작일 셋팅(저번주) + } + // 월별 탭 클릭 시 + if (targetId === 'monthly') { + // 월 단위 datepicker 재초기화 + $("#count_from_dt, #count_to_dt").datepicker({ + format: "yyyy-mm", + language: "ko", + autoclose: true, + minViewMode: 1, // 월 단위 + todayHighlight: true, + container: $("#count_from_dt").closest(".datepicker-wrapper") + }); + + $("#count_from_dt").datepicker("setDate", fvMonthAgo); + $("#count_to_dt").datepicker("setDate", thisMonth); + + $("#count_from_dt").val($("#count_from_dt").val().substr(0,7)); + $("#count_to_dt").val($("#count_to_dt").val().substr(0,7)); + } + + // 연도별 탭 클릭 시 + if (targetId === 'yearly') { + // 월 단위 datepicker 재초기화 + $("#count_from_dt, #count_to_dt").datepicker({ + minViewMode: 'years', + format: "yyyy", + language: "ko", + autoclose: true, +// minViewMode: 1, // 월 단위 + todayHighlight: true, + container: $("#count_from_dt").closest(".datepicker-wrapper") + }); + + $("#count_to_dt").datepicker("setDate", new Date(thisYear, 0, 1)); + $("#count_from_dt").datepicker("setDate", new Date((thisYear -5), 0, 1)); + $("#count_to_dt").val($("#count_to_dt").val().substr(0,4)) + $("#count_from_dt").val($("#count_from_dt").val().substr(0,4)) + } + }); + + // ---------------------------------------------------- + // 3. API 호출 현황 초기 로드 + // ---------------------------------------------------- animateValue("successRate", 0, 100, 1500); animateValue("failRate", 0, 0, 1500); animateValue("delayRate", 0, 0, 1500); @@ -332,6 +616,9 @@ // API 호출 통제 목록 조회 getMgmtApiList(); + // API 호출 통계 > 일별 통계 + getApiStatDaily(); + // API 호출로그 목록 조회 getMgmtApiLogList(); @@ -342,6 +629,15 @@ $(document).on('change', '#chartDate', function() { getMgmtApiChart(); }); + + // API 호출 현황 건수 - 날짜 변경 시 차트 다시 로드 + $(document).on('change', '#count_from_dt, #count_to_dt', function() { +// console.log(validDate()) + if(!validDate()){ + return; + } + getApiStatDaily(); + }); }); // API 호출 통제 목록 조회 @@ -432,6 +728,74 @@ return html; } + // API 호출 통계 > 일별 통계 + function getApiStatDaily(){ + var statType = $('.stats-container > .tab-nav').find('.active').data("tab"); + var fromDt = $('#count_from_dt').val(); + var toDt = $('#count_to_dt').val(); + // 날짜데이터가 올바르게 셋팅되지 않았을때는 요청하지 않는다. + if (statType === "monthly") { + if (fromDt.length < 7 || toDt.length < 7 ) return; + } else if (statType === "yearly") { + if (fromDt.length < 4 || toDt.length < 4 ) return; + } else { // statType === "daily" + if (fromDt.length < 10 || toDt.length < 10 ) return; + } + $.ajax({ + type : "POST", + url : "/admins/mgmtApi/o_counts.do" , + data : { + statType : statType, + countFromDt: $('#count_from_dt').val(), + countToDt: $('#count_to_dt').val() + }, + dataType :"json", + success : function(res){ // res.code, res.msg, res.data + if (res.code == "SUCCESS") { + let countList = res.data; //Array List + let $listContainer; + if (statType === "monthly") { + $listContainer = $("#monthly-tbody"); + } else if (statType === "yearly") { + $listContainer = $("#yearly-tbody"); + } else { // statType === "daily" + $listContainer = $("#daily-tbody"); + } + + $listContainer.empty(); // 기존 내용 제거 + + if (!countList.length > 1) { + $listContainer.append('표시 할 통계데이타가 없습니다.'); + return; + } + // 데이터 반복 + $.each(res.data, function(i, item) { + // DOM에 추가 + $listContainer.append(drawApiCountList(item)); + }); + } else { + alert("API 호출 로그 목록 조회중 오류가 발생하였습니다. 다시 시도해주세요."); + } + }, + error : function(response){ + alert("API 호출 로그 목록 조회중 내부 오류가 발생하였습니다. 다시 시도해주세요."); + } + }); + }; + + function drawApiCountList(item) { + // HTML 문자열 생성 + const html = ` + + \${item.period} + + \${item.accessCount} + + `; + return html; + } + + // API 호출 로그 목록 조회 function getMgmtApiLogList(){ $.ajax({ @@ -479,7 +843,6 @@ // API 호출 로그 목록 조회 function getMgmtApiChart(){ var chartDate = $('#chartDate').val(); - console.log($('#chartDate').val()) $.ajax({ type : "POST", url : "/admins/mgmtApi/charts.do" , @@ -563,6 +926,19 @@ raw.slice(10, 12) ); } + + /** + * API 호출 통계 날짜 유효검사 + */ + function validDate(){ + var statType = $('.stats-container > .tab-nav').find('.active').data("tab"); + var from_dt_val = $('#count_from_dt').val(); + var to_dt_val = $('#count_to_dt').val(); + if ("daily" === statType && (from_dt_val.length != 10 || to_dt_val.length != 10)) return false; // YYYY-MM-DD + if ("monthly" === statType && (from_dt_val.length != 7 || to_dt_val.length != 7)) return false; // YYYY-MM + if ("yearly" === statType && (from_dt_val.length != 4 || to_dt_val.length != 4)) return false; // YYYY + return true; + } // 예시 데이터 (100개 생성) // const apiLogs = Array.from({ length: 100 }, (_, i) => ({ diff --git a/src/main/webapp/WEB-INF/views/admins/mgmtApi/left.jsp b/src/main/webapp/WEB-INF/views/admins/mgmtApi/left.jsp index 3d7525b..7cf32c2 100644 --- a/src/main/webapp/WEB-INF/views/admins/mgmtApi/left.jsp +++ b/src/main/webapp/WEB-INF/views/admins/mgmtApi/left.jsp @@ -75,7 +75,14 @@ img { border:0; } + + + + + diff --git a/src/main/webapp/WEB-INF/views/admins/mgmtApi/mgmt-api-outdata.jsp b/src/main/webapp/WEB-INF/views/admins/mgmtApi/mgmt-api-outdata.jsp new file mode 100644 index 0000000..a46d96f --- /dev/null +++ b/src/main/webapp/WEB-INF/views/admins/mgmtApi/mgmt-api-outdata.jsp @@ -0,0 +1,629 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> + + + + + + + + + + + + + + + + + + +
+

📈 일일 접속량

+ + +
+ +
+ +
+
+

API 호출 현황

+
+ +
+
+
+
+
호출 성공
+ 3초 이내 응답 +
+
+
0%
+
+ +
+
+
+
+
호출 실패
+ API 실패 +
+
+
0%
+
+ +
+
+
🕓
+
+
호출 지연
+ 3초 초과 지연 +
+
+
0%
+
+ +
+
+
⚠️
+
+
호출 오류
+ 오류 응답 +
+
+
0%
+
+
+ + +
+
+

API 목록

+ + + + +
+ +
+
+
+
표시 할 API 목록이 존재하지 않습니다.
+
API를 등록해주세요.
+
+
+
+
+
+ + +
+

API 호출 로그

+ + + + + + + + + + + + + + + + + + + + + + + +
No.API_KEYACCESS_IDACCESS_TYPEACCESS_TABLEACCESS_DTIP_ADDRESS
+ + + +
+ + + + +