shjung 2 年 前
コミット
dd6e54a277

+ 7 - 3
src/main/java/com/its/op/controller/its/LoginController.java

@@ -5,6 +5,7 @@ import com.its.op.config.JasyptConfig;
 import com.its.op.dto.its.LoginDto;
 import com.its.op.dto.its.common.UserInfoDto;
 import com.its.op.dto.its.oper.UserMenuDto;
+import com.its.op.security.UserInfrVo;
 import com.its.op.security.WebConstants;
 import com.its.op.security.WebMvcConfig;
 import com.its.op.service.its.LoginService;
@@ -147,7 +148,7 @@ public class LoginController {
         String loginHms = "";
         if (cookies != null && cookies.length > 0) {
             for (Cookie cookie : cookies) {
-                log.info("logout: {}, {}", cookie.getName(), cookie.getValue());
+                log.info("logout cookie: {}, {}", cookie.getName(), cookie.getValue());
             }
             encUserId = CookieUtils.getCookie(request, WebConstants.USER_UUID);
             loginHms = CookieUtils.getCookie(request, WebConstants.USER_TIME);
@@ -160,8 +161,8 @@ public class LoginController {
                     .user_id(WebMvcConfig.decUserId(userId))
                     .login_hms(loginHms)
                     .build();
-            log.info("logout: {}", req.toString());
             this.service.logout(req);
+            log.info("logout history: {}", req);
         }
 
 //        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
@@ -175,7 +176,10 @@ public class LoginController {
 
         HttpSession session = request.getSession(false);
         if (session != null) {
-            log.info("logout: session: {}", session);
+            UserInfrVo userInfr = (UserInfrVo) session.getAttribute(WebConstants.LOGIN_USER);
+            if (userInfr != null) {
+                log.info("logout User: {}, {}", userInfr.getUserId(), userInfr.getOperSystId());
+            }
             session.invalidate();   // session remove
         }
         new SecurityContextLogoutHandler().logout(request, response, SecurityContextHolder.getContext().getAuthentication());

+ 1 - 1
src/main/java/com/its/op/dao/repository/its/scrs/TbScIxrCmraSttsHsRepository.java

@@ -24,7 +24,7 @@ public interface TbScIxrCmraSttsHsRepository extends JpaRepository<TbScIxrCmraSt
             "SELECT 'CCAM' AS fcltType, A.CMRA_ID AS fcltNmbr, A.CMRA_ID AS fcltId, A.ISTL_LCTN AS fcltNm,                           " +
             "       B.CONN_STTS_CD AS commSttsCd, B.DOOR_STTS_CD AS doorSttsCd, NVL(B.CBOX_TMPR, 0) AS cboxTmpr, B.CRTN_DT AS crtnDt " +
             "  FROM TB_SC_IXR_CMRA_MNGM A,                                                                                           " +
-            "       (SELECT IXR_ID, CMRA_ID, DECODE(CMRA_STTS, 0, 'CMS0', 'CMS1') AS CONN_STTS_CD,                                   " +
+            "       (SELECT IXR_ID, CMRA_ID, DECODE(CMRA_STTS, 1, 'CMS0', 'CMS1') AS CONN_STTS_CD,                                   " +
             "               'CDS0' AS DOOR_STTS_CD, 0 AS CBOX_TMPR, CLCT_DT AS CRTN_DT                                               " +
             "          FROM TB_SC_IXR_CMRA_STTS                                                                                      " +
             "         WHERE CLCT_DT BETWEEN :fromDt AND :toDt                                                                        " +

+ 4 - 3
src/main/java/com/its/op/dto/its/facility/FcltSttsErrorDto.java

@@ -1,6 +1,7 @@
 package com.its.op.dto.its.facility;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.op.global.CmmnCdManager;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -59,8 +60,8 @@ public class FcltSttsErrorDto implements Serializable {
     private String cboxTmprDesc;
 
     public void makeSttsDesc(String fcltType) {
-        if      (StringUtils.equals("CMS0", this.commSttsCd)) this.commSttsDesc = "정상";
-        else if (StringUtils.equals("CMS1", this.commSttsCd)) this.commSttsDesc = "통신두절";
+        if      (StringUtils.equals(CmmnCdManager.CMNC_STTS_NORMAL, this.commSttsCd)) this.commSttsDesc = "정상";
+        else if (StringUtils.equals(CmmnCdManager.CMNC_STTS_ERROR, this.commSttsCd)) this.commSttsDesc = "통신두절";
         else if (StringUtils.equals("-",    this.commSttsCd)) this.commSttsDesc = "-";
         else                                                  this.commSttsDesc = "정보없음";
 
@@ -72,7 +73,7 @@ public class FcltSttsErrorDto implements Serializable {
             this.cboxTmprDesc = "-";
         }
         else {
-            if (StringUtils.equals("CMS0", this.commSttsCd)) {
+            if (StringUtils.equals(CmmnCdManager.CMNC_STTS_NORMAL, this.commSttsCd)) {
                 if      (StringUtils.equals("CDS0", this.doorSttsCd)) this.doorSttsDesc = "닫힘";
                 else if (StringUtils.equals("CDS1", this.doorSttsCd)) this.doorSttsDesc = "열림";
                 else if (StringUtils.equals("-", this.doorSttsCd))    this.doorSttsDesc = "-";

+ 1 - 1
src/main/java/com/its/op/entity/its/cctv/TbCctvCtlr.java

@@ -325,7 +325,7 @@ public class TbCctvCtlr implements Serializable {
     }
 
     public String getCmncSttsCd() {
-        String result = "CMS1";
+        String result = CmmnCdManager.CMNC_STTS_ERROR;
         if (this.state != null) {
             result = this.state.getCmncSttsCd();
         }

+ 1 - 1
src/main/java/com/its/op/entity/its/rse/TbRseCtlr.java

@@ -208,7 +208,7 @@ public class TbRseCtlr implements Serializable {
     }
 
     public String getCmncSttsCd() {
-        String result = "CMS1";
+        String result = CmmnCdManager.CMNC_STTS_ERROR;
         if (this.state != null) {
             result = this.state.getCmncSttsCd();
         }

+ 3 - 3
src/main/java/com/its/op/entity/its/scrs/TbScIxrCmraMngm.java

@@ -175,9 +175,9 @@ public class TbScIxrCmraMngm implements Serializable {
 //        return result;
 //    }
     public String getCmncSttsCd() {
-        String result = "CMS1";
+        String result = CmmnCdManager.CMNC_STTS_ERROR;
         if (this.state != null && this.state.getCmraStts() == 1) {
-            result = "CMS0";
+            result = CmmnCdManager.CMNC_STTS_NORMAL;
         }
         return result;
     }
@@ -188,7 +188,7 @@ public class TbScIxrCmraMngm implements Serializable {
                     .cmraId(this.cmraId)
                     .drctDvsnCd(this.drctDvsnCd)
                     .clctDt(CmmnCdManager.CMNC_STTS_ERROR_DT)
-                    .cmraStts(1)
+                    .cmraStts(0)
                     .build();
             this.state = state;
         }

+ 1 - 1
src/main/java/com/its/op/entity/its/scrs/TbScIxrCmraStts.java

@@ -42,7 +42,7 @@ public class TbScIxrCmraStts implements Serializable {
     @Column(name = "CLCT_DT", nullable = false, length = 14)
     private String clctDt;
 
-    @ApiModelProperty("카메라 상태(0:비정상, 1:정상)")  // Y NUMBER(1)
+    @ApiModelProperty("카메라 상태(0:비정상, 1:정상, 2:연결끊김)")  // Y NUMBER(1)
     @Column(name = "CMRA_STTS", columnDefinition = "NUMBER", length = 1)
     private Integer cmraStts;
 

+ 2 - 2
src/main/java/com/its/op/entity/its/scrs/TbScIxrCmraSttsHs.java

@@ -48,7 +48,7 @@ public class TbScIxrCmraSttsHs implements Serializable {
     @Column(name = "DRCT_DVSN_CD", nullable = false, columnDefinition = "NUMBER", length = 1)
     private Integer drctDvsnCd;
 
-    @ApiModelProperty("카메라 상태(0:비정상, 1:정상)")  // Y NUMBER(1)
+    @ApiModelProperty("카메라 상태(0:비정상, 1:정상, 2:연결끊김)")  // Y NUMBER(1)
     @Column(name = "CMRA_STTS", columnDefinition = "NUMBER", length = 1)
     private Integer cmraStts;
 
@@ -71,7 +71,7 @@ public class TbScIxrCmraSttsHs implements Serializable {
                 .build();
 
         dto.setCollCnt(0);
-        dto.setCmncSttsCd(this.cmraStts == 1 ? "CMS0" : "CMS1");
+        dto.setCmncSttsCd(this.cmraStts == 1 ? CmmnCdManager.CMNC_STTS_NORMAL : CmmnCdManager.CMNC_STTS_ERROR);
         if (this.cmra != null) {
             dto.setIstlLctn(this.cmra.getIstlLctn());
         }

+ 1 - 1
src/main/java/com/its/op/entity/its/vds/TbVdsCtlr.java

@@ -235,7 +235,7 @@ public class TbVdsCtlr implements Serializable {
     }
 
     public String getCmncSttsCd() {
-        String result = "CMS1";
+        String result = CmmnCdManager.CMNC_STTS_ERROR;
         if (this.state != null) {
             result = this.state.getCmncSttsCd();
         }

+ 1 - 1
src/main/java/com/its/op/entity/its/vms/TbVmsCtlr.java

@@ -443,7 +443,7 @@ public class TbVmsCtlr implements Serializable {
     }
 
     public String getCmncSttsCd() {
-        String result = "CMS1";
+        String result = CmmnCdManager.CMNC_STTS_ERROR;
         if (this.state != null) {
             result = this.state.getCmncSttsCd();
         }

+ 1 - 1
src/main/java/com/its/op/entity/its/wcam/TbWcamCtlr.java

@@ -268,7 +268,7 @@ public class TbWcamCtlr implements Serializable {
     }
 
     public String getCmncSttsCd() {
-        String result = "CMS1";
+        String result = CmmnCdManager.CMNC_STTS_ERROR;
         if (this.state != null) {
             result = this.state.getCmncSttsCd();
         }

+ 26 - 0
src/main/java/com/its/op/exception/ExceptionError.java

@@ -0,0 +1,26 @@
+package com.its.op.exception;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.time.Instant;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ExceptionError implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    //@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'", timezone = "GMT")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
+    private Instant timestamp;
+    private Integer status;
+    private String error;
+    private String message;
+    private String path;
+
+}

+ 2 - 0
src/main/java/com/its/op/global/CmmnCdManager.java

@@ -94,6 +94,8 @@ public class CmmnCdManager {
     public static final String STTS_UNKNOWN         = "-";
     public static final String CMNC_STTS_NORMAL     = "CMS0";
     public static final String CMNC_STTS_ERROR      = "CMS1";
+    public static final String CMNC_STTS_UNKNOWN    = "CMS2";
+
     public static final String CMNC_STTS_ERROR_DT   = "19700101000000";
     public static final String CMNC_STTS_CD         = "CMS";    // 통신상태코드
     public static final String MODL_STTS_CD         = "MOS";    // 모듈상태

+ 2 - 0
src/main/java/com/its/op/security/WebConstants.java

@@ -4,5 +4,7 @@ public interface WebConstants {
 
     String USER_UUID = "UUID";
     String USER_TIME = "TIME";
+    String USER_OPER_SYST_ID = "OPER_SYST_ID";
+    String LOGIN_USER = "loginUser";
 
 }

+ 8 - 6
src/main/java/com/its/op/security/WebLoginSuccessHandler.java

@@ -36,17 +36,16 @@ public class WebLoginSuccessHandler implements AuthenticationSuccessHandler {
 
         // 인증 ID
         String userId = authentication.getName();
-        log.info("Remote-IP/Session-ID/User-ID: {}/{}/{}", details.getRemoteAddress(), details.getSessionId(), userId);
+        log.info("login Remote-IP/Session-ID/User-ID: {}/{}/{}", details.getRemoteAddress(), details.getSessionId(), userId);
 
         // 권한 리스트
         List<GrantedAuthority> authList = new ArrayList<>(authentication.getAuthorities());
         for (GrantedAuthority auth : authList) {
-            log.info("Roll: {}", auth.getAuthority());
+            log.info("login Roll: {}", auth.getAuthority());
         }
 
         UserInfrVo userInfr = (UserInfrVo)authentication.getPrincipal();
         String remoteIp = ItsUtils.getHttpServletRemoteIP(request);
-        log.info("UserLogin: {}, {}", userInfr.getUserId(), remoteIp);
         TbUserCnncHs cnncHs = TbUserCnncHs.builder()
                 .operSystId(userInfr.getOperSystId())
                 .userId(userInfr.getUserId())
@@ -54,6 +53,7 @@ public class WebLoginSuccessHandler implements AuthenticationSuccessHandler {
                 .logoutHms("")
                 .build();
         this.cnncHsRepo.insertData(cnncHs.getOperSystId(), cnncHs.getLoginHms(), cnncHs.getUserId(), cnncHs.getLogoutHms());
+        log.info("login history: {}, {}", cnncHs, remoteIp);
 
         //log.info("cnncHs: {}, {}", cnncHs.getUserId(), cnncHs.getLoginHms());
 
@@ -61,12 +61,14 @@ public class WebLoginSuccessHandler implements AuthenticationSuccessHandler {
         String uri = defaultSuccessUrl;
         String domain = "/";
 
-        request.getSession().setAttribute(WebConstants.USER_UUID, WebMvcConfig.encUserId(cnncHs.getUserId()));
-        request.getSession().setAttribute(WebConstants.USER_TIME, cnncHs.getLoginHms());
+        HttpSession session = request.getSession();
+        session.setAttribute(WebConstants.USER_UUID, WebMvcConfig.encUserId(cnncHs.getUserId()));
+        session.setAttribute(WebConstants.USER_TIME, cnncHs.getLoginHms());
+        session.setAttribute(WebConstants.LOGIN_USER, userInfr);
 
         CookieUtils.setCookie(response, WebConstants.USER_UUID, WebMvcConfig.encUserId(cnncHs.getUserId()), 60*60, domain);
         CookieUtils.setCookie(response, WebConstants.USER_TIME, cnncHs.getLoginHms(), 60*60, domain);
-        CookieUtils.setCookie(response, "OPER_SYST_ID", userInfr.getOperSystId(), 60*60, domain);
+        CookieUtils.setCookie(response, WebConstants.USER_OPER_SYST_ID, userInfr.getOperSystId(), 60*60, domain);
 
         // Security 가 요청을 가로챈 경우 사용자가 원래 요청했던 URI 정보를 저장한 객체
 //        RequestCache requestCache = new HttpSessionRequestCache();

+ 1 - 1
src/main/java/com/its/op/service/its/LoginService.java

@@ -55,7 +55,7 @@ public class LoginService {
     public void logout(LoginDto.LogoutReqDto req) {
 
         TbUserCnncHs cnncHs = req.toCnncHsEntity();
-        cnncHsRepo.updateData(cnncHs.getLoginHms(), cnncHs.getUserId(), cnncHs.getLogoutHms());
+        this.cnncHsRepo.updateData(cnncHs.getLoginHms(), cnncHs.getUserId(), cnncHs.getLogoutHms());
         //this.cnncHsRepo.save(cnncHs);
     }
 

+ 4 - 3
src/main/java/com/its/utils/ItsUtils.java

@@ -1,5 +1,6 @@
 package com.its.utils;
 
+import com.its.op.global.CmmnCdManager;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.FileUtils;
 
@@ -73,12 +74,12 @@ public final class ItsUtils
 	public static String getRseCommStts(String prcsDt) {
 
 		if (prcsDt == null || prcsDt.length() != 14) {
-			return "CMS1";
+			return CmmnCdManager.CMNC_STTS_ERROR;
 		}
 
 		Date startDateTime = getPrcsDt(prcsDt);
 		if (startDateTime == null) {
-			return "CMS1";
+			return CmmnCdManager.CMNC_STTS_ERROR;
 		}
 		Calendar currDateTime = Calendar.getInstance();
 
@@ -89,7 +90,7 @@ public final class ItsUtils
 
 		long gap = gcEndDateTime.getTimeInMillis() - gcStartDateTime.getTimeInMillis();
 		long min = gap / 1000L / 60L;
-		return min > 30 ? "CMS1" : "CMS0";
+		return min > 30 ? CmmnCdManager.CMNC_STTS_ERROR : CmmnCdManager.CMNC_STTS_NORMAL;
 	}
 
 	public static String getServiceYn(String prcsDt) {

+ 3 - 8
src/main/resources/application.yml

@@ -35,9 +35,8 @@ server:
   resources:
     static-locations: file:src/main/resources/static/
 
+spring.profiles.active: prod
 spring:
-  profiles:
-    active: prod
   main:
     banner-mode: off
   application:
@@ -117,10 +116,8 @@ logging:
               BasicBinder: ERROR
 
 ---
+spring.config.activate.on-profile: dev
 spring:
-  config:
-    activate:
-      on-profile: dev
   datasource:
     hikari:
       driver-class-name: oracle.jdbc.OracleDriver
@@ -138,10 +135,8 @@ spring:
         #dialect: org.hibernate.dialect.Oracle19cDialect
 
 ---
+spring.config.activate.on-profile: prod
 spring:
-  config:
-    activate:
-      on-profile: prod
   datasource:
     hikari:
       driver-class-name: oracle.jdbc.OracleDriver