diff --git a/src/main/java/egovframework/com/cmm/ComDefaultVO.java b/src/main/java/egovframework/com/cmm/ComDefaultVO.java
index 4480212..cbebf80 100644
--- a/src/main/java/egovframework/com/cmm/ComDefaultVO.java
+++ b/src/main/java/egovframework/com/cmm/ComDefaultVO.java
@@ -105,6 +105,21 @@ public class ComDefaultVO implements Serializable {
this.searchKeyword = searchKeyword;
}
+ /**
+ * 이름 검색 완전일치 해시(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ * 회원 이름이 암호화되며 부분검색(LIKE)이 불가능해져, 이름 검색을 수행하는 DAO가
+ * {@code searchKeyword}로부터 채운다. 화면·서비스는 이 필드를 직접 설정하지 않는다.
+ */
+ private String searchKeywordHash = "";
+
+ public String getSearchKeywordHash() {
+ return searchKeywordHash;
+ }
+
+ public void setSearchKeywordHash(String searchKeywordHash) {
+ this.searchKeywordHash = searchKeywordHash;
+ }
+
public String getSearchUseYn() {
return searchUseYn;
}
diff --git a/src/main/java/egovframework/com/cmm/LoginVO.java b/src/main/java/egovframework/com/cmm/LoginVO.java
index 2251a6c..a57d475 100644
--- a/src/main/java/egovframework/com/cmm/LoginVO.java
+++ b/src/main/java/egovframework/com/cmm/LoginVO.java
@@ -161,6 +161,21 @@ public class LoginVO implements Serializable{
public void setName(String name) {
this.name = name;
}
+
+ /**
+ * 이름(아이디/비밀번호 찾기) 검색 완전일치 해시(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ * 일반회원 이름이 암호화되며 {@code searchId}/{@code searchPassword} 조회의 이름 조건이
+ * 완전일치 해시로 바뀌었다. {@code LoginDAO}가 {@code name}으로부터 채운다.
+ */
+ private String nameHash;
+
+ public String getNameHash() {
+ return nameHash;
+ }
+
+ public void setNameHash(String nameHash) {
+ this.nameHash = nameHash;
+ }
/**
* ihidNum attribute 를 리턴한다.
* @return String
diff --git a/src/main/java/egovframework/com/cmm/privacy/crypto/MemberNmDecryptSupport.java b/src/main/java/egovframework/com/cmm/privacy/crypto/MemberNmDecryptSupport.java
new file mode 100644
index 0000000..0e8aed9
--- /dev/null
+++ b/src/main/java/egovframework/com/cmm/privacy/crypto/MemberNmDecryptSupport.java
@@ -0,0 +1,105 @@
+/**
+ * Class Name : MemberNmDecryptSupport.java
+ * Description : 회원 이름 읽기 전환(복호화) 공용 헬퍼 — 개인정보보호 기능개선 사업(추가제안 Action4)
+ *
+ * Modification Information
+ *
+ * 수정일 수정자 수정내용
+ * ------- -------- ---------------------------
+ * 2026.08.10 개인정보보호 최초 생성 — SELECT MBER_NM 을 MBER_NM_ENC 로 전환하는 DAO들이 공유
+ *
+ * @since 2026. 08. 10
+ * @version 1.0
+ */
+package egovframework.com.cmm.privacy.crypto;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.beanutils.PropertyUtils;
+
+/**
+ * 조회 결과에 담긴 이름 암호문을 평문으로 되돌려 기존 코드가 쓰던 키·필드 이름을 그대로
+ * 채운다. arko의 조회 SQL은 대부분 {@code resultClass="egovMap"}(Map)이고 일부는 VO다 —
+ * 이 클래스가 두 형태를 모두 처리해 DAO마다 다른 복호화 코드를 두지 않게 한다.
+ *
+ *
사용 패턴: SQL의 {@code MBER_NM as "userNm"}을 {@code MBER_NM_ENC as "userNm"}으로
+ * 바꾼 뒤(별칭은 그대로 유지), DAO 메서드가 결과를 반환하기 직전에
+ * {@code MemberNmDecryptSupport.decryptListInPlace(rows, "userNm")}를 호출한다.
+ * 같은 키를 입력이자 출력으로 써서 호출부가 한 줄만 늘어나고, 화면·서비스 코드는 전혀
+ * 건드리지 않는다 — 그 키에 이제 평문이 들어있다는 사실만 달라진다.
+ *
+ * 실패 처리: 복호화에 실패하면 예외를 던진다(평문 대체나 빈 값 대체를 하지 않는다).
+ * 개인정보 조회 화면이 복호화 실패를 숨기고 빈 이름을 보여주면, "왜 이름이 안 보이지"라는
+ * 장애가 "키가 바뀌었다/암호문이 깨졌다"는 진짜 원인을 감춘다.
+ */
+public final class MemberNmDecryptSupport {
+
+ private static volatile MemberDataCipher cipher;
+
+ private MemberNmDecryptSupport() {
+ }
+
+ private static MemberDataCipher cipher() {
+ MemberDataCipher c = cipher;
+ if (c == null) {
+ synchronized (MemberNmDecryptSupport.class) {
+ c = cipher;
+ if (c == null) {
+ c = new MemberDataCipher();
+ cipher = c;
+ }
+ }
+ }
+ return c;
+ }
+
+ /**
+ * 목록의 각 행에서 {@code key} 위치의 암호문을 복호화해 같은 키에 되돌려 쓴다.
+ * 행이 {@link Map}이면 {@code put}, 그 외(JavaBean VO)면 리플렉션 setter를 쓴다.
+ *
+ * @param rows 조회 결과(egovMap 목록 또는 VO 목록). null이면 아무 것도 하지 않는다.
+ * @param key 암호문이 들어있고 평문이 들어갈 속성/컬럼 키(예: "userNm", "mberNm")
+ */
+ public static void decryptListInPlace(List> rows, String key) {
+ if (rows == null || rows.isEmpty()) {
+ return;
+ }
+ for (int i = 0; i < rows.size(); i++) {
+ decryptInPlace(rows.get(i), key);
+ }
+ }
+
+ /** 단건 조회({@code selectByPk} 반환값 등)용. row가 null이면 아무 것도 하지 않는다. */
+ public static void decryptInPlace(Object row, String key) {
+ if (row == null) {
+ return;
+ }
+ try {
+ String enc;
+ if (row instanceof Map) {
+ Object v = ((Map, ?>) row).get(key);
+ enc = (v instanceof String) ? (String) v : null;
+ } else {
+ Object v = PropertyUtils.getProperty(row, key);
+ enc = (v instanceof String) ? (String) v : null;
+ }
+ if (enc == null || enc.length() == 0) {
+ // 탈퇴 등으로 이름이 파기된 행은 암호문도 없다 — 정상, 복호화할 것이 없다.
+ return;
+ }
+ String plain = cipher().decrypt(enc);
+ if (row instanceof Map) {
+ @SuppressWarnings("unchecked")
+ Map m = (Map) row;
+ m.put(key, plain);
+ } else {
+ PropertyUtils.setProperty(row, key, plain);
+ }
+ } catch (Exception e) {
+ throw new IllegalStateException(
+ "[개인정보/암호화] 이름 복호화 실패(key=" + key + ", rowType="
+ + row.getClass().getName() + ")", e);
+ }
+ }
+}
diff --git a/src/main/java/egovframework/com/cmm/privacy/lock/LoginFailHistoryDAO.java b/src/main/java/egovframework/com/cmm/privacy/lock/LoginFailHistoryDAO.java
index f89babb..1c00608 100644
--- a/src/main/java/egovframework/com/cmm/privacy/lock/LoginFailHistoryDAO.java
+++ b/src/main/java/egovframework/com/cmm/privacy/lock/LoginFailHistoryDAO.java
@@ -5,6 +5,7 @@ import java.util.List;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
/**
@@ -30,7 +31,17 @@ public class LoginFailHistoryDAO extends EgovComAbstractDAO {
/** 인증 실패 이력 목록(검색·페이징) */
@SuppressWarnings("unchecked")
public List selectLoginFailHistoryList(LoginFailHistoryVO vo) {
- return list("LoginFailHistoryDAO.selectLoginFailHistoryList", vo);
+ List result = list("LoginFailHistoryDAO.selectLoginFailHistoryList", vo);
+ // GNR(일반회원)만 userNm이 암호문이다 — USR(취급자)는 평문이다.
+ if (result != null) {
+ for (int i = 0; i < result.size(); i++) {
+ LoginFailHistoryVO row = result.get(i);
+ if (row != null && "GNR".equals(row.getGubun())) {
+ MemberNmDecryptSupport.decryptInPlace(row, "userNm");
+ }
+ }
+ }
+ return result;
}
/** 인증 실패 이력 전체 건수(페이징) */
diff --git a/src/main/java/egovframework/com/cntc/service/impl/CntcDAO.java b/src/main/java/egovframework/com/cntc/service/impl/CntcDAO.java
index 1aaf3a0..a899fac 100644
--- a/src/main/java/egovframework/com/cntc/service/impl/CntcDAO.java
+++ b/src/main/java/egovframework/com/cntc/service/impl/CntcDAO.java
@@ -6,6 +6,8 @@ import java.util.Map;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberDataHasher;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.cntc.service.CntcListVO;
import egovframework.com.cntc.service.CntcRecvVO;
@@ -14,6 +16,26 @@ import egovframework.com.cntc.service.CntcSendVO;
@Repository("CntcDAO")
public class CntcDAO extends EgovComAbstractDAO{
+ /**
+ * 이름 검색 완전일치 해시 계산(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ * 지연 초기화 — {@link egovframework.com.cmm.privacy.crypto.MemberDataCipher} 정책과 동일.
+ */
+ private MemberDataHasher mberNmHasher;
+
+ private void fillSearchKeywordHash(CntcListVO vo) {
+ if (vo == null || !"name".equals(vo.getSearchCondition()) && !"all".equals(vo.getSearchCondition())) {
+ return;
+ }
+ String kw = vo.getSearchKeyword();
+ if (kw == null || kw.trim().length() == 0) {
+ return;
+ }
+ if (mberNmHasher == null) {
+ mberNmHasher = new MemberDataHasher();
+ }
+ vo.setSearchKeywordHash(mberNmHasher.hashName(kw));
+ }
+
@SuppressWarnings("unchecked")
public List selectSendData(){
return list("CntcDAO.selectSendData", "");
@@ -56,10 +78,14 @@ public class CntcDAO extends EgovComAbstractDAO{
}
public List selectCntcList(CntcListVO clistvo){
- return list("CntcDAO.selectCntcList", clistvo);
+ fillSearchKeywordHash(clistvo);
+ List result = list("CntcDAO.selectCntcList", clistvo);
+ MemberNmDecryptSupport.decryptListInPlace(result, "mberNm");
+ return result;
}
public int selectCntcListTotCnt(CntcListVO clistvo) {
+ fillSearchKeywordHash(clistvo);
return (Integer)getSqlMapClientTemplate().queryForObject("CntcDAO.selectCntcListTotCnt", clistvo);
}
@@ -72,11 +98,19 @@ public class CntcDAO extends EgovComAbstractDAO{
}
public Map selectInDataSendData(Map cntcMap) {
- return (Map)getSqlMapClientTemplate().queryForObject("CntcDAO.selectInDataSendData", cntcMap);
+ Map result = (Map)getSqlMapClientTemplate().queryForObject("CntcDAO.selectInDataSendData", cntcMap);
+ if (result != null && "GNR".equals(result.get("data11_se"))) {
+ MemberNmDecryptSupport.decryptInPlace(result, "data11");
+ }
+ return result;
}
public HashMap selectNewInDataSendData(HashMap param) {
- return (HashMap)getSqlMapClientTemplate().queryForObject("CntcDAO.selectNewInDataSendData", param);
+ HashMap result = (HashMap)getSqlMapClientTemplate().queryForObject("CntcDAO.selectNewInDataSendData", param);
+ if (result != null && "GNR".equals(result.get("user_nm_se"))) {
+ MemberNmDecryptSupport.decryptInPlace(result, "user_nm");
+ }
+ return result;
}
public void insertNewSendList(HashMap param) {
diff --git a/src/main/java/egovframework/com/cop/bbs/service/BoardMasterVO.java b/src/main/java/egovframework/com/cop/bbs/service/BoardMasterVO.java
index 3821e65..ce9c0e7 100644
--- a/src/main/java/egovframework/com/cop/bbs/service/BoardMasterVO.java
+++ b/src/main/java/egovframework/com/cop/bbs/service/BoardMasterVO.java
@@ -37,7 +37,21 @@ public class BoardMasterVO extends BoardMaster implements Serializable {
/** 정렬순서(DESC,ASC) */
private String sortOrdr = "";
-
+
+ /**
+ * 최초 등록자 유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ * GNR(일반회원)일 때만 {@code frstRegisterNm}이 암호문이다 — 조건부 복호화 판별용.
+ */
+ private String userSe = "";
+
+ public String getUserSe() {
+ return userSe;
+ }
+
+ public void setUserSe(String userSe) {
+ this.userSe = userSe;
+ }
+
/** 검색사용여부 */
private String searchUseYn = "";
diff --git a/src/main/java/egovframework/com/cop/bbs/service/BoardUseInfVO.java b/src/main/java/egovframework/com/cop/bbs/service/BoardUseInfVO.java
index e04b9e6..4db07cf 100644
--- a/src/main/java/egovframework/com/cop/bbs/service/BoardUseInfVO.java
+++ b/src/main/java/egovframework/com/cop/bbs/service/BoardUseInfVO.java
@@ -514,6 +514,30 @@ public class BoardUseInfVO extends BoardUseInf implements Serializable {
this.userNm = userNm;
}
+ /**
+ * userNm(COMVNUSERMASTER.USER_NM) 출처 회원유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ */
+ private String userSe = "";
+
+ public String getUserSe() {
+ return userSe;
+ }
+
+ public void setUserSe(String userSe) {
+ this.userSe = userSe;
+ }
+
+ /** 이름 검색 완전일치 해시(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10). */
+ private String searchKeywordHash = "";
+
+ public String getSearchKeywordHash() {
+ return searchKeywordHash;
+ }
+
+ public void setSearchKeywordHash(String searchKeywordHash) {
+ this.searchKeywordHash = searchKeywordHash;
+ }
+
/**
* provdUrl attribute를 리턴한다.
*
diff --git a/src/main/java/egovframework/com/cop/bbs/service/BoardVO.java b/src/main/java/egovframework/com/cop/bbs/service/BoardVO.java
index 6a0d49f..93f7563 100644
--- a/src/main/java/egovframework/com/cop/bbs/service/BoardVO.java
+++ b/src/main/java/egovframework/com/cop/bbs/service/BoardVO.java
@@ -253,6 +253,17 @@ public class BoardVO extends Board implements Serializable {
this.searchWrd = searchWrd;
}
+ /** 이름 검색 완전일치 해시(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10). */
+ private String searchKeywordHash = "";
+
+ public String getSearchKeywordHash() {
+ return searchKeywordHash;
+ }
+
+ public void setSearchKeywordHash(String searchKeywordHash) {
+ this.searchKeywordHash = searchKeywordHash;
+ }
+
/**
* sortOrdr attribute를 리턴한다.
*
diff --git a/src/main/java/egovframework/com/cop/bbs/service/Satisfaction.java b/src/main/java/egovframework/com/cop/bbs/service/Satisfaction.java
index 0c7d1ba..64f6476 100644
--- a/src/main/java/egovframework/com/cop/bbs/service/Satisfaction.java
+++ b/src/main/java/egovframework/com/cop/bbs/service/Satisfaction.java
@@ -243,6 +243,19 @@ public class Satisfaction implements Serializable {
this.frstRegisterNm = frstRegisterNm;
}
+ /**
+ * frstRegisterNm(COMVNUSERMASTER.USER_NM) 출처 회원유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ */
+ private String userSe = "";
+
+ public String getUserSe() {
+ return userSe;
+ }
+
+ public void setUserSe(String userSe) {
+ this.userSe = userSe;
+ }
+
/**
* frstRegisterPnttm attribute를 리턴한다.
* @return the frstRegisterPnttm
diff --git a/src/main/java/egovframework/com/cop/bbs/service/Scrap.java b/src/main/java/egovframework/com/cop/bbs/service/Scrap.java
index 6cf9fda..f227c8c 100644
--- a/src/main/java/egovframework/com/cop/bbs/service/Scrap.java
+++ b/src/main/java/egovframework/com/cop/bbs/service/Scrap.java
@@ -167,6 +167,19 @@ public class Scrap implements Serializable {
this.frstRegisterNm = frstRegisterNm;
}
+ /**
+ * frstRegisterNm(COMVNUSERMASTER.USER_NM) 출처 회원유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ */
+ private String userSe = "";
+
+ public String getUserSe() {
+ return userSe;
+ }
+
+ public void setUserSe(String userSe) {
+ this.userSe = userSe;
+ }
+
/**
* frstRegisterPnttm attribute를 리턴한다.
* @return the frstRegisterPnttm
diff --git a/src/main/java/egovframework/com/cop/bbs/service/impl/BBSAddedOptionsDAO.java b/src/main/java/egovframework/com/cop/bbs/service/impl/BBSAddedOptionsDAO.java
index f781ac9..ac222b9 100644
--- a/src/main/java/egovframework/com/cop/bbs/service/impl/BBSAddedOptionsDAO.java
+++ b/src/main/java/egovframework/com/cop/bbs/service/impl/BBSAddedOptionsDAO.java
@@ -2,6 +2,7 @@ package egovframework.com.cop.bbs.service.impl;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.cop.bbs.service.BoardMaster;
import egovframework.com.cop.bbs.service.BoardMasterVO;
@@ -40,7 +41,12 @@ public class BBSAddedOptionsDAO extends EgovComAbstractDAO {
* @param BoardMasterVO
*/
public BoardMasterVO selectAddedOptionsInf(BoardMaster vo) throws Exception {
- return (BoardMasterVO)selectByPk("BBSAddedOptionsDAO.selectAddedOptionsInf", vo);
+ BoardMasterVO result = (BoardMasterVO)selectByPk("BBSAddedOptionsDAO.selectAddedOptionsInf", vo);
+ // GNR(일반회원)만 frstRegisterNm이 암호문이다.
+ if (result != null && "GNR".equals(result.getUserSe())) {
+ MemberNmDecryptSupport.decryptInPlace(result, "frstRegisterNm");
+ }
+ return result;
}
/**
diff --git a/src/main/java/egovframework/com/cop/bbs/service/impl/BBSLoneMasterDAO.java b/src/main/java/egovframework/com/cop/bbs/service/impl/BBSLoneMasterDAO.java
index 3c2577c..02d1d03 100644
--- a/src/main/java/egovframework/com/cop/bbs/service/impl/BBSLoneMasterDAO.java
+++ b/src/main/java/egovframework/com/cop/bbs/service/impl/BBSLoneMasterDAO.java
@@ -51,6 +51,10 @@ public class BBSLoneMasterDAO extends EgovComAbstractDAO {
* @param BoardMasterVO
*/
public BoardMasterVO selectMaster(BoardMaster vo) throws Exception {
+ // 주의(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10): boardMasterDetail resultMap의
+ // columnIndex가 이 SQL의 실제 SELECT 컬럼 순서와 기존부터 어긋나 있어(frstRegisterNm이 실제로는
+ // ATCH_POSBL_FILE_NUMBER 값을 읽음) 여기서 복호화를 걸면 GNR 행에서 암호문이 아닌 값을 복호화
+ // 시도해 예외가 난다. 이 매핑 자체는 이번 작업 범위 밖의 기존 버그이므로 복호화를 걸지 않는다.
return (BoardMasterVO)selectByPk("BBSLoneMasterDAO.selectMaster", vo);
}
diff --git a/src/main/java/egovframework/com/cop/bbs/service/impl/BBSManageDAO.java b/src/main/java/egovframework/com/cop/bbs/service/impl/BBSManageDAO.java
index d4ff3de..ed0e9df 100644
--- a/src/main/java/egovframework/com/cop/bbs/service/impl/BBSManageDAO.java
+++ b/src/main/java/egovframework/com/cop/bbs/service/impl/BBSManageDAO.java
@@ -7,6 +7,8 @@ import kr.or.arko.mnt.biz.data.service.DataVO;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberDataHasher;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.cop.bbs.service.Board;
import egovframework.com.cop.bbs.service.BoardVO;
@@ -30,6 +32,31 @@ import egovframework.com.cop.bbs.service.BoardVO;
@Repository("BBSManageDAO")
public class BBSManageDAO extends EgovComAbstractDAO {
+ /**
+ * 이름 검색 전환(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10) 헬퍼. searchCnd='2'일 때만 이름검색이다.
+ */
+ private MemberDataHasher mberNmHasher;
+
+ private void fillSearchKeywordHash(BoardVO vo) {
+ if (vo == null || !"2".equals(vo.getSearchCnd())) {
+ return;
+ }
+ String kw = vo.getSearchWrd();
+ if (kw == null || kw.trim().length() == 0) {
+ return;
+ }
+ if (mberNmHasher == null) {
+ mberNmHasher = new MemberDataHasher();
+ }
+ vo.setSearchKeywordHash(mberNmHasher.hashName(kw));
+ }
+
+ private void decryptFrstRegisterNmIfGnr(BoardVO vo) {
+ if (vo != null && "GNR".equals(vo.getUserSe())) {
+ MemberNmDecryptSupport.decryptInPlace(vo, "frstRegisterNm");
+ }
+ }
+
/**
* 게시판에 게시물을 등록 한다.
*
@@ -78,7 +105,9 @@ public class BBSManageDAO extends EgovComAbstractDAO {
* @throws Exception
*/
public BoardVO selectBoardArticle(BoardVO boardVO) throws Exception {
- return (BoardVO)selectByPk("BBSManageDAO.selectBoardArticle", boardVO);
+ BoardVO result = (BoardVO)selectByPk("BBSManageDAO.selectBoardArticle", boardVO);
+ decryptFrstRegisterNmIfGnr(result);
+ return result;
}
/**
@@ -134,12 +163,22 @@ public class BBSManageDAO extends EgovComAbstractDAO {
*/
@SuppressWarnings("unchecked")
public List selectBoardArticleList(BoardVO boardVO) throws Exception {
- return list("BBSManageDAO.selectBoardArticleList", boardVO);
+ fillSearchKeywordHash(boardVO);
+ List result = list("BBSManageDAO.selectBoardArticleList", boardVO);
+ for (BoardVO row : result) {
+ decryptFrstRegisterNmIfGnr(row);
+ }
+ return result;
}
@SuppressWarnings("unchecked")
public List selectBoardArticleTopList(BoardVO boardVO) throws Exception {
- return list("BBSManageDAO.selectBoardArticleTopList", boardVO);
+ fillSearchKeywordHash(boardVO);
+ List result = list("BBSManageDAO.selectBoardArticleTopList", boardVO);
+ for (BoardVO row : result) {
+ decryptFrstRegisterNmIfGnr(row);
+ }
+ return result;
}
/**
@@ -198,6 +237,7 @@ public class BBSManageDAO extends EgovComAbstractDAO {
* @throws Exception
*/
public int selectBoardArticleListCnt(BoardVO boardVO) throws Exception {
+ fillSearchKeywordHash(boardVO);
return (Integer)getSqlMapClientTemplate().queryForObject("BBSManageDAO.selectBoardArticleListCnt", boardVO);
}
@@ -343,7 +383,11 @@ public class BBSManageDAO extends EgovComAbstractDAO {
*/
@SuppressWarnings("unchecked")
public List selectGuestList(BoardVO boardVO) throws Exception {
- return list("BBSManageDAO.selectGuestList", boardVO);
+ List result = list("BBSManageDAO.selectGuestList", boardVO);
+ for (BoardVO row : result) {
+ decryptFrstRegisterNmIfGnr(row);
+ }
+ return result;
}
/**
@@ -543,7 +587,11 @@ public class BBSManageDAO extends EgovComAbstractDAO {
*/
@SuppressWarnings("unchecked")
public List selectBoardReplyArticleList(BoardVO boardVO) throws Exception {
- return list("BBSManageDAO.selectBoardReplyArticleList", boardVO);
+ List result = list("BBSManageDAO.selectBoardReplyArticleList", boardVO);
+ for (BoardVO row : result) {
+ decryptFrstRegisterNmIfGnr(row);
+ }
+ return result;
}
/**
diff --git a/src/main/java/egovframework/com/cop/bbs/service/impl/BBSUseInfoManageDAO.java b/src/main/java/egovframework/com/cop/bbs/service/impl/BBSUseInfoManageDAO.java
index c0b9317..ef3f1e5 100644
--- a/src/main/java/egovframework/com/cop/bbs/service/impl/BBSUseInfoManageDAO.java
+++ b/src/main/java/egovframework/com/cop/bbs/service/impl/BBSUseInfoManageDAO.java
@@ -4,6 +4,8 @@ import java.util.List;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberDataHasher;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.cop.bbs.service.BoardUseInf;
import egovframework.com.cop.bbs.service.BoardUseInfVO;
@@ -28,6 +30,25 @@ import egovframework.com.cop.bbs.service.BoardUseInfVO;
@Repository("BBSUseInfoManageDAO")
public class BBSUseInfoManageDAO extends EgovComAbstractDAO {
+ /**
+ * 이름 검색 전환(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10) 헬퍼. searchCnd='0'일 때만 이름검색이다.
+ */
+ private MemberDataHasher mberNmHasher;
+
+ private void fillSearchKeywordHash(BoardUseInfVO vo) {
+ if (vo == null || !"0".equals(vo.getSearchCnd())) {
+ return;
+ }
+ String kw = vo.getSearchWrd();
+ if (kw == null || kw.trim().length() == 0) {
+ return;
+ }
+ if (mberNmHasher == null) {
+ mberNmHasher = new MemberDataHasher();
+ }
+ vo.setSearchKeywordHash(mberNmHasher.hashName(kw));
+ }
+
/**
* 게시판 사용 정보를 삭제한다.
*
@@ -110,7 +131,14 @@ public class BBSUseInfoManageDAO extends EgovComAbstractDAO {
*/
@SuppressWarnings("unchecked")
public List selectBBSUseInfsByTrget(BoardUseInfVO bdUseVO) throws Exception {
- return list("BBSUseInfoManageDAO.selectBBSUseInfsByTrget", bdUseVO);
+ fillSearchKeywordHash(bdUseVO);
+ List result = list("BBSUseInfoManageDAO.selectBBSUseInfsByTrget", bdUseVO);
+ for (BoardUseInfVO row : result) {
+ if (row != null && "GNR".equals(row.getUserSe())) {
+ MemberNmDecryptSupport.decryptInPlace(row, "userNm");
+ }
+ }
+ return result;
}
/**
@@ -121,6 +149,7 @@ public class BBSUseInfoManageDAO extends EgovComAbstractDAO {
* @throws Exception
*/
public int selectBBSUseInfsCntByTrget(BoardUseInfVO bdUseVO) throws Exception {
+ fillSearchKeywordHash(bdUseVO);
return (Integer)getSqlMapClientTemplate().queryForObject("BBSUseInfoManageDAO.selectBBSUseInfsCntByTrget", bdUseVO);
}
diff --git a/src/main/java/egovframework/com/cop/cmt/service/impl/BBSCommentDAO.java b/src/main/java/egovframework/com/cop/cmt/service/impl/BBSCommentDAO.java
index 3c93488..1b51560 100644
--- a/src/main/java/egovframework/com/cop/cmt/service/impl/BBSCommentDAO.java
+++ b/src/main/java/egovframework/com/cop/cmt/service/impl/BBSCommentDAO.java
@@ -4,6 +4,7 @@ import java.util.List;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.cop.bbs.service.BoardVO;
import egovframework.com.cop.bbs.service.Comment;
@@ -28,6 +29,22 @@ import egovframework.com.cop.bbs.service.CommentVO;
@Repository("BBSCommentDAO")
public class BBSCommentDAO extends EgovComAbstractDAO {
+ /**
+ * GNR(일반회원)만 frstRegisterNm이 암호문이다(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ * ENT/USR/GRO 는 각자 다른 테이블의 평문이므로 무조건 복호화하면 예외가 난다.
+ */
+ private void decryptGnrRowsInPlace(List rows) {
+ if (rows == null) {
+ return;
+ }
+ for (int i = 0; i < rows.size(); i++) {
+ CommentVO row = rows.get(i);
+ if (row != null && "GNR".equals(row.getUserSe())) {
+ MemberNmDecryptSupport.decryptInPlace(row, "frstRegisterNm");
+ }
+ }
+ }
+
/**
* 댓글에 대한 목록을 조회 한다.
*
@@ -37,7 +54,9 @@ public class BBSCommentDAO extends EgovComAbstractDAO {
*/
@SuppressWarnings("unchecked")
public List selectCommentList(CommentVO commentVO) throws Exception {
- return list("BBSCommentDAO.selectCommentList", commentVO);
+ List result = list("BBSCommentDAO.selectCommentList", commentVO);
+ decryptGnrRowsInPlace(result);
+ return result;
}
/**
diff --git a/src/main/java/egovframework/com/cop/com/service/UserInfVO.java b/src/main/java/egovframework/com/cop/com/service/UserInfVO.java
index ca09b98..46672c4 100644
--- a/src/main/java/egovframework/com/cop/com/service/UserInfVO.java
+++ b/src/main/java/egovframework/com/cop/com/service/UserInfVO.java
@@ -153,6 +153,30 @@ public class UserInfVO implements Serializable {
this.userNm = userNm;
}
+ /**
+ * userNm(COMVNUSERMASTER.USER_NM) 출처 회원유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ */
+ private String userNmSe = "";
+
+ public String getUserNmSe() {
+ return userNmSe;
+ }
+
+ public void setUserNmSe(String userNmSe) {
+ this.userNmSe = userNmSe;
+ }
+
+ /** 이름 검색 완전일치 해시(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10). */
+ private String searchKeywordHash = "";
+
+ public String getSearchKeywordHash() {
+ return searchKeywordHash;
+ }
+
+ public void setSearchKeywordHash(String searchKeywordHash) {
+ this.searchKeywordHash = searchKeywordHash;
+ }
+
/**
* userZip attribute를 리턴한다.
*
diff --git a/src/main/java/egovframework/com/cop/com/service/impl/EgovUserInfManageDAO.java b/src/main/java/egovframework/com/cop/com/service/impl/EgovUserInfManageDAO.java
index 0764dab..dacd98a 100644
--- a/src/main/java/egovframework/com/cop/com/service/impl/EgovUserInfManageDAO.java
+++ b/src/main/java/egovframework/com/cop/com/service/impl/EgovUserInfManageDAO.java
@@ -4,6 +4,8 @@ import java.util.List;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberDataHasher;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.cop.com.service.UserInfVO;
@@ -26,118 +28,168 @@ import egovframework.com.cop.com.service.UserInfVO;
@Repository("EgovUserInfManageDAO")
public class EgovUserInfManageDAO extends EgovComAbstractDAO {
+ /**
+ * 이름 검색 전환(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10) 헬퍼.
+ */
+ private MemberDataHasher mberNmHasher;
+
+ private void fillSearchKeywordHash(UserInfVO vo) {
+ if (vo == null || !"0".equals(vo.getSearchCnd())) {
+ return;
+ }
+ String kw = vo.getSearchWrd();
+ if (kw == null || kw.trim().length() == 0) {
+ return;
+ }
+ if (mberNmHasher == null) {
+ mberNmHasher = new MemberDataHasher();
+ }
+ vo.setSearchKeywordHash(mberNmHasher.hashName(kw));
+ }
+
+ private void decryptListIfGnr(List rows) {
+ if (rows == null) {
+ return;
+ }
+ for (UserInfVO row : rows) {
+ if (row != null && "GNR".equals(row.getUserNmSe())) {
+ MemberNmDecryptSupport.decryptInPlace(row, "userNm");
+ }
+ }
+ }
+
/**
* 사용자 정보에 대한 목록을 조회한다.
- *
+ *
* @param userVO
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public List selectUserList(UserInfVO userVO) throws Exception {
- return list("EgovUserInfManageDAO.selectUserList", userVO);
+ fillSearchKeywordHash(userVO);
+ List result = list("EgovUserInfManageDAO.selectUserList", userVO);
+ decryptListIfGnr(result);
+ return result;
}
/**
* 사용자 정보에 대한 목록 전체 건수를 조회한다.
- *
+ *
* @param userVO
* @return
* @throws Exception
*/
public int selectUserListCnt(UserInfVO userVO) throws Exception {
+ fillSearchKeywordHash(userVO);
return (Integer)getSqlMapClientTemplate().queryForObject("EgovUserInfManageDAO.selectUserListCnt", userVO);
}
/**
* 커뮤니티 사용자 목록을 조회한다.
- *
+ *
* @param userVO
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public List selectCmmntyUserList(UserInfVO userVO) throws Exception {
- return list("EgovUserInfManageDAO.selectCmmntyUserList", userVO);
+ fillSearchKeywordHash(userVO);
+ List result = list("EgovUserInfManageDAO.selectCmmntyUserList", userVO);
+ decryptListIfGnr(result);
+ return result;
}
/**
* 커뮤니티 사용자 목록에 대한 전체 건수를 조회한다.
- *
+ *
* @param userVO
* @return
* @throws Exception
*/
public int selectCmmntyUserListCnt(UserInfVO userVO) throws Exception {
+ fillSearchKeywordHash(userVO);
return (Integer)getSqlMapClientTemplate().queryForObject("EgovUserInfManageDAO.selectCmmntyUserListCnt", userVO);
}
/**
* 커뮤니티 관리자 목록을 조회한다.
- *
+ *
* @param userVO
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public List selectCmmntyMngrList(UserInfVO userVO) throws Exception {
- return list("EgovUserInfManageDAO.selectCmmntyMngrList", userVO);
+ fillSearchKeywordHash(userVO);
+ List result = list("EgovUserInfManageDAO.selectCmmntyMngrList", userVO);
+ decryptListIfGnr(result);
+ return result;
}
/**
* 커뮤니티 관리자 목록에 대한 전체 건수를 조회한다.
- *
+ *
* @param userVO
* @return
* @throws Exception
*/
public int selectCmmntyMngrListCnt(UserInfVO userVO) throws Exception {
+ fillSearchKeywordHash(userVO);
return (Integer)getSqlMapClientTemplate().queryForObject("EgovUserInfManageDAO.selectCmmntyMngrListCnt", userVO);
}
/**
* 동호회 사용자 목록을 조회한다.
- *
+ *
* @param userVO
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public List selectClubUserList(UserInfVO userVO) throws Exception {
- return list("EgovUserInfManageDAO.selectClubUserList", userVO);
+ fillSearchKeywordHash(userVO);
+ List result = list("EgovUserInfManageDAO.selectClubUserList", userVO);
+ decryptListIfGnr(result);
+ return result;
}
/**
* 동호회 사용자 목록에 대한 전체 건수를 조회한다.
- *
+ *
* @param userVO
* @return
* @throws Exception
*/
public int selectClubUserListCnt(UserInfVO userVO) throws Exception {
+ fillSearchKeywordHash(userVO);
return (Integer)getSqlMapClientTemplate().queryForObject("EgovUserInfManageDAO.selectClubUserListCnt", userVO);
}
/**
* 동호회 운영자 목록을 조회한다.
- *
+ *
* @param userVO
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public List selectClubOprtrList(UserInfVO userVO) throws Exception {
- return list("EgovUserInfManageDAO.selectClubOprtrList", userVO);
+ fillSearchKeywordHash(userVO);
+ List result = list("EgovUserInfManageDAO.selectClubOprtrList", userVO);
+ decryptListIfGnr(result);
+ return result;
}
/**
* 동호회 운영자 목록에 대한 전체 건수를 조회한다.
- *
+ *
* @param userVO
* @return
* @throws Exception
*/
public int selectClubOprtrListCnt(UserInfVO userVO) throws Exception {
+ fillSearchKeywordHash(userVO);
return (Integer)getSqlMapClientTemplate().queryForObject("EgovUserInfManageDAO.selectClubOprtrListCnt", userVO);
}
diff --git a/src/main/java/egovframework/com/cop/scp/service/impl/BBSScrapDAO.java b/src/main/java/egovframework/com/cop/scp/service/impl/BBSScrapDAO.java
index 612afd2..635c253 100644
--- a/src/main/java/egovframework/com/cop/scp/service/impl/BBSScrapDAO.java
+++ b/src/main/java/egovframework/com/cop/scp/service/impl/BBSScrapDAO.java
@@ -4,6 +4,7 @@ import java.util.List;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.cop.bbs.service.Scrap;
import egovframework.com.cop.bbs.service.ScrapVO;
@@ -36,7 +37,13 @@ public class BBSScrapDAO extends EgovComAbstractDAO {
*/
@SuppressWarnings("unchecked")
public List selectScrapList(ScrapVO scrapVO) throws Exception {
- return list("BBSScrapDAO.selectScrapList", scrapVO);
+ List result = list("BBSScrapDAO.selectScrapList", scrapVO);
+ for (ScrapVO row : result) {
+ if (row != null && "GNR".equals(row.getUserSe())) {
+ MemberNmDecryptSupport.decryptInPlace(row, "frstRegisterNm");
+ }
+ }
+ return result;
}
/**
@@ -78,7 +85,11 @@ public class BBSScrapDAO extends EgovComAbstractDAO {
* @throws Exception
*/
public Scrap selectScrap(ScrapVO scrapVO) throws Exception {
- return (Scrap)selectByPk("BBSScrapDAO.selectScrap", scrapVO);
+ Scrap result = (Scrap)selectByPk("BBSScrapDAO.selectScrap", scrapVO);
+ if (result != null && "GNR".equals(result.getUserSe())) {
+ MemberNmDecryptSupport.decryptInPlace(result, "frstRegisterNm");
+ }
+ return result;
}
/**
diff --git a/src/main/java/egovframework/com/cop/sms/service/Sms.java b/src/main/java/egovframework/com/cop/sms/service/Sms.java
index 179b8bf..e5f2b24 100644
--- a/src/main/java/egovframework/com/cop/sms/service/Sms.java
+++ b/src/main/java/egovframework/com/cop/sms/service/Sms.java
@@ -134,6 +134,19 @@ public class Sms implements Serializable {
this.frstRegisterNm = frstRegisterNm;
}
+ /**
+ * frstRegisterNm(COMVNUSERMASTER.USER_NM) 출처 회원유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ */
+ private String userSe = "";
+
+ public String getUserSe() {
+ return userSe;
+ }
+
+ public void setUserSe(String userSe) {
+ this.userSe = userSe;
+ }
+
/**
* frstRegisterPnttm attribute를 리턴한다.
* @return the frstRegisterPnttm
diff --git a/src/main/java/egovframework/com/cop/sms/service/impl/SmsDAO.java b/src/main/java/egovframework/com/cop/sms/service/impl/SmsDAO.java
index f963dcf..324e730 100644
--- a/src/main/java/egovframework/com/cop/sms/service/impl/SmsDAO.java
+++ b/src/main/java/egovframework/com/cop/sms/service/impl/SmsDAO.java
@@ -4,6 +4,7 @@ import java.util.List;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.cop.sms.service.Sms;
import egovframework.com.cop.sms.service.SmsRecptn;
@@ -76,7 +77,11 @@ public class SmsDAO extends EgovComAbstractDAO {
* @return
*/
public SmsVO selectSmsInf(SmsVO searchVO) {
- return (SmsVO)selectByPk("SmsDAO.selectSmsInf", searchVO);
+ SmsVO result = (SmsVO)selectByPk("SmsDAO.selectSmsInf", searchVO);
+ if (result != null && "GNR".equals(result.getUserSe())) {
+ MemberNmDecryptSupport.decryptInPlace(result, "frstRegisterNm");
+ }
+ return result;
}
/**
diff --git a/src/main/java/egovframework/com/cop/stf/service/impl/BBSSatisfactionDAO.java b/src/main/java/egovframework/com/cop/stf/service/impl/BBSSatisfactionDAO.java
index 85909c2..61bdba5 100644
--- a/src/main/java/egovframework/com/cop/stf/service/impl/BBSSatisfactionDAO.java
+++ b/src/main/java/egovframework/com/cop/stf/service/impl/BBSSatisfactionDAO.java
@@ -4,6 +4,7 @@ import java.util.List;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.cop.bbs.service.Satisfaction;
import egovframework.com.cop.bbs.service.SatisfactionVO;
@@ -36,7 +37,13 @@ public class BBSSatisfactionDAO extends EgovComAbstractDAO {
*/
@SuppressWarnings("unchecked")
public List selectSatisfactionList(SatisfactionVO satisfactionVO) throws Exception {
- return list("BBSSatisfactionDAO.selectSatisfactionList", satisfactionVO);
+ List result = list("BBSSatisfactionDAO.selectSatisfactionList", satisfactionVO);
+ for (SatisfactionVO row : result) {
+ if (row != null && "GNR".equals(row.getUserSe())) {
+ MemberNmDecryptSupport.decryptInPlace(row, "frstRegisterNm");
+ }
+ }
+ return result;
}
/**
@@ -78,7 +85,11 @@ public class BBSSatisfactionDAO extends EgovComAbstractDAO {
* @throws Exception
*/
public Satisfaction selectSatisfaction(SatisfactionVO satisfactionVO) throws Exception {
- return (Satisfaction)selectByPk("BBSSatisfactionDAO.selectSatisfaction", satisfactionVO);
+ Satisfaction result = (Satisfaction)selectByPk("BBSSatisfactionDAO.selectSatisfaction", satisfactionVO);
+ if (result != null && "GNR".equals(result.getUserSe())) {
+ MemberNmDecryptSupport.decryptInPlace(result, "frstRegisterNm");
+ }
+ return result;
}
/**
diff --git a/src/main/java/egovframework/com/cop/tpl/service/TemplateInfVO.java b/src/main/java/egovframework/com/cop/tpl/service/TemplateInfVO.java
index a59bc9d..b43b91a 100644
--- a/src/main/java/egovframework/com/cop/tpl/service/TemplateInfVO.java
+++ b/src/main/java/egovframework/com/cop/tpl/service/TemplateInfVO.java
@@ -94,6 +94,19 @@ public class TemplateInfVO extends TemplateInf implements Serializable {
this.frstRegisterNm = frstRegisterNm;
}
+ /**
+ * frstRegisterNm(COMVNUSERMASTER.USER_NM) 출처 회원유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ */
+ private String frstRegisterNmSe = "";
+
+ public String getFrstRegisterNmSe() {
+ return frstRegisterNmSe;
+ }
+
+ public void setFrstRegisterNmSe(String frstRegisterNmSe) {
+ this.frstRegisterNmSe = frstRegisterNmSe;
+ }
+
/**
* lastUpdusrNm attribute를 리턴한다.
*
diff --git a/src/main/java/egovframework/com/cop/tpl/service/impl/TemplateManageDAO.java b/src/main/java/egovframework/com/cop/tpl/service/impl/TemplateManageDAO.java
index 2046dbe..d9e24c9 100644
--- a/src/main/java/egovframework/com/cop/tpl/service/impl/TemplateManageDAO.java
+++ b/src/main/java/egovframework/com/cop/tpl/service/impl/TemplateManageDAO.java
@@ -4,6 +4,7 @@ import java.util.List;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.cop.tpl.service.TemplateInf;
import egovframework.com.cop.tpl.service.TemplateInfVO;
@@ -88,8 +89,11 @@ public class TemplateManageDAO extends EgovComAbstractDAO {
* @throws Exception
*/
public TemplateInfVO selectTemplateInf(TemplateInfVO tmplatInfVO) throws Exception {
- return (TemplateInfVO)selectByPk("TemplateManageDAO.selectTemplateInf", tmplatInfVO);
-
+ TemplateInfVO result = (TemplateInfVO)selectByPk("TemplateManageDAO.selectTemplateInf", tmplatInfVO);
+ if (result != null && "GNR".equals(result.getFrstRegisterNmSe())) {
+ MemberNmDecryptSupport.decryptInPlace(result, "frstRegisterNm");
+ }
+ return result;
}
/**
diff --git a/src/main/java/egovframework/com/sec/rgm/service/impl/AuthorGroupDAO.java b/src/main/java/egovframework/com/sec/rgm/service/impl/AuthorGroupDAO.java
index 2017dea..5aa14f7 100644
--- a/src/main/java/egovframework/com/sec/rgm/service/impl/AuthorGroupDAO.java
+++ b/src/main/java/egovframework/com/sec/rgm/service/impl/AuthorGroupDAO.java
@@ -4,6 +4,8 @@ import java.util.List;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberDataHasher;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.sec.rgm.service.AuthorGroup;
import egovframework.com.sec.rgm.service.AuthorGroupVO;
@@ -28,6 +30,42 @@ import egovframework.com.sec.rgm.service.AuthorGroupVO;
@Repository("authorGroupDAO")
public class AuthorGroupDAO extends EgovComAbstractDAO {
+ /**
+ * 이름 읽기전환/검색 전환(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10) 헬퍼.
+ * 지연 초기화 — {@link egovframework.com.cmm.privacy.crypto.MemberDataCipher} 정책과 동일.
+ */
+ private MemberDataHasher mberNmHasher;
+
+ private void fillSearchKeywordHash(AuthorGroupVO vo) {
+ if (vo == null || !"2".equals(vo.getSearchCondition())) {
+ return;
+ }
+ String kw = vo.getSearchKeyword();
+ if (kw == null || kw.trim().length() == 0) {
+ return;
+ }
+ if (mberNmHasher == null) {
+ mberNmHasher = new MemberDataHasher();
+ }
+ vo.setSearchKeywordHash(mberNmHasher.hashName(kw));
+ }
+
+ /**
+ * USR01(일반회원) 행만 userNm이 암호문이다. USR02(단체)/USR03(취급자)는 각자 다른
+ * 테이블의 평문이므로 무조건 복호화하면 예외가 난다.
+ */
+ private void decryptGnrRowsInPlace(List rows) {
+ if (rows == null) {
+ return;
+ }
+ for (int i = 0; i < rows.size(); i++) {
+ AuthorGroupVO row = rows.get(i);
+ if (row != null && "USR01".equals(row.getMberTyCode())) {
+ MemberNmDecryptSupport.decryptInPlace(row, "userNm");
+ }
+ }
+ }
+
/**
* 그룹별 할당된 권한 목록 조회
* @param authorGroupVO AuthorGroupVO
@@ -36,7 +74,10 @@ public class AuthorGroupDAO extends EgovComAbstractDAO {
*/
@SuppressWarnings("unchecked")
public List selectAuthorGroupList(AuthorGroupVO authorGroupVO) throws Exception {
- return list("authorGroupDAO.selectAuthorGroupList", authorGroupVO);
+ fillSearchKeywordHash(authorGroupVO);
+ List result = list("authorGroupDAO.selectAuthorGroupList", authorGroupVO);
+ decryptGnrRowsInPlace(result);
+ return result;
}
/**
@@ -73,6 +114,7 @@ public class AuthorGroupDAO extends EgovComAbstractDAO {
* @exception Exception
*/
public int selectAuthorGroupListTotCnt(AuthorGroupVO authorGroupVO) throws Exception {
+ fillSearchKeywordHash(authorGroupVO);
return (Integer)getSqlMapClientTemplate().queryForObject("authorGroupDAO.selectAuthorGroupListTotCnt", authorGroupVO);
}
diff --git a/src/main/java/egovframework/com/sym/log/clg/service/LoginLog.java b/src/main/java/egovframework/com/sym/log/clg/service/LoginLog.java
index 594e90c..ba9122b 100644
--- a/src/main/java/egovframework/com/sym/log/clg/service/LoginLog.java
+++ b/src/main/java/egovframework/com/sym/log/clg/service/LoginLog.java
@@ -318,6 +318,19 @@ public class LoginLog implements Serializable {
public void setLoginNm(String loginNm) {
this.loginNm = loginNm;
}
-
+
+ /**
+ * loginNm(COMVNUSERMASTER.USER_NM) 출처 회원유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ * GNR일 때만 loginNm이 암호문이다.
+ */
+ private String loginNmSe;
+
+ public String getLoginNmSe() {
+ return loginNmSe;
+ }
+
+ public void setLoginNmSe(String loginNmSe) {
+ this.loginNmSe = loginNmSe;
+ }
}
diff --git a/src/main/java/egovframework/com/sym/log/clg/service/impl/LoginLogDAO.java b/src/main/java/egovframework/com/sym/log/clg/service/impl/LoginLogDAO.java
index b99c13f..f406dea 100644
--- a/src/main/java/egovframework/com/sym/log/clg/service/impl/LoginLogDAO.java
+++ b/src/main/java/egovframework/com/sym/log/clg/service/impl/LoginLogDAO.java
@@ -4,6 +4,7 @@ import java.util.List;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.sym.log.clg.service.LoginLog;
@@ -89,19 +90,30 @@ public class LoginLogDAO extends EgovComAbstractDAO {
* @throws Exception
*/
public LoginLog selectLoginLog(LoginLog loginLog) throws Exception{
-
- return (LoginLog) selectByPk("LoginLogDAO.selectLoginLog", loginLog);
- }
+
+ LoginLog result = (LoginLog) selectByPk("LoginLogDAO.selectLoginLog", loginLog);
+ if (result != null && "GNR".equals(result.getLoginNmSe())) {
+ MemberNmDecryptSupport.decryptInPlace(result, "loginNm");
+ }
+ return result;
+ }
/**
* 접속로그를 목록을 조회한다.
- *
+ *
* @param loginLog
* @return
- * @throws Exception
+ * @throws Exception
*/
+ @SuppressWarnings("unchecked")
public List selectLoginLogInf(LoginLog loginLog) throws Exception{
- return list("LoginLogDAO.selectLoginLogInf", loginLog);
+ List result = list("LoginLogDAO.selectLoginLogInf", loginLog);
+ for (LoginLog row : result) {
+ if ("GNR".equals(row.getLoginNmSe())) {
+ MemberNmDecryptSupport.decryptInPlace(row, "loginNm");
+ }
+ }
+ return result;
}
/**
diff --git a/src/main/java/egovframework/com/sym/log/lgm/service/SysLog.java b/src/main/java/egovframework/com/sym/log/lgm/service/SysLog.java
index dc28458..cb20362 100644
--- a/src/main/java/egovframework/com/sym/log/lgm/service/SysLog.java
+++ b/src/main/java/egovframework/com/sym/log/lgm/service/SysLog.java
@@ -387,6 +387,19 @@ public class SysLog implements Serializable {
public void setRqsterNm(String rqsterNm) {
this.rqsterNm = rqsterNm;
}
+
+ /**
+ * rqsterNm(COMVNUSERMASTER.USER_NM) 출처 회원유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ */
+ private String rqsterNmSe;
+
+ public String getRqsterNmSe() {
+ return rqsterNmSe;
+ }
+
+ public void setRqsterNmSe(String rqsterNmSe) {
+ this.rqsterNmSe = rqsterNmSe;
+ }
/**
* @return the rqesterIp
*/
diff --git a/src/main/java/egovframework/com/sym/log/lgm/service/impl/SysLogDAO.java b/src/main/java/egovframework/com/sym/log/lgm/service/impl/SysLogDAO.java
index 8fe3340..220811e 100644
--- a/src/main/java/egovframework/com/sym/log/lgm/service/impl/SysLogDAO.java
+++ b/src/main/java/egovframework/com/sym/log/lgm/service/impl/SysLogDAO.java
@@ -4,6 +4,7 @@ import java.util.List;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.sym.log.lgm.service.SysLog;
@@ -57,19 +58,30 @@ public class SysLogDAO extends EgovComAbstractDAO {
* @throws Exception
*/
public SysLog selectSysLog(SysLog sysLog) throws Exception{
-
- return (SysLog) selectByPk("SysLogDAO.selectSysLog", sysLog);
- }
+
+ SysLog result = (SysLog) selectByPk("SysLogDAO.selectSysLog", sysLog);
+ if (result != null && "GNR".equals(result.getRqsterNmSe())) {
+ MemberNmDecryptSupport.decryptInPlace(result, "rqsterNm");
+ }
+ return result;
+ }
/**
* 시스템 로그정보 목록을 조회한다.
- *
+ *
* @param sysLog
* @return
- * @throws Exception
+ * @throws Exception
*/
+ @SuppressWarnings("unchecked")
public List selectSysLogInf(SysLog sysLog) throws Exception{
- return list("SysLogDAO.selectSysLogInf", sysLog);
+ List result = list("SysLogDAO.selectSysLogInf", sysLog);
+ for (SysLog row : result) {
+ if ("GNR".equals(row.getRqsterNmSe())) {
+ MemberNmDecryptSupport.decryptInPlace(row, "rqsterNm");
+ }
+ }
+ return result;
}
/**
diff --git a/src/main/java/egovframework/com/sym/log/ulg/service/UserLog.java b/src/main/java/egovframework/com/sym/log/ulg/service/UserLog.java
index 36a8572..1759b13 100644
--- a/src/main/java/egovframework/com/sym/log/ulg/service/UserLog.java
+++ b/src/main/java/egovframework/com/sym/log/ulg/service/UserLog.java
@@ -162,6 +162,30 @@ public class UserLog implements Serializable {
this.rqsterNm = rqsterNm;
}
+ /**
+ * rqsterNm(COMVNUSERMASTER.USER_NM) 출처 회원유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ */
+ private String rqsterNmSe = "";
+
+ public String getRqsterNmSe() {
+ return rqsterNmSe;
+ }
+
+ public void setRqsterNmSe(String rqsterNmSe) {
+ this.rqsterNmSe = rqsterNmSe;
+ }
+
+ /** 이름 검색 완전일치 해시(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10). */
+ private String searchKeywordHash = "";
+
+ public String getSearchKeywordHash() {
+ return searchKeywordHash;
+ }
+
+ public void setSearchKeywordHash(String searchKeywordHash) {
+ this.searchKeywordHash = searchKeywordHash;
+ }
+
public String getMethodNm() {
return methodNm;
}
diff --git a/src/main/java/egovframework/com/sym/log/ulg/service/impl/UserLogDAO.java b/src/main/java/egovframework/com/sym/log/ulg/service/impl/UserLogDAO.java
index 5f4bbfd..50f9fca 100644
--- a/src/main/java/egovframework/com/sym/log/ulg/service/impl/UserLogDAO.java
+++ b/src/main/java/egovframework/com/sym/log/ulg/service/impl/UserLogDAO.java
@@ -4,6 +4,8 @@ import java.util.List;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberDataHasher;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.sym.log.ulg.service.UserLog;
@@ -26,12 +28,31 @@ import egovframework.com.sym.log.ulg.service.UserLog;
@Repository("userLogDAO")
public class UserLogDAO extends EgovComAbstractDAO {
+ /**
+ * 이름 검색 전환(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10) 헬퍼.
+ */
+ private MemberDataHasher mberNmHasher;
+
+ private void fillSearchKeywordHash(UserLog vo) {
+ if (vo == null) {
+ return;
+ }
+ String kw = vo.getSearchWrd();
+ if (kw == null || kw.trim().length() == 0) {
+ return;
+ }
+ if (mberNmHasher == null) {
+ mberNmHasher = new MemberDataHasher();
+ }
+ vo.setSearchKeywordHash(mberNmHasher.hashName(kw));
+ }
+
/**
* 사용자 로그정보를 생성한다.
- *
- * @param
+ *
+ * @param
* @return
- * @throws Exception
+ * @throws Exception
*/
public void logInsertUserLog() throws Exception{
insert("UserLogDAO.logInsertUserLog", null);
@@ -39,25 +60,37 @@ public class UserLogDAO extends EgovComAbstractDAO {
/**
* 사용자 로그정보를 조회한다.
- *
+ *
* @param userLog
* @return userLog
- * @throws Exception
+ * @throws Exception
*/
public UserLog selectUserLog(UserLog userLog) throws Exception{
-
- return (UserLog) selectByPk("UserLogDAO.selectUserLog", userLog);
- }
+
+ UserLog result = (UserLog) selectByPk("UserLogDAO.selectUserLog", userLog);
+ if (result != null && "GNR".equals(result.getRqsterNmSe())) {
+ MemberNmDecryptSupport.decryptInPlace(result, "rqsterNm");
+ }
+ return result;
+ }
/**
* 사용자 로그정보 목록을 조회한다.
- *
+ *
* @param UserLog
* @return
- * @throws Exception
+ * @throws Exception
*/
+ @SuppressWarnings("unchecked")
public List selectUserLogInf(UserLog userLog) throws Exception{
- return list("UserLogDAO.selectUserLogInf", userLog);
+ fillSearchKeywordHash(userLog);
+ List result = list("UserLogDAO.selectUserLogInf", userLog);
+ for (UserLog row : result) {
+ if ("GNR".equals(row.getRqsterNmSe())) {
+ MemberNmDecryptSupport.decryptInPlace(row, "rqsterNm");
+ }
+ }
+ return result;
}
/**
@@ -67,8 +100,8 @@ public class UserLogDAO extends EgovComAbstractDAO {
* @throws Exception
*/
public int selectUserLogInfCnt(UserLog userLog) throws Exception{
-
+ fillSearchKeywordHash(userLog);
return (Integer)getSqlMapClientTemplate().queryForObject("UserLogDAO.selectUserLogInfCnt", userLog);
}
-
+
}
diff --git a/src/main/java/egovframework/com/sym/log/wlg/service/WebLog.java b/src/main/java/egovframework/com/sym/log/wlg/service/WebLog.java
index aa4c1cd..786c45b 100644
--- a/src/main/java/egovframework/com/sym/log/wlg/service/WebLog.java
+++ b/src/main/java/egovframework/com/sym/log/wlg/service/WebLog.java
@@ -162,6 +162,19 @@ public class WebLog implements Serializable {
this.rqsterNm = rqsterNm;
}
+ /**
+ * rqsterNm(COMVNUSERMASTER.USER_NM) 출처 회원유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ */
+ private String rqsterNmSe;
+
+ public String getRqsterNmSe() {
+ return rqsterNmSe;
+ }
+
+ public void setRqsterNmSe(String rqsterNmSe) {
+ this.rqsterNmSe = rqsterNmSe;
+ }
+
public String getRqesterIp() {
return rqesterIp;
}
diff --git a/src/main/java/egovframework/com/sym/log/wlg/service/impl/WebLogDAO.java b/src/main/java/egovframework/com/sym/log/wlg/service/impl/WebLogDAO.java
index c3c7782..43935bb 100644
--- a/src/main/java/egovframework/com/sym/log/wlg/service/impl/WebLogDAO.java
+++ b/src/main/java/egovframework/com/sym/log/wlg/service/impl/WebLogDAO.java
@@ -4,6 +4,7 @@ import java.util.List;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.sym.log.wlg.service.WebLog;
@@ -57,19 +58,30 @@ public class WebLogDAO extends EgovComAbstractDAO {
* @throws Exception
*/
public WebLog selectWebLog(WebLog webLog) throws Exception{
-
- return (WebLog) selectByPk("WebLogDAO.selectWebLog", webLog);
- }
+
+ WebLog result = (WebLog) selectByPk("WebLogDAO.selectWebLog", webLog);
+ if (result != null && "GNR".equals(result.getRqsterNmSe())) {
+ MemberNmDecryptSupport.decryptInPlace(result, "rqsterNm");
+ }
+ return result;
+ }
/**
* 웹 로그정보 목록을 조회한다.
- *
+ *
* @param webLog
* @return
- * @throws Exception
+ * @throws Exception
*/
+ @SuppressWarnings("unchecked")
public List selectWebLogInf(WebLog webLog) throws Exception{
- return list("WebLogDAO.selectWebLogInf", webLog);
+ List result = list("WebLogDAO.selectWebLogInf", webLog);
+ for (WebLog row : result) {
+ if ("GNR".equals(row.getRqsterNmSe())) {
+ MemberNmDecryptSupport.decryptInPlace(row, "rqsterNm");
+ }
+ }
+ return result;
}
/**
diff --git a/src/main/java/egovframework/com/uat/uap/service/impl/LoginPolicyDAO.java b/src/main/java/egovframework/com/uat/uap/service/impl/LoginPolicyDAO.java
index bd8afb8..b3cb544 100644
--- a/src/main/java/egovframework/com/uat/uap/service/impl/LoginPolicyDAO.java
+++ b/src/main/java/egovframework/com/uat/uap/service/impl/LoginPolicyDAO.java
@@ -16,13 +16,34 @@ import java.util.List;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberDataHasher;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.uat.uap.service.LoginPolicy;
import egovframework.com.uat.uap.service.LoginPolicyVO;
@Repository("loginPolicyDAO")
public class LoginPolicyDAO extends EgovComAbstractDAO {
-
+
+ /**
+ * 이름 검색 전환(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10) 헬퍼.
+ */
+ private MemberDataHasher mberNmHasher;
+
+ private void fillSearchKeywordHash(LoginPolicyVO vo) {
+ if (vo == null || !"1".equals(vo.getSearchCondition())) {
+ return;
+ }
+ String kw = vo.getSearchKeyword();
+ if (kw == null || kw.trim().length() == 0) {
+ return;
+ }
+ if (mberNmHasher == null) {
+ mberNmHasher = new MemberDataHasher();
+ }
+ vo.setSearchKeywordHash(mberNmHasher.hashName(kw));
+ }
+
/**
* 로그인정책 목록을 조회한다.
* @param loginPolicyVO - 로그인정책 VO
@@ -30,7 +51,14 @@ public class LoginPolicyDAO extends EgovComAbstractDAO {
*/
@SuppressWarnings("unchecked")
public List selectLoginPolicyList(LoginPolicyVO loginPolicyVO) throws Exception {
- return list("loginPolicyDAO.selectLoginPolicyList", loginPolicyVO);
+ fillSearchKeywordHash(loginPolicyVO);
+ List result = list("loginPolicyDAO.selectLoginPolicyList", loginPolicyVO);
+ for (LoginPolicyVO row : result) {
+ if (row != null && "GNR".equals(row.getEmplyrSe())) {
+ MemberNmDecryptSupport.decryptInPlace(row, "emplyrNm");
+ }
+ }
+ return result;
}
/**
@@ -39,6 +67,7 @@ public class LoginPolicyDAO extends EgovComAbstractDAO {
* @return int
*/
public int selectLoginPolicyListTotCnt(LoginPolicyVO loginPolicyVO) throws Exception {
+ fillSearchKeywordHash(loginPolicyVO);
return (Integer)getSqlMapClientTemplate().queryForObject("loginPolicyDAO.selectLoginPolicyListTotCnt", loginPolicyVO);
}
@@ -48,7 +77,12 @@ public class LoginPolicyDAO extends EgovComAbstractDAO {
* @return LoginPolicyVO - 로그인정책 VO
*/
public LoginPolicyVO selectLoginPolicy(LoginPolicyVO loginPolicyVO) throws Exception {
- return (LoginPolicyVO)selectByPk("loginPolicyDAO.selectLoginPolicy", loginPolicyVO);
+ LoginPolicyVO result = (LoginPolicyVO)selectByPk("loginPolicyDAO.selectLoginPolicy", loginPolicyVO);
+ // GNR(일반회원)만 emplyrNm이 암호문이다 — ENT/USR는 각자 다른 테이블의 평문이다.
+ if (result != null && "GNR".equals(result.getEmplyrSe())) {
+ MemberNmDecryptSupport.decryptInPlace(result, "emplyrNm");
+ }
+ return result;
}
/**
diff --git a/src/main/java/egovframework/com/uat/uia/service/impl/LoginDAO.java b/src/main/java/egovframework/com/uat/uia/service/impl/LoginDAO.java
index bac7c62..2a082c7 100644
--- a/src/main/java/egovframework/com/uat/uia/service/impl/LoginDAO.java
+++ b/src/main/java/egovframework/com/uat/uia/service/impl/LoginDAO.java
@@ -8,6 +8,8 @@ import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Repository;
import egovframework.com.cmm.LoginVO;
+import egovframework.com.cmm.privacy.crypto.MemberDataHasher;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
/**
@@ -31,7 +33,64 @@ public class LoginDAO extends EgovComAbstractDAO {
/** log */
protected static final Log LOG = LogFactory.getLog(LoginDAO.class);
-
+
+ /**
+ * 이름 읽기전환/검색 전환(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10) 헬퍼.
+ * 지연 초기화 — {@link egovframework.com.cmm.privacy.crypto.MemberDataCipher} 정책과 동일.
+ */
+ private MemberDataHasher mberNmHasher;
+
+ /**
+ * 일반회원(GNR) 로그인 결과의 {@code name}을 복호화한다.
+ *
+ * ENT/USR/GRO 분기는 각자 다른 테이블의 평문 이름을 그대로 {@code name}에 담으므로
+ * 복호화 대상이 아니다 — {@code userSe=="GNR"}일 때만 호출한다(안 그러면 평문에
+ * 복호화를 시도해 예외가 난다).
+ */
+ private void decryptNameIfGnr(LoginVO vo) {
+ if (vo != null && "GNR".equals(vo.getUserSe())) {
+ MemberNmDecryptSupport.decryptInPlace(vo, "name");
+ }
+ }
+
+ /**
+ * 아이디/비밀번호 찾기(이름 검색) 완전일치 해시를 채운다.
+ * {@code userSe=="GNR"}일 때만 의미가 있다 — 다른 회원유형은 여전히 평문 이름으로 비교한다.
+ */
+ private void fillNameHash(LoginVO vo) {
+ if (vo == null || !"GNR".equals(vo.getUserSe())) {
+ return;
+ }
+ String name = vo.getName();
+ if (name == null || name.trim().length() == 0) {
+ return;
+ }
+ if (mberNmHasher == null) {
+ mberNmHasher = new MemberDataHasher();
+ }
+ vo.setNameHash(mberNmHasher.hashName(name));
+ }
+
+ /**
+ * 아이디 찾기(searchFrtId/searchFrtIdList) 전용 해시 채움.
+ * COMVNUSERMASTER 뷰는 ENT/GNR/GRO를 한 번에 검색하므로 조회 전에는 회원유형을 알 수 없다 —
+ * {@link #fillNameHash}처럼 userSe로 게이트할 수 없어 이름이 있으면 무조건 해시를 채운다.
+ * ENT/GRO 행은 뷰의 해시 컬럼이 NULL이라 자동으로 매칭 안 되고 평문 OR 비교로만 걸린다.
+ */
+ private void fillSearchNameHash(LoginVO vo) {
+ if (vo == null) {
+ return;
+ }
+ String name = vo.getName();
+ if (name == null || name.trim().length() == 0) {
+ return;
+ }
+ if (mberNmHasher == null) {
+ mberNmHasher = new MemberDataHasher();
+ }
+ vo.setNameHash(mberNmHasher.hashName(name));
+ }
+
/**
* 2011.08.26
* EsntlId를 이용한 로그인을 처리한다
@@ -40,7 +99,9 @@ public class LoginDAO extends EgovComAbstractDAO {
* @exception Exception
*/
public LoginVO actionLoginByEsntlId(LoginVO vo) throws Exception {
- return (LoginVO)selectByPk("loginDAO.ssoLoginByEsntlId", vo);
+ LoginVO result = (LoginVO)selectByPk("loginDAO.ssoLoginByEsntlId", vo);
+ decryptNameIfGnr(result);
+ return result;
}
@@ -51,7 +112,9 @@ public class LoginDAO extends EgovComAbstractDAO {
* @exception Exception
*/
public LoginVO actionLogin(LoginVO vo) throws Exception {
- return (LoginVO)selectByPk("loginDAO.actionLogin", vo);
+ LoginVO result = (LoginVO)selectByPk("loginDAO.actionLogin", vo);
+ decryptNameIfGnr(result);
+ return result;
}
/**
@@ -88,7 +151,7 @@ public class LoginDAO extends EgovComAbstractDAO {
* @exception Exception
*/
public LoginVO searchId(LoginVO vo) throws Exception {
-
+ fillNameHash(vo);
return (LoginVO)selectByPk("loginDAO.searchId", vo);
}
@@ -99,8 +162,10 @@ public class LoginDAO extends EgovComAbstractDAO {
* @exception Exception
*/
public LoginVO searchFrtId(LoginVO vo) throws Exception {
-
- return (LoginVO)selectByPk("loginDAO.searchFrtId", vo);
+ fillSearchNameHash(vo);
+ LoginVO result = (LoginVO)selectByPk("loginDAO.searchFrtId", vo);
+ decryptNameIfGnr(result);
+ return result;
}
/**
@@ -111,7 +176,12 @@ public class LoginDAO extends EgovComAbstractDAO {
*/
@SuppressWarnings("unchecked")
public List searchFrtIdList(LoginVO vo) throws Exception {
- return list("loginDAO.searchFrtIdList", vo);
+ fillSearchNameHash(vo);
+ List result = list("loginDAO.searchFrtIdList", vo);
+ for (LoginVO row : result) {
+ decryptNameIfGnr(row);
+ }
+ return result;
}
/**
@@ -121,7 +191,7 @@ public class LoginDAO extends EgovComAbstractDAO {
* @exception Exception
*/
public LoginVO searchPassword(LoginVO vo) throws Exception {
-
+ fillNameHash(vo);
return (LoginVO)selectByPk("loginDAO.searchPassword", vo);
}
@@ -152,7 +222,9 @@ public class LoginDAO extends EgovComAbstractDAO {
*/
@SuppressWarnings("unchecked")
public LoginVO searchSmsIdList(LoginVO vo) throws Exception {
- return (LoginVO) selectByPk("loginDAO.searchSmsIdList", vo);
+ LoginVO result = (LoginVO) selectByPk("loginDAO.searchSmsIdList", vo);
+ decryptNameIfGnr(result);
+ return result;
}
// KTH. 20190603 로그인 실패 insert
@@ -175,7 +247,9 @@ public class LoginDAO extends EgovComAbstractDAO {
// 휴먼고객 확인
public LoginVO diapauseChk(LoginVO vo) {
- return (LoginVO) selectByPk("loginDAO.diapauseChk", vo);
+ LoginVO result = (LoginVO) selectByPk("loginDAO.diapauseChk", vo);
+ decryptNameIfGnr(result);
+ return result;
}
// 휴먼고객 확인후 테이블 입력
@@ -200,7 +274,9 @@ public class LoginDAO extends EgovComAbstractDAO {
public List selectDiapauseList(LoginVO loginVO) {
- return list("loginDAO.selectDiapauseList", loginVO);
+ List result = list("loginDAO.selectDiapauseList", loginVO);
+ MemberNmDecryptSupport.decryptListInPlace(result, "name");
+ return result;
}
@@ -247,7 +323,9 @@ public class LoginDAO extends EgovComAbstractDAO {
public LoginVO actionIdCheckLogin(LoginVO vo) {
- return (LoginVO)selectByPk("loginDAO.actionIdCheckLogin", vo);
+ LoginVO result = (LoginVO)selectByPk("loginDAO.actionIdCheckLogin", vo);
+ decryptNameIfGnr(result);
+ return result;
}
diff --git a/src/main/java/egovframework/com/uss/olp/qri/service/impl/QustnrRespondInfoDao.java b/src/main/java/egovframework/com/uss/olp/qri/service/impl/QustnrRespondInfoDao.java
index 34f16e6..3c2fc4a 100644
--- a/src/main/java/egovframework/com/uss/olp/qri/service/impl/QustnrRespondInfoDao.java
+++ b/src/main/java/egovframework/com/uss/olp/qri/service/impl/QustnrRespondInfoDao.java
@@ -5,7 +5,11 @@ import java.util.Map;
import org.springframework.stereotype.Repository;
+import java.util.Map;
+
import egovframework.com.cmm.ComDefaultVO;
+import egovframework.com.cmm.privacy.crypto.MemberDataHasher;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.uss.olp.qri.service.QustnrRespondInfoVO;
/**
@@ -26,8 +30,27 @@ import egovframework.com.uss.olp.qri.service.QustnrRespondInfoVO;
*/
@Repository("qustnrRespondInfoDao")
public class QustnrRespondInfoDao extends EgovComAbstractDAO {
-
-
+
+ /**
+ * 이름 검색 전환(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10) 헬퍼. searchCondition='FRST_REGISTER_ID'일 때만 이름검색이다.
+ */
+ private MemberDataHasher mberNmHasher;
+
+ private void fillSearchKeywordHash(ComDefaultVO vo) {
+ if (vo == null || !"FRST_REGISTER_ID".equals(vo.getSearchCondition())) {
+ return;
+ }
+ String kw = vo.getSearchKeyword();
+ if (kw == null || kw.trim().length() == 0) {
+ return;
+ }
+ if (mberNmHasher == null) {
+ mberNmHasher = new MemberDataHasher();
+ }
+ vo.setSearchKeywordHash(mberNmHasher.hashName(kw));
+ }
+
+
/**
* 설문템플릿을 조회한다.
* @param map - 조회할 정보가 담긴 map
@@ -64,7 +87,12 @@ public class QustnrRespondInfoDao extends EgovComAbstractDAO {
* @throws Exception
*/
public Map selectQustnrRespondInfoManageEmplyrinfo(Map map) throws Exception{
- return (Map)getSqlMapClientTemplate().queryForObject("QustnrRespondInfo.selectQustnrRespondInfoManageEmplyrinfo", map);
+ Map result = (Map)getSqlMapClientTemplate().queryForObject("QustnrRespondInfo.selectQustnrRespondInfoManageEmplyrinfo", map);
+ // GNR(일반회원)만 USER_NM이 암호문이다 — USR(취급자)는 평문이다.
+ if (result != null && "GNR".equals(result.get("USER_SE"))) {
+ MemberNmDecryptSupport.decryptInPlace(result, "USER_NM");
+ }
+ return result;
}
/**
@@ -101,8 +129,16 @@ public class QustnrRespondInfoDao extends EgovComAbstractDAO {
* @return List
* @throws Exception
*/
+ @SuppressWarnings("unchecked")
public List selectQustnrRespondInfoManageList(ComDefaultVO searchVO) throws Exception{
- return (List)list("QustnrRespondInfo.selectQustnrRespondInfoManage", searchVO);
+ fillSearchKeywordHash(searchVO);
+ List result = (List)list("QustnrRespondInfo.selectQustnrRespondInfoManage", searchVO);
+ for (Map row : result) {
+ if ("GNR".equals(row.get("FRST_REGISTER_NM_SE"))) {
+ MemberNmDecryptSupport.decryptInPlace(row, "FRST_REGISTER_NM");
+ }
+ }
+ return result;
}
/**
@@ -112,6 +148,7 @@ public class QustnrRespondInfoDao extends EgovComAbstractDAO {
* @throws Exception
*/
public int selectQustnrRespondInfoManageListCnt(ComDefaultVO searchVO) throws Exception{
+ fillSearchKeywordHash(searchVO);
return (Integer)getSqlMapClientTemplate().queryForObject("QustnrRespondInfo.selectQustnrRespondInfoManageCnt", searchVO);
}
diff --git a/src/main/java/egovframework/com/uss/olp/qrm/service/impl/QustnrRespondManageDao.java b/src/main/java/egovframework/com/uss/olp/qrm/service/impl/QustnrRespondManageDao.java
index de6cb6e..e5567b2 100644
--- a/src/main/java/egovframework/com/uss/olp/qrm/service/impl/QustnrRespondManageDao.java
+++ b/src/main/java/egovframework/com/uss/olp/qrm/service/impl/QustnrRespondManageDao.java
@@ -4,7 +4,10 @@ import java.util.List;
import org.springframework.stereotype.Repository;
+import java.util.Map;
+
import egovframework.com.cmm.ComDefaultVO;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.uss.olp.qrm.service.QustnrRespondManageVO;
/**
@@ -32,8 +35,15 @@ public class QustnrRespondManageDao extends EgovComAbstractDAO {
* @return List
* @throws Exception
*/
+ @SuppressWarnings("unchecked")
public List selectQustnrRespondManageList(ComDefaultVO searchVO) throws Exception{
- return (List)list("QustnrRespondManage.selectQustnrRespondManage", searchVO);
+ List result = (List)list("QustnrRespondManage.selectQustnrRespondManage", searchVO);
+ for (Map row : result) {
+ if ("GNR".equals(row.get("FRST_REGISTER_NM_SE"))) {
+ MemberNmDecryptSupport.decryptInPlace(row, "FRST_REGISTER_NM");
+ }
+ }
+ return result;
}
/**
diff --git a/src/main/java/egovframework/com/uss/umt/service/impl/DiapauseManageDAO.java b/src/main/java/egovframework/com/uss/umt/service/impl/DiapauseManageDAO.java
index 1314573..9a3a989 100644
--- a/src/main/java/egovframework/com/uss/umt/service/impl/DiapauseManageDAO.java
+++ b/src/main/java/egovframework/com/uss/umt/service/impl/DiapauseManageDAO.java
@@ -4,6 +4,8 @@ import java.util.List;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberDataHasher;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.uss.umt.service.DiapauseManageVO;
import egovframework.com.uss.umt.service.UserDefaultVO;
@@ -11,11 +13,33 @@ import egovframework.com.uss.umt.service.UserDefaultVO;
@Repository("diapauseManageDAO")
public class DiapauseManageDAO extends EgovComAbstractDAO{
+ /**
+ * 이름 검색 완전일치 해시 계산(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ * 지연 초기화 — {@link egovframework.com.cmm.privacy.crypto.MemberDataCipher} 정책과 동일.
+ */
+ private MemberDataHasher mberNmHasher;
+
+ private void fillSearchKeywordHash(UserDefaultVO vo) {
+ if (vo == null || !"1".equals(vo.getSearchCondition())) {
+ return;
+ }
+ String kw = vo.getSearchKeyword();
+ if (kw == null || kw.trim().length() == 0) {
+ return;
+ }
+ if (mberNmHasher == null) {
+ mberNmHasher = new MemberDataHasher();
+ }
+ vo.setSearchKeywordHash(mberNmHasher.hashName(kw));
+ }
+
public List selectDiapauseList(UserDefaultVO userSearchVO) {
+ fillSearchKeywordHash(userSearchVO);
return list("diapauseManageDAO.selectDiapauseList", userSearchVO);
}
public int selectDiapauseListTotCnt(UserDefaultVO userSearchVO) {
+ fillSearchKeywordHash(userSearchVO);
return (Integer)getSqlMapClientTemplate().queryForObject("diapauseManageDAO.selectDiapauseListTotCnt", userSearchVO);
}
@@ -28,14 +52,41 @@ public class DiapauseManageDAO extends EgovComAbstractDAO{
}
- // KTH. 20190603
+ // KTH. 20190603
+ @SuppressWarnings("unchecked")
public List selectUserLockCheckList(UserDefaultVO userSearchVO) {
- return list("diapauseManageDAO.selectUserLockCheckList", userSearchVO);
+ fillUserLockSearchKeywordHash(userSearchVO);
+ List result = list("diapauseManageDAO.selectUserLockCheckList", userSearchVO);
+ for (DiapauseManageVO row : result) {
+ if (row != null && "GNR".equals(row.getUser_gubun())) {
+ MemberNmDecryptSupport.decryptInPlace(row, "user_nm");
+ }
+ }
+ return result;
}
// KTH. 20190603
public int selectUserLockCheckListTotCnt(UserDefaultVO userSearchVO) {
+ fillUserLockSearchKeywordHash(userSearchVO);
return (Integer)getSqlMapClientTemplate().queryForObject("diapauseManageDAO.selectUserLockCheckListTotCnt", userSearchVO);
}
+
+ /**
+ * selectUserLockCheckList(Cnt) 전용 해시 채움(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ * 이 구문은 searchCondition3='2'로 이름검색을 구분한다(searchCondition='1'을 쓰는 {@link #fillSearchKeywordHash}와 다른 필드).
+ */
+ private void fillUserLockSearchKeywordHash(UserDefaultVO vo) {
+ if (vo == null || !"2".equals(vo.getSearchCondition3())) {
+ return;
+ }
+ String kw = vo.getSearchKeyword();
+ if (kw == null || kw.trim().length() == 0) {
+ return;
+ }
+ if (mberNmHasher == null) {
+ mberNmHasher = new MemberDataHasher();
+ }
+ vo.setSearchKeywordHash(mberNmHasher.hashName(kw));
+ }
// KTH. 20190603
public void updateUnlock(DiapauseManageVO vo) {
update("diapauseManageDAO.updateUnlock", vo);
diff --git a/src/main/java/egovframework/com/uss/umt/service/impl/MberManageDAO.java b/src/main/java/egovframework/com/uss/umt/service/impl/MberManageDAO.java
index 7b5249f..b759dab 100644
--- a/src/main/java/egovframework/com/uss/umt/service/impl/MberManageDAO.java
+++ b/src/main/java/egovframework/com/uss/umt/service/impl/MberManageDAO.java
@@ -8,6 +8,7 @@ import org.springframework.stereotype.Repository;
import egovframework.com.cmm.privacy.crypto.MemberDataCipher;
import egovframework.com.cmm.privacy.crypto.MemberDataHasher;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.uss.umt.service.EntrprsManageVO;
import egovframework.com.uss.umt.service.MberManageVO;
@@ -183,7 +184,9 @@ public class MberManageDAO extends EgovComAbstractDAO{
* @return MberManageVO 일반회원 상세정보
*/
public MberManageVO selectMber(String mberId){
- return (MberManageVO) selectByPk("mberManageDAO.selectMber_S", mberId);
+ MberManageVO result = (MberManageVO) selectByPk("mberManageDAO.selectMber_S", mberId);
+ MemberNmDecryptSupport.decryptInPlace(result, "mberNm");
+ return result;
}
/**
@@ -278,7 +281,9 @@ public class MberManageDAO extends EgovComAbstractDAO{
}
public List selectTopExcelMberList(UserDefaultVO userSearchVO) {
- return list("mberManageDAO.selectTopExcelMberList", userSearchVO);
+ List result = list("mberManageDAO.selectTopExcelMberList", userSearchVO);
+ MemberNmDecryptSupport.decryptListInPlace(result, "mber_nm");
+ return result;
}
public List selectTopExcelGroupList(UserDefaultVO userSearchVO) {
return list("mberManageDAO.selectTopExcelGroupList", userSearchVO);
diff --git a/src/main/java/kr/or/arko/frt/biz/note/service/impl/BizMemberDAO.java b/src/main/java/kr/or/arko/frt/biz/note/service/impl/BizMemberDAO.java
index 7d80bd1..06cab52 100644
--- a/src/main/java/kr/or/arko/frt/biz/note/service/impl/BizMemberDAO.java
+++ b/src/main/java/kr/or/arko/frt/biz/note/service/impl/BizMemberDAO.java
@@ -8,21 +8,50 @@ import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberDataHasher;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
@Repository("BizMemberDAO")
public class BizMemberDAO extends EgovComAbstractDAO {
-
+
+ /**
+ * 이름 검색 전환(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10) 헬퍼.
+ * COMVNUSERMASTER 뷰 경유 exact-match 검색도 GNR 암호문 대상이면 매칭이 깨지므로 해시 비교를 병행한다.
+ */
+ private MemberDataHasher mberNmHasher;
+
+ private void fillSearchKeywordHash(MemberVO vo) {
+ if (vo == null) {
+ return;
+ }
+ String kw = vo.getKeyword();
+ if (kw == null || kw.trim().length() == 0) {
+ return;
+ }
+ if (mberNmHasher == null) {
+ mberNmHasher = new MemberDataHasher();
+ }
+ vo.setSearchKeywordHash(mberNmHasher.hashName(kw));
+ }
+
/** 개인회원 리스트 조회 */
@SuppressWarnings("unchecked")
public List selectSingleList(MemberVO memberVO) throws Exception {
return list("BizMemberDAO.selectSingleList", memberVO);
}
-
+
/** 회원마스터 리스트 조회 */
@SuppressWarnings("unchecked")
public List selectUsrMasterSingleList(MemberVO memberVO) throws Exception {
- return list("BizMemberDAO.selectUsrMasterSingleList", memberVO);
+ fillSearchKeywordHash(memberVO);
+ List result = list("BizMemberDAO.selectUsrMasterSingleList", memberVO);
+ for (MemberVO row : result) {
+ if (row != null && "GNR".equals(row.getmberSttus())) {
+ MemberNmDecryptSupport.decryptInPlace(row, "mberNm");
+ }
+ }
+ return result;
}
/** 개인회원 총 건수 조회 */
diff --git a/src/main/java/kr/or/arko/frt/biz/note/service/impl/BizNoteDAO.java b/src/main/java/kr/or/arko/frt/biz/note/service/impl/BizNoteDAO.java
index 9179377..d04e230 100644
--- a/src/main/java/kr/or/arko/frt/biz/note/service/impl/BizNoteDAO.java
+++ b/src/main/java/kr/or/arko/frt/biz/note/service/impl/BizNoteDAO.java
@@ -11,6 +11,7 @@ import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
@Repository("BizNoteDAO")
@@ -92,7 +93,12 @@ public class BizNoteDAO extends EgovComAbstractDAO {
/** 개인수신쪽지 상세내용 조회 */
public LoginVO selectSingleNote2(String toId) throws Exception {
- return (LoginVO)selectByPk("BizNoteDAO.selectSingleNote2", toId);
+ LoginVO result = (LoginVO)selectByPk("BizNoteDAO.selectSingleNote2", toId);
+ // GNR(일반회원)만 name이 암호문이다 — ENT/GRO는 각자 다른 테이블의 평문이다.
+ if (result != null && "GNR".equals(result.getUserSe())) {
+ MemberNmDecryptSupport.decryptInPlace(result, "name");
+ }
+ return result;
}
/** 그룹쪽지 등록 */
diff --git a/src/main/java/kr/or/arko/mnt/biz/appconfirm/service/AppconfirmVO.java b/src/main/java/kr/or/arko/mnt/biz/appconfirm/service/AppconfirmVO.java
index f94433a..038eef0 100644
--- a/src/main/java/kr/or/arko/mnt/biz/appconfirm/service/AppconfirmVO.java
+++ b/src/main/java/kr/or/arko/mnt/biz/appconfirm/service/AppconfirmVO.java
@@ -250,6 +250,19 @@ public class AppconfirmVO extends ProvolVO implements Serializable {
this.mberNm = mberNm;
}
+ /**
+ * mberNm(COMVNUSERMASTER.USER_NM) 출처 회원유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ */
+ private String mberNmSe = "";
+
+ public String getMberNmSe() {
+ return mberNmSe;
+ }
+
+ public void setMberNmSe(String mberNmSe) {
+ this.mberNmSe = mberNmSe;
+ }
+
public String getGroupId() {
return groupId;
}
@@ -402,6 +415,21 @@ public class AppconfirmVO extends ProvolVO implements Serializable {
this.authNm = authNm;
}
+ /**
+ * authNm 출처 회원유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ * authNm 은 두 후보(신청자 자신 또는 그룹승인권자) 중 조건부로 하나가 선택되어 채워지므로
+ * esntlNm(=userSe)과 다른 별도 판별값이 필요하다.
+ */
+ private String authNmSe = "";
+
+ public String getAuthNmSe() {
+ return authNmSe;
+ }
+
+ public void setAuthNmSe(String authNmSe) {
+ this.authNmSe = authNmSe;
+ }
+
public String getMbtlnum() {
return mbtlnum;
}
@@ -438,6 +466,19 @@ public class AppconfirmVO extends ProvolVO implements Serializable {
return approvalgugunNm;
}
+ /**
+ * approvalgugunNm(COMVNUSERMASTER.USER_NM) 출처 회원유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ */
+ private String approvalgugunNmSe = "";
+
+ public String getApprovalgugunNmSe() {
+ return approvalgugunNmSe;
+ }
+
+ public void setApprovalgugunNmSe(String approvalgugunNmSe) {
+ this.approvalgugunNmSe = approvalgugunNmSe;
+ }
+
public void setApprovalgugunNm(String approvalgugunNm) {
this.approvalgugunNm = approvalgugunNm;
}
diff --git a/src/main/java/kr/or/arko/mnt/biz/appconfirm/service/impl/BizAppconfirmDAO.java b/src/main/java/kr/or/arko/mnt/biz/appconfirm/service/impl/BizAppconfirmDAO.java
index 55ae465..5c903c1 100644
--- a/src/main/java/kr/or/arko/mnt/biz/appconfirm/service/impl/BizAppconfirmDAO.java
+++ b/src/main/java/kr/or/arko/mnt/biz/appconfirm/service/impl/BizAppconfirmDAO.java
@@ -13,6 +13,8 @@ import kr.or.arko.mnt.biz.provol.service.ProvolVO;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberDataHasher;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.sym.prm.service.ProgrmManageVO;
import egovframework.rte.psl.dataaccess.util.EgovMap;
@@ -20,6 +22,47 @@ import egovframework.rte.psl.dataaccess.util.EgovMap;
@Repository("BizAppconfirmDAO")
public class BizAppconfirmDAO extends EgovComAbstractDAO {
+ /**
+ * 이름 읽기전환/검색 전환(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10) 헬퍼.
+ */
+ private MemberDataHasher mberNmHasher;
+
+ private void fillSearchKeywordHash(AppconfirmVO vo) {
+ if (vo == null) {
+ return;
+ }
+ String cond = vo.getSearchCondition();
+ if (!"name".equals(cond) && !"esntlNm".equals(cond) && !"authNm".equals(cond) && !"all".equals(cond)) {
+ return;
+ }
+ String kw = vo.getSearchKeyword();
+ if (kw == null || kw.trim().length() == 0) {
+ return;
+ }
+ if (mberNmHasher == null) {
+ mberNmHasher = new MemberDataHasher();
+ }
+ vo.setSearchKeywordHash(mberNmHasher.hashName(kw));
+ }
+
+ private void decryptAppconfirmRow(AppconfirmVO row) {
+ if (row == null) {
+ return;
+ }
+ if ("GNR".equals(row.getMberNmSe())) {
+ MemberNmDecryptSupport.decryptInPlace(row, "mberNm");
+ }
+ if ("GNR".equals(row.getUserSe())) {
+ MemberNmDecryptSupport.decryptInPlace(row, "esntlNm");
+ }
+ if ("GNR".equals(row.getAuthNmSe())) {
+ MemberNmDecryptSupport.decryptInPlace(row, "authNm");
+ }
+ if ("GNR".equals(row.getApprovalgugunNmSe())) {
+ MemberNmDecryptSupport.decryptInPlace(row, "approvalgugunNm");
+ }
+ }
+
/**총 활동 시간 조회*/
public AppconfirmVO selectAllHourView(AppconfirmVO appconfirmVO) throws Exception {
return (AppconfirmVO)selectByPk("BizAppconfirmDAO.selectAllHourView", appconfirmVO);
@@ -76,28 +119,44 @@ public class BizAppconfirmDAO extends EgovComAbstractDAO {
/** 활동확인 입력 리스트 조회 */
@SuppressWarnings("unchecked")
public List selectAppconfirmRegistList(AppconfirmVO appconfirmVO) throws Exception {
- return list("BizAppconfirmDAO.selectAppconfirmRegistList", appconfirmVO);
+ List result = list("BizAppconfirmDAO.selectAppconfirmRegistList", appconfirmVO);
+ for (AppconfirmVO row : result) {
+ decryptAppconfirmRow(row);
+ }
+ return result;
}
/** 활동확인 리스트 조회 */
@SuppressWarnings("unchecked")
public List selectAppconfirmList(AppconfirmVO appconfirmVO) throws Exception {
- return list("BizAppconfirmDAO.selectAppconfirmList", appconfirmVO);
+ fillSearchKeywordHash(appconfirmVO);
+ List result = list("BizAppconfirmDAO.selectAppconfirmList", appconfirmVO);
+ for (AppconfirmVO row : result) {
+ decryptAppconfirmRow(row);
+ }
+ return result;
}
/** 활동확인 총 건수 조회 */
public int selectAppconfirmListTotCnt(AppconfirmVO appconfirmVO) throws Exception {
+ fillSearchKeywordHash(appconfirmVO);
return (Integer)getSqlMapClientTemplate().queryForObject("BizAppconfirmDAO.selectAppconfirmListTotCnt", appconfirmVO);
}
/** 활동승인 리스트 조회 */
@SuppressWarnings("unchecked")
public List selectActivityApprovalList(AppconfirmVO appconfirmVO) throws Exception {
- return list("BizAppconfirmDAO.selectActivityApprovalList", appconfirmVO);
+ fillSearchKeywordHash(appconfirmVO);
+ List result = list("BizAppconfirmDAO.selectActivityApprovalList", appconfirmVO);
+ for (AppconfirmVO row : result) {
+ decryptAppconfirmRow(row);
+ }
+ return result;
}
/** 활동승인 총 건수 조회 */
public int selectActivityApprovalListTotCnt(AppconfirmVO appconfirmVO) throws Exception {
+ fillSearchKeywordHash(appconfirmVO);
return (Integer)getSqlMapClientTemplate().queryForObject("BizAppconfirmDAO.selectActivityApprovalListTotCnt", appconfirmVO);
}
@@ -161,7 +220,12 @@ public class BizAppconfirmDAO extends EgovComAbstractDAO {
/** 활동확인 : 엑셀 다운*/
@SuppressWarnings("unchecked")
public List excelAppconfirmList(AppconfirmVO appconfirmVO) throws Exception {
- return list("BizAppconfirmDAO.excelAppconfirmList", appconfirmVO);
+ fillSearchKeywordHash(appconfirmVO);
+ List result = list("BizAppconfirmDAO.excelAppconfirmList", appconfirmVO);
+ for (AppconfirmVO row : result) {
+ decryptAppconfirmRow(row);
+ }
+ return result;
}
/** 확인서 내역 출력 */
diff --git a/src/main/java/kr/or/arko/mnt/biz/event/service/EvtMntVO.java b/src/main/java/kr/or/arko/mnt/biz/event/service/EvtMntVO.java
index 5b42e43..3c36112 100644
--- a/src/main/java/kr/or/arko/mnt/biz/event/service/EvtMntVO.java
+++ b/src/main/java/kr/or/arko/mnt/biz/event/service/EvtMntVO.java
@@ -178,6 +178,20 @@ public class EvtMntVO extends UserDefaultVO{
this.frstRegisterNm = frstRegisterNm;
}
+ /**
+ * 최초 등록자 유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ * GNR(일반회원)일 때만 {@code frstRegisterNm}이 암호문이다.
+ */
+ private String userSe = "";
+
+ public String getUserSe() {
+ return userSe;
+ }
+
+ public void setUserSe(String userSe) {
+ this.userSe = userSe;
+ }
+
public String getOrignlFileNm() {
return orignlFileNm;
}
diff --git a/src/main/java/kr/or/arko/mnt/biz/event/service/impl/BizAwardMntDAO.java b/src/main/java/kr/or/arko/mnt/biz/event/service/impl/BizAwardMntDAO.java
index 984f41b..1527691 100644
--- a/src/main/java/kr/or/arko/mnt/biz/event/service/impl/BizAwardMntDAO.java
+++ b/src/main/java/kr/or/arko/mnt/biz/event/service/impl/BizAwardMntDAO.java
@@ -7,6 +7,7 @@ import javax.annotation.Resource;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.EgovFileMngService;
import egovframework.com.cmm.service.EgovFileMngUtil;
import egovframework.com.cmm.service.FileVO;
@@ -284,7 +285,25 @@ public class BizAwardMntDAO extends EgovComAbstractDAO {
/** 이벤트 리스트 조회 */
@SuppressWarnings("unchecked")
public List selectEventMgmtList(UserDefaultVO userSearchVO) throws Exception {
- return list("BizAwardMntDAO.selectEventMgmtList", userSearchVO);
+ List result = list("BizAwardMntDAO.selectEventMgmtList", userSearchVO);
+ decryptGnrRowsInPlace(result);
+ return result;
+ }
+
+ /**
+ * GNR(일반회원)만 frstRegisterNm이 암호문이다(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ * USR/ENT/GRO는 각자 다른 테이블의 평문이므로 무조건 복호화하면 예외가 난다.
+ */
+ private void decryptGnrRowsInPlace(List rows) {
+ if (rows == null) {
+ return;
+ }
+ for (int i = 0; i < rows.size(); i++) {
+ EvtMntVO row = rows.get(i);
+ if (row != null && "GNR".equals(row.getUserSe())) {
+ MemberNmDecryptSupport.decryptInPlace(row, "frstRegisterNm");
+ }
+ }
}
/** 이벤트 총 건수 조회 */
@@ -321,7 +340,11 @@ public class BizAwardMntDAO extends EgovComAbstractDAO {
/** 이벤트 상세내용 조회 */
public EvtMntVO selectEventMgmt(EvtMntVO evtMntVO) throws Exception {
- return (EvtMntVO)selectByPk("BizAwardMntDAO.selectEventMgmt", evtMntVO);
+ EvtMntVO result = (EvtMntVO)selectByPk("BizAwardMntDAO.selectEventMgmt", evtMntVO);
+ if (result != null && "GNR".equals(result.getUserSe())) {
+ MemberNmDecryptSupport.decryptInPlace(result, "frstRegisterNm");
+ }
+ return result;
}
/** 이벤트 수정 */
diff --git a/src/main/java/kr/or/arko/mnt/biz/group/service/GroupManageVO.java b/src/main/java/kr/or/arko/mnt/biz/group/service/GroupManageVO.java
index 8d7ca23..f81a6ad 100644
--- a/src/main/java/kr/or/arko/mnt/biz/group/service/GroupManageVO.java
+++ b/src/main/java/kr/or/arko/mnt/biz/group/service/GroupManageVO.java
@@ -349,6 +349,19 @@ public class GroupManageVO extends GroupManageTalentVO{
public void setEntrprsMberId(String entrprsMberId) {
this.entrprsMberId = entrprsMberId;
}
+
+ /**
+ * entrprsMberId(COMVNUSERMASTER.USER_NM) 출처 회원유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ */
+ private String entrprsMberIdSe;
+
+ public String getEntrprsMberIdSe() {
+ return entrprsMberIdSe;
+ }
+
+ public void setEntrprsMberIdSe(String entrprsMberIdSe) {
+ this.entrprsMberIdSe = entrprsMberIdSe;
+ }
/**
* @return the emplyrId
*/
diff --git a/src/main/java/kr/or/arko/mnt/biz/group/service/impl/GroupManageDAO.java b/src/main/java/kr/or/arko/mnt/biz/group/service/impl/GroupManageDAO.java
index 0b786dd..c523338 100644
--- a/src/main/java/kr/or/arko/mnt/biz/group/service/impl/GroupManageDAO.java
+++ b/src/main/java/kr/or/arko/mnt/biz/group/service/impl/GroupManageDAO.java
@@ -9,6 +9,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.uss.umt.service.MberManageVO;
import egovframework.com.uss.umt.service.UserDefaultVO;
@@ -40,8 +41,11 @@ public class GroupManageDAO extends EgovComAbstractDAO{
* @param userSearchVO 검색조건
* @return List 기업회원 목록정보
*/
+ @SuppressWarnings("unchecked")
public List selectGroupMberList(UserDefaultVO userSearchVO){
- return list("groupMberManageDAO.selectGroupMberList", userSearchVO);
+ List result = list("groupMberManageDAO.selectGroupMberList", userSearchVO);
+ decryptEntrprsMberIdRows(result);
+ return result;
}
/**
@@ -143,7 +147,9 @@ public class GroupManageDAO extends EgovComAbstractDAO{
* @param groupMberVO 그룹원정보
*/
public List groupMberList(GroupMberVO groupMberVO){
- return list("groupMberManageDAO.groupMberList", groupMberVO);
+ List result = list("groupMberManageDAO.groupMberList", groupMberVO);
+ MemberNmDecryptSupport.decryptListInPlace(result, "MBER_NM");
+ return result;
}
/**
@@ -225,8 +231,11 @@ public class GroupManageDAO extends EgovComAbstractDAO{
* @param userSearchVO 검색조건
* @return List 기업회원 목록정보
*/
+ @SuppressWarnings("unchecked")
public List selectExcelGroupMberList(UserDefaultVO userSearchVO){
- return list("groupMberManageDAO.selectExcelGroupMberList", userSearchVO);
+ List result = list("groupMberManageDAO.selectExcelGroupMberList", userSearchVO);
+ decryptEntrprsMberIdRows(result);
+ return result;
}
/**
@@ -234,8 +243,34 @@ public class GroupManageDAO extends EgovComAbstractDAO{
* @param userSearchVO 검색조건
* @return List 기업회원 목록정보
*/
+ @SuppressWarnings("unchecked")
public List selectExcelGroupTalentList(UserDefaultVO userSearchVO){
- return list("groupMberManageDAO.selectExcelGroupTalentList", userSearchVO);
+ List result = list("groupMberManageDAO.selectExcelGroupTalentList", userSearchVO);
+ decryptEntrprsMberIdRows(result);
+ return result;
+ }
+
+ /**
+ * COMVNUSERMASTER 경유 entrprsMberId(=USER_NM) 조건부 복호화(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ * resultClass가 egovMap(Map)/GroupManageVO(Bean) 둘 다 쓰이므로 MemberNmDecryptSupport의 통일된 처리에 위임한다.
+ */
+ @SuppressWarnings("rawtypes")
+ private void decryptEntrprsMberIdRows(List result) {
+ if (result == null) {
+ return;
+ }
+ for (Object row : result) {
+ try {
+ Object se = row instanceof java.util.Map
+ ? ((java.util.Map) row).get("entrprsMberIdSe")
+ : org.apache.commons.beanutils.PropertyUtils.getProperty(row, "entrprsMberIdSe");
+ if ("GNR".equals(se)) {
+ MemberNmDecryptSupport.decryptInPlace(row, "entrprsMberId");
+ }
+ } catch (Exception e) {
+ throw new IllegalStateException("[개인정보/암호화] entrprsMberId 판별/복호화 실패", e);
+ }
+ }
}
public void updateGroupMatchService(GroupManageVO groupManageVO){
diff --git a/src/main/java/kr/or/arko/mnt/biz/prbro/service/PrbroVO.java b/src/main/java/kr/or/arko/mnt/biz/prbro/service/PrbroVO.java
index b2bf22b..b501ed1 100644
--- a/src/main/java/kr/or/arko/mnt/biz/prbro/service/PrbroVO.java
+++ b/src/main/java/kr/or/arko/mnt/biz/prbro/service/PrbroVO.java
@@ -191,6 +191,19 @@ public class PrbroVO extends ComDefaultVO {
this.frstRegisterNm = frstRegisterNm;
}
+ /**
+ * frstRegisterNm(COMVNUSERMASTER.USER_NM) 출처 회원유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ */
+ private String frstRegisterNmSe = "";
+
+ public String getFrstRegisterNmSe() {
+ return frstRegisterNmSe;
+ }
+
+ public void setFrstRegisterNmSe(String frstRegisterNmSe) {
+ this.frstRegisterNmSe = frstRegisterNmSe;
+ }
+
public String getOrignlFileNm() {
return orignlFileNm;
}
diff --git a/src/main/java/kr/or/arko/mnt/biz/prbro/service/impl/BizPrbroDAO.java b/src/main/java/kr/or/arko/mnt/biz/prbro/service/impl/BizPrbroDAO.java
index 0778ef1..dbfe8e5 100644
--- a/src/main/java/kr/or/arko/mnt/biz/prbro/service/impl/BizPrbroDAO.java
+++ b/src/main/java/kr/or/arko/mnt/biz/prbro/service/impl/BizPrbroDAO.java
@@ -8,25 +8,60 @@ import kr.or.arko.mnt.biz.prbro.service.PrbroVO;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberDataHasher;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
@Repository("BizPrbroDAO")
public class BizPrbroDAO extends EgovComAbstractDAO {
-
+
+ /**
+ * 이름 검색 전환(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10) 헬퍼.
+ */
+ private MemberDataHasher mberNmHasher;
+
+ private void fillSearchKeywordHash(PrbroVO vo) {
+ if (vo == null || !"all".equals(vo.getSearchCondition())) {
+ return;
+ }
+ String kw = vo.getSearchKeyword();
+ if (kw == null || kw.trim().length() == 0) {
+ return;
+ }
+ if (mberNmHasher == null) {
+ mberNmHasher = new MemberDataHasher();
+ }
+ vo.setSearchKeywordHash(mberNmHasher.hashName(kw));
+ }
+
+ private void decryptIfGnr(PrbroVO vo) {
+ if (vo != null && "GNR".equals(vo.getFrstRegisterNmSe())) {
+ MemberNmDecryptSupport.decryptInPlace(vo, "frstRegisterNm");
+ }
+ }
+
/** 리스트 조회 */
@SuppressWarnings("unchecked")
public List selectPrbroList(PrbroVO prbroVO) throws Exception {
- return list("BizPrbroDAO.selectPrbroList", prbroVO);
+ fillSearchKeywordHash(prbroVO);
+ List result = list("BizPrbroDAO.selectPrbroList", prbroVO);
+ for (PrbroVO row : result) {
+ decryptIfGnr(row);
+ }
+ return result;
}
/** 총 건수 조회 */
public int selectPrbroListTotCnt(PrbroVO prbroVO) throws Exception {
+ fillSearchKeywordHash(prbroVO);
return (Integer)getSqlMapClientTemplate().queryForObject("BizPrbroDAO.selectPrbroListTotCnt", prbroVO);
}
/** 상세내용 조회 */
public PrbroVO selectPrbro(PrbroVO prbroVO) throws Exception {
- return (PrbroVO)selectByPk("BizPrbroDAO.selectPrbro", prbroVO);
+ PrbroVO result = (PrbroVO)selectByPk("BizPrbroDAO.selectPrbro", prbroVO);
+ decryptIfGnr(result);
+ return result;
}
/** 등록 */
diff --git a/src/main/java/kr/or/arko/mnt/biz/prmvp/service/PrmvpVO.java b/src/main/java/kr/or/arko/mnt/biz/prmvp/service/PrmvpVO.java
index b42c56c..3b132e1 100644
--- a/src/main/java/kr/or/arko/mnt/biz/prmvp/service/PrmvpVO.java
+++ b/src/main/java/kr/or/arko/mnt/biz/prmvp/service/PrmvpVO.java
@@ -200,6 +200,19 @@ public class PrmvpVO extends ComDefaultVO {
this.frstRegisterNm = frstRegisterNm;
}
+ /**
+ * frstRegisterNm(COMVNUSERMASTER.USER_NM) 출처 회원유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ */
+ private String frstRegisterNmSe = "";
+
+ public String getFrstRegisterNmSe() {
+ return frstRegisterNmSe;
+ }
+
+ public void setFrstRegisterNmSe(String frstRegisterNmSe) {
+ this.frstRegisterNmSe = frstRegisterNmSe;
+ }
+
public String getOrignlFileNm() {
return orignlFileNm;
}
diff --git a/src/main/java/kr/or/arko/mnt/biz/prmvp/service/impl/BizPrmvpDAO.java b/src/main/java/kr/or/arko/mnt/biz/prmvp/service/impl/BizPrmvpDAO.java
index ebee336..ed277d1 100644
--- a/src/main/java/kr/or/arko/mnt/biz/prmvp/service/impl/BizPrmvpDAO.java
+++ b/src/main/java/kr/or/arko/mnt/biz/prmvp/service/impl/BizPrmvpDAO.java
@@ -8,25 +8,60 @@ import kr.or.arko.mnt.biz.prmvp.service.PrmvpVO;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberDataHasher;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
@Repository("BizPrmvpDAO")
public class BizPrmvpDAO extends EgovComAbstractDAO {
-
+
+ /**
+ * 이름 검색 전환(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10) 헬퍼.
+ */
+ private MemberDataHasher mberNmHasher;
+
+ private void fillSearchKeywordHash(PrmvpVO vo) {
+ if (vo == null || !"all".equals(vo.getSearchCondition())) {
+ return;
+ }
+ String kw = vo.getSearchKeyword();
+ if (kw == null || kw.trim().length() == 0) {
+ return;
+ }
+ if (mberNmHasher == null) {
+ mberNmHasher = new MemberDataHasher();
+ }
+ vo.setSearchKeywordHash(mberNmHasher.hashName(kw));
+ }
+
+ private void decryptIfGnr(PrmvpVO vo) {
+ if (vo != null && "GNR".equals(vo.getFrstRegisterNmSe())) {
+ MemberNmDecryptSupport.decryptInPlace(vo, "frstRegisterNm");
+ }
+ }
+
/** 리스트 조회 */
@SuppressWarnings("unchecked")
public List selectPrmvpList(PrmvpVO prmvpVO) throws Exception {
- return list("BizPrmvpDAO.selectPrmvpList", prmvpVO);
+ fillSearchKeywordHash(prmvpVO);
+ List result = list("BizPrmvpDAO.selectPrmvpList", prmvpVO);
+ for (PrmvpVO row : result) {
+ decryptIfGnr(row);
+ }
+ return result;
}
/** 총 건수 조회 */
public int selectPrmvpListTotCnt(PrmvpVO prmvpVO) throws Exception {
+ fillSearchKeywordHash(prmvpVO);
return (Integer)getSqlMapClientTemplate().queryForObject("BizPrmvpDAO.selectPrmvpListTotCnt", prmvpVO);
}
/** 상세내용 조회 */
public PrmvpVO selectPrmvp(PrmvpVO prmvpVO) throws Exception {
- return (PrmvpVO)selectByPk("BizPrmvpDAO.selectPrmvp", prmvpVO);
+ PrmvpVO result = (PrmvpVO)selectByPk("BizPrmvpDAO.selectPrmvp", prmvpVO);
+ decryptIfGnr(result);
+ return result;
}
/** 등록 */
diff --git a/src/main/java/kr/or/arko/mnt/biz/proapp/service/ProappVO.java b/src/main/java/kr/or/arko/mnt/biz/proapp/service/ProappVO.java
index 09d6163..cb429cf 100644
--- a/src/main/java/kr/or/arko/mnt/biz/proapp/service/ProappVO.java
+++ b/src/main/java/kr/or/arko/mnt/biz/proapp/service/ProappVO.java
@@ -170,6 +170,31 @@ public class ProappVO extends ProvolVO implements Serializable {
this.mberNm = mberNm;
}
+ /** mberNm 완전일치 검증용 해시(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10). */
+ private String mberNmHash = "";
+
+ public String getMberNmHash() {
+ return mberNmHash;
+ }
+
+ public void setMberNmHash(String mberNmHash) {
+ this.mberNmHash = mberNmHash;
+ }
+
+ /**
+ * mberNm 출처 회원유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ * GNR일 때만 mberNm이 암호문이다. esntlNm 은 {@link ProvolVO#getUserSe()}를 그대로 쓴다(동일 의미).
+ */
+ private String mberNmSe = "";
+
+ public String getMberNmSe() {
+ return mberNmSe;
+ }
+
+ public void setMberNmSe(String mberNmSe) {
+ this.mberNmSe = mberNmSe;
+ }
+
public String getMbtlnum() {
return mbtlnum;
}
diff --git a/src/main/java/kr/or/arko/mnt/biz/proapp/service/impl/BizProappDAO.java b/src/main/java/kr/or/arko/mnt/biz/proapp/service/impl/BizProappDAO.java
index eabb2c7..e9f3c05 100644
--- a/src/main/java/kr/or/arko/mnt/biz/proapp/service/impl/BizProappDAO.java
+++ b/src/main/java/kr/or/arko/mnt/biz/proapp/service/impl/BizProappDAO.java
@@ -10,16 +10,49 @@ import kr.or.arko.mnt.biz.provol.service.ProvolVO;
import org.springframework.stereotype.Repository;
-import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
+import egovframework.com.cmm.privacy.crypto.MemberDataHasher;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
+import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.uss.umt.service.UserDefaultVO;
@Repository("BizProappDAO")
public class BizProappDAO extends EgovComAbstractDAO {
-
+
+ private MemberDataHasher mberNmHasher;
+
+ /**
+ * COMVNUSERMASTER 경유 이름 필드 조건부 복호화(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ * GNR(일반회원)일 때만 해당 필드가 암호문이다.
+ */
+ private void decryptIfGnr(Object row, String nameField, String seField) {
+ if (row == null) {
+ return;
+ }
+ try {
+ Object se = org.apache.commons.beanutils.PropertyUtils.getProperty(row, seField);
+ if ("GNR".equals(se)) {
+ MemberNmDecryptSupport.decryptInPlace(row, nameField);
+ }
+ } catch (Exception e) {
+ throw new IllegalStateException("[개인정보/암호화] " + nameField + " 판별/복호화 실패", e);
+ }
+ }
+
+ private void decryptListIfGnr(List> rows, String nameField, String seField) {
+ if (rows == null) {
+ return;
+ }
+ for (int i = 0; i < rows.size(); i++) {
+ decryptIfGnr(rows.get(i), nameField, seField);
+ }
+ }
+
/** 리스트 조회 */
@SuppressWarnings("unchecked")
public List selectProappList(ProappVO proappVO) throws Exception {
- return list("BizProappDAO.selectProappList", proappVO);
+ List result = list("BizProappDAO.selectProappList", proappVO);
+ decryptListIfGnr(result, "mberNm", "mberNmSe");
+ return result;
}
/** 총 건수 조회 */
@@ -57,9 +90,11 @@ public class BizProappDAO extends EgovComAbstractDAO {
update("BizProappDAO.updateProapp", proappVO);
}
- /** 활동하기정보관리 조회 / 봉사신청 확인 */
+ /** 활동하기정보관리 조회 / 봉사신청 확인 */
public List selectProappinfoList(ProappVO proappVO) throws Exception {
- return list("BizProappDAO.selectProappinfoList", proappVO);
+ List result = list("BizProappDAO.selectProappinfoList", proappVO);
+ decryptListIfGnr(result, "esntlNm", "userSe");
+ return result;
}
/** 활동하기정보관리 / 봉사신청 확인 총 건수 조회 */
@@ -75,7 +110,9 @@ public class BizProappDAO extends EgovComAbstractDAO {
/** 활동하기정보관리 / 모집정보스크랩 조회 */
@SuppressWarnings("unchecked")
public List selectProappscrapList(ProappVO proappVO) throws Exception {
- return list("BizProappDAO.selectProappscrapList", proappVO);
+ List result = list("BizProappDAO.selectProappscrapList", proappVO);
+ decryptListIfGnr(result, "esntlNm", "userSe");
+ return result;
}
/** 활동하기정보관리 / 모집정보스크랩 총 건수 조회 */
@@ -88,15 +125,21 @@ public class BizProappDAO extends EgovComAbstractDAO {
delete("BizProappDAO.deleteProappscrap", provolVO);
}
- /**활동내역확인 */
+ /**활동내역확인 */
@SuppressWarnings("unchecked")
public List> selectActivityCnfirmList(ProappVO proappVO) throws Exception {
- return list("BizProappDAO.selectActivityCnfirmList", proappVO);
+ List> result = list("BizProappDAO.selectActivityCnfirmList", proappVO);
+ decryptListIfGnr(result, "esntlNm", "userSe");
+ decryptListIfGnr(result, "authNm", "authNmSe");
+ return result;
}
-
- /**확인서 활동내역확인 */
+
+ /**확인서 활동내역확인 */
public List selectActivityCnfirm_S(ProappVO proappVO) throws Exception {
- return list("BizProappDAO.selectActivityCnfirm_S", proappVO);
+ List result = list("BizProappDAO.selectActivityCnfirm_S", proappVO);
+ decryptListIfGnr(result, "esntlNm", "userSe");
+ decryptListIfGnr(result, "authNm", "authNmSe");
+ return result;
}
/**활동내역확인 총 건수 조회 */
@@ -109,10 +152,18 @@ public class BizProappDAO extends EgovComAbstractDAO {
return (ProappVO)selectByPk("BizProappDAO.GetActivityMaxNo", proappVO);
}
- /** 활동내역확인 출력내역 키 */
+ /** 활동내역확인 출력내역 키 */
public ProappVO selectActivityCertification(ProappVO proappVO){
- return (ProappVO)selectByPk("BizProappDAO.selectActivityCertification", proappVO);
- }
+ if (proappVO != null && proappVO.getMberNm() != null && proappVO.getMberNm().trim().length() > 0) {
+ if (mberNmHasher == null) {
+ mberNmHasher = new MemberDataHasher();
+ }
+ proappVO.setMberNmHash(mberNmHasher.hashName(proappVO.getMberNm()));
+ }
+ ProappVO result = (ProappVO)selectByPk("BizProappDAO.selectActivityCertification", proappVO);
+ decryptIfGnr(result, "mberNm", "mberNmSe");
+ return result;
+ }
/** 활동내역확인 내역 키값 저장 */
public void insertProappActivity(ProappVO proappVO) throws Exception {
@@ -129,12 +180,16 @@ public class BizProappDAO extends EgovComAbstractDAO {
/**활동내역확인 내역출력:개인 */
public ProappVO selectActivityCnfirmPrint(ProappVO proappVO) throws Exception {
- return (ProappVO)selectByPk("BizProappDAO.selectActivityCnfirmPrint", proappVO);
+ ProappVO result = (ProappVO)selectByPk("BizProappDAO.selectActivityCnfirmPrint", proappVO);
+ MemberNmDecryptSupport.decryptInPlace(result, "mberNm");
+ return result;
}
- /**활동내역확인 내역출력:그룹 */
+ /**활동내역확인 내역출력:그룹 */
public ProappVO selectGroupActivityCnfirmPrint(ProappVO proappVO) throws Exception {
- return (ProappVO)selectByPk("BizProappDAO.selectGroupActivityCnfirmPrint", proappVO);
+ ProappVO result = (ProappVO)selectByPk("BizProappDAO.selectGroupActivityCnfirmPrint", proappVO);
+ decryptIfGnr(result, "esntlNm", "userSe");
+ return result;
}
/** 총시간/봉사회수/마일리지 */
@@ -145,7 +200,10 @@ public class BizProappDAO extends EgovComAbstractDAO {
/**활동내역확인 : 그룹 */
@SuppressWarnings("unchecked")
public List selectActivityGroupCnfirmList(ProappVO proappVO) throws Exception {
- return list("BizProappDAO.selectActivityGroupCnfirmList", proappVO);
+ List result = list("BizProappDAO.selectActivityGroupCnfirmList", proappVO);
+ decryptListIfGnr(result, "esntlNm", "userSe");
+ decryptListIfGnr(result, "authNm", "authNmSe");
+ return result;
}
/**활동내역확인 총 건수 조회 : 그룹 */
@@ -155,18 +213,27 @@ public class BizProappDAO extends EgovComAbstractDAO {
/**모집정보 신청 수정 */
public ProappVO selectProapp(ProappVO proappVO) throws Exception {
- return (ProappVO)selectByPk("BizProappDAO.selectProapp", proappVO);
- }
+ ProappVO result = (ProappVO)selectByPk("BizProappDAO.selectProapp", proappVO);
+ decryptIfGnr(result, "mberNm", "mberNmSe");
+ return result;
+ }
/** 중간활동내역 조회 */
public List selectMiddleActivityList(AppconfirmVO appconfirmVO) throws Exception {
- return list("BizAppconfirmDAO.selectMiddleAppconfirmList", appconfirmVO);
- }
-
+ List result = list("BizAppconfirmDAO.selectMiddleAppconfirmList", appconfirmVO);
+ decryptListIfGnr(result, "mberNm", "mberNmSe");
+ return result;
+ }
+
/** 중간활동 신청내역 조회 */
public List selectMiddleConfirmList(AppconfirmVO appconfirmVO) throws Exception {
- return list("BizAppconfirmDAO.excelAppconfirmList", appconfirmVO);
- }
+ List result = list("BizAppconfirmDAO.excelAppconfirmList", appconfirmVO);
+ decryptListIfGnr(result, "mberNm", "mberNmSe");
+ decryptListIfGnr(result, "esntlNm", "userSe");
+ decryptListIfGnr(result, "authNm", "authNmSe");
+ decryptListIfGnr(result, "approvalgugunNm", "approvalgugunNmSe");
+ return result;
+ }
/** 중간활동 신청내역 조회 토탈*/
public int selectMiddleActivityListTotCnt(AppconfirmVO appconfirmVO) throws Exception {
diff --git a/src/main/java/kr/or/arko/mnt/biz/provol/service/impl/BizProvolDAO.java b/src/main/java/kr/or/arko/mnt/biz/provol/service/impl/BizProvolDAO.java
index 6ba9273..97e09a2 100644
--- a/src/main/java/kr/or/arko/mnt/biz/provol/service/impl/BizProvolDAO.java
+++ b/src/main/java/kr/or/arko/mnt/biz/provol/service/impl/BizProvolDAO.java
@@ -9,27 +9,77 @@ import kr.or.arko.mnt.biz.provol.service.ProvolVO;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberDataHasher;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.uss.umt.service.UserDefaultVO;
import egovframework.rte.psl.dataaccess.util.EgovMap;
@Repository("BizProvolDAO")
public class BizProvolDAO extends EgovComAbstractDAO {
-
+
+ /**
+ * GNR(일반회원)만 esntlNm이 암호문이다(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ * USR/ENT/GRO는 각자 다른 테이블의 평문이므로 무조건 복호화하면 예외가 난다.
+ */
+ private void decryptGnrRowsInPlace(List rows) {
+ if (rows == null) {
+ return;
+ }
+ for (int i = 0; i < rows.size(); i++) {
+ ProvolVO row = rows.get(i);
+ if (row != null && "GNR".equals(row.getUserSe())) {
+ MemberNmDecryptSupport.decryptInPlace(row, "esntlNm");
+ }
+ }
+ }
+
+ /**
+ * 이름 검색 전환(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10) 헬퍼.
+ * searchCondition='en'(이름검색) 또는 'all'(통합검색)일 때만 해시를 채운다 — SQL의 X.USER_NM_HASH OR-분기와 짝을 맞춤.
+ */
+ private MemberDataHasher mberNmHasher;
+
+ private void fillSearchKeywordHash(UserDefaultVO vo) {
+ if (vo == null) {
+ return;
+ }
+ String cond = vo.getSearchCondition();
+ if (!"en".equals(cond) && !"all".equals(cond)) {
+ return;
+ }
+ String kw = vo.getSearchKeyword();
+ if (kw == null || kw.trim().length() == 0) {
+ return;
+ }
+ if (mberNmHasher == null) {
+ mberNmHasher = new MemberDataHasher();
+ }
+ vo.setSearchKeywordHash(mberNmHasher.hashName(kw));
+ }
+
/** 리스트 조회 */
@SuppressWarnings("unchecked")
public List selectProvolList(UserDefaultVO userSearchVO) throws Exception {
- return list("BizProvolDAO.selectProvolList", userSearchVO);
+ fillSearchKeywordHash(userSearchVO);
+ List result = list("BizProvolDAO.selectProvolList", userSearchVO);
+ decryptGnrRowsInPlace(result);
+ return result;
}
/** 총 건수 조회 */
public int selectProvolListTotCnt(UserDefaultVO userSearchVO) throws Exception {
+ fillSearchKeywordHash(userSearchVO);
return (Integer)getSqlMapClientTemplate().queryForObject("BizProvolDAO.selectProvolListTotCnt", userSearchVO);
}
/** 상세내용 조회 */
public ProvolVO selectProvol(ProvolVO provolVO) throws Exception {
- return (ProvolVO)selectByPk("BizProvolDAO.selectProvol", provolVO);
+ ProvolVO result = (ProvolVO)selectByPk("BizProvolDAO.selectProvol", provolVO);
+ if (result != null && "GNR".equals(result.getUserSe())) {
+ MemberNmDecryptSupport.decryptInPlace(result, "esntlNm");
+ }
+ return result;
}
/** 등록 */
@@ -54,7 +104,11 @@ public class BizProvolDAO extends EgovComAbstractDAO {
/** 수정내용 조회 */
public ProvolVO modyProvolview(ProvolVO provolVO) throws Exception {
- return (ProvolVO)selectByPk("BizProvolDAO.modyProvolview", provolVO);
+ ProvolVO result = (ProvolVO)selectByPk("BizProvolDAO.modyProvolview", provolVO);
+ if (result != null && "GNR".equals(result.getUserSe())) {
+ MemberNmDecryptSupport.decryptInPlace(result, "esntlNm");
+ }
+ return result;
}
/** 삭제 */
@@ -65,13 +119,18 @@ public class BizProvolDAO extends EgovComAbstractDAO {
/** 엑셀다운로드 */
@SuppressWarnings("unchecked")
public List excelProvolList(UserDefaultVO userSearchVO) throws Exception {
- return list("BizProvolDAO.excelProvolList", userSearchVO);
+ fillSearchKeywordHash(userSearchVO);
+ List result = list("BizProvolDAO.excelProvolList", userSearchVO);
+ decryptGnrRowsInPlace(result);
+ return result;
}
/** 맞춤봉사정보 List*/
@SuppressWarnings("unchecked")
public List selectMatchServiceinfoList(ProvolVO provolVO) throws Exception {
- return list("BizProvolDAO.selectMatchServiceinfoList", provolVO);
+ List result = list("BizProvolDAO.selectMatchServiceinfoList", provolVO);
+ decryptGnrRowsInPlace(result);
+ return result;
}
/** 맞춤봉사정보 총 건수 조회 */
@@ -82,17 +141,24 @@ public class BizProvolDAO extends EgovComAbstractDAO {
/** 리스트 조회 : 그룹 */
@SuppressWarnings("unchecked")
public List selectProvolGroupList(UserDefaultVO userSearchVO) throws Exception {
- return list("BizProvolDAO.selectProvolGroupList", userSearchVO);
+ fillSearchKeywordHash(userSearchVO);
+ List result = list("BizProvolDAO.selectProvolGroupList", userSearchVO);
+ decryptGnrRowsInPlace(result);
+ return result;
}
/** 총 건수 조회 : 그룹 */
public int selectProvolGroupListTotCnt(UserDefaultVO userSearchVO) throws Exception {
+ fillSearchKeywordHash(userSearchVO);
return (Integer)getSqlMapClientTemplate().queryForObject("BizProvolDAO.selectProvolGroupListTotCnt", userSearchVO);
}
-
+
@SuppressWarnings("unchecked")
public List selectProvolRecruitList(UserDefaultVO userSearchVO) throws Exception {
- return list("BizProvolDAO.selectProvolRecruitList", userSearchVO);
+ fillSearchKeywordHash(userSearchVO);
+ List result = list("BizProvolDAO.selectProvolRecruitList", userSearchVO);
+ decryptGnrRowsInPlace(result);
+ return result;
}
/** 봉사정보 메일 조회 리스트 */
@@ -125,7 +191,10 @@ public class BizProvolDAO extends EgovComAbstractDAO {
/** 리스트 조회 */
public List selectProvolMailingList(UserDefaultVO userSearchVO) throws Exception {
- return list("BizProvolDAO.selectProvolMailingList", userSearchVO);
+ fillSearchKeywordHash(userSearchVO);
+ List result = list("BizProvolDAO.selectProvolMailingList", userSearchVO);
+ decryptGnrRowsInPlace(result);
+ return result;
}
/** 지역맞춤 봉사 승인 프로세스 */
@@ -139,6 +208,8 @@ public class BizProvolDAO extends EgovComAbstractDAO {
public List selectMatchAgainList(ProvolVO provolVO) {
// TODO Auto-generated method stub
- return list("BizProvolDAO.selectMatchAgainList", provolVO);
+ List result = list("BizProvolDAO.selectMatchAgainList", provolVO);
+ decryptGnrRowsInPlace(result);
+ return result;
}
}
diff --git a/src/main/java/kr/or/arko/mnt/biz/sample/service/SampleVO.java b/src/main/java/kr/or/arko/mnt/biz/sample/service/SampleVO.java
index 9b16919..b88454d 100644
--- a/src/main/java/kr/or/arko/mnt/biz/sample/service/SampleVO.java
+++ b/src/main/java/kr/or/arko/mnt/biz/sample/service/SampleVO.java
@@ -149,6 +149,19 @@ public class SampleVO extends ComDefaultVO {
this.frstRegisterNm = frstRegisterNm;
}
+ /**
+ * frstRegisterNm(COMVNUSERMASTER.USER_NM) 출처 회원유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ */
+ private String frstRegisterNmSe = "";
+
+ public String getFrstRegisterNmSe() {
+ return frstRegisterNmSe;
+ }
+
+ public void setFrstRegisterNmSe(String frstRegisterNmSe) {
+ this.frstRegisterNmSe = frstRegisterNmSe;
+ }
+
public String getAtchFileId() {
return atchFileId;
}
diff --git a/src/main/java/kr/or/arko/mnt/biz/sample/service/impl/BizSampleDAO.java b/src/main/java/kr/or/arko/mnt/biz/sample/service/impl/BizSampleDAO.java
index 199ca2d..77b8391 100644
--- a/src/main/java/kr/or/arko/mnt/biz/sample/service/impl/BizSampleDAO.java
+++ b/src/main/java/kr/or/arko/mnt/biz/sample/service/impl/BizSampleDAO.java
@@ -8,25 +8,61 @@ import kr.or.arko.mnt.biz.sample.service.SampleVO;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberDataHasher;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
@Repository("BizSampleDAO")
public class BizSampleDAO extends EgovComAbstractDAO {
-
+
+ /**
+ * 이름 검색 전환(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10) 헬퍼.
+ */
+ private MemberDataHasher mberNmHasher;
+
+ private void fillSearchKeywordHash(SampleVO vo) {
+ String cond = vo.getSearchCondition();
+ if (!"nm".equals(cond) && !"all".equals(cond)) {
+ return;
+ }
+ String kw = vo.getSearchKeyword();
+ if (kw == null || kw.trim().length() == 0) {
+ return;
+ }
+ if (mberNmHasher == null) {
+ mberNmHasher = new MemberDataHasher();
+ }
+ vo.setSearchKeywordHash(mberNmHasher.hashName(kw));
+ }
+
+ private void decryptIfGnr(SampleVO vo) {
+ if (vo != null && "GNR".equals(vo.getFrstRegisterNmSe())) {
+ MemberNmDecryptSupport.decryptInPlace(vo, "frstRegisterNm");
+ }
+ }
+
/** 리스트 조회 */
@SuppressWarnings("unchecked")
public List selectSampleList(SampleVO sampleVO) throws Exception {
- return list("BizSampleDAO.selectSampleList", sampleVO);
+ fillSearchKeywordHash(sampleVO);
+ List result = list("BizSampleDAO.selectSampleList", sampleVO);
+ for (SampleVO row : result) {
+ decryptIfGnr(row);
+ }
+ return result;
}
/** 총 건수 조회 */
public int selectSampleListTotCnt(SampleVO sampleVO) throws Exception {
+ fillSearchKeywordHash(sampleVO);
return (Integer)getSqlMapClientTemplate().queryForObject("BizSampleDAO.selectSampleListTotCnt", sampleVO);
}
/** 상세내용 조회 */
public SampleVO selectSample(SampleVO sampleVO) throws Exception {
- return (SampleVO)selectByPk("BizSampleDAO.selectSample", sampleVO);
+ SampleVO result = (SampleVO)selectByPk("BizSampleDAO.selectSample", sampleVO);
+ decryptIfGnr(result);
+ return result;
}
/** 등록 */
diff --git a/src/main/java/kr/or/arko/mnt/biz/stat/service/ApprovalStatSummaryVO.java b/src/main/java/kr/or/arko/mnt/biz/stat/service/ApprovalStatSummaryVO.java
index 5cd96a6..1b09cc3 100644
--- a/src/main/java/kr/or/arko/mnt/biz/stat/service/ApprovalStatSummaryVO.java
+++ b/src/main/java/kr/or/arko/mnt/biz/stat/service/ApprovalStatSummaryVO.java
@@ -57,6 +57,19 @@ public class ApprovalStatSummaryVO extends StatSummaryVO {
public void setMberNm(String mberNm) {
this.mberNm = mberNm;
}
+
+ /**
+ * mberNm(COMVNUSERMASTER.USER_NM) 출처 회원유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ */
+ private String mberNmSe;
+
+ public String getMberNmSe() {
+ return mberNmSe;
+ }
+
+ public void setMberNmSe(String mberNmSe) {
+ this.mberNmSe = mberNmSe;
+ }
public String getVolunteerTitle() {
return volunteerTitle;
@@ -105,6 +118,19 @@ public class ApprovalStatSummaryVO extends StatSummaryVO {
public void setEsntlNm(String esntlNm) {
this.esntlNm = esntlNm;
}
+
+ /**
+ * esntlNm(COMVNUSERMASTER.USER_NM) 출처 회원유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ */
+ private String esntlNmSe;
+
+ public String getEsntlNmSe() {
+ return esntlNmSe;
+ }
+
+ public void setEsntlNmSe(String esntlNmSe) {
+ this.esntlNmSe = esntlNmSe;
+ }
public String getApprovalGugunDate() {
return approvalGugunDate;
diff --git a/src/main/java/kr/or/arko/mnt/biz/stat/service/StatSummaryVO.java b/src/main/java/kr/or/arko/mnt/biz/stat/service/StatSummaryVO.java
index 83d0dc7..d2acffa 100644
--- a/src/main/java/kr/or/arko/mnt/biz/stat/service/StatSummaryVO.java
+++ b/src/main/java/kr/or/arko/mnt/biz/stat/service/StatSummaryVO.java
@@ -71,10 +71,23 @@ public class StatSummaryVO extends StatConditionVO {
public void setAggregatorNm(String aggregatorNm) {
this.aggregatorNm = aggregatorNm;
}
-
+
public String getAggregatorNm() {
return aggregatorNm;
}
+
+ /**
+ * aggregatorNm(COMVNUSERMASTER.USER_NM) 출처 회원유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ */
+ private String aggregatorNmSe;
+
+ public String getAggregatorNmSe() {
+ return aggregatorNmSe;
+ }
+
+ public void setAggregatorNmSe(String aggregatorNmSe) {
+ this.aggregatorNmSe = aggregatorNmSe;
+ }
public void setAggregationDate(String aggregationDate) {
this.aggregationDate = aggregationDate;
diff --git a/src/main/java/kr/or/arko/mnt/biz/stat/service/impl/BizStatDAO.java b/src/main/java/kr/or/arko/mnt/biz/stat/service/impl/BizStatDAO.java
index 11ab0e4..7ace8a9 100644
--- a/src/main/java/kr/or/arko/mnt/biz/stat/service/impl/BizStatDAO.java
+++ b/src/main/java/kr/or/arko/mnt/biz/stat/service/impl/BizStatDAO.java
@@ -8,12 +8,30 @@ import kr.or.arko.mnt.biz.stat.service.*;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.uss.umt.service.UserDefaultVO;
@Repository("bizStatDAO")
public class BizStatDAO extends EgovComAbstractDAO {
-
+
+ /**
+ * COMVNUSERMASTER 경유 이름 필드 조건부 복호화(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ */
+ private void decryptIfGnr(Object row, String nameField, String seField) {
+ if (row == null) {
+ return;
+ }
+ try {
+ Object se = org.apache.commons.beanutils.PropertyUtils.getProperty(row, seField);
+ if ("GNR".equals(se)) {
+ MemberNmDecryptSupport.decryptInPlace(row, nameField);
+ }
+ } catch (Exception e) {
+ throw new IllegalStateException("[개인정보/암호화] " + nameField + " 판별/복호화 실패", e);
+ }
+ }
+
/** 지역별 회원가입통계 (전체) */
@SuppressWarnings("unchecked")
public List selectMberStat(StatVO statVO) throws Exception {
@@ -469,7 +487,11 @@ public class BizStatDAO extends EgovComAbstractDAO {
*/
@SuppressWarnings("unchecked")
public List selectStatSummaries(StatConditionVO searchVO) throws Exception {
- return list("BizStatDAO.selectStatSummaries", searchVO);
+ List result = list("BizStatDAO.selectStatSummaries", searchVO);
+ for (StatSummaryVO row : result) {
+ decryptIfGnr(row, "aggregatorNm", "aggregatorNmSe");
+ }
+ return result;
}
/**
@@ -611,7 +633,12 @@ public class BizStatDAO extends EgovComAbstractDAO {
*/
@SuppressWarnings("unchecked")
public List aggregateApprovalStats(StatSummaryVO statVO) throws Exception {
- return list("BizStatDAO.aggregateApprovalStats", statVO);
+ List result = list("BizStatDAO.aggregateApprovalStats", statVO);
+ for (ApprovalStatSummaryVO row : result) {
+ decryptIfGnr(row, "mberNm", "mberNmSe");
+ decryptIfGnr(row, "esntlNm", "esntlNmSe");
+ }
+ return result;
}
/**
diff --git a/src/main/java/kr/or/arko/mnt/biz/talent/service/impl/TalentMberManageDAO.java b/src/main/java/kr/or/arko/mnt/biz/talent/service/impl/TalentMberManageDAO.java
index d1e92f0..856ab68 100644
--- a/src/main/java/kr/or/arko/mnt/biz/talent/service/impl/TalentMberManageDAO.java
+++ b/src/main/java/kr/or/arko/mnt/biz/talent/service/impl/TalentMberManageDAO.java
@@ -6,16 +6,38 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberDataHasher;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.com.uss.umt.service.MberManageVO;
import egovframework.com.uss.umt.service.UserDefaultVO;
@Repository("talentMberManageDAO")
public class TalentMberManageDAO extends EgovComAbstractDAO{
-
+
/** Log Info */
protected Log log = LogFactory.getLog(this.getClass());
+ /**
+ * 이름 읽기전환/검색 전환(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10) 헬퍼.
+ * 지연 초기화 — {@link egovframework.com.cmm.privacy.crypto.MemberDataCipher} 정책과 동일.
+ */
+ private MemberDataHasher mberNmHasher;
+
+ private void fillSearchKeywordHash(UserDefaultVO vo) {
+ if (vo == null || !"1".equals(vo.getSearchCondition())) {
+ return;
+ }
+ String kw = vo.getSearchKeyword();
+ if (kw == null || kw.trim().length() == 0) {
+ return;
+ }
+ if (mberNmHasher == null) {
+ mberNmHasher = new MemberDataHasher();
+ }
+ vo.setSearchKeywordHash(mberNmHasher.hashName(kw));
+ }
+
/**
* 기 등록된 특정 일반회원의 정보를 데이터베이스에서 읽어와 화면에 출력
* @param userSearchVO 검색조건
@@ -23,36 +45,44 @@ public class TalentMberManageDAO extends EgovComAbstractDAO{
*/
@SuppressWarnings("unchecked")
public List selectTalentMberList(UserDefaultVO userSearchVO){
- return list("talentMberManageDAO.selectTalentMberList", userSearchVO);
+ fillSearchKeywordHash(userSearchVO);
+ List result = list("talentMberManageDAO.selectTalentMberList", userSearchVO);
+ MemberNmDecryptSupport.decryptListInPlace(result, "mberNm");
+ return result;
}
-
+
/**
* 일반회원 총 갯수를 조회한다.
* @param userSearchVO 검색조건
* @return int 재능회원총갯수
*/
public int selectTalentMberListTotCnt(UserDefaultVO userSearchVO) {
+ fillSearchKeywordHash(userSearchVO);
return (Integer)getSqlMapClientTemplate().queryForObject("talentMberManageDAO.selectTalentMberListTotCnt", userSearchVO);
}
-
+
/**
* 기 등록된 사용자 중 검색조건에 맞는일반회원의 정보를 데이터베이스에서 읽어와 화면에 출력
* @param mberId 상세조회대상 일반회원아이디
* @return MberManageVO 일반회원 상세정보
*/
public MberManageVO selectTalentMber(String mberId){
- return (MberManageVO) selectByPk("talentMberManageDAO.selectTalentMber_S", mberId);
+ MberManageVO result = (MberManageVO) selectByPk("talentMberManageDAO.selectTalentMber_S", mberId);
+ MemberNmDecryptSupport.decryptInPlace(result, "mberNm");
+ return result;
}
-
+
/**
* 기 등록된 사용자 중 검색조건에 맞는일반회원의 정보를 데이터베이스에서 읽어와 화면에 출력
* @param mberId 상세조회대상 일반회원아이디
* @return MberManageVO 일반회원 상세정보
*/
public MberManageVO selectTalentMberSingle(String mberId){
- return (MberManageVO) selectByPk("talentMberManageDAO.selectTalentMber_Single", mberId);
+ MberManageVO result = (MberManageVO) selectByPk("talentMberManageDAO.selectTalentMber_Single", mberId);
+ MemberNmDecryptSupport.decryptInPlace(result, "mberNm");
+ return result;
}
-
+
/**
* 기 등록된 특정 일반회원의 정보를 데이터베이스에서 읽어와 엑셀화면에 출력
* @param userSearchVO 검색조건
@@ -60,25 +90,51 @@ public class TalentMberManageDAO extends EgovComAbstractDAO{
*/
@SuppressWarnings("unchecked")
public List selectExcelTalentMberList(UserDefaultVO userSearchVO){
- return list("talentMberManageDAO.selectExcelTalentMberList", userSearchVO);
+ fillSearchKeywordHash(userSearchVO);
+ List result = list("talentMberManageDAO.selectExcelTalentMberList", userSearchVO);
+ MemberNmDecryptSupport.decryptListInPlace(result, "mberNm");
+ return result;
}
/**
* 기 등록된 특정 일반회원의 정보를 데이터베이스에서 읽어와 화면에 출력
+ *
+ * 일반회원(GNR)·그룹(GRO)이 UNION 되어 반환된다. MBER_NM 컬럼은 GNR 행은 암호문,
+ * GRO 행은 평문(그룹명, 암호화 대상 아님)이 섞여 있으므로 복호화는 반드시 조건부로 한다
+ * — {@link MemberNmDecryptSupport}를 행 전체에 무조건 적용하면 GRO 행의 평문에
+ * 복호화를 시도해 예외가 난다.
+ *
* @param userSearchVO 검색조건
* @return List 기업회원 목록정보
*/
@SuppressWarnings("unchecked")
public List selectJoinTalentMberList(UserDefaultVO userSearchVO){
- return list("talentMberManageDAO.selectJoinTalentMberList", userSearchVO);
+ fillSearchKeywordHash(userSearchVO);
+ List> result = list("talentMberManageDAO.selectJoinTalentMberList", userSearchVO);
+ decryptGnrRowsInPlace(result);
+ return (List) result;
}
-
+
/**
* 일반회원 총 갯수를 조회한다.
* @param userSearchVO 검색조건
* @return int 재능회원총갯수
*/
public int selectJoinTalentMberListTotCnt(UserDefaultVO userSearchVO) {
+ fillSearchKeywordHash(userSearchVO);
return (Integer)getSqlMapClientTemplate().queryForObject("talentMberManageDAO.selectJoinTalentMberListTotCnt", userSearchVO);
}
+
+ /** USER_TYPE='GNR' 행만 골라 MBER_NM(암호문)을 복호화한다. GRO 행(그룹명, 평문)은 건드리지 않는다. */
+ private void decryptGnrRowsInPlace(List> rows) {
+ if (rows == null) {
+ return;
+ }
+ for (int i = 0; i < rows.size(); i++) {
+ java.util.Map row = rows.get(i);
+ if (row != null && "GNR".equals(row.get("USER_TYPE"))) {
+ MemberNmDecryptSupport.decryptInPlace(row, "MBER_NM");
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/src/main/java/kr/or/arko/mnt/biz/test/service/TestVO.java b/src/main/java/kr/or/arko/mnt/biz/test/service/TestVO.java
index 63d3111..d2aca25 100644
--- a/src/main/java/kr/or/arko/mnt/biz/test/service/TestVO.java
+++ b/src/main/java/kr/or/arko/mnt/biz/test/service/TestVO.java
@@ -92,5 +92,18 @@ public class TestVO extends ComDefaultVO {
public void setFrstRegisterNm(String frstRegisterNm) {
this.frstRegisterNm = frstRegisterNm;
}
-
+
+ /**
+ * frstRegisterNm(COMVNUSERMASTER.USER_NM) 출처 회원유형(GNR/USR/ENT/GRO, 개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10).
+ */
+ private String frstRegisterNmSe = "";
+
+ public String getFrstRegisterNmSe() {
+ return frstRegisterNmSe;
+ }
+
+ public void setFrstRegisterNmSe(String frstRegisterNmSe) {
+ this.frstRegisterNmSe = frstRegisterNmSe;
+ }
+
}
diff --git a/src/main/java/kr/or/arko/mnt/biz/test/service/impl/BizTestDAO.java b/src/main/java/kr/or/arko/mnt/biz/test/service/impl/BizTestDAO.java
index 67e98a1..cf336ef 100644
--- a/src/main/java/kr/or/arko/mnt/biz/test/service/impl/BizTestDAO.java
+++ b/src/main/java/kr/or/arko/mnt/biz/test/service/impl/BizTestDAO.java
@@ -8,25 +8,61 @@ import kr.or.arko.mnt.biz.test.service.TestVO;
import org.springframework.stereotype.Repository;
+import egovframework.com.cmm.privacy.crypto.MemberDataHasher;
+import egovframework.com.cmm.privacy.crypto.MemberNmDecryptSupport;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
@Repository("BizTestDAO")
public class BizTestDAO extends EgovComAbstractDAO {
-
+
+ /**
+ * 이름 검색 전환(개인정보보호 기능개선 사업 추가제안 Action4, 2026-08-10) 헬퍼.
+ */
+ private MemberDataHasher mberNmHasher;
+
+ private void fillSearchKeywordHash(TestVO vo) {
+ String cond = vo.getSearchCondition();
+ if (!"nm".equals(cond) && !"all".equals(cond)) {
+ return;
+ }
+ String kw = vo.getSearchKeyword();
+ if (kw == null || kw.trim().length() == 0) {
+ return;
+ }
+ if (mberNmHasher == null) {
+ mberNmHasher = new MemberDataHasher();
+ }
+ vo.setSearchKeywordHash(mberNmHasher.hashName(kw));
+ }
+
+ private void decryptIfGnr(TestVO vo) {
+ if (vo != null && "GNR".equals(vo.getFrstRegisterNmSe())) {
+ MemberNmDecryptSupport.decryptInPlace(vo, "frstRegisterNm");
+ }
+ }
+
/** 리스트 조회 */
@SuppressWarnings("unchecked")
public List selectTestList(TestVO testVO) throws Exception {
- return list("BizTestDAO.selectTestList", testVO);
+ fillSearchKeywordHash(testVO);
+ List result = list("BizTestDAO.selectTestList", testVO);
+ for (TestVO row : result) {
+ decryptIfGnr(row);
+ }
+ return result;
}
/** 총 건수 조회 */
public int selectTestListTotCnt(TestVO testVO) throws Exception {
+ fillSearchKeywordHash(testVO);
return (Integer)getSqlMapClientTemplate().queryForObject("BizTestDAO.selectTestListTotCnt", testVO);
}
/** 상세내용 조회 */
public TestVO selectTest(TestVO testVO) throws Exception {
- return (TestVO)selectByPk("BizTestDAO.selectTest", testVO);
+ TestVO result = (TestVO)selectByPk("BizTestDAO.selectTest", testVO);
+ decryptIfGnr(result);
+ return result;
}
/** 등록 */
diff --git a/src/main/resources/egovframework/sqlmap/com/cop/bbs/EgovBBSAddedOptions_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/com/cop/bbs/EgovBBSAddedOptions_SQL_Mysql.xml
index f4d2376..2f042f4 100644
--- a/src/main/resources/egovframework/sqlmap/com/cop/bbs/EgovBBSAddedOptions_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/com/cop/bbs/EgovBBSAddedOptions_SQL_Mysql.xml
@@ -13,6 +13,8 @@
+
+
@@ -40,14 +42,15 @@
+
@@ -138,7 +139,7 @@
a.BBS_ATTRB_CODE, c.CODE_NM as BBS_ATTRB_CODE_NM, a.BBS_NM,
a.TMPLAT_ID, d.TMPLAT_NM, d.TMPLAT_COURS, a.FILE_ATCH_POSBL_AT, a.ATCH_POSBL_FILE_NUMBER,
a.ATCH_POSBL_FILE_SIZE, a.REPLY_POSBL_AT, a.FRST_REGISTER_ID, e.USER_NM as FRST_REGISTER_NM,
- a.USE_AT, DATE_FORMAT(a.FRST_REGIST_PNTTM, '%Y-%m-%d') as FRST_REGIST_PNTTM
+ a.USE_AT, DATE_FORMAT(a.FRST_REGIST_PNTTM, '%Y-%m-%d') as FRST_REGIST_PNTTM, e.USER_SE
,(SELECT IFNULL(USE_AT,'N') FROM COMTNBBSUSE
WHERE BBS_ID = #bbsId#
AND TRGET_ID IN (#uniqId#, 'SYSTEM_DEFAULT_BOARD')
diff --git a/src/main/resources/egovframework/sqlmap/com/cop/bbs/EgovBBSUse_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/com/cop/bbs/EgovBBSUse_SQL_Mysql.xml
index c4cf080..72c6125 100644
--- a/src/main/resources/egovframework/sqlmap/com/cop/bbs/EgovBBSUse_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/com/cop/bbs/EgovBBSUse_SQL_Mysql.xml
@@ -39,6 +39,7 @@
+
@@ -167,7 +168,7 @@
SELECT * FROM (
SELECT
a.BBS_ID, b.BBS_NM, a.TRGET_ID, d.USER_NM, a.REGIST_SE_CODE, c.CODE_NM as REGIST_SE_CODE_NM,
- a.USE_AT, a.FRST_REGISTER_ID, a.FRST_REGIST_PNTTM
+ a.USE_AT, a.FRST_REGISTER_ID, a.FRST_REGIST_PNTTM, d.USER_SE, d.USER_NM_HASH
FROM
COMTNBBSUSE a
LEFT OUTER JOIN COMTNBBSMASTER b
@@ -184,7 +185,7 @@
UNION ALL
SELECT
a.BBS_ID, b.BBS_NM, a.TRGET_ID, '[전체]' USER_NM, a.REGIST_SE_CODE, c.CODE_NM as REGIST_SE_CODE_NM,
- a.USE_AT, a.FRST_REGISTER_ID, a.FRST_REGIST_PNTTM
+ a.USE_AT, a.FRST_REGISTER_ID, a.FRST_REGIST_PNTTM, '' as USER_SE, NULL as USER_NM_HASH
FROM
COMTNBBSUSE a
LEFT OUTER JOIN COMTNBBSMASTER b
@@ -202,7 +203,7 @@
case WHEN e.EMPLYR_ID is null THEN f.EMPLYR_ID ELSE e.EMPLYR_ID END as TRGET_ID,
case WHEN g.USER_NM is null THEN h.USER_NM ELSE g.USER_NM END as USER_NM,
'REGC07' as REGIST_SE_CODE, '게시판사용자등록' as REGIST_SE_CODE_NM,
- '' as USE_AT, '' as FRST_REGISTER_ID, '' as FRST_REGIST_PNTTM
+ '' as USE_AT, '' as FRST_REGISTER_ID, '' as FRST_REGIST_PNTTM, '' as USER_SE, NULL as USER_NM_HASH
FROM
COMTNBBSUSE a
LEFT OUTER JOIN COMTNBBSMASTER b
@@ -226,7 +227,7 @@
) tt
]]>
-
+
-
+
diff --git a/src/main/resources/egovframework/sqlmap/com/cop/bbs/EgovBoard_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/com/cop/bbs/EgovBoard_SQL_Mysql.xml
index 0435ece..d39e266 100644
--- a/src/main/resources/egovframework/sqlmap/com/cop/bbs/EgovBoard_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/com/cop/bbs/EgovBoard_SQL_Mysql.xml
@@ -91,7 +91,8 @@
-
+
+
@@ -245,7 +246,8 @@
-
+
+
@@ -282,7 +284,8 @@
-
+
+
@@ -466,6 +469,7 @@
+
@@ -621,7 +625,7 @@
-
+
@@ -680,7 +684,7 @@
]]>
-
+
/* BBSManageDAO.selectBoardArticleTopList */
-
+
@@ -851,7 +855,7 @@
-
+
@@ -943,7 +947,7 @@
-
+
@@ -1026,7 +1030,7 @@
-
+
@@ -1282,7 +1286,7 @@
a.NTT_ID, a.NTT_SJ, a.NTCR_NM, a.PASSWORD,
DATE_FORMAT(a.FRST_REGIST_PNTTM, '%Y-%m-%d %H:%i:%S')
as FRST_REGIST_PNTTM,
- a.NTT_CN, a.USE_AT, a.BBS_ID, b.USER_NM as FRST_REGISTER_NM, a.FRST_REGISTER_ID
+ a.NTT_CN, a.USE_AT, a.BBS_ID, b.USER_NM as FRST_REGISTER_NM, a.FRST_REGISTER_ID, b.USER_SE
FROM
COMTNBBS a, COMVNUSERMASTER b
WHERE
diff --git a/src/main/resources/egovframework/sqlmap/com/cop/cmt/EgovBBSComment_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/com/cop/cmt/EgovBBSComment_SQL_Mysql.xml
index c2cdd09..bf75461 100644
--- a/src/main/resources/egovframework/sqlmap/com/cop/cmt/EgovBBSComment_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/com/cop/cmt/EgovBBSComment_SQL_Mysql.xml
@@ -25,6 +25,8 @@
+
+
-
+
@@ -24,6 +25,7 @@
+
@@ -36,13 +38,13 @@
-
+
-
+
@@ -67,7 +69,7 @@
-
+
-
+
@@ -105,7 +107,7 @@
-
+
-
+
@@ -147,7 +149,7 @@
-
+
-
+
@@ -184,7 +186,7 @@
-
+
-
+
diff --git a/src/main/resources/egovframework/sqlmap/com/cop/scp/EgovBBSScrap_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/com/cop/scp/EgovBBSScrap_SQL_Mysql.xml
index b26c9a3..0e15884 100644
--- a/src/main/resources/egovframework/sqlmap/com/cop/scp/EgovBBSScrap_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/com/cop/scp/EgovBBSScrap_SQL_Mysql.xml
@@ -15,8 +15,9 @@
+
-
+
@@ -26,6 +27,7 @@
+
@@ -35,7 +37,7 @@
a.SCRAP_NM, a.USE_AT,
DATE_FORMAT(a.FRST_REGIST_PNTTM, '%Y-%m-%d %H:%i:%S')
as FRST_REGIST_PNTTM,
- b.USER_NM as FRST_REGISTER_NM
+ b.USER_NM as FRST_REGISTER_NM, b.USER_SE
FROM
COMTNSCRAP a
LEFT OUTER JOIN COMVNUSERMASTER b
@@ -99,7 +101,7 @@
DATE_FORMAT(a.FRST_REGIST_PNTTM, '%Y-%m-%d %H:%i:%S')
as FRST_REGIST_PNTTM,
b.USER_NM as FRST_REGISTER_NM,
- a.FRST_REGISTER_ID
+ a.FRST_REGISTER_ID, b.USER_SE
FROM
COMTNSCRAP a
LEFT OUTER JOIN COMVNUSERMASTER b
diff --git a/src/main/resources/egovframework/sqlmap/com/cop/sms/EgovSms_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/com/cop/sms/EgovSms_SQL_Mysql.xml
index d138b40..c05b2ee 100644
--- a/src/main/resources/egovframework/sqlmap/com/cop/sms/EgovSms_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/com/cop/sms/EgovSms_SQL_Mysql.xml
@@ -22,6 +22,7 @@
+
@@ -104,7 +105,7 @@
SELECT
a.SMS_ID, a.TRNSMIS_TELNO, a.TRNSMIS_CN,
a.FRST_REGISTER_ID, b.USER_NM as FRST_REGISTER_NM,
- DATE_FORMAT(a.FRST_REGIST_PNTTM, '%Y-%m-%d') as FRST_REGIST_PNTTM
+ DATE_FORMAT(a.FRST_REGIST_PNTTM, '%Y-%m-%d') as FRST_REGIST_PNTTM, b.USER_SE
FROM
COMTNSMS a
LEFT OUTER JOIN COMVNUSERMASTER b
diff --git a/src/main/resources/egovframework/sqlmap/com/cop/stf/EgovBBSSatisfaction_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/com/cop/stf/EgovBBSSatisfaction_SQL_Mysql.xml
index ef05946..5c74965 100644
--- a/src/main/resources/egovframework/sqlmap/com/cop/stf/EgovBBSSatisfaction_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/com/cop/stf/EgovBBSSatisfaction_SQL_Mysql.xml
@@ -23,8 +23,9 @@
+
-
+
@@ -37,6 +38,7 @@
+
@@ -47,7 +49,7 @@
a.WRTER_ID, a.WRTER_NM, a.PASSWORD, a.STSFDG_CN, a.STSFDG, a.USE_AT,
DATE_FORMAT(a.FRST_REGIST_PNTTM, '%Y-%m-%d %H:%i:%S')
as FRST_REGIST_PNTTM,
- b.USER_NM as FRST_REGISTER_NM
+ b.USER_NM as FRST_REGISTER_NM, b.USER_SE
FROM
COMTNSTSFDG a
LEFT OUTER JOIN COMVNUSERMASTER b
@@ -105,7 +107,7 @@
a.WRTER_ID, a.WRTER_NM, a.PASSWORD, a.STSFDG_CN, a.STSFDG, a.USE_AT,
DATE_FORMAT(a.FRST_REGIST_PNTTM, '%Y-%m-%d %H:%i:%S')
as FRST_REGIST_PNTTM,
- b.USER_NM as FRST_REGISTER_NM
+ b.USER_NM as FRST_REGISTER_NM, b.USER_SE
FROM
COMTNSTSFDG a
LEFT OUTER JOIN COMVNUSERMASTER b
diff --git a/src/main/resources/egovframework/sqlmap/com/cop/tpl/EgovTemplate_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/com/cop/tpl/EgovTemplate_SQL_Mysql.xml
index 6b3f3f7..a5d7151 100644
--- a/src/main/resources/egovframework/sqlmap/com/cop/tpl/EgovTemplate_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/com/cop/tpl/EgovTemplate_SQL_Mysql.xml
@@ -30,6 +30,7 @@
+
@@ -107,7 +108,7 @@
a.FRST_REGISTER_ID, a.FRST_REGIST_PNTTM,
b.USER_NM AS FRST_REGISTER_NM, c.CODE_NM AS TMPLAT_SE_CODE_NM,
a.LAST_UPDUSR_ID,
- d.USER_NM AS LAST_UPDUSR_NM, a.LAST_UPDT_PNTTM
+ d.USER_NM AS LAST_UPDUSR_NM, a.LAST_UPDT_PNTTM, b.USER_SE AS FRST_REGISTER_NM_SE
FROM
COMTNTMPLATINFO a
LEFT OUTER JOIN COMVNUSERMASTER b
diff --git a/src/main/resources/egovframework/sqlmap/com/sec/rgm/EgovAuthorGroup_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/com/sec/rgm/EgovAuthorGroup_SQL_Mysql.xml
index bd4b73f..b99347a 100644
--- a/src/main/resources/egovframework/sqlmap/com/sec/rgm/EgovAuthorGroup_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/com/sec/rgm/EgovAuthorGroup_SQL_Mysql.xml
@@ -33,22 +33,22 @@
ELSE 'Y'
END) AS REG_YN,
ESNTL_ID
- FROM (SELECT MBER_ID USER_ID, MBER_NM USER_NM, GROUP_ID, 'USR01' MBER_TY_CODE, ESNTL_ID
+ FROM (SELECT MBER_ID USER_ID, MBER_NM_ENC USER_NM, MBER_NM_HASH USER_NM_HASH, GROUP_ID, 'USR01' MBER_TY_CODE, ESNTL_ID
FROM COMTNGNRLMBER
UNION ALL
- SELECT ENTRPRS_MBER_ID USER_ID, CMPNY_NM USER_NM, GROUP_ID, 'USR02' MBER_TY_CODE, ESNTL_ID
+ SELECT ENTRPRS_MBER_ID USER_ID, CMPNY_NM USER_NM, NULL USER_NM_HASH, GROUP_ID, 'USR02' MBER_TY_CODE, ESNTL_ID
FROM COMTNENTRPRSMBER
UNION ALL
- SELECT EMPLYR_ID USER_ID, USER_NM USER_NM, GROUP_ID, 'USR03' MBER_TY_CODE, ESNTL_ID
+ SELECT EMPLYR_ID USER_ID, USER_NM USER_NM, NULL USER_NM_HASH, GROUP_ID, 'USR03' MBER_TY_CODE, ESNTL_ID
FROM COMTNEMPLYRINFO ) A LEFT OUTER JOIN COMTNEMPLYRSCRTYESTBS B
ON A.ESNTL_ID = B.SCRTY_DTRMN_TRGET_ID
- WHERE 1 = 1
+ WHERE 1 = 1
A.USER_ID LIKE CONCAT('%' , #searchKeyword#, '%')
- A.USER_NM LIKE CONCAT('%' , #searchKeyword#, '%')
+ (A.USER_NM_HASH = #searchKeywordHash# OR A.USER_NM LIKE CONCAT('%' , #searchKeyword#, '%'))
A.GROUP_ID = #searchKeyword#
@@ -88,22 +88,22 @@
SELECT COUNT(*) AS totcnt
- FROM (SELECT MBER_ID USER_ID, MBER_NM USER_NM, GROUP_ID, 'USR01' MBER_TY_CODE
+ FROM (SELECT MBER_ID USER_ID, MBER_NM USER_NM, MBER_NM_HASH USER_NM_HASH, GROUP_ID, 'USR01' MBER_TY_CODE
FROM COMTNGNRLMBER
UNION ALL
- SELECT ENTRPRS_MBER_ID USER_ID, CMPNY_NM USER_NM, GROUP_ID, 'USR02' MBER_TY_CODE
+ SELECT ENTRPRS_MBER_ID USER_ID, CMPNY_NM USER_NM, NULL USER_NM_HASH, GROUP_ID, 'USR02' MBER_TY_CODE
FROM COMTNENTRPRSMBER
UNION ALL
- SELECT EMPLYR_ID USER_ID, USER_NM USER_NM, GROUP_ID, 'USR03' MBER_TY_CODE
+ SELECT EMPLYR_ID USER_ID, USER_NM USER_NM, NULL USER_NM_HASH, GROUP_ID, 'USR03' MBER_TY_CODE
FROM COMTNEMPLYRINFO ) A LEFT OUTER JOIN COMTNEMPLYRSCRTYESTBS B
ON A.USER_ID = B.SCRTY_DTRMN_TRGET_ID
- WHERE 1 = 1
+ WHERE 1 = 1
A.USER_ID LIKE CONCAT('%' , #searchKeyword#, '%')
- A.USER_NM LIKE CONCAT('%' , #searchKeyword#, '%')
+ (A.USER_NM_HASH = #searchKeywordHash# OR A.USER_NM LIKE CONCAT('%' , #searchKeyword#, '%'))
A.GROUP_ID = #searchKeyword#
diff --git a/src/main/resources/egovframework/sqlmap/com/sec/rgm/EgovAuthorGroup_SQL_Oracle.xml b/src/main/resources/egovframework/sqlmap/com/sec/rgm/EgovAuthorGroup_SQL_Oracle.xml
index f79c60e..d77cc36 100644
--- a/src/main/resources/egovframework/sqlmap/com/sec/rgm/EgovAuthorGroup_SQL_Oracle.xml
+++ b/src/main/resources/egovframework/sqlmap/com/sec/rgm/EgovAuthorGroup_SQL_Oracle.xml
@@ -38,23 +38,23 @@
ELSE 'Y'
END) AS REG_YN,
ESNTL_ID
- FROM (SELECT MBER_ID USER_ID, MBER_NM USER_NM, GROUP_ID, 'USR01' MBER_TY_CODE, ESNTL_ID
+ FROM (SELECT MBER_ID USER_ID, MBER_NM_ENC USER_NM, MBER_NM_HASH USER_NM_HASH, GROUP_ID, 'USR01' MBER_TY_CODE, ESNTL_ID
FROM COMTNGNRLMBER
UNION ALL
- SELECT ENTRPRS_MBER_ID USER_ID, CMPNY_NM USER_NM, GROUP_ID, 'USR02' MBER_TY_CODE, ESNTL_ID
+ SELECT ENTRPRS_MBER_ID USER_ID, CMPNY_NM USER_NM, NULL USER_NM_HASH, GROUP_ID, 'USR02' MBER_TY_CODE, ESNTL_ID
FROM COMTNENTRPRSMBER
UNION ALL
- SELECT EMPLYR_ID USER_ID, USER_NM USER_NM, GROUP_ID, 'USR03' MBER_TY_CODE, ESNTL_ID
+ SELECT EMPLYR_ID USER_ID, USER_NM USER_NM, NULL USER_NM_HASH, GROUP_ID, 'USR03' MBER_TY_CODE, ESNTL_ID
FROM COMTNEMPLYRINFO ) A LEFT OUTER JOIN COMTNEMPLYRSCRTYESTBS B
ON A.ESNTL_ID = B.SCRTY_DTRMN_TRGET_ID
- WHERE 1 = 1
- ]]>
+ WHERE 1 = 1
+ ]]>
A.USER_ID LIKE '%'||#searchKeyword#||'%'
- A.USER_NM LIKE '%'||#searchKeyword#||'%'
+ (A.USER_NM_HASH = #searchKeywordHash# OR A.USER_NM LIKE '%'||#searchKeyword#||'%')
A.GROUP_ID = #searchKeyword#
@@ -99,22 +99,22 @@
SELECT COUNT(*) AS totcnt
- FROM (SELECT MBER_ID USER_ID, MBER_NM USER_NM, GROUP_ID, 'USR01' MBER_TY_CODE
+ FROM (SELECT MBER_ID USER_ID, MBER_NM USER_NM, MBER_NM_HASH USER_NM_HASH, GROUP_ID, 'USR01' MBER_TY_CODE
FROM COMTNGNRLMBER
UNION ALL
- SELECT ENTRPRS_MBER_ID USER_ID, CMPNY_NM USER_NM, GROUP_ID, 'USR02' MBER_TY_CODE
+ SELECT ENTRPRS_MBER_ID USER_ID, CMPNY_NM USER_NM, NULL USER_NM_HASH, GROUP_ID, 'USR02' MBER_TY_CODE
FROM COMTNENTRPRSMBER
UNION ALL
- SELECT EMPLYR_ID USER_ID, USER_NM USER_NM, GROUP_ID, 'USR03' MBER_TY_CODE
+ SELECT EMPLYR_ID USER_ID, USER_NM USER_NM, NULL USER_NM_HASH, GROUP_ID, 'USR03' MBER_TY_CODE
FROM COMTNEMPLYRINFO ) A LEFT OUTER JOIN COMTNEMPLYRSCRTYESTBS B
ON A.USER_ID = B.SCRTY_DTRMN_TRGET_ID
- WHERE 1 = 1
+ WHERE 1 = 1
A.USER_ID LIKE '%'||#searchKeyword#||'%'
- A.USER_NM LIKE '%'||#searchKeyword#||'%'
+ (A.USER_NM_HASH = #searchKeywordHash# OR A.USER_NM LIKE '%'||#searchKeyword#||'%')
A.GROUP_ID = #searchKeyword#
diff --git a/src/main/resources/egovframework/sqlmap/com/sts/dst/EgovDtaUseStats_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/com/sts/dst/EgovDtaUseStats_SQL_Mysql.xml
index b7f2a8a..791d9f0 100644
--- a/src/main/resources/egovframework/sqlmap/com/sts/dst/EgovDtaUseStats_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/com/sts/dst/EgovDtaUseStats_SQL_Mysql.xml
@@ -30,6 +30,7 @@
+
@@ -155,7 +156,8 @@
D.ORIGNL_FILE_NM,
A.FRST_REGISTER_ID,
E.USER_NM,
- A.FRST_REGIST_PNTTM
+ A.FRST_REGIST_PNTTM,
+ E.USER_SE
FROM COMTNDTAUSESTATS A,
COMTNBBSMASTER B,
COMTNBBS C,
diff --git a/src/main/resources/egovframework/sqlmap/com/sym/log/clg/EgovLoginLog_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/com/sym/log/clg/EgovLoginLog_SQL_Mysql.xml
index 7a3c8dd..49e3695 100644
--- a/src/main/resources/egovframework/sqlmap/com/sym/log/clg/EgovLoginLog_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/com/sym/log/clg/EgovLoginLog_SQL_Mysql.xml
@@ -17,6 +17,7 @@
+
@@ -96,11 +97,12 @@
, a.CONECT_IP
, a.CONECT_ID
, b.USER_NM AS LOGIN_NM
+ , b.USER_SE AS LOGIN_NM_SE
FROM
COMTNLOGINLOG a
LEFT OUTER JOIN COMVNUSERMASTER b
ON a.CONECT_ID = b.ESNTL_ID
- WHERE
+ WHERE
a.LOG_ID = #logId#
]]>
@@ -115,11 +117,12 @@
, a.CONECT_IP
, a.CONECT_ID
, b.USER_NM AS LOGIN_NM
+ , b.USER_SE AS LOGIN_NM_SE
FROM
COMTNLOGINLOG a
LEFT OUTER JOIN COMVNUSERMASTER b
ON a.CONECT_ID = b.ESNTL_ID
- WHERE
+ WHERE
1 = 1
]]>
diff --git a/src/main/resources/egovframework/sqlmap/com/sym/log/lgm/EgovSysLog_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/com/sym/log/lgm/EgovSysLog_SQL_Mysql.xml
index 3751a7a..f7d1388 100644
--- a/src/main/resources/egovframework/sqlmap/com/sym/log/lgm/EgovSysLog_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/com/sym/log/lgm/EgovSysLog_SQL_Mysql.xml
@@ -21,6 +21,7 @@
+
@@ -61,6 +62,7 @@
, a.RQESTER_IP
, a.RQESTER_ID
, b.USER_NM AS RQESTER_NM
+ , b.USER_SE AS RQESTER_NM_SE
FROM
COMTNSYSLOG a
LEFT OUTER JOIN COMVNUSERMASTER b
@@ -88,6 +90,7 @@
, a.RQESTER_IP
, a.RQESTER_ID
, b.USER_NM AS RQESTER_NM
+ , b.USER_SE AS RQESTER_NM_SE
FROM
COMTNSYSLOG a
LEFT OUTER JOIN COMVNUSERMASTER b
diff --git a/src/main/resources/egovframework/sqlmap/com/sym/log/ulg/EgovUserLog_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/com/sym/log/ulg/EgovUserLog_SQL_Mysql.xml
index 3b24440..5183030 100644
--- a/src/main/resources/egovframework/sqlmap/com/sym/log/ulg/EgovUserLog_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/com/sym/log/ulg/EgovUserLog_SQL_Mysql.xml
@@ -11,8 +11,9 @@
-
-
+
+
+
@@ -58,6 +59,7 @@
a.OCCRRNC_DE
, a.RQESTER_ID
, b.USER_NM AS RQESTER_NM
+ , b.USER_SE AS RQESTER_NM_SE
, a.SVC_NM
, a.METHOD_NM
, a.CREAT_CO
@@ -85,6 +87,7 @@
a.OCCRRNC_DE
, a.RQESTER_ID
, b.USER_NM AS RQESTER_NM
+ , b.USER_SE AS RQESTER_NM_SE
, a.SVC_NM
, a.METHOD_NM
, a.CREAT_CO
@@ -101,7 +104,7 @@
1 = 1
]]>
-
+
@@ -122,7 +125,7 @@
1 = 1
]]>
-
+
diff --git a/src/main/resources/egovframework/sqlmap/com/sym/log/wlg/EgovWebLog_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/com/sym/log/wlg/EgovWebLog_SQL_Mysql.xml
index 8ad499e..cabbecd 100644
--- a/src/main/resources/egovframework/sqlmap/com/sym/log/wlg/EgovWebLog_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/com/sym/log/wlg/EgovWebLog_SQL_Mysql.xml
@@ -14,8 +14,9 @@
-
-
+
+
+
@@ -44,6 +45,7 @@
, a.RQESTER_IP
, a.RQESTER_ID
, b.USER_NM AS RQESTER_NM
+ , b.USER_SE AS RQESTER_NM_SE
FROM
COMTNWEBLOG a
LEFT OUTER JOIN COMVNUSERMASTER b
@@ -63,6 +65,7 @@
, a.RQESTER_IP
, a.RQESTER_ID
, b.USER_NM AS RQESTER_NM
+ , b.USER_SE AS RQESTER_NM_SE
FROM
COMTNWEBLOG a
LEFT OUTER JOIN COMVNUSERMASTER b
diff --git a/src/main/resources/egovframework/sqlmap/com/uat/uap/EgovLoginPolicy_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/com/uat/uap/EgovLoginPolicy_SQL_Mysql.xml
index 0b0f60f..7f7d094 100644
--- a/src/main/resources/egovframework/sqlmap/com/uat/uap/EgovLoginPolicy_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/com/uat/uap/EgovLoginPolicy_SQL_Mysql.xml
@@ -33,7 +33,7 @@
WHERE 1 = 1
- A.USER_NM LIKE CONCAT('%' , #searchKeyword#, '%')
+ (A.USER_NM_HASH = #searchKeywordHash# OR A.USER_NM LIKE CONCAT('%' , #searchKeyword#, '%'))
LIMIT #recordCountPerPage# OFFSET #firstIndex#
@@ -47,7 +47,7 @@
WHERE 1 = 1
- A.USER_NM LIKE CONCAT('%' , #searchKeyword#, '%')
+ (A.USER_NM_HASH = #searchKeywordHash# OR A.USER_NM LIKE CONCAT('%' , #searchKeyword#, '%'))
@@ -68,7 +68,7 @@
SELECT
ESNTL_ID,
MBER_ID AS USER_ID,
- MBER_NM AS USER_NM,
+ MBER_NM_ENC AS USER_NM,
'GNR' AS USER_SE
FROM COMTNGNRLMBER
WHERE MBER_ID = #emplyrId#
diff --git a/src/main/resources/egovframework/sqlmap/com/uat/uia/EgovLoginUsr_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/com/uat/uia/EgovLoginUsr_SQL_Mysql.xml
index 2e6c0d9..eb797f4 100644
--- a/src/main/resources/egovframework/sqlmap/com/uat/uia/EgovLoginUsr_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/com/uat/uia/EgovLoginUsr_SQL_Mysql.xml
@@ -284,7 +284,7 @@
SELECT A.MBER_ID AS id
, B.ESNTL_ID AS uniqId
, B.MBER_EMAIL_ADRES AS email
- , B.MBER_NM AS name
+ , B.MBER_NM_ENC AS name
, IFNULL(A.LAST_LOG, B.SBSCRB_DE) AS creatDt
, A.DIAPAUSE_DT AS diapause_dt
, A.DIAPAUSE_STAT AS diapause_stat
@@ -353,7 +353,7 @@
@@ -692,7 +692,7 @@
SELECT password AS password
FROM COMTNGNRLMBER
WHERE mber_id = #id#
- AND mber_nm = #name#
+ AND mber_nm_hash = #nameHash#
AND mber_email_adres = #email#
AND password_hint = #passwordHint#
AND password_cnsr = #passwordCnsr#
@@ -736,7 +736,7 @@
, USER_NM AS name
, USER_SE AS userSe
FROM COMVNUSERMASTER
- WHERE USER_NM = #name#
+ WHERE (USER_NM_HASH = #nameHash# OR USER_NM = #name#)
]]>
@@ -762,7 +762,7 @@
, USER_NM AS name
, USER_SE AS userSe
FROM COMVNUSERMASTER
- WHERE USER_NM = #name#
+ WHERE (USER_NM_HASH = #nameHash# OR USER_NM = #name#)
]]>
@@ -815,7 +815,7 @@
@@ -498,8 +498,8 @@
SELECT password AS password
FROM COMTNGNRLMBER
WHERE mber_id = #id#
- AND mber_nm = #name#
- AND mber_email_adres = #email#
+ AND mber_nm_hash = #nameHash#
+ AND mber_email_adres = #email#
AND mber_sttus = 'P'
]]>
@@ -715,7 +715,7 @@
SELECT A.MBER_ID AS id
,B.MBER_EMAIL_ADRES AS email
,B.ESNTL_ID AS uniqId
- ,B.MBER_NM AS name
+ ,B.MBER_NM_ENC AS name
,NVL(A.LAST_LOG,B.SBSCRB_DE) AS creatDt
,A.DIAPAUSE_DT
,A.DIAPAUSE_STAT
diff --git a/src/main/resources/egovframework/sqlmap/com/uss/olp/qri/EgovQustnrRespondInfo_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/com/uss/olp/qri/EgovQustnrRespondInfo_SQL_Mysql.xml
index 48773cc..81a048d 100644
--- a/src/main/resources/egovframework/sqlmap/com/uss/olp/qri/EgovQustnrRespondInfo_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/com/uss/olp/qri/EgovQustnrRespondInfo_SQL_Mysql.xml
@@ -83,15 +83,17 @@
SEXDSTN_CODE,
BRTHDY AS BRTH,
'' AS JOB,
- ESNTL_ID
+ ESNTL_ID,
+ 'USR' AS USER_SE
FROM COMTNEMPLYRINFO
UNION ALL
- SELECT
- MBER_NM AS USER_NM,
+ SELECT
+ MBER_NM_ENC AS USER_NM,
SEXDSTN_CODE,
'' AS BRTH,
'' AS JOB,
- ESNTL_ID
+ ESNTL_ID,
+ 'GNR' AS USER_SE
FROM COMTNGNRLMBER
) X
WHERE 1=1
@@ -172,7 +174,8 @@
A.QUSTNR_TMPLAT_ID QESTNR_TMPLAT_ID,
DATE_FORMAT(A.FRST_REGIST_PNTTM, '%Y-%m-%d') FRST_REGISTER_PNTTM,
A.FRST_REGISTER_ID,
- B.USER_NM FRST_REGISTER_NM,
+ B.USER_NM FRST_REGISTER_NM,
+ B.USER_SE FRST_REGISTER_NM_SE,
A.LAST_UPDT_PNTTM,
A.LAST_UPDUSR_ID
, CASE WHEN DATEDIFF(SYSDATE(), A.FRST_REGIST_PNTTM) < 3 THEN 'Y' ELSE 'N' END IS_NEW
@@ -196,7 +199,7 @@
AND A.QUSTNR_SJ LIKE CONCAT ('%', #searchKeyword#,'%')
- AND B.USER_NM LIKE CONCAT ('%', #searchKeyword#,'%')
+ AND (B.USER_NM_HASH = #searchKeywordHash# OR B.USER_NM LIKE CONCAT ('%', #searchKeyword#,'%'))
AND (A.QUSTNR_PURPS LIKE CONCAT ('%', #searchKeyword#,'%') OR A.QUSTNR_WRITNG_GUIDANCE_CN LIKE CONCAT ('%', #searchKeyword#,'%'))
@@ -225,7 +228,7 @@
AND A.QUSTNR_SJ LIKE CONCAT ('%', #searchKeyword#,'%')
- AND B.USER_NM LIKE CONCAT ('%', #searchKeyword#,'%')
+ AND (B.USER_NM_HASH = #searchKeywordHash# OR B.USER_NM LIKE CONCAT ('%', #searchKeyword#,'%'))
AND (A.QUSTNR_PURPS LIKE CONCAT ('%', #searchKeyword#,'%') OR A.QUSTNR_WRITNG_GUIDANCE_CN LIKE CONCAT ('%', #searchKeyword#,'%'))
diff --git a/src/main/resources/egovframework/sqlmap/com/uss/olp/qri/EgovQustnrRespondInfo_SQL_Oracle.xml b/src/main/resources/egovframework/sqlmap/com/uss/olp/qri/EgovQustnrRespondInfo_SQL_Oracle.xml
index 521a038..a0962e1 100644
--- a/src/main/resources/egovframework/sqlmap/com/uss/olp/qri/EgovQustnrRespondInfo_SQL_Oracle.xml
+++ b/src/main/resources/egovframework/sqlmap/com/uss/olp/qri/EgovQustnrRespondInfo_SQL_Oracle.xml
@@ -82,15 +82,17 @@
SEXDSTN_CODE,
BRTHDY AS BRTH,
'' AS JOB,
- ESNTL_ID
+ ESNTL_ID,
+ 'USR' AS USER_SE
FROM COMTNEMPLYRINFO
UNION ALL
- SELECT
- MBER_NM AS USER_NM,
+ SELECT
+ MBER_NM_ENC AS USER_NM,
SEXDSTN_CODE,
'' AS BRTH,
'' AS JOB,
- ESNTL_ID
+ ESNTL_ID,
+ 'GNR' AS USER_SE
FROM COMTNGNRLMBER
) X
WHERE 1=1
diff --git a/src/main/resources/egovframework/sqlmap/com/uss/olp/qrm/EgovQustnrRespondManage_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/com/uss/olp/qrm/EgovQustnrRespondManage_SQL_Mysql.xml
index 128f860..e68e8ca 100644
--- a/src/main/resources/egovframework/sqlmap/com/uss/olp/qrm/EgovQustnrRespondManage_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/com/uss/olp/qrm/EgovQustnrRespondManage_SQL_Mysql.xml
@@ -92,6 +92,7 @@
A.FRST_REGIST_PNTTM FRST_REGISTER_PNTTM,
A.FRST_REGISTER_ID,
(SELECT USER_NM FROM COMVNUSERMASTER WHERE ESNTL_ID = A.FRST_REGISTER_ID) FRST_REGISTER_NM,
+ (SELECT USER_SE FROM COMVNUSERMASTER WHERE ESNTL_ID = A.FRST_REGISTER_ID) FRST_REGISTER_NM_SE,
A.LAST_UPDT_PNTTM,
A.LAST_UPDUSR_ID
FROM COMTNQUSTNRRESPONDINFO A
diff --git a/src/main/resources/egovframework/sqlmap/com/uss/umt/EgovDiapauseManage_Mysql.xml b/src/main/resources/egovframework/sqlmap/com/uss/umt/EgovDiapauseManage_Mysql.xml
index d64f24b..7f91a62 100644
--- a/src/main/resources/egovframework/sqlmap/com/uss/umt/EgovDiapauseManage_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/com/uss/umt/EgovDiapauseManage_Mysql.xml
@@ -114,12 +114,12 @@
-
+
- ) TB
+ ) TB
) a
WHERE rn BETWEEN #firstIndex# + 1 AND #firstIndex# + #recordCountPerPage#
@@ -139,7 +139,7 @@
-
+
@@ -153,7 +153,7 @@
a.MBER_ID
,a.LAST_LOG
,a.DIAPAUSE_DT
- ,b.MBER_NM
+ ,b.MBER_NM_ENC AS MBER_NM
,b.SBSCRB_DE
,DATEDIFF(sysdate(), COALESCE(a.DIAPAUSE_DT, b.SBSCRB_DE)) AS ELAPSED_DT
,b.ESNTL_ID
@@ -165,7 +165,7 @@
a.MBER_ID LIKE #searchKeyword#
- b.MBER_NM LIKE CONCAT('%',#searchKeyword#,'%')
+ b.MBER_NM_HASH = #searchKeywordHash#
+
@@ -278,14 +281,15 @@
A.ESNTL_ID
, A.MBER_ID AS USER_ID
, A.MBER_NM AS USER_NM
- , A.MBTLNUM
+ , A.MBTLNUM
, A.RECV_SMS_YN
+ , A.USER_SE AS USER_SE
FROM (
SELECT
ESNTL_ID
- , MBER_ID AS MBER_ID
- , MBER_NM
- , 'GNR' AS USER_SE
+ , MBER_ID AS MBER_ID
+ , MBER_NM_ENC AS MBER_NM
+ , 'GNR' AS USER_SE
, MBTLNUM
, RECV_SMS_YN
FROM COMTNGNRLMBER
diff --git a/src/main/resources/egovframework/sqlmap/site/frt/biz/note/BizNote_SQL_Oracle.xml b/src/main/resources/egovframework/sqlmap/site/frt/biz/note/BizNote_SQL_Oracle.xml
index 1848748..9ea15d8 100644
--- a/src/main/resources/egovframework/sqlmap/site/frt/biz/note/BizNote_SQL_Oracle.xml
+++ b/src/main/resources/egovframework/sqlmap/site/frt/biz/note/BizNote_SQL_Oracle.xml
@@ -23,6 +23,8 @@
+
+
@@ -269,14 +271,15 @@
ESNTL_ID
, MBER_ID AS USER_ID
, MBER_NM AS USER_NM
- , MBTLNUM
+ , MBTLNUM
, RECV_SMS_YN
+ , USER_SE AS USER_SE
FROM (
SELECT
ESNTL_ID
- , MBER_ID AS MBER_ID
- , MBER_NM
- , 'GNR' AS USER_SE
+ , MBER_ID AS MBER_ID
+ , MBER_NM_ENC AS MBER_NM
+ , 'GNR' AS USER_SE
, MBTLNUM
, RECV_SMS_YN
FROM COMTNGNRLMBER
diff --git a/src/main/resources/egovframework/sqlmap/site/mnt/biz/appconfirm/BizAppconfirm_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/site/mnt/biz/appconfirm/BizAppconfirm_SQL_Mysql.xml
index 77191b1..84857a2 100644
--- a/src/main/resources/egovframework/sqlmap/site/mnt/biz/appconfirm/BizAppconfirm_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/site/mnt/biz/appconfirm/BizAppconfirm_SQL_Mysql.xml
@@ -36,6 +36,10 @@
+
+
+
+
@@ -68,6 +72,9 @@
+
+
+
@@ -331,6 +338,10 @@
(SELECT USER_NM FROM COMVNUSERMASTER WHERE ESNTL_ID = A.LAST_UPDUSR_ID LIMIT 1) AS AUTH_NM,
A.APPROVAL_GUGUN_ID, A.APPROVAL_GUGUN_DATE, A.APPROVAL_GUGUN_YN, G.USER_NM APPROVAL_GUGUN_NM
, D.WORK_AREA,A.DETAIL_YN
+ , C.USER_SE AS MBER_NM_SE
+ , CASE WHEN X.AUTH = 'G' THEN G.USER_SE ELSE X.USER_SE END AS USER_SE
+ , (SELECT USER_SE FROM COMVNUSERMASTER WHERE ESNTL_ID = A.LAST_UPDUSR_ID LIMIT 1) AS AUTH_NM_SE
+ , G.USER_SE AS APPROVAL_GUGUN_NM_SE
FROM BIZ_ACTIVITY_CONFIRM A
INNER JOIN COMVNUSERMASTER C ON A.MBER_ID = C.USER_ID
INNER JOIN BIZ_VOLUNTEER D ON A.VOLUNTEER_ID = D.VOLUNTEER_ID
@@ -373,6 +384,10 @@
(SELECT USER_NM FROM COMVNUSERMASTER WHERE ESNTL_ID = A.LAST_UPDUSR_ID LIMIT 1) AS AUTH_NM,
A.APPROVAL_GUGUN_ID, A.APPROVAL_GUGUN_DATE, A.APPROVAL_GUGUN_YN, G.USER_NM APPROVAL_GUGUN_NM
, D.WORK_AREA,A.DETAIL_YN
+ , C.USER_SE AS MBER_NM_SE
+ , CASE WHEN X.AUTH = 'G' THEN G.USER_SE ELSE X.USER_SE END AS USER_SE
+ , (SELECT USER_SE FROM COMVNUSERMASTER WHERE ESNTL_ID = A.LAST_UPDUSR_ID LIMIT 1) AS AUTH_NM_SE
+ , G.USER_SE AS APPROVAL_GUGUN_NM_SE
FROM BIZ_ACTIVITY_CONFIRM A
LEFT JOIN COMVNUSERMASTER C ON A.MBER_ID = C.USER_ID
LEFT JOIN BIZ_VOLUNTEER D ON A.VOLUNTEER_ID = D.VOLUNTEER_ID
@@ -459,7 +474,7 @@
@@ -474,7 +489,7 @@
@@ -549,7 +564,7 @@
@@ -564,7 +579,7 @@
@@ -680,6 +695,9 @@
, D.WORK_AREA
, A.ACT_TYPE
, A.MIDDLE_ACTIVITY_SEQ
+ , C.USER_SE AS MBER_NM_SE
+ , X.USER_SE AS USER_SE
+ , G.USER_SE AS APPROVAL_GUGUN_NM_SE
FROM (
SELECT A.*, 'ACT' ACT_TYPE,'' MID_STATUS, '' VOLUNTEER_MID_SDATE,'' VOLUNTEER_MID_EDATE, '' VOLUNTEER_MID_SHOUR, '' VOLUNTEER_MID_SMIN, '' VOLUNTEER_MID_EHOUR, '' VOLUNTEER_MID_EMIN,'' MID_SUM, '' APPROVAL_MID_ID
, DATE_FORMAT('', '%Y%m%d%H%i%s') APPROVAL_MID_DATE, DATE_FORMAT('', '%Y%m%d%H%i%s') REGIST_PNTTM, NULL MIDDLE_ACTIVITY_SEQ FROM BIZ_ACTIVITY_CONFIRM A
@@ -762,7 +780,7 @@
@@ -772,12 +790,12 @@
@@ -787,7 +805,7 @@
@@ -877,7 +895,7 @@
@@ -887,12 +905,12 @@
@@ -902,7 +920,7 @@
@@ -1154,6 +1172,9 @@
) AS AUTH_NM,
A.APPROVAL_GUGUN_ID, A.APPROVAL_GUGUN_DATE, A.APPROVAL_GUGUN_YN, G.USER_NM APPROVAL_GUGUN_NM
,D.WORK_AREA, A.DETAIL_YN
+ , C.USER_SE AS MBER_NM_SE
+ , CASE WHEN X.AUTH = 'G' THEN G.USER_SE ELSE X.USER_SE END AS USER_SE
+ , G.USER_SE AS APPROVAL_GUGUN_NM_SE
FROM BIZ_ACTIVITY_CONFIRM A
INNER JOIN COMVNUSERMASTER C ON A.MBER_ID = C.USER_ID
INNER JOIN BIZ_VOLUNTEER D ON A.VOLUNTEER_ID = D.VOLUNTEER_ID
@@ -1208,7 +1229,7 @@
@@ -1223,7 +1244,7 @@
@@ -1265,6 +1286,7 @@
, A.VOLUNTEER_SEQ_ID appconfirmSeqId
, A.MBER_ID mberId
, (SELECT USER_NM FROM COMVNUSERMASTER WHERE USER_ID = A.MBER_ID) mberNm
+ , (SELECT USER_SE FROM COMVNUSERMASTER WHERE USER_ID = A.MBER_ID) mberNmSe
, A.STATUS status
, MID_SUM midSum
, DATE_FORMAT(A.REGIST_PNTTM, '%Y.%m.%d') registDate
diff --git a/src/main/resources/egovframework/sqlmap/site/mnt/biz/cntc/Cntc_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/site/mnt/biz/cntc/Cntc_SQL_Mysql.xml
index 1cddc18..cec67ac 100644
--- a/src/main/resources/egovframework/sqlmap/site/mnt/biz/cntc/Cntc_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/site/mnt/biz/cntc/Cntc_SQL_Mysql.xml
@@ -47,7 +47,8 @@
CONCAT('SEND_', (SELECT LPAD(MAX(SUBSTRING(ACTSEQ, 6))+1,15,0) FROM BIZ_CONN_SEND)) as act_seq,
(SELECT sub.volunteer_title FROM BIZ_VOLUNTEER as sub WHERE sub.VOLUNTEER_ID = #volunteerId#) as volunteer_title,
(SELECT DATE_FORMAT(sub.APPROVAL_DATE,'%Y%m%d') FROM BIZ_ACTIVITY_CONFIRM sub WHERE sub.volunteer_seq_id = #volunteerSeqId#) as approval_date,
- (SELECT sub.user_nm FROM COMVNUSERMASTER sub WHERE T1.ESNTL_ID = sub.ESNTL_ID) user_nm,
+ (SELECT sub.user_nm FROM COMVNUSERMASTER sub WHERE T1.ESNTL_ID = sub.ESNTL_ID) user_nm,
+ (SELECT sub.USER_SE FROM COMVNUSERMASTER sub WHERE T1.ESNTL_ID = sub.ESNTL_ID) user_nm_se,
CASE
WHEN T1.WORK_AREA = 'A001' AND T1.FAC_CODE = 'A001'
THEN '0702'
@@ -272,6 +273,7 @@
,C.VOLUNTEER_TITLE as data9
,DATE_FORMAT(B.APPROVAL_DATE,'%Y%m%d') as data10
,G.USER_NM as data11
+ ,G.USER_SE as data11_se
,CASE
WHEN C.WORK_AREA = 'A001' AND F.CODE = 'A001'
THEN '0702'
@@ -442,7 +444,7 @@
SELECT *
FROM (SELECT @ROWNUM := @ROWNUM + 1 AS RN, TB.*
FROM ( SELECT B.MBER_ID,
- B.MBER_NM,
+ B.MBER_NM_ENC AS MBER_NM,
A.CNSMRNAME,
C.VOLUNTEER_ID,
C.VOLUNTEER_TITLE,
@@ -545,7 +547,7 @@
@@ -555,7 +557,7 @@
@@ -692,7 +694,7 @@
@@ -702,7 +704,7 @@
diff --git a/src/main/resources/egovframework/sqlmap/site/mnt/biz/cntc/Cntc_SQL_Oracle.xml b/src/main/resources/egovframework/sqlmap/site/mnt/biz/cntc/Cntc_SQL_Oracle.xml
index a2e4eb0..a85904c 100644
--- a/src/main/resources/egovframework/sqlmap/site/mnt/biz/cntc/Cntc_SQL_Oracle.xml
+++ b/src/main/resources/egovframework/sqlmap/site/mnt/biz/cntc/Cntc_SQL_Oracle.xml
@@ -220,7 +220,7 @@
SELECT *
FROM (SELECT ROWNUM AS rn, TB.*
FROM ( SELECT B.MBER_ID,
- B.MBER_NM,
+ B.MBER_NM_ENC AS MBER_NM,
A.CNSMRNAME,
C.VOLUNTEER_ID,
C.VOLUNTEER_TITLE,
@@ -317,7 +317,7 @@
@@ -327,7 +327,7 @@
@@ -451,7 +451,7 @@
@@ -461,7 +461,7 @@
diff --git a/src/main/resources/egovframework/sqlmap/site/mnt/biz/event/BizAwardMnt_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/site/mnt/biz/event/BizAwardMnt_SQL_Mysql.xml
index d19a58e..f03482f 100644
--- a/src/main/resources/egovframework/sqlmap/site/mnt/biz/event/BizAwardMnt_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/site/mnt/biz/event/BizAwardMnt_SQL_Mysql.xml
@@ -120,6 +120,8 @@
+
+
@@ -2206,6 +2208,7 @@
, B.LAST_UPDT_PNTTM
, B.LAST_UPDUSR_ID
, X.USER_NM AS FRST_REGISTER_NM
+ , X.USER_SE AS USER_SE
, Z.ATCH_FILE_ID
, Z.ORIGNL_FILE_NM
, Z.FILE_EXTSN
@@ -2221,19 +2224,19 @@
ON A.BBS_ID = B.BBS_ID
AND B.BBS_CL_CD = '06'
LEFT OUTER JOIN (SELECT B.* FROM BIZ_EVENT A
- INNER JOIN (SELECT ESNTL_ID AS ESNTL_ID, MBER_NM AS USER_NM FROM COMTNGNRLMBER WHERE MBER_STTUS = 'P') B
+ INNER JOIN (SELECT ESNTL_ID AS ESNTL_ID, MBER_NM_ENC AS USER_NM, 'GNR' AS USER_SE FROM COMTNGNRLMBER WHERE MBER_STTUS = 'P') B
ON A.FRST_REGISTER_ID = B.ESNTL_ID
UNION
SELECT B.* FROM BIZ_EVENT A
- INNER JOIN (SELECT ESNTL_ID AS ESNTL_ID, USER_NM AS USER_NM FROM COMTNEMPLYRINFO ) B
+ INNER JOIN (SELECT ESNTL_ID AS ESNTL_ID, USER_NM AS USER_NM, 'USR' AS USER_SE FROM COMTNEMPLYRINFO ) B
ON A.FRST_REGISTER_ID = B.ESNTL_ID
UNION
SELECT B.* FROM BIZ_EVENT A
- INNER JOIN (SELECT ESNTL_ID AS ESNTL_ID, CMPNY_NM AS CMPNY_NM FROM COMTNENTRPRSMBER WHERE ENTRPRS_MBER_STTUS = 'P') B
+ INNER JOIN (SELECT ESNTL_ID AS ESNTL_ID, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE FROM COMTNENTRPRSMBER WHERE ENTRPRS_MBER_STTUS = 'P') B
ON A.FRST_REGISTER_ID = B.ESNTL_ID
UNION
SELECT B.* FROM BIZ_EVENT A
- INNER JOIN (SELECT ESNTL_ID AS ESNTL_ID, GROUP_NM AS GROUP_NM FROM BIZ_GROUP WHERE GROUP_STTUS_CODE <> 'C' ) B
+ INNER JOIN (SELECT ESNTL_ID AS ESNTL_ID, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE FROM BIZ_GROUP WHERE GROUP_STTUS_CODE <> 'C' ) B
ON A.FRST_REGISTER_ID = B.ESNTL_ID
) X
ON A.FRST_REGISTER_ID = X.ESNTL_ID
@@ -2523,6 +2526,7 @@
, B.LAST_UPDT_PNTTM
, B.LAST_UPDUSR_ID
, X.USER_NM AS FRST_REGISTER_NM
+ , X.USER_SE AS USER_SE
, Z.ATCH_FILE_ID
, Z.ORIGNL_FILE_NM
, Z.FILE_EXTSN
@@ -2537,19 +2541,19 @@
ON A.BBS_ID = B.BBS_ID
AND B.BBS_CL_CD = '06'
LEFT OUTER JOIN (SELECT B.* FROM BIZ_EVENT A
- INNER JOIN (SELECT ESNTL_ID AS ESNTL_ID, MBER_NM AS USER_NM FROM COMTNGNRLMBER WHERE MBER_STTUS = 'P') B
+ INNER JOIN (SELECT ESNTL_ID AS ESNTL_ID, MBER_NM_ENC AS USER_NM, 'GNR' AS USER_SE FROM COMTNGNRLMBER WHERE MBER_STTUS = 'P') B
ON A.FRST_REGISTER_ID = B.ESNTL_ID
UNION
SELECT B.* FROM BIZ_EVENT A
- INNER JOIN (SELECT ESNTL_ID AS ESNTL_ID, USER_NM AS USER_NM FROM COMTNEMPLYRINFO ) B
+ INNER JOIN (SELECT ESNTL_ID AS ESNTL_ID, USER_NM AS USER_NM, 'USR' AS USER_SE FROM COMTNEMPLYRINFO ) B
ON A.FRST_REGISTER_ID = B.ESNTL_ID
UNION
SELECT B.* FROM BIZ_EVENT A
- INNER JOIN (SELECT ESNTL_ID AS ESNTL_ID, CMPNY_NM AS CMPNY_NM FROM COMTNENTRPRSMBER WHERE ENTRPRS_MBER_STTUS = 'P') B
+ INNER JOIN (SELECT ESNTL_ID AS ESNTL_ID, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE FROM COMTNENTRPRSMBER WHERE ENTRPRS_MBER_STTUS = 'P') B
ON A.FRST_REGISTER_ID = B.ESNTL_ID
UNION
SELECT B.* FROM BIZ_EVENT A
- INNER JOIN (SELECT ESNTL_ID AS ESNTL_ID, GROUP_NM AS GROUP_NM FROM BIZ_GROUP WHERE GROUP_STTUS_CODE <> 'C' ) B
+ INNER JOIN (SELECT ESNTL_ID AS ESNTL_ID, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE FROM BIZ_GROUP WHERE GROUP_STTUS_CODE <> 'C' ) B
ON A.FRST_REGISTER_ID = B.ESNTL_ID
) X
ON A.FRST_REGISTER_ID = X.ESNTL_ID
diff --git a/src/main/resources/egovframework/sqlmap/site/mnt/biz/group/BizGroup_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/site/mnt/biz/group/BizGroup_SQL_Mysql.xml
index 9df72ae..0a27c88 100644
--- a/src/main/resources/egovframework/sqlmap/site/mnt/biz/group/BizGroup_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/site/mnt/biz/group/BizGroup_SQL_Mysql.xml
@@ -20,6 +20,7 @@
+
@@ -41,6 +42,7 @@
d.CODE_NM as "workMajorArea",
e.CODE_NM as "workMinorArea",
f.USER_NM as "entrprsMberId"
+ ,f.USER_SE as "entrprsMberIdSe"
,a.HOMEPAGE as "homePage"
,(SELECT COUNT(1) FROM BIZ_GROUP_MBER z INNER JOIN COMTNGNRLMBER y ON z.MBER_ID = y.MBER_ID WHERE z.GMBER_STTUS_CODE != 'D' AND z.GROUP_ID = a.GROUP_ID ) as "groMberCnt"
FROM BIZ_GROUP a
@@ -399,7 +401,7 @@
A.GMBER_STTUS_CODE,
B.MBER_STTUS,
A.SBSCRB_DE,
- B.MBER_NM,
+ B.MBER_NM_ENC AS MBER_NM,
B.ESNTL_ID
FROM BIZ_GROUP_MBER A
INNER JOIN COMTNGNRLMBER B ON A.MBER_ID = B.MBER_ID
@@ -718,6 +720,7 @@
d.CODE_NM as "workMajorArea",
e.CODE_NM as "workMinorArea",
f.USER_NM as "entrprsMberId"
+ ,f.USER_SE as "entrprsMberIdSe"
FROM BIZ_GROUP a
LEFT OUTER JOIN COMTNORGNZTINFO b ON b.ORGNZT_ID = a.ACTIVE_SIDO_AREA
LEFT OUTER JOIN BIZ_TEAM c ON c.ORGNZT_ID = a.ACTIVE_SIDO_AREA AND c.TEAM_ID = a.ACTIVE_GUGUN_AREA
@@ -774,6 +777,7 @@
E.CODE_NM as WORK_MAJOR_AREA,
F.CODE_NM as WORK_MINOR_AREA,
H.USER_NM as ENTRPRS_MBER_ID
+ ,H.USER_SE as ENTRPRS_MBER_ID_SE
FROM BIZ_GROUP_TALENT A
INNER JOIN BIZ_GROUP B ON A.GROUP_ID = B.GROUP_ID
INNER JOIN COMTNORGNZTINFO C ON C.ORGNZT_ID = B.ACTIVE_SIDO_AREA
diff --git a/src/main/resources/egovframework/sqlmap/site/mnt/biz/group/BizGroup_SQL_Oracle.xml b/src/main/resources/egovframework/sqlmap/site/mnt/biz/group/BizGroup_SQL_Oracle.xml
index 723595a..9fc615d 100644
--- a/src/main/resources/egovframework/sqlmap/site/mnt/biz/group/BizGroup_SQL_Oracle.xml
+++ b/src/main/resources/egovframework/sqlmap/site/mnt/biz/group/BizGroup_SQL_Oracle.xml
@@ -395,7 +395,7 @@
A.GROUP_ID,
A.GMBER_STTUS_CODE,
A.SBSCRB_DE,
- B.MBER_NM,
+ B.MBER_NM_ENC AS MBER_NM,
B.ESNTL_ID
FROM BIZ_GROUP_MBER A
INNER JOIN COMTNGNRLMBER B ON A.MBER_ID = B.MBER_ID
diff --git a/src/main/resources/egovframework/sqlmap/site/mnt/biz/prbro/BizPrbro_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/site/mnt/biz/prbro/BizPrbro_SQL_Mysql.xml
index b63f0ba..5a73b13 100644
--- a/src/main/resources/egovframework/sqlmap/site/mnt/biz/prbro/BizPrbro_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/site/mnt/biz/prbro/BizPrbro_SQL_Mysql.xml
@@ -26,6 +26,7 @@
+
@@ -47,6 +48,7 @@
, B.CODE_NM AS CTGRY_NM
, C.CODE_NM AS SRVC_NM
, X.USER_NM AS FRST_REGISTER_NM
+ , X.USER_SE AS FRST_REGISTER_NM_SE
, Z.ORIGNL_FILE_NM
, Z.FILE_EXTSN
, Z.FILE_SIZE
@@ -71,7 +73,7 @@
@@ -105,7 +107,7 @@
@@ -130,6 +132,7 @@
, B.CODE_NM AS CTGRY_NM
, C.CODE_NM AS SRVC_NM
, X.USER_NM AS FRST_REGISTER_NM
+ , X.USER_SE AS FRST_REGISTER_NM_SE
, Z.ORIGNL_FILE_NM
, Z.FILE_EXTSN
, Z.FILE_SIZE
diff --git a/src/main/resources/egovframework/sqlmap/site/mnt/biz/privacy/PrivacyLoginFailHistory_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/site/mnt/biz/privacy/PrivacyLoginFailHistory_SQL_Mysql.xml
index 1a36fcd..ef4114e 100644
--- a/src/main/resources/egovframework/sqlmap/site/mnt/biz/privacy/PrivacyLoginFailHistory_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/site/mnt/biz/privacy/PrivacyLoginFailHistory_SQL_Mysql.xml
@@ -54,7 +54,7 @@
, h.RESET_YN AS resetYn
, CASE h.GUBUN
WHEN 'USR' THEN (SELECT e.USER_NM FROM COMTNEMPLYRINFO e WHERE e.EMPLYR_ID = h.ID)
- WHEN 'GNR' THEN (SELECT g.MBER_NM FROM COMTNGNRLMBER g WHERE g.MBER_ID = h.ID)
+ WHEN 'GNR' THEN (SELECT g.MBER_NM_ENC FROM COMTNGNRLMBER g WHERE g.MBER_ID = h.ID)
ELSE NULL
END AS userNm
FROM LOGIN_HISTORY h
diff --git a/src/main/resources/egovframework/sqlmap/site/mnt/biz/privacy/PrivacyLoginFailHistory_SQL_Oracle.xml b/src/main/resources/egovframework/sqlmap/site/mnt/biz/privacy/PrivacyLoginFailHistory_SQL_Oracle.xml
index 4d48499..6322c5c 100644
--- a/src/main/resources/egovframework/sqlmap/site/mnt/biz/privacy/PrivacyLoginFailHistory_SQL_Oracle.xml
+++ b/src/main/resources/egovframework/sqlmap/site/mnt/biz/privacy/PrivacyLoginFailHistory_SQL_Oracle.xml
@@ -48,7 +48,7 @@
, h.RESET_YN AS resetYn
, CASE h.GUBUN
WHEN 'USR' THEN (SELECT e.USER_NM FROM COMTNEMPLYRINFO e WHERE e.EMPLYR_ID = h.ID)
- WHEN 'GNR' THEN (SELECT g.MBER_NM FROM COMTNGNRLMBER g WHERE g.MBER_ID = h.ID)
+ WHEN 'GNR' THEN (SELECT g.MBER_NM_ENC FROM COMTNGNRLMBER g WHERE g.MBER_ID = h.ID)
ELSE NULL
END AS userNm
FROM LOGIN_HISTORY h
diff --git a/src/main/resources/egovframework/sqlmap/site/mnt/biz/prmvp/BizPrmvp_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/site/mnt/biz/prmvp/BizPrmvp_SQL_Mysql.xml
index 1cabe83..2de77a6 100644
--- a/src/main/resources/egovframework/sqlmap/site/mnt/biz/prmvp/BizPrmvp_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/site/mnt/biz/prmvp/BizPrmvp_SQL_Mysql.xml
@@ -29,6 +29,7 @@
+
@@ -53,6 +54,7 @@
, C.CODE_NM AS SRVC_NM
, V.STRE_FILE_NM AS IMAGE_FILE_NM
, X.USER_NM AS FRST_REGISTER_NM
+ , X.USER_SE AS FRST_REGISTER_NM_SE
, Y.ORIGNL_FILE_NM AS ORIGNL_ATCH_NM
, Z.STRE_FILE_NM
, Z.ORIGNL_FILE_NM
@@ -82,7 +84,7 @@
@@ -118,7 +120,7 @@
@@ -144,6 +146,7 @@
, C.CODE_NM AS SRVC_NM
, V.STRE_FILE_NM AS IMAGE_FILE_NM
, X.USER_NM AS FRST_REGISTER_NM
+ , X.USER_SE AS FRST_REGISTER_NM_SE
, Y.ORIGNL_FILE_NM AS ORIGNL_ATCH_NM
, Z.ORIGNL_FILE_NM
, Z.STRE_FILE_NM
diff --git a/src/main/resources/egovframework/sqlmap/site/mnt/biz/proapp/BizPrapp_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/site/mnt/biz/proapp/BizPrapp_SQL_Mysql.xml
index 537e9ef..367680c 100644
--- a/src/main/resources/egovframework/sqlmap/site/mnt/biz/proapp/BizPrapp_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/site/mnt/biz/proapp/BizPrapp_SQL_Mysql.xml
@@ -12,6 +12,8 @@
+
+
@@ -39,6 +41,8 @@
+
+
@@ -62,6 +66,8 @@
+
+
@@ -98,7 +104,10 @@
+
+
+
@@ -110,7 +119,10 @@
+
+
+
@@ -137,14 +149,18 @@
-
+
+
+
+
+
@@ -174,6 +190,7 @@
A.MBER_ID,
C.ESNTL_ID,
C.USER_NM AS MBER_NM,
+ C.USER_SE AS MBER_NM_SE,
REPLACE(IFNULL(A.MBTLNUM, (SELECT MBTLNUM FROM COMTNGNRLMBER WHERE MBER_ID=A.MBER_ID LIMIT 1)), '-', '') AS MBTLNUM ,
A.EMAIL_ADRES,
A.CN,
@@ -222,6 +239,7 @@
A.MBER_ID,
C.ESNTL_ID,
C.USER_NM AS MBER_NM,
+ C.USER_SE AS MBER_NM_SE,
A.MBTLNUM,
A.EMAIL_ADRES,
A.CN,
@@ -394,7 +412,7 @@
/* BizProappDAO.selectProappinfoList */
/* BizProappDAO.selectProappscrapList */
@@ -948,6 +974,10 @@
WHERE USER_ID = CASE WHEN A.ENTRPRS_MBER_ID IS NULL THEN A.EMPLYR_ID
ELSE A.ENTRPRS_MBER_ID END
) AS ESNTL_NM
+ ,( SELECT USER_SE FROM COMVNUSERMASTER
+ WHERE USER_ID = CASE WHEN A.ENTRPRS_MBER_ID IS NULL THEN A.EMPLYR_ID
+ ELSE A.ENTRPRS_MBER_ID END
+ ) AS USER_SE
FROM BIZ_GROUP A
WHERE 1=1
]]>
@@ -969,13 +999,14 @@
, A.APP_CNT
, A.REGIST_PNTTM
, B.USER_NM
+ , B.USER_SE
FROM BIZ_ACTIVITY_KEY A
LEFT JOIN COMVNUSERMASTER B
ON A.MBER_ID = B.USER_ID
WHERE REPLACE(A.VOLT_UNIQ, '-', '') = UPPER(REPLACE(#voltUniq#, '-', ''))
]]>
-
+
@@ -1034,12 +1065,14 @@
SELECT Z.* FROM (SELECT @ROWNUM := @ROWNUM + 1 AS RN, TB.* FROM (
SELECT DISTINCT A.VOLUNTEER_ID, MAX(A.VOLUNTEER_SEQ_ID) AS VOLUNTEER_SEQ_ID,
(SELECT USER_NM FROM COMVNUSERMASTER WHERE ESNTL_ID = C.ESNTL_ID ) AS ESNTL_NM,
+ (SELECT USER_SE FROM COMVNUSERMASTER WHERE ESNTL_ID = C.ESNTL_ID ) AS USER_SE,
C.VOLUNTEER_TITLE,DBMS_LOB.SUBSTR(c.VOLUNTEER_CONTENT, 20, 1) AS VOLUNTEER_CONTENT, D.ORGNZT_NM AS SIDO_AREA, D.TEAM_NM AS GUGUN_AREA,
DATE_FORMAT(DATE_FORMAT(C.VOLUNTEER_SDATE,'%Y%m%d'),'%Y.%m.%d') VOLUNTEER_SDATE ,
DATE_FORMAT(DATE_FORMAT(C.VOLUNTEER_EDATE,'%Y%m%d'),'%Y.%m.%d') VOLUNTEER_EDATE ,
FLOOR ((DATE_FORMAT(CONCAT(C.VOLUNTEER_EHOUR,C.VOLUNTEER_EMIN ), 'hh24mi') - DATE_FORMAT(CONCAT(C.VOLUNTEER_SHOUR,C.VOLUNTEER_SMIN ), 'hh24mi'))*(24*60*60 ) / (60*60 ) ) AS HOUR,
LPAD(FLOOR (MOD( ((DATE_FORMAT(CONCAT(C.VOLUNTEER_EHOUR,C.VOLUNTEER_EMIN ), 'hh24mi') - DATE_FORMAT(CONCAT(C.VOLUNTEER_SHOUR,C.VOLUNTEER_SMIN ), 'hh24mi'))*(24*60*60 )/60 ), 60) ), 2, 0) AS MINUTE
, (SELECT USER_NM FROM COMVNUSERMASTER WHERE ESNTL_ID = C.FRST_REGISTER_ID ) AS AUTH_NM
+ , (SELECT USER_SE FROM COMVNUSERMASTER WHERE ESNTL_ID = C.FRST_REGISTER_ID ) AS AUTH_NM_SE
, (SELECT MBTLNUM FROM COMVNUSERMASTER WHERE ESNTL_ID = C.FRST_REGISTER_ID ) AS MBTLNUM
FROM BIZ_ACTIVITY_CONFIRM A INNER JOIN BIZ_VOLUNTEER_APP B
ON A.VOLUNTEER_ID = B.VOLUNTEER_ID INNER JOIN BIZ_VOLUNTEER C
diff --git a/src/main/resources/egovframework/sqlmap/site/mnt/biz/proapp/BizPrapp_SQL_Oracle.xml b/src/main/resources/egovframework/sqlmap/site/mnt/biz/proapp/BizPrapp_SQL_Oracle.xml
index b253cb2..d113a53 100644
--- a/src/main/resources/egovframework/sqlmap/site/mnt/biz/proapp/BizPrapp_SQL_Oracle.xml
+++ b/src/main/resources/egovframework/sqlmap/site/mnt/biz/proapp/BizPrapp_SQL_Oracle.xml
@@ -892,8 +892,8 @@
diff --git a/src/main/resources/egovframework/sqlmap/site/mnt/biz/provol/BizPrvol_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/site/mnt/biz/provol/BizPrvol_SQL_Mysql.xml
index 4fc8ab1..029c77b 100644
--- a/src/main/resources/egovframework/sqlmap/site/mnt/biz/provol/BizPrvol_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/site/mnt/biz/provol/BizPrvol_SQL_Mysql.xml
@@ -75,6 +75,8 @@
+
+
@@ -174,19 +176,19 @@
ON D.CODE_ID = CASE WHEN A.WORK_AREA = 'A001' THEN 'BIZ038' ELSE 'BIZ041' END AND A.WORK_MINOR_AREA = D.CODE
LEFT OUTER JOIN (SELECT X.ORGNZT_ID, X.ORGNZT_NM, Y.TEAM_ID, Y.TEAM_NM FROM COMTNORGNZTINFO X INNER JOIN BIZ_TEAM Y ON X.ORGNZT_ID = Y.ORGNZT_ID ) B
ON A.SIDO_AREA = B.ORGNZT_ID AND A.GUGUN_AREA = B.TEAM_ID
- LEFT OUTER JOIN (SELECT ESNTL_ID AS ESNTL_ID, '-' AS AUTH, MBER_NM AS USER_NM, 'GNR' AS USER_SE
+ LEFT OUTER JOIN (SELECT ESNTL_ID AS ESNTL_ID, '-' AS AUTH, MBER_NM_ENC AS USER_NM, 'GNR' AS USER_SE, MBER_NM_HASH AS USER_NM_HASH
FROM COMTNGNRLMBER
WHERE MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, AUTH_CODE AS AUTH, USER_NM AS USER_NM, 'USR' AS USER_SE
+ SELECT ESNTL_ID AS ESNTL_ID, AUTH_CODE AS AUTH, USER_NM AS USER_NM, 'USR' AS USER_SE, NULL AS USER_NM_HASH
FROM COMTNEMPLYRINFO
WHERE ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, INDUTY_CODE AS AUTH, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE
+ SELECT ESNTL_ID AS ESNTL_ID, INDUTY_CODE AS AUTH, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE, NULL AS USER_NM_HASH
FROM COMTNENTRPRSMBER
WHERE ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, GROUP_STTUS_CODE AS AUTH, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE
+ SELECT ESNTL_ID AS ESNTL_ID, GROUP_STTUS_CODE AS AUTH, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE, NULL AS USER_NM_HASH
FROM BIZ_GROUP
WHERE GROUP_STTUS_CODE <> 'C' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
) X
@@ -308,7 +310,7 @@
@@ -321,10 +323,9 @@
A.VOLUNTEER_CONTENT LIKE CONCAT('%', #searchKeyword#, '%')
]]>
-
@@ -370,13 +371,13 @@
ON D.CODE_ID = CASE WHEN A.WORK_AREA = 'A001' THEN 'BIZ038' ELSE 'BIZ041' END AND A.WORK_MINOR_AREA = D.CODE
LEFT OUTER JOIN (SELECT X.ORGNZT_ID, X.ORGNZT_NM, Y.TEAM_ID, Y.TEAM_NM FROM COMTNORGNZTINFO X INNER JOIN BIZ_TEAM Y ON X.ORGNZT_ID = Y.ORGNZT_ID ) B
ON A.SIDO_AREA = B.ORGNZT_ID AND A.GUGUN_AREA = B.TEAM_ID
- LEFT OUTER JOIN (SELECT ESNTL_ID AS ESNTL_ID, '-' AS AUTH, MBER_NM AS USER_NM, 'GNR' AS USER_SE FROM COMTNGNRLMBER WHERE MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ LEFT OUTER JOIN (SELECT ESNTL_ID AS ESNTL_ID, '-' AS AUTH, MBER_NM_ENC AS USER_NM, 'GNR' AS USER_SE, MBER_NM_HASH AS USER_NM_HASH FROM COMTNGNRLMBER WHERE MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, AUTH_CODE AS AUTH, USER_NM AS USER_NM, 'USR' AS USER_SE FROM COMTNEMPLYRINFO WHERE ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, AUTH_CODE AS AUTH, USER_NM AS USER_NM, 'USR' AS USER_SE, NULL AS USER_NM_HASHFROM COMTNEMPLYRINFO WHERE ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, INDUTY_CODE AS AUTH, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE FROM COMTNENTRPRSMBER WHERE ENTRPRS_MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, INDUTY_CODE AS AUTH, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE, NULL AS USER_NM_HASHFROM COMTNENTRPRSMBER WHERE ENTRPRS_MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, GROUP_STTUS_CODE AS AUTH, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE FROM BIZ_GROUP WHERE GROUP_STTUS_CODE <> 'C' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, GROUP_STTUS_CODE AS AUTH, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE, NULL AS USER_NM_HASHFROM BIZ_GROUP WHERE GROUP_STTUS_CODE <> 'C' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
) X
ON A.ESNTL_ID = X.ESNTL_ID
LEFT OUTER JOIN COMTNFILEDETAIL Z ON Z.FILE_SN = 0 AND A.ATCH_FILE_ID = Z.ATCH_FILE_ID
@@ -495,7 +496,7 @@
@@ -508,10 +509,9 @@
A.VOLUNTEER_CONTENT LIKE CONCAT('%', #searchKeyword#, '%')
]]>
-
@@ -618,19 +618,19 @@
FROM BIZ_VOLUNTEER A
LEFT OUTER JOIN (SELECT X.ORGNZT_ID, X.ORGNZT_NM, Y.TEAM_ID, Y.TEAM_NM FROM COMTNORGNZTINFO X INNER JOIN BIZ_TEAM Y ON X.ORGNZT_ID = Y.ORGNZT_ID ) B
ON A.SIDO_AREA = B.ORGNZT_ID AND A.GUGUN_AREA = B.TEAM_ID
- LEFT OUTER JOIN (SELECT ESNTL_ID AS ESNTL_ID, '-' AS AUTH, MBER_NM AS USER_NM, 'GNR' AS USER_SE
+ LEFT OUTER JOIN (SELECT ESNTL_ID AS ESNTL_ID, '-' AS AUTH, MBER_NM_ENC AS USER_NM, 'GNR' AS USER_SE, MBER_NM_HASH AS USER_NM_HASH
FROM COMTNGNRLMBER
WHERE MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, AUTH_CODE AS AUTH, USER_NM AS USER_NM, 'USR' AS USER_SE
+ SELECT ESNTL_ID AS ESNTL_ID, AUTH_CODE AS AUTH, USER_NM AS USER_NM, 'USR' AS USER_SE, NULL AS USER_NM_HASH
FROM COMTNEMPLYRINFO
WHERE ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, INDUTY_CODE AS AUTH, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE
+ SELECT ESNTL_ID AS ESNTL_ID, INDUTY_CODE AS AUTH, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE, NULL AS USER_NM_HASH
FROM COMTNENTRPRSMBER
WHERE ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, GROUP_STTUS_CODE AS AUTH, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE
+ SELECT ESNTL_ID AS ESNTL_ID, GROUP_STTUS_CODE AS AUTH, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE, NULL AS USER_NM_HASH
FROM BIZ_GROUP
WHERE GROUP_STTUS_CODE <> 'C' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
) X
@@ -716,13 +716,13 @@
FROM BIZ_VOLUNTEER A
LEFT OUTER JOIN (SELECT X.ORGNZT_ID, X.ORGNZT_NM, Y.TEAM_ID, Y.TEAM_NM FROM COMTNORGNZTINFO X INNER JOIN BIZ_TEAM Y ON X.ORGNZT_ID = Y.ORGNZT_ID ) B
ON A.SIDO_AREA = B.ORGNZT_ID AND A.GUGUN_AREA = B.TEAM_ID
- LEFT OUTER JOIN (SELECT ESNTL_ID AS ESNTL_ID, '-' AS AUTH, MBER_NM AS USER_NM, 'GNR' AS USER_SE FROM COMTNGNRLMBER WHERE MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ LEFT OUTER JOIN (SELECT ESNTL_ID AS ESNTL_ID, '-' AS AUTH, MBER_NM_ENC AS USER_NM, 'GNR' AS USER_SE, MBER_NM_HASH AS USER_NM_HASH FROM COMTNGNRLMBER WHERE MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, AUTH_CODE AS AUTH, USER_NM AS USER_NM, 'USR' AS USER_SE FROM COMTNEMPLYRINFO WHERE ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, AUTH_CODE AS AUTH, USER_NM AS USER_NM, 'USR' AS USER_SE, NULL AS USER_NM_HASHFROM COMTNEMPLYRINFO WHERE ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, INDUTY_CODE AS AUTH, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE FROM COMTNENTRPRSMBER WHERE ENTRPRS_MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, INDUTY_CODE AS AUTH, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE, NULL AS USER_NM_HASHFROM COMTNENTRPRSMBER WHERE ENTRPRS_MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, GROUP_STTUS_CODE AS AUTH, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE FROM BIZ_GROUP WHERE GROUP_STTUS_CODE <> 'C' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, GROUP_STTUS_CODE AS AUTH, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE, NULL AS USER_NM_HASHFROM BIZ_GROUP WHERE GROUP_STTUS_CODE <> 'C' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
) X
ON A.ESNTL_ID = X.ESNTL_ID
LEFT OUTER JOIN COMTNFILEDETAIL Z ON Z.FILE_SN = 0 AND A.ATCH_FILE_ID = Z.ATCH_FILE_ID
@@ -986,13 +986,13 @@
ON F.CODE_ID = CASE WHEN A.WORK_AREA = 'A001' THEN 'BIZ039' ELSE 'BIZ042' END AND A.FAC_CODE = F.CODE
LEFT OUTER JOIN (SELECT X.ORGNZT_ID, X.ORGNZT_NM, Y.TEAM_ID, Y.TEAM_NM FROM COMTNORGNZTINFO X INNER JOIN BIZ_TEAM Y ON X.ORGNZT_ID = Y.ORGNZT_ID ) B
ON A.SIDO_AREA = B.ORGNZT_ID AND A.GUGUN_AREA = B.TEAM_ID
- LEFT OUTER JOIN (SELECT ESNTL_ID AS ESNTL_ID, '-' AS AUTH, MBER_NM AS USER_NM, 'GNR' AS USER_SE FROM COMTNGNRLMBER WHERE MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ LEFT OUTER JOIN (SELECT ESNTL_ID AS ESNTL_ID, '-' AS AUTH, MBER_NM_ENC AS USER_NM, 'GNR' AS USER_SE, MBER_NM_HASH AS USER_NM_HASH FROM COMTNGNRLMBER WHERE MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, AUTH_CODE AS AUTH, USER_NM AS USER_NM, 'USR' AS USER_SE FROM COMTNEMPLYRINFO WHERE ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, AUTH_CODE AS AUTH, USER_NM AS USER_NM, 'USR' AS USER_SE, NULL AS USER_NM_HASHFROM COMTNEMPLYRINFO WHERE ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, INDUTY_CODE AS AUTH, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE FROM COMTNENTRPRSMBER WHERE ENTRPRS_MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, INDUTY_CODE AS AUTH, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE, NULL AS USER_NM_HASHFROM COMTNENTRPRSMBER WHERE ENTRPRS_MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, GROUP_STTUS_CODE AS AUTH, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE FROM BIZ_GROUP WHERE GROUP_STTUS_CODE <> 'C' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, GROUP_STTUS_CODE AS AUTH, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE, NULL AS USER_NM_HASHFROM BIZ_GROUP WHERE GROUP_STTUS_CODE <> 'C' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
) X
ON A.ESNTL_ID = X.ESNTL_ID
LEFT OUTER JOIN COMTNFILEDETAIL Z ON Z.FILE_SN = 0 AND A.ATCH_FILE_ID = Z.ATCH_FILE_ID
@@ -1081,7 +1081,7 @@
@@ -1096,15 +1096,15 @@
-
+
/* BizProvolDAO.selectMatchServiceinfoList */
@@ -1135,20 +1135,21 @@
,A.ADULT
,A.RECRUIT_NUM
,( SELECT COUNT(VOLUNTEER_ID) FROM BIZ_VOLUNTEER_APP WHERE VOLUNTEER_ID = A.VOLUNTEER_ID ) APPCNT
- FROM BIZ_VOLUNTEER A
+ ,X.USER_SE
+ FROM BIZ_VOLUNTEER A
LEFT OUTER JOIN (SELECT CODE_ID, CODE, CODE_NM FROM COMTCCMMNDETAILCODE WHERE USE_AT = 'Y' ) C
ON C.CODE_ID = CASE WHEN A.WORK_AREA = 'A001' THEN 'BIZ037' ELSE 'BIZ040' END AND A.WORK_MAJOR_AREA = C.CODE
LEFT OUTER JOIN (SELECT CODE_ID, CODE, CODE_NM FROM COMTCCMMNDETAILCODE WHERE USE_AT = 'Y' ) D
ON D.CODE_ID = CASE WHEN A.WORK_AREA = 'A001' THEN 'BIZ038' ELSE 'BIZ041' END AND A.WORK_MINOR_AREA = D.CODE
LEFT OUTER JOIN (SELECT X.ORGNZT_ID, X.ORGNZT_NM, Y.TEAM_ID, Y.TEAM_NM FROM COMTNORGNZTINFO X INNER JOIN BIZ_TEAM Y ON X.ORGNZT_ID = Y.ORGNZT_ID ) B
ON A.SIDO_AREA = B.ORGNZT_ID AND A.GUGUN_AREA = B.TEAM_ID
- LEFT OUTER JOIN (SELECT ESNTL_ID AS ESNTL_ID, '-' AS AUTH, MBER_NM AS USER_NM, 'GNR' AS USER_SE FROM COMTNGNRLMBER WHERE MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ LEFT OUTER JOIN (SELECT ESNTL_ID AS ESNTL_ID, '-' AS AUTH, MBER_NM_ENC AS USER_NM, 'GNR' AS USER_SE, MBER_NM_HASH AS USER_NM_HASH FROM COMTNGNRLMBER WHERE MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, AUTH_CODE AS AUTH, USER_NM AS USER_NM, 'USR' AS USER_SE FROM COMTNEMPLYRINFO WHERE ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, AUTH_CODE AS AUTH, USER_NM AS USER_NM, 'USR' AS USER_SE, NULL AS USER_NM_HASHFROM COMTNEMPLYRINFO WHERE ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, INDUTY_CODE AS AUTH, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE FROM COMTNENTRPRSMBER WHERE ENTRPRS_MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, INDUTY_CODE AS AUTH, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE, NULL AS USER_NM_HASHFROM COMTNENTRPRSMBER WHERE ENTRPRS_MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, GROUP_STTUS_CODE AS AUTH, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE FROM BIZ_GROUP WHERE GROUP_STTUS_CODE <> 'C' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, GROUP_STTUS_CODE AS AUTH, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE, NULL AS USER_NM_HASHFROM BIZ_GROUP WHERE GROUP_STTUS_CODE <> 'C' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
) X
ON A.ESNTL_ID = X.ESNTL_ID
, (SELECT @ROWNUM := 0) AS RN
@@ -1270,20 +1271,21 @@
,A.ADULT
,A.RECRUIT_NUM
,( SELECT COUNT(VOLUNTEER_ID) FROM BIZ_VOLUNTEER_APP WHERE VOLUNTEER_ID = A.VOLUNTEER_ID ) APPCNT
- FROM BIZ_VOLUNTEER A
+ ,X.USER_SE
+ FROM BIZ_VOLUNTEER A
LEFT OUTER JOIN (SELECT CODE_ID, CODE, CODE_NM FROM COMTCCMMNDETAILCODE WHERE USE_AT = 'Y' ) C
ON C.CODE_ID = CASE WHEN A.WORK_AREA = 'A001' THEN 'BIZ037' ELSE 'BIZ040' END AND A.WORK_MAJOR_AREA = C.CODE
LEFT OUTER JOIN (SELECT CODE_ID, CODE, CODE_NM FROM COMTCCMMNDETAILCODE WHERE USE_AT = 'Y' ) D
ON D.CODE_ID = CASE WHEN A.WORK_AREA = 'A001' THEN 'BIZ038' ELSE 'BIZ041' END AND A.WORK_MINOR_AREA = D.CODE
LEFT OUTER JOIN (SELECT X.ORGNZT_ID, X.ORGNZT_NM, Y.TEAM_ID, Y.TEAM_NM FROM COMTNORGNZTINFO X INNER JOIN BIZ_TEAM Y ON X.ORGNZT_ID = Y.ORGNZT_ID ) B
ON A.SIDO_AREA = B.ORGNZT_ID AND A.GUGUN_AREA = B.TEAM_ID
- LEFT OUTER JOIN (SELECT ESNTL_ID AS ESNTL_ID, '-' AS AUTH, MBER_NM AS USER_NM, 'GNR' AS USER_SE FROM COMTNGNRLMBER WHERE MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ LEFT OUTER JOIN (SELECT ESNTL_ID AS ESNTL_ID, '-' AS AUTH, MBER_NM_ENC AS USER_NM, 'GNR' AS USER_SE, MBER_NM_HASH AS USER_NM_HASH FROM COMTNGNRLMBER WHERE MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, AUTH_CODE AS AUTH, USER_NM AS USER_NM, 'USR' AS USER_SE FROM COMTNEMPLYRINFO WHERE ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, AUTH_CODE AS AUTH, USER_NM AS USER_NM, 'USR' AS USER_SE, NULL AS USER_NM_HASHFROM COMTNEMPLYRINFO WHERE ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, INDUTY_CODE AS AUTH, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE FROM COMTNENTRPRSMBER WHERE ENTRPRS_MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, INDUTY_CODE AS AUTH, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE, NULL AS USER_NM_HASHFROM COMTNENTRPRSMBER WHERE ENTRPRS_MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, GROUP_STTUS_CODE AS AUTH, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE FROM BIZ_GROUP WHERE GROUP_STTUS_CODE <> 'C' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, GROUP_STTUS_CODE AS AUTH, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE, NULL AS USER_NM_HASHFROM BIZ_GROUP WHERE GROUP_STTUS_CODE <> 'C' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
) X
ON A.ESNTL_ID = X.ESNTL_ID
, (SELECT @ROWNUM := 0) AS RN
@@ -1555,13 +1557,13 @@
ON D.CODE_ID = CASE WHEN A.WORK_AREA = 'A001' THEN 'BIZ038' ELSE 'BIZ041' END AND A.WORK_MINOR_AREA = D.CODE
LEFT OUTER JOIN (SELECT X.ORGNZT_ID, X.ORGNZT_NM, Y.TEAM_ID, Y.TEAM_NM FROM COMTNORGNZTINFO X INNER JOIN BIZ_TEAM Y ON X.ORGNZT_ID = Y.ORGNZT_ID ) B
ON A.SIDO_AREA = B.ORGNZT_ID AND A.GUGUN_AREA = B.TEAM_ID
- LEFT OUTER JOIN (SELECT ESNTL_ID AS ESNTL_ID, '-' AS AUTH, MBER_NM AS USER_NM, 'GNR' AS USER_SE FROM COMTNGNRLMBER WHERE MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ LEFT OUTER JOIN (SELECT ESNTL_ID AS ESNTL_ID, '-' AS AUTH, MBER_NM_ENC AS USER_NM, 'GNR' AS USER_SE, MBER_NM_HASH AS USER_NM_HASH FROM COMTNGNRLMBER WHERE MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, AUTH_CODE AS AUTH, USER_NM AS USER_NM, 'USR' AS USER_SE FROM COMTNEMPLYRINFO WHERE ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, AUTH_CODE AS AUTH, USER_NM AS USER_NM, 'USR' AS USER_SE, NULL AS USER_NM_HASHFROM COMTNEMPLYRINFO WHERE ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, INDUTY_CODE AS AUTH, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE FROM COMTNENTRPRSMBER WHERE ENTRPRS_MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, INDUTY_CODE AS AUTH, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE, NULL AS USER_NM_HASHFROM COMTNENTRPRSMBER WHERE ENTRPRS_MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, GROUP_STTUS_CODE AS AUTH, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE FROM BIZ_GROUP WHERE GROUP_STTUS_CODE <> 'C' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, GROUP_STTUS_CODE AS AUTH, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE, NULL AS USER_NM_HASHFROM BIZ_GROUP WHERE GROUP_STTUS_CODE <> 'C' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
) X
ON A.ESNTL_ID = X.ESNTL_ID
LEFT OUTER JOIN COMTNFILEDETAIL Z ON Z.FILE_SN = 0 AND A.ATCH_FILE_ID = Z.ATCH_FILE_ID
@@ -1658,7 +1660,7 @@
@@ -1673,7 +1675,7 @@
@@ -1695,13 +1697,13 @@
ON D.CODE_ID = CASE WHEN A.WORK_AREA = 'A001' THEN 'BIZ038' ELSE 'BIZ041' END AND A.WORK_MINOR_AREA = D.CODE
LEFT OUTER JOIN (SELECT X.ORGNZT_ID, X.ORGNZT_NM, Y.TEAM_ID, Y.TEAM_NM FROM COMTNORGNZTINFO X INNER JOIN BIZ_TEAM Y ON X.ORGNZT_ID = Y.ORGNZT_ID ) B
ON A.SIDO_AREA = B.ORGNZT_ID AND A.GUGUN_AREA = B.TEAM_ID
- LEFT OUTER JOIN (SELECT ESNTL_ID AS ESNTL_ID, '-' AS AUTH, MBER_NM AS USER_NM, 'GNR' AS USER_SE FROM COMTNGNRLMBER WHERE MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ LEFT OUTER JOIN (SELECT ESNTL_ID AS ESNTL_ID, '-' AS AUTH, MBER_NM_ENC AS USER_NM, 'GNR' AS USER_SE, MBER_NM_HASH AS USER_NM_HASH FROM COMTNGNRLMBER WHERE MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, AUTH_CODE AS AUTH, USER_NM AS USER_NM, 'USR' AS USER_SE FROM COMTNEMPLYRINFO WHERE ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, AUTH_CODE AS AUTH, USER_NM AS USER_NM, 'USR' AS USER_SE, NULL AS USER_NM_HASHFROM COMTNEMPLYRINFO WHERE ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, INDUTY_CODE AS AUTH, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE FROM COMTNENTRPRSMBER WHERE ENTRPRS_MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, INDUTY_CODE AS AUTH, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE, NULL AS USER_NM_HASHFROM COMTNENTRPRSMBER WHERE ENTRPRS_MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, GROUP_STTUS_CODE AS AUTH, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE FROM BIZ_GROUP WHERE GROUP_STTUS_CODE <> 'C' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, GROUP_STTUS_CODE AS AUTH, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE, NULL AS USER_NM_HASHFROM BIZ_GROUP WHERE GROUP_STTUS_CODE <> 'C' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
) X
ON A.ESNTL_ID = X.ESNTL_ID
LEFT OUTER JOIN COMTNFILEDETAIL Z ON Z.FILE_SN = 0 AND A.ATCH_FILE_ID = Z.ATCH_FILE_ID
@@ -1837,7 +1839,7 @@
@@ -1852,7 +1854,7 @@
@@ -1938,13 +1940,13 @@
ON D.CODE_ID = CASE WHEN A.WORK_AREA = 'A001' THEN 'BIZ038' ELSE 'BIZ041' END AND A.WORK_MINOR_AREA = D.CODE
LEFT OUTER JOIN (SELECT X.ORGNZT_ID, X.ORGNZT_NM, Y.TEAM_ID, Y.TEAM_NM FROM COMTNORGNZTINFO X INNER JOIN BIZ_TEAM Y ON X.ORGNZT_ID = Y.ORGNZT_ID ) B
ON A.SIDO_AREA = B.ORGNZT_ID AND A.GUGUN_AREA = B.TEAM_ID
- LEFT OUTER JOIN (SELECT ESNTL_ID AS ESNTL_ID, '-' AS AUTH, MBER_NM AS USER_NM, 'GNR' AS USER_SE FROM COMTNGNRLMBER WHERE MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ LEFT OUTER JOIN (SELECT ESNTL_ID AS ESNTL_ID, '-' AS AUTH, MBER_NM_ENC AS USER_NM, 'GNR' AS USER_SE, MBER_NM_HASH AS USER_NM_HASH FROM COMTNGNRLMBER WHERE MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, AUTH_CODE AS AUTH, USER_NM AS USER_NM, 'USR' AS USER_SE FROM COMTNEMPLYRINFO WHERE ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, AUTH_CODE AS AUTH, USER_NM AS USER_NM, 'USR' AS USER_SE, NULL AS USER_NM_HASHFROM COMTNEMPLYRINFO WHERE ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, INDUTY_CODE AS AUTH, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE FROM COMTNENTRPRSMBER WHERE ENTRPRS_MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, INDUTY_CODE AS AUTH, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE, NULL AS USER_NM_HASHFROM COMTNENTRPRSMBER WHERE ENTRPRS_MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, GROUP_STTUS_CODE AS AUTH, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE FROM BIZ_GROUP WHERE GROUP_STTUS_CODE <> 'C' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, GROUP_STTUS_CODE AS AUTH, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE, NULL AS USER_NM_HASHFROM BIZ_GROUP WHERE GROUP_STTUS_CODE <> 'C' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
) X
ON A.ESNTL_ID = X.ESNTL_ID
LEFT OUTER JOIN COMTNFILEDETAIL Z ON Z.FILE_SN = 0 AND A.ATCH_FILE_ID = Z.ATCH_FILE_ID
@@ -2039,7 +2041,7 @@
@@ -2223,13 +2225,13 @@
ON D.CODE_ID = CASE WHEN A.WORK_AREA = 'A001' THEN 'BIZ038' ELSE 'BIZ041' END AND A.WORK_MINOR_AREA = D.CODE
LEFT OUTER JOIN (SELECT X.ORGNZT_ID, X.ORGNZT_NM, Y.TEAM_ID, Y.TEAM_NM FROM COMTNORGNZTINFO X INNER JOIN BIZ_TEAM Y ON X.ORGNZT_ID = Y.ORGNZT_ID ) B
ON A.SIDO_AREA = B.ORGNZT_ID AND A.GUGUN_AREA = B.TEAM_ID
- LEFT OUTER JOIN (SELECT ESNTL_ID AS ESNTL_ID, '-' AS AUTH, MBER_NM AS USER_NM, 'GNR' AS USER_SE FROM COMTNGNRLMBER WHERE MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ LEFT OUTER JOIN (SELECT ESNTL_ID AS ESNTL_ID, '-' AS AUTH, MBER_NM_ENC AS USER_NM, 'GNR' AS USER_SE, MBER_NM_HASH AS USER_NM_HASH FROM COMTNGNRLMBER WHERE MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, AUTH_CODE AS AUTH, USER_NM AS USER_NM, 'USR' AS USER_SE FROM COMTNEMPLYRINFO WHERE ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, AUTH_CODE AS AUTH, USER_NM AS USER_NM, 'USR' AS USER_SE, NULL AS USER_NM_HASHFROM COMTNEMPLYRINFO WHERE ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, INDUTY_CODE AS AUTH, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE FROM COMTNENTRPRSMBER WHERE ENTRPRS_MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, INDUTY_CODE AS AUTH, CMPNY_NM AS CMPNY_NM, 'ENT' AS USER_SE, NULL AS USER_NM_HASHFROM COMTNENTRPRSMBER WHERE ENTRPRS_MBER_STTUS = 'P' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
UNION
- SELECT ESNTL_ID AS ESNTL_ID, GROUP_STTUS_CODE AS AUTH, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE FROM BIZ_GROUP WHERE GROUP_STTUS_CODE <> 'C' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
+ SELECT ESNTL_ID AS ESNTL_ID, GROUP_STTUS_CODE AS AUTH, GROUP_NM AS GROUP_NM, 'GRO' AS USER_SE, NULL AS USER_NM_HASHFROM BIZ_GROUP WHERE GROUP_STTUS_CODE <> 'C' AND ESNTL_ID IN (SELECT ESNTL_ID FROM BIZ_VOLUNTEER)
) X
ON A.ESNTL_ID = X.ESNTL_ID
LEFT OUTER JOIN COMTNFILEDETAIL Z ON Z.FILE_SN = 0 AND A.ATCH_FILE_ID = Z.ATCH_FILE_ID
@@ -2323,7 +2325,7 @@
diff --git a/src/main/resources/egovframework/sqlmap/site/mnt/biz/sample/BizSample_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/site/mnt/biz/sample/BizSample_SQL_Mysql.xml
index 140e1c4..ad6bd3a 100644
--- a/src/main/resources/egovframework/sqlmap/site/mnt/biz/sample/BizSample_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/site/mnt/biz/sample/BizSample_SQL_Mysql.xml
@@ -23,6 +23,7 @@
+
@@ -40,6 +41,7 @@
, B.CODE_NM AS CTGRY_NM
, C.CODE_NM AS GUBUN_NM
, X.USER_NM AS FRST_REGISTER_NM
+ , X.USER_SE AS FRST_REGISTER_NM_SE
, Z.ATCH_FILE_ID
, Z.ORIGNL_FILE_NM
, Z.FILE_EXTSN
@@ -65,12 +67,12 @@
@@ -104,12 +106,12 @@
@@ -130,6 +132,7 @@
, B.CODE_NM AS CTGRY_NM
, C.CODE_NM AS GUBUN_NM
, X.USER_NM AS FRST_REGISTER_NM
+ , X.USER_SE AS FRST_REGISTER_NM_SE
, Z.ATCH_FILE_ID
, Z.ORIGNL_FILE_NM
, Z.FILE_EXTSN
diff --git a/src/main/resources/egovframework/sqlmap/site/mnt/biz/stat/BizStat_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/site/mnt/biz/stat/BizStat_SQL_Mysql.xml
index 7623c9e..c3762ec 100644
--- a/src/main/resources/egovframework/sqlmap/site/mnt/biz/stat/BizStat_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/site/mnt/biz/stat/BizStat_SQL_Mysql.xml
@@ -5018,6 +5018,7 @@ GROUP BY YYYY
bss.SUMMARY_SEQ_ID AS summarySeqId,
bss.AGGREGATOR_ID AS aggregatorId,
m.USER_NM AS aggregatorNm,
+ m.USER_SE AS aggregatorNmSe,
DATE_FORMAT(bss.AGGREGATION_DATE, '%Y-%m-%d %H:%i:%s') AS aggregationDate,
bss.START_DATE AS startDate,
bss.END_DATE AS endDate,
@@ -5458,6 +5459,7 @@ GROUP BY YYYY
SELECT
A.MBER_ID AS mberId,
C.USER_NM AS mberNm,
+ C.USER_SE AS mberNmSe,
D.VOLUNTEER_TITLE AS volunteerTitle,
CASE
ACT_TYPE WHEN 'MID' THEN A.VOLUNTEER_MID_SDATE
@@ -5484,6 +5486,7 @@ GROUP BY YYYY
ELSE A.APPROVAL_DATE
END approvalDate,
X.USER_NM AS esntlNm,
+ X.USER_SE AS esntlNmSe,
CASE
A.ACT_TYPE WHEN 'MID' THEN A.APPROVAL_MID_DATE
ELSE A.APPROVAL_GUGUN_DATE
diff --git a/src/main/resources/egovframework/sqlmap/site/mnt/biz/talent/BizTalent_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/site/mnt/biz/talent/BizTalent_SQL_Mysql.xml
index 966cb67..205972a 100644
--- a/src/main/resources/egovframework/sqlmap/site/mnt/biz/talent/BizTalent_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/site/mnt/biz/talent/BizTalent_SQL_Mysql.xml
@@ -28,7 +28,7 @@ SELECT Z.* FROM ( SELECT @ROWNUM := @ROWNUM + 1 AS RN, TB.* FROM (
SELECT b.ESNTL_ID as UNIQ_ID
, a.PHOTO_FILE_ID
, a.USER_ID
- , b.MBER_NM
+ , b.MBER_NM_ENC as MBER_NM
, a.CAREER
, a.SKILL
, d.CODE_NM as WORK_MAJOR_AREA1
@@ -50,7 +50,7 @@ SELECT Z.* FROM ( SELECT @ROWNUM := @ROWNUM + 1 AS RN, TB.* FROM (
a.USER_ID LIKE #searchKeyword#
- b.MBER_NM LIKE CONCAT('%', #searchKeyword#, '%')
+ b.MBER_NM_HASH = #searchKeywordHash#
b.ACTIVE_SIDO_AREA1 = #searchCondition1#
@@ -92,7 +92,7 @@ SELECT Z.* FROM ( SELECT @ROWNUM := @ROWNUM + 1 AS RN, TB.* FROM (
a.USER_ID LIKE #searchKeyword#
- b.MBER_NM LIKE CONCAT('%', #searchKeyword#, '%')
+ b.MBER_NM_HASH = #searchKeywordHash#
b.ACTIVE_SIDO_AREA1 = #searchCondition1#
@@ -124,7 +124,7 @@ SELECT Z.* FROM ( SELECT @ROWNUM := @ROWNUM + 1 AS RN, TB.* FROM (
a.ESNTL_ID uniqId,
'USR01' userTy,
a.MBER_ID mberId,
- a.MBER_NM mberNm,
+ a.MBER_NM_ENC mberNm,
a.PASSWORD password,
a.IHIDNUM ihidnum,
a.SEXDSTN_CODE sexdstnCode,
@@ -182,7 +182,7 @@ SELECT Z.* FROM ( SELECT @ROWNUM := @ROWNUM + 1 AS RN, TB.* FROM (
a.ESNTL_ID uniqId
,'USR01' userTy
,a.MBER_ID mberId
- ,a.MBER_NM mberNm
+ ,a.MBER_NM_ENC mberNm
,a.PASSWORD password
,a.IHIDNUM ihidnum
,a.SEXDSTN_CODE sexdstnCode
@@ -239,7 +239,7 @@ SELECT Z.* FROM ( SELECT @ROWNUM := @ROWNUM + 1 AS RN, TB.* FROM (
SELECT b.ESNTL_ID as UNIQ_ID
, a.PHOTO_FILE_ID
, a.USER_ID
- , b.MBER_NM
+ , b.MBER_NM_ENC as MBER_NM
, a.CAREER
, a.SKILL
, d.CODE_NM as WORK_MAJOR_AREA1
@@ -260,7 +260,7 @@ SELECT Z.* FROM ( SELECT @ROWNUM := @ROWNUM + 1 AS RN, TB.* FROM (
a.USER_ID LIKE #searchKeyword#
- b.MBER_NM LIKE CONCAT('%', #searchKeyword#, '%')
+ b.MBER_NM_HASH = #searchKeywordHash#
b.ACTIVE_SIDO_AREA1 = #searchCondition1#
@@ -291,7 +291,7 @@ SELECT Z.* FROM ( SELECT @ROWNUM := @ROWNUM + 1 AS RN, TB.* FROM (
/* talentMberManageDAO.selectJoinTalentMberList */
= 19 THEN 'A'
WHEN FLOOR((CAST(DATE_FORMAT(SYSDATE(), '%Y%m%d') AS UNSIGNED) - CAST(CONCAT(BIRTH_YEAR, BIRTH_MONTH, BIRTH_DAY) AS UNSIGNED)) / 10000) < 19 THEN 'Y'
ELSE 'N'
END as ADULT_CHK
FROM BIZ_TALENT A
INNER JOIN COMTNGNRLMBER B ON A.USER_ID = B.MBER_ID
- WHERE B.PUBLIC_YN = 'Y'
-
+ WHERE B.PUBLIC_YN = 'Y'
+
UNION ALL
-
+
SELECT 'GRO' as USER_TYPE, B.ESNTL_ID as UNIQ_ID, A.GROUP_ID, A.PHOTO_FILE_ID, A.SKILL as SKILL, A.CAREER as CAREER, LEFT(A.INTRODUCITION, 1500) as INTRODUCITION, PUBLIC_YN
,B.ACTIVE_SIDO_AREA as ACTIVE_SIDO_AREA1, B.ACTIVE_GUGUN_AREA as ACTIVE_GUGUN_AREA1, WORK_AREA as WORK_AREA1, WORK_MAJOR_AREA as WORK_MAJOR_AREA1, WORK_MINOR_AREA as WORK_MINOR_AREA1
- ,B.GROUP_NM as MBER_NM, B.SBSCRB_DE
+ ,B.GROUP_NM as MBER_NM, NULL as MBER_NM_HASH, B.SBSCRB_DE
,CASE WHEN B.GROUP_STTUS_CODE = 'A' THEN 'P'
ELSE 'D'
END
@@ -337,10 +337,10 @@ SELECT Z.* FROM ( SELECT @ROWNUM := @ROWNUM + 1 AS RN, TB.* FROM (
USER_ID LIKE CONCAT('%', #searchKeyword#, '%')
- MBER_NM LIKE CONCAT('%', #searchKeyword#, '%')
+ (MBER_NM_HASH = #searchKeywordHash# OR MBER_NM LIKE CONCAT('%', #searchKeyword#, '%'))
- (USER_ID LIKE CONCAT('%', #searchKeyword#, '%') OR MBER_NM LIKE CONCAT('%', #searchKeyword#, '%'))
+ (USER_ID LIKE CONCAT('%', #searchKeyword#, '%') OR MBER_NM_HASH = #searchKeywordHash# OR MBER_NM LIKE CONCAT('%', #searchKeyword#, '%'))
@@ -392,21 +392,21 @@ SELECT Z.* FROM ( SELECT @ROWNUM := @ROWNUM + 1 AS RN, TB.* FROM (
FROM (
SELECT 'GNR' as USER_TYPE, B.ESNTL_ID as UNIQ_ID, A.USER_ID, A.PHOTO_FILE_ID, A.SKILL as SKILL, A.CAREER as CAREER, LEFT(A.INTRODUCITION, 1500) as INTRODUCITION, PUBLIC_YN
,B.ACTIVE_SIDO_AREA1, B.ACTIVE_GUGUN_AREA1, WORK_AREA1, WORK_MAJOR_AREA1, WORK_MINOR_AREA1
- ,B.MBER_NM as MBER_NM, B.SBSCRB_DE, B.MBER_STTUS
- ,CASE
+ ,B.MBER_NM_ENC as MBER_NM, B.MBER_NM_HASH as MBER_NM_HASH, B.SBSCRB_DE, B.MBER_STTUS
+ ,CASE
WHEN FLOOR((CAST(DATE_FORMAT(SYSDATE(), '%Y%m%d') AS UNSIGNED) - CAST(CONCAT(BIRTH_YEAR, BIRTH_MONTH, BIRTH_DAY) AS UNSIGNED)) / 10000) >= 19 THEN 'A'
WHEN FLOOR((CAST(DATE_FORMAT(SYSDATE(), '%Y%m%d') AS UNSIGNED) - CAST(CONCAT(BIRTH_YEAR, BIRTH_MONTH, BIRTH_DAY) AS UNSIGNED)) / 10000) < 19 THEN 'Y'
ELSE 'N'
END as ADULT_CHK
FROM BIZ_TALENT A
INNER JOIN COMTNGNRLMBER B ON A.USER_ID = B.MBER_ID
- WHERE B.PUBLIC_YN = 'Y'
-
+ WHERE B.PUBLIC_YN = 'Y'
+
UNION
-
+
SELECT 'GRO' as USER_TYPE, B.ESNTL_ID as UNIQ_ID, A.GROUP_ID, A.PHOTO_FILE_ID, A.SKILL as SKILL, A.CAREER as CAREER, LEFT(A.INTRODUCITION, 1500) as INTRODUCITION, PUBLIC_YN
,B.ACTIVE_SIDO_AREA as ACTIVE_SIDO_AREA1, B.ACTIVE_GUGUN_AREA as ACTIVE_GUGUN_AREA1, WORK_AREA as WORK_AREA1, WORK_MAJOR_AREA as WORK_MAJOR_AREA1, WORK_MINOR_AREA as WORK_MINOR_AREA1
- ,B.GROUP_NM as MBER_NM, B.SBSCRB_DE
+ ,B.GROUP_NM as MBER_NM, NULL as MBER_NM_HASH, B.SBSCRB_DE
,CASE WHEN B.GROUP_STTUS_CODE = 'A' THEN 'P'
ELSE 'D'
END
@@ -427,10 +427,10 @@ SELECT Z.* FROM ( SELECT @ROWNUM := @ROWNUM + 1 AS RN, TB.* FROM (
USER_ID LIKE CONCAT('%', #searchKeyword#, '%')
- MBER_NM LIKE CONCAT('%', #searchKeyword#, '%')
+ (MBER_NM_HASH = #searchKeywordHash# OR MBER_NM LIKE CONCAT('%', #searchKeyword#, '%'))
- (USER_ID LIKE CONCAT('%', #searchKeyword#, '%') OR MBER_NM LIKE CONCAT('%', #searchKeyword#, '%') )
+ (USER_ID LIKE CONCAT('%', #searchKeyword#, '%') OR MBER_NM_HASH = #searchKeywordHash# OR MBER_NM LIKE CONCAT('%', #searchKeyword#, '%'))
diff --git a/src/main/resources/egovframework/sqlmap/site/mnt/biz/test/BizTest_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/site/mnt/biz/test/BizTest_SQL_Mysql.xml
index 0722476..7342aab 100644
--- a/src/main/resources/egovframework/sqlmap/site/mnt/biz/test/BizTest_SQL_Mysql.xml
+++ b/src/main/resources/egovframework/sqlmap/site/mnt/biz/test/BizTest_SQL_Mysql.xml
@@ -15,8 +15,9 @@
+
-
+
@@ -80,12 +82,12 @@
@@ -102,6 +104,7 @@
, A.LAST_UPDUSR_ID
, A.LAST_UPDT_PNTTM
, X.USER_NM AS FRST_REGISTER_NM
+ , X.USER_SE AS FRST_REGISTER_NM_SE
FROM BIZ_TEST A
LEFT OUTER JOIN COMVNUSERMASTER X ON A.FRST_REGISTER_ID = X.ESNTL_ID
WHERE A.TEST_ID = #testId#
diff --git a/src/script/mysql/backup/privacy.mber_nm_dead_views_backup_20260810.sql b/src/script/mysql/backup/privacy.mber_nm_dead_views_backup_20260810.sql
new file mode 100644
index 0000000..47f9ec7
--- /dev/null
+++ b/src/script/mysql/backup/privacy.mber_nm_dead_views_backup_20260810.sql
@@ -0,0 +1,30 @@
+-- =====================================================================
+-- 회원 이름 암호화 — 죽은 뷰 8개 정의 백업 (DROP 전 캡처, 2026-08-10)
+-- 복원 방법: 이 파일을 그대로 실행하면 뷰가 원래 정의로 복원된다.
+-- 주의: 이 정의들은 여전히 평문 COMTNGNRLMBER.MBER_NM 을 참조한다 — 복원 시점에
+-- 평문 컬럼이 이미 삭제된 상태라면 복원도 실패한다.
+-- =====================================================================
+
+-- ===== comtnbbsuserinfo =====
+CREATE ALGORITHM=UNDEFINED DEFINER=`csv`@`127.0.0.1` SQL SECURITY INVOKER VIEW `comtnbbsuserinfo` AS select `b`.`ESNTL_ID` AS `ESNTL_ID`,`b`.`USER_NM` AS `USER_NM`,`b`.`USER_SE` AS `USER_SE` from (`comtnbbs` `a` join (select `comtngnrlmber`.`ESNTL_ID` AS `ESNTL_ID`,`comtngnrlmber`.`MBER_NM` AS `USER_NM`,'GNR' AS `USER_SE` from `comtngnrlmber` where (`comtngnrlmber`.`MBER_STTUS` = 'P')) `b` on((`a`.`FRST_REGISTER_ID` = `b`.`ESNTL_ID`))) union select `b`.`ESNTL_ID` AS `ESNTL_ID`,`b`.`USER_NM` AS `USER_NM`,`b`.`USER_SE` AS `USER_SE` from (`comtnbbs` `a` join (select `comtnemplyrinfo`.`ESNTL_ID` AS `ESNTL_ID`,`comtnemplyrinfo`.`USER_NM` AS `USER_NM`,'USR' AS `USER_SE` from `comtnemplyrinfo`) `b` on((`a`.`FRST_REGISTER_ID` = `b`.`ESNTL_ID`))) union select `b`.`ESNTL_ID` AS `ESNTL_ID`,`b`.`CMPNY_NM` AS `CMPNY_NM`,`b`.`USER_SE` AS `USER_SE` from (`comtnbbs` `a` join (select `comtnentrprsmber`.`ESNTL_ID` AS `ESNTL_ID`,`comtnentrprsmber`.`CMPNY_NM` AS `CMPNY_NM`,'ENT' AS `USER_SE` from `comtnentrprsmber` where (`comtnentrprsmber`.`ENTRPRS_MBER_STTUS` = 'P')) `b` on((`a`.`FRST_REGISTER_ID` = `b`.`ESNTL_ID`))) union select `b`.`ESNTL_ID` AS `ESNTL_ID`,`b`.`GROUP_NM` AS `GROUP_NM`,`b`.`USER_SE` AS `USER_SE` from (`comtnbbs` `a` join (select `biz_group`.`ESNTL_ID` AS `ESNTL_ID`,`biz_group`.`GROUP_NM` AS `GROUP_NM`,'GRO' AS `USER_SE` from `biz_group` where (`biz_group`.`GROUP_STTUS_CODE` <> 'C')) `b` on((`a`.`FRST_REGISTER_ID` = `b`.`ESNTL_ID`)));
+
+-- ===== comvnusermaster2 =====
+CREATE ALGORITHM=UNDEFINED DEFINER=`csv`@`127.0.0.1` SQL SECURITY INVOKER VIEW `comvnusermaster2` AS select `comtngnrlmber`.`ESNTL_ID` AS `ESNTL_ID`,`comtngnrlmber`.`MBER_ID` AS `MBER_ID`,`comtngnrlmber`.`PASSWORD` AS `PASSWORD`,`comtngnrlmber`.`MBER_NM` AS `MBER_NM`,`comtngnrlmber`.`ZIP` AS `ZIP`,`comtngnrlmber`.`ADRES` AS `ADRES`,`comtngnrlmber`.`MBER_EMAIL_ADRES` AS `MBER_EMAIL_ADRES`,' ' AS `Name_exp_8`,'GNR' AS `USER_SE`,' ' AS `ORGNZT_ID`,`comtngnrlmber`.`ACTIVE_SIDO_AREA1` AS `ACTIVE_SIDO_AREA`,`comtngnrlmber`.`ACTIVE_GUGUN_AREA1` AS `ACTIVE_GUGUN_AREA`,'-' AS `AUTH`,'-' AS `WORK_AREA`,`comtngnrlmber`.`MBTLNUM` AS `MBTLNUM`,`comtngnrlmber`.`SBSCRB_DE` AS `SBSCRB_DE` from `comtngnrlmber` union all select `comtnemplyrinfo`.`ESNTL_ID` AS `ESNTL_ID`,`comtnemplyrinfo`.`EMPLYR_ID` AS `EMPLYR_ID`,`comtnemplyrinfo`.`PASSWORD` AS `PASSWORD`,`comtnemplyrinfo`.`USER_NM` AS `USER_NM`,`comtnemplyrinfo`.`ZIP` AS `ZIP`,`comtnemplyrinfo`.`HOUSE_ADRES` AS `HOUSE_ADRES`,`comtnemplyrinfo`.`EMAIL_ADRES` AS `EMAIL_ADRES`,`comtnemplyrinfo`.`GROUP_ID` AS `GROUP_ID`,'USR' AS `USER_SE`,`comtnemplyrinfo`.`ORGNZT_ID` AS `ORGNZT_ID`,`comtnemplyrinfo`.`ACTIVE_SIDO_AREA` AS `ACTIVE_SIDO_AREA`,`comtnemplyrinfo`.`ACTIVE_GUGUN_AREA` AS `ACTIVE_GUGUN_AREA`,`comtnemplyrinfo`.`AUTH_CODE` AS `AUTH`,`comtnemplyrinfo`.`WORK_AREA` AS `WORK_AREA`,`comtnemplyrinfo`.`MBTLNUM` AS `MBTLNUM`,`comtnemplyrinfo`.`SBSCRB_DE` AS `SBSCRB_DE` from `comtnemplyrinfo` union all select `comtnentrprsmber`.`ESNTL_ID` AS `ESNTL_ID`,`comtnentrprsmber`.`ENTRPRS_MBER_ID` AS `ENTRPRS_MBER_ID`,`comtnentrprsmber`.`ENTRPRS_MBER_PASSWORD` AS `ENTRPRS_MBER_PASSWORD`,`comtnentrprsmber`.`CMPNY_NM` AS `CMPNY_NM`,`comtnentrprsmber`.`ZIP` AS `ZIP`,`comtnentrprsmber`.`ADRES` AS `ADRES`,`comtnentrprsmber`.`APPLCNT_EMAIL_ADRES` AS `APPLCNT_EMAIL_ADRES`,' ' AS `Name_exp_40`,'ENT' AS `USER_SE`,' ' AS `ORGNZT_ID`,`comtnentrprsmber`.`ACTIVE_SIDO_AREA` AS `ACTIVE_SIDO_AREA`,`comtnentrprsmber`.`ACTIVE_GUGUN_AREA` AS `ACTIVE_GUGUN_AREA`,`comtnentrprsmber`.`INDUTY_CODE` AS `AUTH`,`comtnentrprsmber`.`WORK_AREA` AS `WORK_AREA`,`comtnentrprsmber`.`RESPON_TELNO` AS `MBTLNUM`,`comtnentrprsmber`.`SBSCRB_DE` AS `SBSCRB_DE` from `comtnentrprsmber` union all select `biz_group`.`ESNTL_ID` AS `ESNTL_ID`,`biz_group`.`GROUP_ID` AS `GROUP_ID`,`biz_group`.`GROUP_PASSWORD` AS `GROUP_PASSWORD`,`biz_group`.`GROUP_NM` AS `GROUP_NM`,' ' AS `Name_exp_53`,' ' AS `Name_exp_54`,`biz_group`.`REPRESENT_EMAIL` AS `REPRESENT_EMAIL`,' ' AS `Name_exp_56`,'GRO' AS `USER_SE`,' ' AS `ORGNZT_ID`,`biz_group`.`ACTIVE_SIDO_AREA` AS `ACTIVE_SIDO_AREA`,`biz_group`.`ACTIVE_GUGUN_AREA` AS `ACTIVE_GUGUN_AREA`,`biz_group`.`GROUP_STTUS_CODE` AS `AUTH`,`biz_group`.`WORK_AREA` AS `WORK_AREA`,`biz_group`.`REPRESENT_TELNO` AS `MBTLNUM`,`biz_group`.`SBSCRB_DE` AS `SBSCRB_DE` from `biz_group` where (`biz_group`.`GROUP_STTUS_CODE` <> 'C') order by `ESNTL_ID`;
+
+-- ===== comvnusermaster_1 =====
+CREATE ALGORITHM=UNDEFINED DEFINER=`csv`@`127.0.0.1` SQL SECURITY INVOKER VIEW `comvnusermaster_1` AS select `comtngnrlmber`.`ESNTL_ID` AS `ESNTL_ID`,`comtngnrlmber`.`MBER_ID` AS `USER_ID`,`comtngnrlmber`.`PASSWORD` AS `PASSWORD`,`comtngnrlmber`.`MBER_NM` AS `USER_NM`,`comtngnrlmber`.`ZIP` AS `USER_ZIP`,`comtngnrlmber`.`ADRES` AS `USER_ADRES`,`comtngnrlmber`.`MBER_EMAIL_ADRES` AS `USER_EMAIL`,' ' AS `GROUP_ID`,'GNR' AS `USER_SE`,' ' AS `ORGNZT_ID`,`comtngnrlmber`.`ACTIVE_SIDO_AREA1` AS `ACTIVE_SIDO_AREA`,`comtngnrlmber`.`ACTIVE_GUGUN_AREA1` AS `ACTIVE_GUGUN_AREA`,'-' AS `AUTH`,`comtngnrlmber`.`WORK_AREA1` AS `WORK_AREA`,`comtngnrlmber`.`MBTLNUM` AS `MBTLNUM`,`comtngnrlmber`.`WORK_MAJOR_AREA1` AS `WORK_MAJOR_AREA`,`comtngnrlmber`.`WORK_MINOR_AREA1` AS `WORK_MINOR_AREA`,`comtngnrlmber`.`PUBLIC_YN` AS `PUBLIC_YN` from `comtngnrlmber` where (`comtngnrlmber`.`MBER_STTUS` = 'P') union all select `comtnemplyrinfo`.`ESNTL_ID` AS `ESNTL_ID`,`comtnemplyrinfo`.`EMPLYR_ID` AS `EMPLYR_ID`,`comtnemplyrinfo`.`PASSWORD` AS `PASSWORD`,`comtnemplyrinfo`.`USER_NM` AS `USER_NM`,`comtnemplyrinfo`.`ZIP` AS `ZIP`,`comtnemplyrinfo`.`HOUSE_ADRES` AS `HOUSE_ADRES`,`comtnemplyrinfo`.`EMAIL_ADRES` AS `EMAIL_ADRES`,`comtnemplyrinfo`.`GROUP_ID` AS `GROUP_ID`,'USR' AS `USER_SE`,`comtnemplyrinfo`.`ORGNZT_ID` AS `ORGNZT_ID`,`comtnemplyrinfo`.`ACTIVE_SIDO_AREA` AS `ACTIVE_SIDO_AREA`,`comtnemplyrinfo`.`ACTIVE_GUGUN_AREA` AS `ACTIVE_GUGUN_AREA`,`comtnemplyrinfo`.`AUTH_CODE` AS `AUTH`,`comtnemplyrinfo`.`WORK_AREA` AS `WORK_AREA`,`comtnemplyrinfo`.`MBTLNUM` AS `MBTLNUM`,'' AS `WORK_MAJOR_AREA`,'' AS `WORK_MINOR_AREA`,'' AS `PUBLIC_YN` from `comtnemplyrinfo` union all select `comtnentrprsmber`.`ESNTL_ID` AS `ESNTL_ID`,`comtnentrprsmber`.`ENTRPRS_MBER_ID` AS `ENTRPRS_MBER_ID`,`comtnentrprsmber`.`ENTRPRS_MBER_PASSWORD` AS `ENTRPRS_MBER_PASSWORD`,`comtnentrprsmber`.`CMPNY_NM` AS `CMPNY_NM`,`comtnentrprsmber`.`ZIP` AS `ZIP`,`comtnentrprsmber`.`ADRES` AS `ADRES`,`comtnentrprsmber`.`APPLCNT_EMAIL_ADRES` AS `APPLCNT_EMAIL_ADRES`,' ' AS `Name_exp_46`,'ENT' AS `USER_SE`,' ' AS `ORGNZT_ID`,`comtnentrprsmber`.`ACTIVE_SIDO_AREA` AS `ACTIVE_SIDO_AREA`,`comtnentrprsmber`.`ACTIVE_GUGUN_AREA` AS `ACTIVE_GUGUN_AREA`,`comtnentrprsmber`.`INDUTY_CODE` AS `AUTH`,`comtnentrprsmber`.`WORK_AREA` AS `WORK_AREA`,`comtnentrprsmber`.`RESPON_TELNO` AS `MBTLNUM`,`comtnentrprsmber`.`WORK_MAJOR_AREA` AS `WORK_MAJOR_AREA`,`comtnentrprsmber`.`WORK_MINOR_AREA` AS `WORK_MINOR_AREA`,'' AS `PUBLIC_YN` from `comtnentrprsmber` where (`comtnentrprsmber`.`ENTRPRS_MBER_STTUS` = 'P') union all select `biz_group`.`ESNTL_ID` AS `ESNTL_ID`,`biz_group`.`GROUP_ID` AS `GROUP_ID`,`biz_group`.`GROUP_PASSWORD` AS `GROUP_PASSWORD`,`biz_group`.`GROUP_NM` AS `GROUP_NM`,' ' AS `Name_exp_62`,' ' AS `Name_exp_63`,`biz_group`.`REPRESENT_EMAIL` AS `REPRESENT_EMAIL`,' ' AS `Name_exp_65`,'GRO' AS `USER_SE`,' ' AS `ORGNZT_ID`,`biz_group`.`ACTIVE_SIDO_AREA` AS `ACTIVE_SIDO_AREA`,`biz_group`.`ACTIVE_GUGUN_AREA` AS `ACTIVE_GUGUN_AREA`,`biz_group`.`GROUP_STTUS_CODE` AS `AUTH`,`biz_group`.`WORK_AREA` AS `WORK_AREA`,`biz_group`.`REPRESENT_TELNO` AS `MBTLNUM`,`biz_group`.`WORK_MAJOR_AREA` AS `WORK_MAJOR_AREA`,`biz_group`.`WORK_MINOR_AREA` AS `WORK_MINOR_AREA`,`biz_group`.`PUBLIC_YN` AS `PUBLIC_YN` from `biz_group` where (`biz_group`.`GROUP_STTUS_CODE` <> 'C');
+
+-- ===== excelappconfirmlist =====
+CREATE ALGORITHM=UNDEFINED DEFINER=`csv`@`127.0.0.1` SQL SECURITY INVOKER VIEW `excelappconfirmlist` AS select `comtngnrlmber`.`ESNTL_ID` AS `ESNTL_ID`,`comtngnrlmber`.`MBER_ID` AS `USER_ID`,`comtngnrlmber`.`MBER_NM` AS `USER_NM` from `comtngnrlmber` where (`comtngnrlmber`.`MBER_STTUS` = 'P') union all select `comtnemplyrinfo`.`ESNTL_ID` AS `ESNTL_ID`,`comtnemplyrinfo`.`EMPLYR_ID` AS `EMPLYR_ID`,`comtnemplyrinfo`.`USER_NM` AS `USER_NM` from `comtnemplyrinfo` union all select `comtnentrprsmber`.`ESNTL_ID` AS `ESNTL_ID`,`comtnentrprsmber`.`ENTRPRS_MBER_ID` AS `ENTRPRS_MBER_ID`,`comtnentrprsmber`.`CMPNY_NM` AS `CMPNY_NM` from `comtnentrprsmber` where (`comtnentrprsmber`.`ENTRPRS_MBER_STTUS` = 'P') union all select `biz_group`.`ESNTL_ID` AS `ESNTL_ID`,`biz_group`.`GROUP_ID` AS `GROUP_ID`,`biz_group`.`GROUP_NM` AS `GROUP_NM` from `biz_group` where (`biz_group`.`GROUP_STTUS_CODE` <> 'C');
+
+-- ===== excelappconfirmlist_auth =====
+CREATE ALGORITHM=UNDEFINED DEFINER=`csv`@`127.0.0.1` SQL SECURITY INVOKER VIEW `excelappconfirmlist_auth` AS select `comtngnrlmber`.`ESNTL_ID` AS `ESNTL_ID`,`comtngnrlmber`.`MBER_ID` AS `USER_ID`,`comtngnrlmber`.`MBER_NM` AS `USER_NM`,'-' AS `AUTH` from `comtngnrlmber` where (`comtngnrlmber`.`MBER_STTUS` = 'P') union all select `comtnemplyrinfo`.`ESNTL_ID` AS `ESNTL_ID`,`comtnemplyrinfo`.`EMPLYR_ID` AS `EMPLYR_ID`,`comtnemplyrinfo`.`USER_NM` AS `USER_NM`,`comtnemplyrinfo`.`AUTH_CODE` AS `AUTH` from `comtnemplyrinfo` union all select `comtnentrprsmber`.`ESNTL_ID` AS `ESNTL_ID`,`comtnentrprsmber`.`ENTRPRS_MBER_ID` AS `ENTRPRS_MBER_ID`,`comtnentrprsmber`.`CMPNY_NM` AS `CMPNY_NM`,`comtnentrprsmber`.`INDUTY_CODE` AS `AUTH` from `comtnentrprsmber` where (`comtnentrprsmber`.`ENTRPRS_MBER_STTUS` = 'P') union all select `biz_group`.`ESNTL_ID` AS `ESNTL_ID`,`biz_group`.`GROUP_ID` AS `GROUP_ID`,`biz_group`.`GROUP_NM` AS `GROUP_NM`,`biz_group`.`GROUP_STTUS_CODE` AS `AUTH` from `biz_group` where (`biz_group`.`GROUP_STTUS_CODE` <> 'C');
+
+-- ===== selectaddedoptionsinf =====
+CREATE ALGORITHM=UNDEFINED DEFINER=`csv`@`127.0.0.1` SQL SECURITY INVOKER VIEW `selectaddedoptionsinf` AS select `comtngnrlmber`.`ESNTL_ID` AS `ESNTL_ID`,`comtngnrlmber`.`MBER_NM` AS `USER_NM`,'GNR' AS `USER_SE` from `comtngnrlmber` where (`comtngnrlmber`.`MBER_STTUS` = 'P') union all select `comtnemplyrinfo`.`ESNTL_ID` AS `ESNTL_ID`,`comtnemplyrinfo`.`USER_NM` AS `USER_NM`,'USR' AS `USER_SE` from `comtnemplyrinfo` union all select `comtnentrprsmber`.`ESNTL_ID` AS `ESNTL_ID`,' ' AS `USER_NM`,'ENT' AS `USER_SE` from `comtnentrprsmber` where (`comtnentrprsmber`.`ENTRPRS_MBER_STTUS` = 'P') union all select `biz_group`.`ESNTL_ID` AS `ESNTL_ID`,' ' AS `USER_NM`,'GRO' AS `USER_SE` from `biz_group` where (`biz_group`.`GROUP_STTUS_CODE` <> 'C');
+
+-- ===== selectboardarticlelist =====
+CREATE ALGORITHM=UNDEFINED DEFINER=`csv`@`127.0.0.1` SQL SECURITY INVOKER VIEW `selectboardarticlelist` AS select `comtngnrlmber`.`ESNTL_ID` AS `ESNTL_ID`,`comtngnrlmber`.`MBER_NM` AS `USER_NM`,'GNR' AS `USER_SE`,`comtngnrlmber`.`ACTIVE_SIDO_AREA1` AS `ACTIVE_SIDO_AREA`,`comtngnrlmber`.`ACTIVE_GUGUN_AREA1` AS `ACTIVE_GUGUN_AREA`,`comtngnrlmber`.`WORK_AREA1` AS `WORK_AREA`,`comtngnrlmber`.`WORK_MAJOR_AREA1` AS `WORK_MAJOR_AREA`,`comtngnrlmber`.`WORK_MINOR_AREA1` AS `WORK_MINOR_AREA`,`comtngnrlmber`.`PUBLIC_YN` AS `PUBLIC_YN`,(case when (floor((cast(date_format(sysdate(),'%Y%m%d') as unsigned) - (cast(concat(`comtngnrlmber`.`BIRTH_YEAR`,`comtngnrlmber`.`BIRTH_MONTH`,`comtngnrlmber`.`BIRTH_DAY`) as unsigned) / 10000))) >= 19) then 'A' when (floor((cast(date_format(sysdate(),'%Y%m%d') as unsigned) - (cast(concat(`comtngnrlmber`.`BIRTH_YEAR`,`comtngnrlmber`.`BIRTH_MONTH`,`comtngnrlmber`.`BIRTH_DAY`) as unsigned) / 10000))) < 19) then 'Y' else 'N' end) AS `ADULT` from `comtngnrlmber` where (`comtngnrlmber`.`MBER_STTUS` = 'P') union all select `comtnemplyrinfo`.`ESNTL_ID` AS `ESNTL_ID`,`comtnemplyrinfo`.`USER_NM` AS `USER_NM`,'USR' AS `USER_SE`,`comtnemplyrinfo`.`ACTIVE_SIDO_AREA` AS `ACTIVE_SIDO_AREA`,`comtnemplyrinfo`.`ACTIVE_GUGUN_AREA` AS `ACTIVE_GUGUN_AREA`,`comtnemplyrinfo`.`WORK_AREA` AS `WORK_AREA`,'' AS `WORK_MAJOR_AREA`,'' AS `WORK_MINOR_AREA`,'' AS `PUBLIC_YN`,'N' AS `ADULT` from `comtnemplyrinfo` union all select `comtnentrprsmber`.`ESNTL_ID` AS `ESNTL_ID`,'ENT' AS `USER_SE`,' ' AS `USER_NM`,`comtnentrprsmber`.`ACTIVE_SIDO_AREA` AS `ACTIVE_SIDO_AREA`,`comtnentrprsmber`.`ACTIVE_GUGUN_AREA` AS `ACTIVE_GUGUN_AREA`,`comtnentrprsmber`.`WORK_AREA` AS `WORK_AREA`,`comtnentrprsmber`.`WORK_MAJOR_AREA` AS `WORK_MAJOR_AREA`,`comtnentrprsmber`.`WORK_MINOR_AREA` AS `WORK_MINOR_AREA`,'' AS `PUBLIC_YN`,'N' AS `ADULT` from `comtnentrprsmber` where (`comtnentrprsmber`.`ENTRPRS_MBER_STTUS` = 'P') union all select `biz_group`.`ESNTL_ID` AS `ESNTL_ID`,'GRO' AS `USER_SE`,' ' AS `USER_NM`,`biz_group`.`ACTIVE_SIDO_AREA` AS `ACTIVE_SIDO_AREA`,`biz_group`.`ACTIVE_GUGUN_AREA` AS `ACTIVE_GUGUN_AREA`,`biz_group`.`WORK_AREA` AS `WORK_AREA`,`biz_group`.`WORK_MAJOR_AREA` AS `WORK_MAJOR_AREA`,`biz_group`.`WORK_MINOR_AREA` AS `WORK_MINOR_AREA`,`biz_group`.`PUBLIC_YN` AS `PUBLIC_YN`,'N' AS `ADULT` from `biz_group` where (`biz_group`.`GROUP_STTUS_CODE` <> 'C');
+
+-- ===== selectmiddleappconfirmlist =====
+CREATE ALGORITHM=UNDEFINED DEFINER=`csv`@`127.0.0.1` SQL SECURITY INVOKER VIEW `selectmiddleappconfirmlist` AS select `comtngnrlmber`.`ESNTL_ID` AS `ESNTL_ID`,`comtngnrlmber`.`MBER_ID` AS `USER_ID`,`comtngnrlmber`.`MBER_NM` AS `USER_NM`,`comtngnrlmber`.`MBTLNUM` AS `MBTLNUM`,'-' AS `AUTH` from `comtngnrlmber` where (`comtngnrlmber`.`MBER_STTUS` = 'P') union all select `comtnemplyrinfo`.`ESNTL_ID` AS `ESNTL_ID`,`comtnemplyrinfo`.`EMPLYR_ID` AS `EMPLYR_ID`,`comtnemplyrinfo`.`USER_NM` AS `USER_NM`,`comtnemplyrinfo`.`MBTLNUM` AS `MBTLNUM`,`comtnemplyrinfo`.`AUTH_CODE` AS `AUTH` from `comtnemplyrinfo` union all select `comtnentrprsmber`.`ESNTL_ID` AS `ESNTL_ID`,`comtnentrprsmber`.`ENTRPRS_MBER_ID` AS `ENTRPRS_MBER_ID`,`comtnentrprsmber`.`CMPNY_NM` AS `CMPNY_NM`,`comtnentrprsmber`.`RESPON_TELNO` AS `MBTLNUM`,`comtnentrprsmber`.`INDUTY_CODE` AS `AUTH` from `comtnentrprsmber` where (`comtnentrprsmber`.`ENTRPRS_MBER_STTUS` = 'P') union all select `biz_group`.`ESNTL_ID` AS `ESNTL_ID`,`biz_group`.`GROUP_ID` AS `GROUP_ID`,`biz_group`.`GROUP_NM` AS `GROUP_NM`,`biz_group`.`REPRESENT_TELNO` AS `MBTLNUM`,`biz_group`.`GROUP_STTUS_CODE` AS `AUTH` from `biz_group` where (`biz_group`.`GROUP_STTUS_CODE` <> 'C');
diff --git a/src/script/mysql/ddl/privacy.mber_nm_dead_views_drop_mysql.sql b/src/script/mysql/ddl/privacy.mber_nm_dead_views_drop_mysql.sql
new file mode 100644
index 0000000..0898aa2
--- /dev/null
+++ b/src/script/mysql/ddl/privacy.mber_nm_dead_views_drop_mysql.sql
@@ -0,0 +1,49 @@
+-- =====================================================================
+-- 회원 이름 암호화 — 죽은 뷰 8개 정리
+-- 문화품앗이 개인정보보호 기능개선 사업 (추가제안 Action4 / 뷰 재정의 조사 결과)
+-- 작성일: 2026-08-10 DB: MySQL 8
+-- ---------------------------------------------------------------------
+-- [배경] COMTNGNRLMBER.MBER_NM 을 암호화하면서, 이 컬럼을 참조하는 뷰가 10개 있었다.
+-- 전수 조사(sqlmap 전체 FROM절 + Java 전체 grep) 결과:
+--
+-- 실사용(재정의 필요, 이 스크립트 대상 아님):
+-- comvnuserinfo — EgovLoginUsr_SQL_Mysql.xml, EgovDiapauseManage_Mysql.xml 에서 FROM 사용
+-- comvnusermaster — EgovBbsStats_SQL_Mysql.xml 등 27곳에서 FROM 사용
+--
+-- 미사용(이 스크립트로 DROP) — FROM 절 참조 0건. Java/XML 전체에서 이름이 매칭된 것은
+-- 전부 "뷰 이름과 우연히 같은 iBatis 구문ID/자바 메서드명"이었다(예:
+-- BizAppconfirmDAO.excelAppconfirmList 는 문자열 "excelAppconfirmList" 이지 FROM excelappconfirmlist 가 아님).
+-- 즉 원래 뷰를 조회하던 통계·게시판·엑셀 기능이 이미 인라인 UNION 쿼리로 대체되어
+-- 뷰 자체는 아무도 안 쓰는 화석으로 남아 있었다.
+-- comtnbbsuserinfo
+-- comvnusermaster2
+-- comvnusermaster_1
+-- excelappconfirmlist
+-- excelappconfirmlist_auth
+-- selectaddedoptionsinf
+-- selectboardarticlelist
+-- selectmiddleappconfirmlist
+--
+-- [백업] 이 8개의 CREATE VIEW 정의는 privacy.mber_nm_dead_views_backup_20260810.sql 에 보존했다.
+-- 복원이 필요하면 그 파일을 그대로 재실행하면 된다(뷰 정의만 복원, 데이터 영향 없음 — 뷰는
+-- 저장된 SQL일 뿐 데이터를 갖지 않는다).
+--
+-- [재실행 안전] DROP VIEW IF EXISTS 를 사용하므로 반복 실행해도 안전하다.
+-- =====================================================================
+
+DROP VIEW IF EXISTS comtnbbsuserinfo;
+DROP VIEW IF EXISTS comvnusermaster2;
+DROP VIEW IF EXISTS comvnusermaster_1;
+DROP VIEW IF EXISTS excelappconfirmlist;
+DROP VIEW IF EXISTS excelappconfirmlist_auth;
+DROP VIEW IF EXISTS selectaddedoptionsinf;
+DROP VIEW IF EXISTS selectboardarticlelist;
+DROP VIEW IF EXISTS selectmiddleappconfirmlist;
+
+-- 확인
+SELECT TABLE_NAME FROM information_schema.VIEWS
+ WHERE TABLE_SCHEMA = DATABASE()
+ AND TABLE_NAME IN ('comtnbbsuserinfo','comvnusermaster2','comvnusermaster_1',
+ 'excelappconfirmlist','excelappconfirmlist_auth',
+ 'selectaddedoptionsinf','selectboardarticlelist','selectmiddleappconfirmlist');
+-- 결과 0행이어야 정리 완료. comvnuserinfo/comvnusermaster 는 조회되지 않아야 한다(대상 아님).