주소록 그룹삭제 기능 수정 -> grp 테이블에 delete y 처리 후 select에서 where delete='N' 만 가져오게 수정
가져오게 수정
@259f27d6cc57493b2e81f8c66277e5750b8fdb5c
--- src/main/java/itn/let/mjo/addr/service/AddrVO.java
+++ src/main/java/itn/let/mjo/addr/service/AddrVO.java
... | ... | @@ -1,138 +1,140 @@ |
| 1 |
-package itn.let.mjo.addr.service; |
|
| 2 |
- |
|
| 3 |
-import java.util.List; |
|
| 4 |
- |
|
| 5 |
-import itn.com.cmm.ComDefaultVO; |
|
| 6 |
-import lombok.Getter; |
|
| 7 |
-import lombok.Setter; |
|
| 8 |
- |
|
| 9 |
-@Getter |
|
| 10 |
-@Setter |
|
| 11 |
-public class AddrVO extends ComDefaultVO{
|
|
| 12 |
- |
|
| 13 |
- private static final long serialVersionUID = 1L; |
|
| 14 |
- |
|
| 15 |
- private int totcnt = 0; |
|
| 16 |
- |
|
| 17 |
- private String addrId; // 주소록ID |
|
| 18 |
- private String addrGrpId; // 주소록그룹ID |
|
| 19 |
- private String[] addrGrpIds; // 주소록그룹IDs |
|
| 20 |
- private String mberId; // 일반회원ID |
|
| 21 |
- private String addrNm; // 주소록 이름 |
|
| 22 |
- private String addrPhoneNo; // 휴대폰번호 |
|
| 23 |
- private String addrInfo1; // 치환1 |
|
| 24 |
- private String addrInfo2; // 치환2 |
|
| 25 |
- private String addrInfo3; // 치환3 |
|
| 26 |
- private String addrInfo4; // 치환4 |
|
| 27 |
- private String addrComment; // 메모 |
|
| 28 |
- private String deleteYn; // 삭제여부 |
|
| 29 |
- private String addrGrpNm; // 주소록 그룹명 |
|
| 30 |
- private String grpDelete; // 그룹삭제여부 |
|
| 31 |
- private String type; // 구분 |
|
| 32 |
- private String bookmark; // 자주보내는번호 |
|
| 33 |
- private String recvStatus; // 수신여부(S:직접등록, Y:수신승인, W:수신대기, N:수신거부) |
|
| 34 |
- private String[] mergeGrps; // 합칠 그룹들 id |
|
| 35 |
- private String[] sendGrps; // 내보낼 그룹들 id |
|
| 36 |
- private String[] copyAddrs; // 내보낼 주소록들 id |
|
| 37 |
- |
|
| 38 |
- private String[] addrIds; |
|
| 39 |
- private String[] addrPhones; |
|
| 40 |
- private String[] addrNms; |
|
| 41 |
- private String[] addrInfo1s; |
|
| 42 |
- private String[] addrInfo2s; |
|
| 43 |
- private String[] addrInfo3s; |
|
| 44 |
- private String[] addrInfo4s; |
|
| 45 |
- |
|
| 46 |
- private String searchAddrGrpId; |
|
| 47 |
- private String startKeyword; |
|
| 48 |
- private String searchStartDate; |
|
| 49 |
- private String searchEndDate; |
|
| 50 |
- |
|
| 51 |
- private String[] excelDownTitles; |
|
| 52 |
- |
|
| 53 |
- @SuppressWarnings("rawtypes")
|
|
| 54 |
- private List addrIdList; |
|
| 55 |
- |
|
| 56 |
- String[] phoneList; |
|
| 57 |
- String[] nameList; |
|
| 58 |
- String[] info1List; |
|
| 59 |
- String[] info2List; |
|
| 60 |
- String[] info3List; |
|
| 61 |
- String[] info4List; |
|
| 62 |
- String[] memoList; |
|
| 63 |
- |
|
| 64 |
- private int dupliCnt; |
|
| 65 |
- |
|
| 66 |
- |
|
| 67 |
- public String getFieldValue(String field) {
|
|
| 68 |
- if("addrPhoneNo".equals(field)) {
|
|
| 69 |
- return this.addrPhoneNo; |
|
| 70 |
- } else if("addrNm".equals(field)) {
|
|
| 71 |
- return this.addrNm; |
|
| 72 |
- } else if("addrGrpNm".equals(field)) {
|
|
| 73 |
- return this.addrGrpNm; |
|
| 74 |
- } else if("addrComment".equals(field)) {
|
|
| 75 |
- return this.addrComment; |
|
| 76 |
- } else if("addrInfo1".equals(field)) {
|
|
| 77 |
- return this.addrInfo1; |
|
| 78 |
- } else if("addrInfo2".equals(field)) {
|
|
| 79 |
- return this.addrInfo2; |
|
| 80 |
- } else if("addrInfo3".equals(field)) {
|
|
| 81 |
- return this.addrInfo3; |
|
| 82 |
- } else if("addrInfo4".equals(field)) {
|
|
| 83 |
- return this.addrInfo4; |
|
| 84 |
- } |
|
| 85 |
- return ""; |
|
| 86 |
- } |
|
| 87 |
- |
|
| 88 |
- |
|
| 89 |
- public String getHeaderName(String field) {
|
|
| 90 |
- if("addrPhoneNo".equals(field)) {
|
|
| 91 |
- return "휴대폰번호"; |
|
| 92 |
- } else if("addrNm".equals(field)) {
|
|
| 93 |
- return "이름"; |
|
| 94 |
- } else if("addrGrpNm".equals(field)) {
|
|
| 95 |
- return "주소록그룹명"; |
|
| 96 |
- } else if("addrComment".equals(field)) {
|
|
| 97 |
- return "메모"; |
|
| 98 |
- } else if("addrInfo1".equals(field)) {
|
|
| 99 |
- return "[*1*]"; |
|
| 100 |
- } else if("addrInfo2".equals(field)) {
|
|
| 101 |
- return "[*2*]"; |
|
| 102 |
- } else if("addrInfo3".equals(field)) {
|
|
| 103 |
- return "[*3*]"; |
|
| 104 |
- } else if("addrInfo4".equals(field)) {
|
|
| 105 |
- return "[*4*]"; |
|
| 106 |
- } |
|
| 107 |
- return ""; |
|
| 108 |
- } |
|
| 109 |
- |
|
| 110 |
- |
|
| 111 |
- |
|
| 112 |
- private String addrGroupNm; |
|
| 113 |
- private String addrPhone; |
|
| 114 |
- private String addrName; |
|
| 115 |
- private String addrRep1; |
|
| 116 |
- private String addrRep2; |
|
| 117 |
- private String addrRep3; |
|
| 118 |
- private String addrRep4; |
|
| 119 |
- |
|
| 120 |
- |
|
| 121 |
- private int page = 1; // 기본 값 설정 |
|
| 122 |
- private int size = 10; // 기본 값 설정 |
|
| 123 |
- private int offset; // 기본 값 설정 |
|
| 124 |
- private String name; |
|
| 125 |
- private String phone; |
|
| 126 |
- private String rep1; |
|
| 127 |
- private String rep2; |
|
| 128 |
- private String rep3; |
|
| 129 |
- private String rep4; |
|
| 130 |
- |
|
| 131 |
- private int batchSize; |
|
| 132 |
- private int lastProcessedId; |
|
| 133 |
- |
|
| 134 |
- |
|
| 135 |
- |
|
| 136 |
- |
|
| 137 |
- |
|
| 138 |
-} |
|
| 1 |
+package itn.let.mjo.addr.service; |
|
| 2 |
+ |
|
| 3 |
+import java.util.List; |
|
| 4 |
+ |
|
| 5 |
+import itn.com.cmm.ComDefaultVO; |
|
| 6 |
+import lombok.Getter; |
|
| 7 |
+import lombok.Setter; |
|
| 8 |
+ |
|
| 9 |
+@Getter |
|
| 10 |
+@Setter |
|
| 11 |
+public class AddrVO extends ComDefaultVO{
|
|
| 12 |
+ |
|
| 13 |
+ private static final long serialVersionUID = 1L; |
|
| 14 |
+ |
|
| 15 |
+ private int totcnt = 0; |
|
| 16 |
+ |
|
| 17 |
+ private String addrId; // 주소록ID |
|
| 18 |
+ private String addrGrpId; // 주소록그룹ID |
|
| 19 |
+ private String[] addrGrpIds; // 주소록그룹IDs |
|
| 20 |
+ private String mberId; // 일반회원ID |
|
| 21 |
+ private String addrNm; // 주소록 이름 |
|
| 22 |
+ private String addrPhoneNo; // 휴대폰번호 |
|
| 23 |
+ private String addrInfo1; // 치환1 |
|
| 24 |
+ private String addrInfo2; // 치환2 |
|
| 25 |
+ private String addrInfo3; // 치환3 |
|
| 26 |
+ private String addrInfo4; // 치환4 |
|
| 27 |
+ private String addrComment; // 메모 |
|
| 28 |
+ private String deleteYn; // 삭제여부 |
|
| 29 |
+ private String addrGrpNm; // 주소록 그룹명 |
|
| 30 |
+ private String grpDelete; // 그룹삭제여부 |
|
| 31 |
+ private String type; // 구분 |
|
| 32 |
+ private String bookmark; // 자주보내는번호 |
|
| 33 |
+ private String recvStatus; // 수신여부(S:직접등록, Y:수신승인, W:수신대기, N:수신거부) |
|
| 34 |
+ private String[] mergeGrps; // 합칠 그룹들 id |
|
| 35 |
+ private String[] sendGrps; // 내보낼 그룹들 id |
|
| 36 |
+ private String[] copyAddrs; // 내보낼 주소록들 id |
|
| 37 |
+ |
|
| 38 |
+ private String[] addrIds; |
|
| 39 |
+ private String[] addrPhones; |
|
| 40 |
+ private String[] addrNms; |
|
| 41 |
+ private String[] addrInfo1s; |
|
| 42 |
+ private String[] addrInfo2s; |
|
| 43 |
+ private String[] addrInfo3s; |
|
| 44 |
+ private String[] addrInfo4s; |
|
| 45 |
+ |
|
| 46 |
+ private String searchAddrGrpId; |
|
| 47 |
+ private String startKeyword; |
|
| 48 |
+ private String searchStartDate; |
|
| 49 |
+ private String searchEndDate; |
|
| 50 |
+ |
|
| 51 |
+ private String[] excelDownTitles; |
|
| 52 |
+ |
|
| 53 |
+ @SuppressWarnings("rawtypes")
|
|
| 54 |
+ private List addrIdList; |
|
| 55 |
+ |
|
| 56 |
+ String[] phoneList; |
|
| 57 |
+ String[] nameList; |
|
| 58 |
+ String[] info1List; |
|
| 59 |
+ String[] info2List; |
|
| 60 |
+ String[] info3List; |
|
| 61 |
+ String[] info4List; |
|
| 62 |
+ String[] memoList; |
|
| 63 |
+ |
|
| 64 |
+ private int dupliCnt; |
|
| 65 |
+ |
|
| 66 |
+ |
|
| 67 |
+ public String getFieldValue(String field) {
|
|
| 68 |
+ if("addrPhoneNo".equals(field)) {
|
|
| 69 |
+ return this.addrPhoneNo; |
|
| 70 |
+ } else if("addrNm".equals(field)) {
|
|
| 71 |
+ return this.addrNm; |
|
| 72 |
+ } else if("addrGrpNm".equals(field)) {
|
|
| 73 |
+ return this.addrGrpNm; |
|
| 74 |
+ } else if("addrComment".equals(field)) {
|
|
| 75 |
+ return this.addrComment; |
|
| 76 |
+ } else if("addrInfo1".equals(field)) {
|
|
| 77 |
+ return this.addrInfo1; |
|
| 78 |
+ } else if("addrInfo2".equals(field)) {
|
|
| 79 |
+ return this.addrInfo2; |
|
| 80 |
+ } else if("addrInfo3".equals(field)) {
|
|
| 81 |
+ return this.addrInfo3; |
|
| 82 |
+ } else if("addrInfo4".equals(field)) {
|
|
| 83 |
+ return this.addrInfo4; |
|
| 84 |
+ } |
|
| 85 |
+ return ""; |
|
| 86 |
+ } |
|
| 87 |
+ |
|
| 88 |
+ |
|
| 89 |
+ public String getHeaderName(String field) {
|
|
| 90 |
+ if("addrPhoneNo".equals(field)) {
|
|
| 91 |
+ return "휴대폰번호"; |
|
| 92 |
+ } else if("addrNm".equals(field)) {
|
|
| 93 |
+ return "이름"; |
|
| 94 |
+ } else if("addrGrpNm".equals(field)) {
|
|
| 95 |
+ return "주소록그룹명"; |
|
| 96 |
+ } else if("addrComment".equals(field)) {
|
|
| 97 |
+ return "메모"; |
|
| 98 |
+ } else if("addrInfo1".equals(field)) {
|
|
| 99 |
+ return "[*1*]"; |
|
| 100 |
+ } else if("addrInfo2".equals(field)) {
|
|
| 101 |
+ return "[*2*]"; |
|
| 102 |
+ } else if("addrInfo3".equals(field)) {
|
|
| 103 |
+ return "[*3*]"; |
|
| 104 |
+ } else if("addrInfo4".equals(field)) {
|
|
| 105 |
+ return "[*4*]"; |
|
| 106 |
+ } |
|
| 107 |
+ return ""; |
|
| 108 |
+ } |
|
| 109 |
+ |
|
| 110 |
+ |
|
| 111 |
+ |
|
| 112 |
+ private String addrGroupNm; |
|
| 113 |
+ private String addrPhone; |
|
| 114 |
+ private String addrName; |
|
| 115 |
+ private String addrRep1; |
|
| 116 |
+ private String addrRep2; |
|
| 117 |
+ private String addrRep3; |
|
| 118 |
+ private String addrRep4; |
|
| 119 |
+ |
|
| 120 |
+ |
|
| 121 |
+ private int page = 1; // 기본 값 설정 |
|
| 122 |
+ private int size = 10; // 기본 값 설정 |
|
| 123 |
+ private int offset; // 기본 값 설정 |
|
| 124 |
+ private String name; |
|
| 125 |
+ private String phone; |
|
| 126 |
+ private String rep1; |
|
| 127 |
+ private String rep2; |
|
| 128 |
+ private String rep3; |
|
| 129 |
+ private String rep4; |
|
| 130 |
+ |
|
| 131 |
+ private int batchSize; |
|
| 132 |
+ private int lastProcessedId; |
|
| 133 |
+ private int startIndex; |
|
| 134 |
+ private int endIndex; |
|
| 135 |
+ |
|
| 136 |
+ |
|
| 137 |
+ |
|
| 138 |
+ |
|
| 139 |
+ |
|
| 140 |
+} |
--- src/main/java/itn/let/mjo/addr/service/impl/AddrDAO.java
+++ src/main/java/itn/let/mjo/addr/service/impl/AddrDAO.java
... | ... | @@ -1,296 +1,296 @@ |
| 1 |
-package itn.let.mjo.addr.service.impl; |
|
| 2 |
- |
|
| 3 |
-import java.util.List; |
|
| 4 |
- |
|
| 5 |
-import org.springframework.stereotype.Repository; |
|
| 6 |
- |
|
| 7 |
-import egovframework.rte.psl.dataaccess.EgovAbstractDAO; |
|
| 8 |
-import itn.let.mjo.addr.service.AddrVO; |
|
| 9 |
- |
|
| 10 |
-/** |
|
| 11 |
- * 주소록 관리를 위한 데이터 접근 클래스 |
|
| 12 |
- * @author ITN |
|
| 13 |
- * @since 2021.04.08 |
|
| 14 |
- * @version 1.0 |
|
| 15 |
- * @see |
|
| 16 |
- * |
|
| 17 |
- * <pre> |
|
| 18 |
- * << 개정이력(Modification Information) >> |
|
| 19 |
- * 수정일 수정자 수정내용 |
|
| 20 |
- * ------- -------- --------------------------- |
|
| 21 |
- * 2021.04.08 ITN 최초 생성 |
|
| 22 |
- * </pre> |
|
| 23 |
- */ |
|
| 24 |
-@Repository("AddrDAO")
|
|
| 25 |
-public class AddrDAO extends EgovAbstractDAO {
|
|
| 26 |
- |
|
| 27 |
- /** |
|
| 28 |
- * 주소록 목록 |
|
| 29 |
- * @param addrVO |
|
| 30 |
- * @return |
|
| 31 |
- * @throws Exception |
|
| 32 |
- */ |
|
| 33 |
- @SuppressWarnings("unchecked")
|
|
| 34 |
- public List<AddrVO> selectAddrList(AddrVO addrVO) throws Exception {
|
|
| 35 |
- return (List<AddrVO>) list("AddrDAO.selectAddrList", addrVO);
|
|
| 36 |
- } |
|
| 37 |
- |
|
| 38 |
- public int selectAddrListCount(AddrVO addrVO) throws Exception{
|
|
| 39 |
- return (int)select("AddrDAO.selectAddrListCount", addrVO);
|
|
| 40 |
- } |
|
| 41 |
- |
|
| 42 |
- /** |
|
| 43 |
- * 주소록 목록(속도개선) |
|
| 44 |
- * @param addrVO |
|
| 45 |
- * @return |
|
| 46 |
- * @throws Exception |
|
| 47 |
- */ |
|
| 48 |
- @SuppressWarnings("unchecked")
|
|
| 49 |
- public List<AddrVO> selectAddrNewList(AddrVO addrVO) throws Exception {
|
|
| 50 |
- return (List<AddrVO>) list("AddrDAO.selectAddrNewList", addrVO);
|
|
| 51 |
- } |
|
| 52 |
- |
|
| 53 |
- /** |
|
| 54 |
- * 주소록 상세보기 |
|
| 55 |
- * @param addrVO |
|
| 56 |
- * @return |
|
| 57 |
- * @throws Exception |
|
| 58 |
- */ |
|
| 59 |
- public AddrVO selectAddrDetail(AddrVO addrVO) throws Exception {
|
|
| 60 |
- return (AddrVO) select("AddrDAO.selectAddrDetail", addrVO);
|
|
| 61 |
- } |
|
| 62 |
- |
|
| 63 |
- |
|
| 64 |
- /** |
|
| 65 |
- * 주소록 등록 |
|
| 66 |
- * @param addrVO |
|
| 67 |
- * @throws Exception |
|
| 68 |
- */ |
|
| 69 |
- public void insertAddr(AddrVO addrVO) throws Exception {
|
|
| 70 |
- insert("AddrDAO.insertAddr", addrVO);
|
|
| 71 |
- } |
|
| 72 |
- |
|
| 73 |
- /** |
|
| 74 |
- * 주소록 수정 |
|
| 75 |
- * @param addrVO |
|
| 76 |
- * @return |
|
| 77 |
- * @throws Exception |
|
| 78 |
- */ |
|
| 79 |
- public int updateAddr(AddrVO addrVO) throws Exception {
|
|
| 80 |
- return update("AddrDAO.updateAddr", addrVO);
|
|
| 81 |
- } |
|
| 82 |
- |
|
| 83 |
- /** |
|
| 84 |
- * 주소록 그룹 수정 |
|
| 85 |
- * @param addrVO |
|
| 86 |
- * @return |
|
| 87 |
- * @throws Exception |
|
| 88 |
- */ |
|
| 89 |
- public int updateAddrGrp(AddrVO addrVO) throws Exception {
|
|
| 90 |
- return update("AddrDAO.updateAddrGrp", addrVO);
|
|
| 91 |
- } |
|
| 92 |
- |
|
| 93 |
- |
|
| 94 |
- /** |
|
| 95 |
- * 주소록 수정 |
|
| 96 |
- * @param addrVO |
|
| 97 |
- * @return |
|
| 98 |
- * @throws Exception |
|
| 99 |
- */ |
|
| 100 |
- public int updateMemoAddr(AddrVO addrVO) throws Exception {
|
|
| 101 |
- return update("AddrDAO.updateMemoAddr", addrVO);
|
|
| 102 |
- } |
|
| 103 |
- |
|
| 104 |
- |
|
| 105 |
- |
|
| 106 |
- /** |
|
| 107 |
- * 주소록 수정 By Admin |
|
| 108 |
- * @param addrVO |
|
| 109 |
- * @return |
|
| 110 |
- * @throws Exception |
|
| 111 |
- */ |
|
| 112 |
- public int updateAddrByAdmin(AddrVO addrVO) throws Exception {
|
|
| 113 |
- return update("AddrDAO.updateAddrByAdmin", addrVO);
|
|
| 114 |
- } |
|
| 115 |
- |
|
| 116 |
- /** |
|
| 117 |
- * 주소록 삭제 |
|
| 118 |
- * @param addrVO |
|
| 119 |
- * @return |
|
| 120 |
- * @throws Exception |
|
| 121 |
- */ |
|
| 122 |
- public int deleteAddr(AddrVO addrVO) throws Exception {
|
|
| 123 |
- return delete("AddrDAO.deleteAddr", addrVO);
|
|
| 124 |
- } |
|
| 125 |
- |
|
| 126 |
- /** |
|
| 127 |
- * 주소록 삭제 By Admin |
|
| 128 |
- * @param addrVO |
|
| 129 |
- * @return |
|
| 130 |
- * @throws Exception |
|
| 131 |
- */ |
|
| 132 |
- public int deleteAddrByAdmin(AddrVO addrVO) throws Exception {
|
|
| 133 |
- return delete("AddrDAO.deleteAddrByAdmin", addrVO);
|
|
| 134 |
- } |
|
| 135 |
- |
|
| 136 |
- /** |
|
| 137 |
- * 주소록 삭제 By Admin By Grpid |
|
| 138 |
- * @param addrVO |
|
| 139 |
- * @return |
|
| 140 |
- * @throws Exception |
|
| 141 |
- */ |
|
| 142 |
- public int deleteAddrByAdminByGrpid(AddrVO addrVO) throws Exception {
|
|
| 143 |
- return delete("AddrDAO.deleteAddrByAdminByGrpid", addrVO);
|
|
| 144 |
- } |
|
| 145 |
- |
|
| 146 |
- |
|
| 147 |
- /** |
|
| 148 |
- * 자주찾는번호 주소록 리스트 불러오기 |
|
| 149 |
- * @param addrVO |
|
| 150 |
- * @return |
|
| 151 |
- * @throws Exception |
|
| 152 |
- */ |
|
| 153 |
- @SuppressWarnings("unchecked")
|
|
| 154 |
- public List<AddrVO> selectAddrBasicGrpList(AddrVO addrVO) throws Exception{
|
|
| 155 |
- return (List<AddrVO>) list("AddrDAO.selectAddrBasicGrpList", addrVO);
|
|
| 156 |
- } |
|
| 157 |
- |
|
| 158 |
- |
|
| 159 |
- /** |
|
| 160 |
- * 주소록 전체 개수 조회 |
|
| 161 |
- * @param addrVO |
|
| 162 |
- * @return |
|
| 163 |
- * @throws Exception |
|
| 164 |
- */ |
|
| 165 |
- public int selectAddrTotalCount(AddrVO addrVO) throws Exception{
|
|
| 166 |
- return (int)select("AddrDAO.selectAddrTotalCount", addrVO);
|
|
| 167 |
- } |
|
| 168 |
- |
|
| 169 |
- /** |
|
| 170 |
- * 주소록 복사하기 (select insert) |
|
| 171 |
- * @param addrVO |
|
| 172 |
- * @throws Exception |
|
| 173 |
- */ |
|
| 174 |
- public void insertCopyAddr(AddrVO addrVO) throws Exception{
|
|
| 175 |
- update("AddrDAO.insertCopyAddr", addrVO);
|
|
| 176 |
- } |
|
| 177 |
- |
|
| 178 |
- /** |
|
| 179 |
- * 그룹 합치기 - 주소록 데이터 그룹id 변경 |
|
| 180 |
- * @param addrVO |
|
| 181 |
- * @throws Exception |
|
| 182 |
- */ |
|
| 183 |
- public void updateAddrsGrp(AddrVO addrVO) throws Exception{
|
|
| 184 |
- update("AddrDAO.updateAddrsGrp", addrVO);
|
|
| 185 |
- } |
|
| 186 |
- |
|
| 187 |
- /** |
|
| 188 |
- * 주소록 등록 총 건수 및 정보 불러오기 |
|
| 189 |
- * @param addrVO |
|
| 190 |
- * @throws Exception |
|
| 191 |
- */ |
|
| 192 |
- public List<?> selectAddrTotCntInfByUserId(AddrVO addrVO) throws Exception{
|
|
| 193 |
- |
|
| 194 |
- return (List<?>) list("AddrDAO.selectAddrTotCntInfByUserId", addrVO);
|
|
| 195 |
- } |
|
| 196 |
- |
|
| 197 |
- public int insertAddrList(List<AddrVO> addrList) throws Exception{
|
|
| 198 |
- |
|
| 199 |
- return update("AddrDAO.insertAddrList", addrList);
|
|
| 200 |
- } |
|
| 201 |
- |
|
| 202 |
- public int selectDuplAddrCnt(AddrVO addrVO) throws Exception{
|
|
| 203 |
- return (Integer)select("AddrDAO.selectDuplAddrCnt", addrVO);
|
|
| 204 |
- } |
|
| 205 |
- |
|
| 206 |
- |
|
| 207 |
- /** |
|
| 208 |
- * 주소록 한 그룹에 속한 주소록의 전화번호 조회(중복체크용도) |
|
| 209 |
- * @param addrVO |
|
| 210 |
- * @return |
|
| 211 |
- * @throws Exception |
|
| 212 |
- */ |
|
| 213 |
- @SuppressWarnings("unchecked")
|
|
| 214 |
- public List<AddrVO> selectPhoneNumInAddrGroup(AddrVO addrVO) throws Exception{
|
|
| 215 |
- return (List<AddrVO>) list("AddrDAO.selectPhoneNumInAddrGroup", addrVO);
|
|
| 216 |
- } |
|
| 217 |
- |
|
| 218 |
- public void insertCopyAddrs(AddrVO addrVO) throws Exception{
|
|
| 219 |
- insert("AddrDAO.insertCopyAddrs", addrVO);
|
|
| 220 |
- } |
|
| 221 |
- |
|
| 222 |
- /** |
|
| 223 |
- * 선택한 주소록 문자전송 화면으로 보내기 |
|
| 224 |
- * @param addrVO |
|
| 225 |
- * @return |
|
| 226 |
- * @throws Exception |
|
| 227 |
- */ |
|
| 228 |
- @SuppressWarnings("unchecked")
|
|
| 229 |
- public List<AddrVO> selectAddrDataList(AddrVO addrVO) throws Exception{
|
|
| 230 |
- return (List<AddrVO>) list("AddrDAO.selectAddrDataList", addrVO);
|
|
| 231 |
- } |
|
| 232 |
- |
|
| 233 |
- // 주소록 그룹별 중복 연락처 삭제 |
|
| 234 |
- public int deleteAddrDupliList(AddrVO addrVO) throws Exception {
|
|
| 235 |
- return delete("AddrDAO.deleteAddrDupliList", addrVO);
|
|
| 236 |
- } |
|
| 237 |
- |
|
| 238 |
- // 주소록 그룹별 중복 연락처 삭제 |
|
| 239 |
- public int deleteAddrDupliListByGrpnm(AddrVO addrVO) throws Exception {
|
|
| 240 |
- return delete("AddrDAO.deleteAddrDupliListByGrpnm", addrVO);
|
|
| 241 |
- } |
|
| 242 |
- |
|
| 243 |
- // 주소록 전체 중복 연락처 중 한개만 남기고 삭제 |
|
| 244 |
- public int deleteAddrDupliListByAll(AddrVO addrVO) throws Exception {
|
|
| 245 |
- return delete("AddrDAO.deleteAddrDupliListByAll", addrVO);
|
|
| 246 |
- } |
|
| 247 |
- |
|
| 248 |
- // 주소록 그룹별 중복 연락처 리스트 불러오기 |
|
| 249 |
- @SuppressWarnings("unchecked")
|
|
| 250 |
- public List<AddrVO> selectAddrDupliList(AddrVO addrVO) throws Exception{
|
|
| 251 |
- return (List<AddrVO>) list("AddrDAO.selectAddrDupliList", addrVO);
|
|
| 252 |
- } |
|
| 253 |
- |
|
| 254 |
- @SuppressWarnings("unchecked")
|
|
| 255 |
- public List<AddrVO> selectAddrDupliListByGrpnm(AddrVO addrVO) throws Exception{
|
|
| 256 |
- return (List<AddrVO>) list("AddrDAO.selectAddrDupliListByGrpnm", addrVO);
|
|
| 257 |
- } |
|
| 258 |
- |
|
| 259 |
- // 주소록 전체 중복 연락처 수 |
|
| 260 |
- public int selectAddrDupliListByAllCnt(AddrVO addrVO) throws Exception{
|
|
| 261 |
- return (Integer)select("AddrDAO.selectAddrDupliListByAllCnt", addrVO);
|
|
| 262 |
- } |
|
| 263 |
- |
|
| 264 |
- // 주소록 전체 중복 연락처 목록 |
|
| 265 |
- @SuppressWarnings("unchecked")
|
|
| 266 |
- public List<AddrVO> selectAddrDupliListByAll(AddrVO addrVO) throws Exception{
|
|
| 267 |
- return (List<AddrVO>) list("AddrDAO.selectAddrDupliListByAll", addrVO);
|
|
| 268 |
- } |
|
| 269 |
- |
|
| 270 |
- // TEMP 주소록 중복 연락처 목록 |
|
| 271 |
- @SuppressWarnings("unchecked")
|
|
| 272 |
- public List<AddrVO> selectTempAddrDupliList(AddrVO addrVO) throws Exception{
|
|
| 273 |
- return (List<AddrVO>) list("AddrDAO.selectTempAddrDupliList", addrVO);
|
|
| 274 |
- } |
|
| 275 |
- |
|
| 276 |
- // TEMP 주소록 삭제 |
|
| 277 |
- public int deleteTempAddr(AddrVO addrVO) throws Exception {
|
|
| 278 |
- return delete("AddrDAO.deleteTempAddr", addrVO);
|
|
| 279 |
- } |
|
| 280 |
- |
|
| 281 |
- // TEMP 주소록 대량등록 |
|
| 282 |
- public int insertTempAddrList(List<AddrVO> addrList) throws Exception{
|
|
| 283 |
- return update("AddrDAO.insertTempAddrList", addrList);
|
|
| 284 |
- } |
|
| 285 |
- |
|
| 286 |
- // 주소록 대량등록 By Temp 주소록 |
|
| 287 |
- public int insertAddrByTempAddr(AddrVO addrVO) throws Exception {
|
|
| 288 |
- return update("AddrDAO.insertAddrByTempAddr", addrVO);
|
|
| 289 |
- } |
|
| 290 |
- |
|
| 291 |
- public int getAddrCount(AddrVO addrVO) {
|
|
| 292 |
- return (Integer)select("AddrDAO.getAddrCount", addrVO);
|
|
| 293 |
- } |
|
| 294 |
- |
|
| 295 |
- |
|
| 296 |
-} |
|
| 1 |
+package itn.let.mjo.addr.service.impl; |
|
| 2 |
+ |
|
| 3 |
+import java.util.List; |
|
| 4 |
+ |
|
| 5 |
+import org.springframework.stereotype.Repository; |
|
| 6 |
+ |
|
| 7 |
+import egovframework.rte.psl.dataaccess.EgovAbstractDAO; |
|
| 8 |
+import itn.let.mjo.addr.service.AddrVO; |
|
| 9 |
+ |
|
| 10 |
+/** |
|
| 11 |
+ * 주소록 관리를 위한 데이터 접근 클래스 |
|
| 12 |
+ * @author ITN |
|
| 13 |
+ * @since 2021.04.08 |
|
| 14 |
+ * @version 1.0 |
|
| 15 |
+ * @see |
|
| 16 |
+ * |
|
| 17 |
+ * <pre> |
|
| 18 |
+ * << 개정이력(Modification Information) >> |
|
| 19 |
+ * 수정일 수정자 수정내용 |
|
| 20 |
+ * ------- -------- --------------------------- |
|
| 21 |
+ * 2021.04.08 ITN 최초 생성 |
|
| 22 |
+ * </pre> |
|
| 23 |
+ */ |
|
| 24 |
+@Repository("AddrDAO")
|
|
| 25 |
+public class AddrDAO extends EgovAbstractDAO {
|
|
| 26 |
+ |
|
| 27 |
+ /** |
|
| 28 |
+ * 주소록 목록 |
|
| 29 |
+ * @param addrVO |
|
| 30 |
+ * @return |
|
| 31 |
+ * @throws Exception |
|
| 32 |
+ */ |
|
| 33 |
+ @SuppressWarnings("unchecked")
|
|
| 34 |
+ public List<AddrVO> selectAddrList(AddrVO addrVO) throws Exception {
|
|
| 35 |
+ return (List<AddrVO>) list("AddrDAO.selectAddrList", addrVO);
|
|
| 36 |
+ } |
|
| 37 |
+ |
|
| 38 |
+ public int selectAddrListCount(AddrVO addrVO) throws Exception{
|
|
| 39 |
+ return (int)select("AddrDAO.selectAddrListCount", addrVO);
|
|
| 40 |
+ } |
|
| 41 |
+ |
|
| 42 |
+ /** |
|
| 43 |
+ * 주소록 목록(속도개선) |
|
| 44 |
+ * @param addrVO |
|
| 45 |
+ * @return |
|
| 46 |
+ * @throws Exception |
|
| 47 |
+ */ |
|
| 48 |
+ @SuppressWarnings("unchecked")
|
|
| 49 |
+ public List<AddrVO> selectAddrNewList(AddrVO addrVO) throws Exception {
|
|
| 50 |
+ return (List<AddrVO>) list("AddrDAO.selectAddrNewList", addrVO);
|
|
| 51 |
+ } |
|
| 52 |
+ |
|
| 53 |
+ /** |
|
| 54 |
+ * 주소록 상세보기 |
|
| 55 |
+ * @param addrVO |
|
| 56 |
+ * @return |
|
| 57 |
+ * @throws Exception |
|
| 58 |
+ */ |
|
| 59 |
+ public AddrVO selectAddrDetail(AddrVO addrVO) throws Exception {
|
|
| 60 |
+ return (AddrVO) select("AddrDAO.selectAddrDetail", addrVO);
|
|
| 61 |
+ } |
|
| 62 |
+ |
|
| 63 |
+ |
|
| 64 |
+ /** |
|
| 65 |
+ * 주소록 등록 |
|
| 66 |
+ * @param addrVO |
|
| 67 |
+ * @throws Exception |
|
| 68 |
+ */ |
|
| 69 |
+ public void insertAddr(AddrVO addrVO) throws Exception {
|
|
| 70 |
+ insert("AddrDAO.insertAddr", addrVO);
|
|
| 71 |
+ } |
|
| 72 |
+ |
|
| 73 |
+ /** |
|
| 74 |
+ * 주소록 수정 |
|
| 75 |
+ * @param addrVO |
|
| 76 |
+ * @return |
|
| 77 |
+ * @throws Exception |
|
| 78 |
+ */ |
|
| 79 |
+ public int updateAddr(AddrVO addrVO) throws Exception {
|
|
| 80 |
+ return update("AddrDAO.updateAddr", addrVO);
|
|
| 81 |
+ } |
|
| 82 |
+ |
|
| 83 |
+ /** |
|
| 84 |
+ * 주소록 그룹 수정 |
|
| 85 |
+ * @param addrVO |
|
| 86 |
+ * @return |
|
| 87 |
+ * @throws Exception |
|
| 88 |
+ */ |
|
| 89 |
+ public int updateAddrGrp(AddrVO addrVO) throws Exception {
|
|
| 90 |
+ return update("AddrDAO.updateAddrGrp", addrVO);
|
|
| 91 |
+ } |
|
| 92 |
+ |
|
| 93 |
+ |
|
| 94 |
+ /** |
|
| 95 |
+ * 주소록 수정 |
|
| 96 |
+ * @param addrVO |
|
| 97 |
+ * @return |
|
| 98 |
+ * @throws Exception |
|
| 99 |
+ */ |
|
| 100 |
+ public int updateMemoAddr(AddrVO addrVO) throws Exception {
|
|
| 101 |
+ return update("AddrDAO.updateMemoAddr", addrVO);
|
|
| 102 |
+ } |
|
| 103 |
+ |
|
| 104 |
+ |
|
| 105 |
+ |
|
| 106 |
+ /** |
|
| 107 |
+ * 주소록 수정 By Admin |
|
| 108 |
+ * @param addrVO |
|
| 109 |
+ * @return |
|
| 110 |
+ * @throws Exception |
|
| 111 |
+ */ |
|
| 112 |
+ public int updateAddrByAdmin(AddrVO addrVO) throws Exception {
|
|
| 113 |
+ return update("AddrDAO.updateAddrByAdmin", addrVO);
|
|
| 114 |
+ } |
|
| 115 |
+ |
|
| 116 |
+ /** |
|
| 117 |
+ * 주소록 삭제 |
|
| 118 |
+ * @param addrVO |
|
| 119 |
+ * @return |
|
| 120 |
+ * @throws Exception |
|
| 121 |
+ */ |
|
| 122 |
+ public int deleteAddr(AddrVO addrVO) throws Exception {
|
|
| 123 |
+ return delete("AddrDAO.deleteAddr", addrVO);
|
|
| 124 |
+ } |
|
| 125 |
+ |
|
| 126 |
+ /** |
|
| 127 |
+ * 주소록 삭제 By Admin |
|
| 128 |
+ * @param addrVO |
|
| 129 |
+ * @return |
|
| 130 |
+ * @throws Exception |
|
| 131 |
+ */ |
|
| 132 |
+ public int deleteAddrByAdmin(AddrVO addrVO) throws Exception {
|
|
| 133 |
+ return delete("AddrDAO.deleteAddrByAdmin", addrVO);
|
|
| 134 |
+ } |
|
| 135 |
+ |
|
| 136 |
+ /** |
|
| 137 |
+ * 주소록 삭제 By Admin By Grpid |
|
| 138 |
+ * @param addrVO |
|
| 139 |
+ * @return |
|
| 140 |
+ * @throws Exception |
|
| 141 |
+ */ |
|
| 142 |
+ public int deleteAddrByAdminByGrpid(AddrVO addrVO) throws Exception {
|
|
| 143 |
+ return delete("AddrDAO.deleteAddrByAdminByGrpid", addrVO);
|
|
| 144 |
+ } |
|
| 145 |
+ |
|
| 146 |
+ |
|
| 147 |
+ /** |
|
| 148 |
+ * 자주찾는번호 주소록 리스트 불러오기 |
|
| 149 |
+ * @param addrVO |
|
| 150 |
+ * @return |
|
| 151 |
+ * @throws Exception |
|
| 152 |
+ */ |
|
| 153 |
+ @SuppressWarnings("unchecked")
|
|
| 154 |
+ public List<AddrVO> selectAddrBasicGrpList(AddrVO addrVO) throws Exception{
|
|
| 155 |
+ return (List<AddrVO>) list("AddrDAO.selectAddrBasicGrpList", addrVO);
|
|
| 156 |
+ } |
|
| 157 |
+ |
|
| 158 |
+ |
|
| 159 |
+ /** |
|
| 160 |
+ * 주소록 전체 개수 조회 |
|
| 161 |
+ * @param addrVO |
|
| 162 |
+ * @return |
|
| 163 |
+ * @throws Exception |
|
| 164 |
+ */ |
|
| 165 |
+ public int selectAddrTotalCount(AddrVO addrVO) throws Exception{
|
|
| 166 |
+ return (int)select("AddrDAO.selectAddrTotalCount", addrVO);
|
|
| 167 |
+ } |
|
| 168 |
+ |
|
| 169 |
+ /** |
|
| 170 |
+ * 주소록 복사하기 (select insert) |
|
| 171 |
+ * @param addrVO |
|
| 172 |
+ * @throws Exception |
|
| 173 |
+ */ |
|
| 174 |
+ public void insertCopyAddr(AddrVO addrVO) throws Exception{
|
|
| 175 |
+ update("AddrDAO.insertCopyAddr", addrVO);
|
|
| 176 |
+ } |
|
| 177 |
+ |
|
| 178 |
+ /** |
|
| 179 |
+ * 그룹 합치기 - 주소록 데이터 그룹id 변경 |
|
| 180 |
+ * @param addrVO |
|
| 181 |
+ * @throws Exception |
|
| 182 |
+ */ |
|
| 183 |
+ public void updateAddrsGrp(AddrVO addrVO) throws Exception{
|
|
| 184 |
+ update("AddrDAO.updateAddrsGrp", addrVO);
|
|
| 185 |
+ } |
|
| 186 |
+ |
|
| 187 |
+ /** |
|
| 188 |
+ * 주소록 등록 총 건수 및 정보 불러오기 |
|
| 189 |
+ * @param addrVO |
|
| 190 |
+ * @throws Exception |
|
| 191 |
+ */ |
|
| 192 |
+ public List<?> selectAddrTotCntInfByUserId(AddrVO addrVO) throws Exception{
|
|
| 193 |
+ |
|
| 194 |
+ return (List<?>) list("AddrDAO.selectAddrTotCntInfByUserId", addrVO);
|
|
| 195 |
+ } |
|
| 196 |
+ |
|
| 197 |
+ public int insertAddrList(List<AddrVO> addrList) throws Exception{
|
|
| 198 |
+ |
|
| 199 |
+ return update("AddrDAO.insertAddrList", addrList);
|
|
| 200 |
+ } |
|
| 201 |
+ |
|
| 202 |
+ public int selectDuplAddrCnt(AddrVO addrVO) throws Exception{
|
|
| 203 |
+ return (Integer)select("AddrDAO.selectDuplAddrCnt", addrVO);
|
|
| 204 |
+ } |
|
| 205 |
+ |
|
| 206 |
+ |
|
| 207 |
+ /** |
|
| 208 |
+ * 주소록 한 그룹에 속한 주소록의 전화번호 조회(중복체크용도) |
|
| 209 |
+ * @param addrVO |
|
| 210 |
+ * @return |
|
| 211 |
+ * @throws Exception |
|
| 212 |
+ */ |
|
| 213 |
+ @SuppressWarnings("unchecked")
|
|
| 214 |
+ public List<AddrVO> selectPhoneNumInAddrGroup(AddrVO addrVO) throws Exception{
|
|
| 215 |
+ return (List<AddrVO>) list("AddrDAO.selectPhoneNumInAddrGroup", addrVO);
|
|
| 216 |
+ } |
|
| 217 |
+ |
|
| 218 |
+ public void insertCopyAddrs(AddrVO addrVO) throws Exception{
|
|
| 219 |
+ insert("AddrDAO.insertCopyAddrs", addrVO);
|
|
| 220 |
+ } |
|
| 221 |
+ |
|
| 222 |
+ /** |
|
| 223 |
+ * 선택한 주소록 문자전송 화면으로 보내기 |
|
| 224 |
+ * @param addrVO |
|
| 225 |
+ * @return |
|
| 226 |
+ * @throws Exception |
|
| 227 |
+ */ |
|
| 228 |
+ @SuppressWarnings("unchecked")
|
|
| 229 |
+ public List<AddrVO> selectAddrDataList(AddrVO addrVO) throws Exception{
|
|
| 230 |
+ return (List<AddrVO>) list("AddrDAO.selectAddrDataList", addrVO);
|
|
| 231 |
+ } |
|
| 232 |
+ |
|
| 233 |
+ // 주소록 그룹별 중복 연락처 삭제 |
|
| 234 |
+ public int deleteAddrDupliList(AddrVO addrVO) throws Exception {
|
|
| 235 |
+ return delete("AddrDAO.deleteAddrDupliList", addrVO);
|
|
| 236 |
+ } |
|
| 237 |
+ |
|
| 238 |
+ // 주소록 그룹별 중복 연락처 삭제 |
|
| 239 |
+ public int deleteAddrDupliListByGrpnm(AddrVO addrVO) throws Exception {
|
|
| 240 |
+ return delete("AddrDAO.deleteAddrDupliListByGrpnm", addrVO);
|
|
| 241 |
+ } |
|
| 242 |
+ |
|
| 243 |
+ // 주소록 전체 중복 연락처 중 한개만 남기고 삭제 |
|
| 244 |
+ public int deleteAddrDupliListByAll(AddrVO addrVO) throws Exception {
|
|
| 245 |
+ return delete("AddrDAO.deleteAddrDupliListByAll", addrVO);
|
|
| 246 |
+ } |
|
| 247 |
+ |
|
| 248 |
+ // 주소록 그룹별 중복 연락처 리스트 불러오기 |
|
| 249 |
+ @SuppressWarnings("unchecked")
|
|
| 250 |
+ public List<AddrVO> selectAddrDupliList(AddrVO addrVO) throws Exception{
|
|
| 251 |
+ return (List<AddrVO>) list("AddrDAO.selectAddrDupliList", addrVO);
|
|
| 252 |
+ } |
|
| 253 |
+ |
|
| 254 |
+ @SuppressWarnings("unchecked")
|
|
| 255 |
+ public List<AddrVO> selectAddrDupliListByGrpnm(AddrVO addrVO) throws Exception{
|
|
| 256 |
+ return (List<AddrVO>) list("AddrDAO.selectAddrDupliListByGrpnm", addrVO);
|
|
| 257 |
+ } |
|
| 258 |
+ |
|
| 259 |
+ // 주소록 전체 중복 연락처 수 |
|
| 260 |
+ public int selectAddrDupliListByAllCnt(AddrVO addrVO) throws Exception{
|
|
| 261 |
+ return (Integer)select("AddrDAO.selectAddrDupliListByAllCnt", addrVO);
|
|
| 262 |
+ } |
|
| 263 |
+ |
|
| 264 |
+ // 주소록 전체 중복 연락처 목록 |
|
| 265 |
+ @SuppressWarnings("unchecked")
|
|
| 266 |
+ public List<AddrVO> selectAddrDupliListByAll(AddrVO addrVO) throws Exception{
|
|
| 267 |
+ return (List<AddrVO>) list("AddrDAO.selectAddrDupliListByAll", addrVO);
|
|
| 268 |
+ } |
|
| 269 |
+ |
|
| 270 |
+ // TEMP 주소록 중복 연락처 목록 |
|
| 271 |
+ @SuppressWarnings("unchecked")
|
|
| 272 |
+ public List<AddrVO> selectTempAddrDupliList(AddrVO addrVO) throws Exception{
|
|
| 273 |
+ return (List<AddrVO>) list("AddrDAO.selectTempAddrDupliList", addrVO);
|
|
| 274 |
+ } |
|
| 275 |
+ |
|
| 276 |
+ // TEMP 주소록 삭제 |
|
| 277 |
+ public int deleteTempAddr(AddrVO addrVO) throws Exception {
|
|
| 278 |
+ return delete("AddrDAO.deleteTempAddr", addrVO);
|
|
| 279 |
+ } |
|
| 280 |
+ |
|
| 281 |
+ // TEMP 주소록 대량등록 |
|
| 282 |
+ public int insertTempAddrList(List<AddrVO> addrList) throws Exception{
|
|
| 283 |
+ return update("AddrDAO.insertTempAddrList", addrList);
|
|
| 284 |
+ } |
|
| 285 |
+ |
|
| 286 |
+ // 주소록 대량등록 By Temp 주소록 |
|
| 287 |
+ public int insertAddrByTempAddr(AddrVO addrVO) throws Exception {
|
|
| 288 |
+ return update("AddrDAO.insertAddrByTempAddr", addrVO);
|
|
| 289 |
+ } |
|
| 290 |
+ |
|
| 291 |
+ public int getAddrCount(AddrVO addrVO) {
|
|
| 292 |
+ return (Integer)select("AddrDAO.getAddrCount", addrVO);
|
|
| 293 |
+ } |
|
| 294 |
+ |
|
| 295 |
+ |
|
| 296 |
+} |
--- src/main/java/itn/let/mjo/addr/service/impl/AddrGroupDAO.java
+++ src/main/java/itn/let/mjo/addr/service/impl/AddrGroupDAO.java
... | ... | @@ -1,120 +1,124 @@ |
| 1 |
-package itn.let.mjo.addr.service.impl; |
|
| 2 |
- |
|
| 3 |
-import java.util.List; |
|
| 4 |
- |
|
| 5 |
-import org.springframework.stereotype.Repository; |
|
| 6 |
- |
|
| 7 |
-import egovframework.rte.psl.dataaccess.EgovAbstractDAO; |
|
| 8 |
-import itn.let.mjo.addr.service.AddrGroupVO; |
|
| 9 |
- |
|
| 10 |
-/** |
|
| 11 |
- * 주소록 관리를 위한 데이터 접근 클래스 |
|
| 12 |
- * @author ITN |
|
| 13 |
- * @since 2021.04.08 |
|
| 14 |
- * @version 1.0 |
|
| 15 |
- * @see |
|
| 16 |
- * |
|
| 17 |
- * <pre> |
|
| 18 |
- * << 개정이력(Modification Information) >> |
|
| 19 |
- * 수정일 수정자 수정내용 |
|
| 20 |
- * ------- -------- --------------------------- |
|
| 21 |
- * 2021.04.08 ITN 최초 생성 |
|
| 22 |
- * </pre> |
|
| 23 |
- */ |
|
| 24 |
-@Repository("AddrGroupDAO")
|
|
| 25 |
-public class AddrGroupDAO extends EgovAbstractDAO {
|
|
| 26 |
- |
|
| 27 |
- /** |
|
| 28 |
- * 주소록 그룹 목록 |
|
| 29 |
- * @param addrGroupVO |
|
| 30 |
- * @return |
|
| 31 |
- * @throws Exception |
|
| 32 |
- */ |
|
| 33 |
- @SuppressWarnings("unchecked")
|
|
| 34 |
- public List<AddrGroupVO> selectAddrGroupList(AddrGroupVO addrGroupVO) throws Exception {
|
|
| 35 |
- return (List<AddrGroupVO>) list("AddrGroupDAO.selectAddrGroupList", addrGroupVO);
|
|
| 36 |
- } |
|
| 37 |
- |
|
| 38 |
- /** |
|
| 39 |
- * 주소록 그룹 상세보기 |
|
| 40 |
- * @param addrGroupVO |
|
| 41 |
- * @return |
|
| 42 |
- * @throws Exception |
|
| 43 |
- */ |
|
| 44 |
- public AddrGroupVO selectAddrGroupDetail(AddrGroupVO addrGroupVO) throws Exception {
|
|
| 45 |
- return (AddrGroupVO) select("AddrGroupDAO.selectAddrGroupDetail", addrGroupVO);
|
|
| 46 |
- } |
|
| 47 |
- |
|
| 48 |
- // 주소록 그룹 카운트 조회(전체) |
|
| 49 |
- public AddrGroupVO selectAddrGroupTotCnt(AddrGroupVO addrGroupVO) throws Exception {
|
|
| 50 |
- return (AddrGroupVO) select("AddrGroupDAO.selectAddrGroupTotCnt", addrGroupVO);
|
|
| 51 |
- } |
|
| 52 |
- |
|
| 53 |
- // 주소록 그룹 카운트 조회(그룹미지정) |
|
| 54 |
- public AddrGroupVO selectAddrGroupNogrpCnt(AddrGroupVO addrGroupVO) throws Exception {
|
|
| 55 |
- return (AddrGroupVO) select("AddrGroupDAO.selectAddrGroupNogrpCnt", addrGroupVO);
|
|
| 56 |
- } |
|
| 57 |
- |
|
| 58 |
- // 주소록 그룹 카운트 조회(자주보내는 번호) |
|
| 59 |
- public AddrGroupVO selectAddrGroupBookmarkCnt(AddrGroupVO addrGroupVO) throws Exception {
|
|
| 60 |
- return (AddrGroupVO) select("AddrGroupDAO.selectAddrGroupBookmarkCnt", addrGroupVO);
|
|
| 61 |
- } |
|
| 62 |
- |
|
| 63 |
- /** |
|
| 64 |
- * 주소록 그룹 등록 |
|
| 65 |
- * @param addrGroupVO |
|
| 66 |
- * @throws Exception |
|
| 67 |
- */ |
|
| 68 |
- public String insertAddrGroup(AddrGroupVO addrGroupVO) throws Exception {
|
|
| 69 |
- return (String) insert("AddrGroupDAO.insertAddrGroup", addrGroupVO);
|
|
| 70 |
- } |
|
| 71 |
- |
|
| 72 |
- |
|
| 73 |
- /** |
|
| 74 |
- * 주소록 그룹 수정 |
|
| 75 |
- * @param addrGroupVO |
|
| 76 |
- * @return |
|
| 77 |
- * @throws Exception |
|
| 78 |
- */ |
|
| 79 |
- public int updateAddrGroup(AddrGroupVO addrGroupVO) throws Exception {
|
|
| 80 |
- return update("AddrGroupDAO.updateAddrGroup", addrGroupVO);
|
|
| 81 |
- } |
|
| 82 |
- |
|
| 83 |
- /** |
|
| 84 |
- * 주소록 그룹 삭제 |
|
| 85 |
- * @param addrGroupVO |
|
| 86 |
- * @return |
|
| 87 |
- * @throws Exception |
|
| 88 |
- */ |
|
| 89 |
- public int deleteAddrGroup(AddrGroupVO addrGroupVO) throws Exception {
|
|
| 90 |
- return delete("AddrGroupDAO.deleteAddrGroup", addrGroupVO);
|
|
| 91 |
- } |
|
| 92 |
- |
|
| 93 |
- /** |
|
| 94 |
- * 주소록 그룹 삭제 |
|
| 95 |
- * @param addrGroupVO |
|
| 96 |
- * @return |
|
| 97 |
- * @throws Exception |
|
| 98 |
- */ |
|
| 99 |
- public int deleteAddrGroupByAdmin(AddrGroupVO addrGroupVO) throws Exception {
|
|
| 100 |
- return delete("AddrGroupDAO.deleteAddrGroupByAdmin", addrGroupVO);
|
|
| 101 |
- } |
|
| 102 |
- |
|
| 103 |
- /** |
|
| 104 |
- * 주소록그룹명 중복체크 |
|
| 105 |
- * @param addrGroupVO |
|
| 106 |
- * @return |
|
| 107 |
- */ |
|
| 108 |
- public int selectDuplAddrGroupCnt(AddrGroupVO addrGroupVO) throws Exception{
|
|
| 109 |
- return (Integer)select("AddrGroupDAO.selectDuplAddrGroupCnt", addrGroupVO);
|
|
| 110 |
- } |
|
| 111 |
- |
|
| 112 |
- /** |
|
| 113 |
- * 주소록 그룹 다음 순서번호 확인 |
|
| 114 |
- * @param addrGroupVO |
|
| 115 |
- * @return |
|
| 116 |
- */ |
|
| 117 |
- public int selectMaxOrderNumber(AddrGroupVO addrGroupVO) throws Exception{
|
|
| 118 |
- return (Integer)select("AddrGroupDAO.selectMaxOrderNumber", addrGroupVO);
|
|
| 119 |
- } |
|
| 120 |
-} |
|
| 1 |
+package itn.let.mjo.addr.service.impl; |
|
| 2 |
+ |
|
| 3 |
+import java.util.List; |
|
| 4 |
+ |
|
| 5 |
+import org.springframework.stereotype.Repository; |
|
| 6 |
+ |
|
| 7 |
+import egovframework.rte.psl.dataaccess.EgovAbstractDAO; |
|
| 8 |
+import itn.let.mjo.addr.service.AddrGroupVO; |
|
| 9 |
+ |
|
| 10 |
+/** |
|
| 11 |
+ * 주소록 관리를 위한 데이터 접근 클래스 |
|
| 12 |
+ * @author ITN |
|
| 13 |
+ * @since 2021.04.08 |
|
| 14 |
+ * @version 1.0 |
|
| 15 |
+ * @see |
|
| 16 |
+ * |
|
| 17 |
+ * <pre> |
|
| 18 |
+ * << 개정이력(Modification Information) >> |
|
| 19 |
+ * 수정일 수정자 수정내용 |
|
| 20 |
+ * ------- -------- --------------------------- |
|
| 21 |
+ * 2021.04.08 ITN 최초 생성 |
|
| 22 |
+ * </pre> |
|
| 23 |
+ */ |
|
| 24 |
+@Repository("AddrGroupDAO")
|
|
| 25 |
+public class AddrGroupDAO extends EgovAbstractDAO {
|
|
| 26 |
+ |
|
| 27 |
+ /** |
|
| 28 |
+ * 주소록 그룹 목록 |
|
| 29 |
+ * @param addrGroupVO |
|
| 30 |
+ * @return |
|
| 31 |
+ * @throws Exception |
|
| 32 |
+ */ |
|
| 33 |
+ @SuppressWarnings("unchecked")
|
|
| 34 |
+ public List<AddrGroupVO> selectAddrGroupList(AddrGroupVO addrGroupVO) throws Exception {
|
|
| 35 |
+ return (List<AddrGroupVO>) list("AddrGroupDAO.selectAddrGroupList", addrGroupVO);
|
|
| 36 |
+ } |
|
| 37 |
+ |
|
| 38 |
+ /** |
|
| 39 |
+ * 주소록 그룹 상세보기 |
|
| 40 |
+ * @param addrGroupVO |
|
| 41 |
+ * @return |
|
| 42 |
+ * @throws Exception |
|
| 43 |
+ */ |
|
| 44 |
+ public AddrGroupVO selectAddrGroupDetail(AddrGroupVO addrGroupVO) throws Exception {
|
|
| 45 |
+ return (AddrGroupVO) select("AddrGroupDAO.selectAddrGroupDetail", addrGroupVO);
|
|
| 46 |
+ } |
|
| 47 |
+ |
|
| 48 |
+ // 주소록 그룹 카운트 조회(전체) |
|
| 49 |
+ public AddrGroupVO selectAddrGroupTotCnt(AddrGroupVO addrGroupVO) throws Exception {
|
|
| 50 |
+ return (AddrGroupVO) select("AddrGroupDAO.selectAddrGroupTotCnt", addrGroupVO);
|
|
| 51 |
+ } |
|
| 52 |
+ |
|
| 53 |
+ // 주소록 그룹 카운트 조회(그룹미지정) |
|
| 54 |
+ public AddrGroupVO selectAddrGroupNogrpCnt(AddrGroupVO addrGroupVO) throws Exception {
|
|
| 55 |
+ return (AddrGroupVO) select("AddrGroupDAO.selectAddrGroupNogrpCnt", addrGroupVO);
|
|
| 56 |
+ } |
|
| 57 |
+ |
|
| 58 |
+ // 주소록 그룹 카운트 조회(자주보내는 번호) |
|
| 59 |
+ public AddrGroupVO selectAddrGroupBookmarkCnt(AddrGroupVO addrGroupVO) throws Exception {
|
|
| 60 |
+ return (AddrGroupVO) select("AddrGroupDAO.selectAddrGroupBookmarkCnt", addrGroupVO);
|
|
| 61 |
+ } |
|
| 62 |
+ |
|
| 63 |
+ /** |
|
| 64 |
+ * 주소록 그룹 등록 |
|
| 65 |
+ * @param addrGroupVO |
|
| 66 |
+ * @throws Exception |
|
| 67 |
+ */ |
|
| 68 |
+ public String insertAddrGroup(AddrGroupVO addrGroupVO) throws Exception {
|
|
| 69 |
+ return (String) insert("AddrGroupDAO.insertAddrGroup", addrGroupVO);
|
|
| 70 |
+ } |
|
| 71 |
+ |
|
| 72 |
+ |
|
| 73 |
+ /** |
|
| 74 |
+ * 주소록 그룹 수정 |
|
| 75 |
+ * @param addrGroupVO |
|
| 76 |
+ * @return |
|
| 77 |
+ * @throws Exception |
|
| 78 |
+ */ |
|
| 79 |
+ public int updateAddrGroup(AddrGroupVO addrGroupVO) throws Exception {
|
|
| 80 |
+ return update("AddrGroupDAO.updateAddrGroup", addrGroupVO);
|
|
| 81 |
+ } |
|
| 82 |
+ |
|
| 83 |
+ /** |
|
| 84 |
+ * 주소록 그룹 삭제 |
|
| 85 |
+ * @param addrGroupVO |
|
| 86 |
+ * @return |
|
| 87 |
+ * @throws Exception |
|
| 88 |
+ */ |
|
| 89 |
+ public int deleteAddrGroup(AddrGroupVO addrGroupVO) throws Exception {
|
|
| 90 |
+ return delete("AddrGroupDAO.deleteAddrGroup", addrGroupVO);
|
|
| 91 |
+ } |
|
| 92 |
+ |
|
| 93 |
+ /** |
|
| 94 |
+ * 주소록 그룹 삭제 |
|
| 95 |
+ * @param addrGroupVO |
|
| 96 |
+ * @return |
|
| 97 |
+ * @throws Exception |
|
| 98 |
+ */ |
|
| 99 |
+ public int deleteAddrGroupByAdmin(AddrGroupVO addrGroupVO) throws Exception {
|
|
| 100 |
+ return delete("AddrGroupDAO.deleteAddrGroupByAdmin", addrGroupVO);
|
|
| 101 |
+ } |
|
| 102 |
+ |
|
| 103 |
+ /** |
|
| 104 |
+ * 주소록그룹명 중복체크 |
|
| 105 |
+ * @param addrGroupVO |
|
| 106 |
+ * @return |
|
| 107 |
+ */ |
|
| 108 |
+ public int selectDuplAddrGroupCnt(AddrGroupVO addrGroupVO) throws Exception{
|
|
| 109 |
+ return (Integer)select("AddrGroupDAO.selectDuplAddrGroupCnt", addrGroupVO);
|
|
| 110 |
+ } |
|
| 111 |
+ |
|
| 112 |
+ /** |
|
| 113 |
+ * 주소록 그룹 다음 순서번호 확인 |
|
| 114 |
+ * @param addrGroupVO |
|
| 115 |
+ * @return |
|
| 116 |
+ */ |
|
| 117 |
+ public int selectMaxOrderNumber(AddrGroupVO addrGroupVO) throws Exception{
|
|
| 118 |
+ return (Integer)select("AddrGroupDAO.selectMaxOrderNumber", addrGroupVO);
|
|
| 119 |
+ } |
|
| 120 |
+ |
|
| 121 |
+ public void deleteAddrGroup_advc(AddrGroupVO addrGroupVO) {
|
|
| 122 |
+ update("AddrGroupDAO.deleteAddrGroup_advc", addrGroupVO);
|
|
| 123 |
+ } |
|
| 124 |
+} |
--- src/main/java/itn/let/mjo/addr/service/impl/AddrServiceImpl.java
+++ src/main/java/itn/let/mjo/addr/service/impl/AddrServiceImpl.java
... | ... | @@ -1,657 +1,634 @@ |
| 1 |
-package itn.let.mjo.addr.service.impl; |
|
| 2 |
- |
|
| 3 |
-import java.nio.charset.Charset; |
|
| 4 |
-import java.text.SimpleDateFormat; |
|
| 5 |
-import java.time.LocalDateTime; |
|
| 6 |
-import java.time.format.DateTimeFormatter; |
|
| 7 |
-import java.util.ArrayList; |
|
| 8 |
-import java.util.Date; |
|
| 9 |
-import java.util.List; |
|
| 10 |
-import java.util.Locale; |
|
| 11 |
-import java.util.concurrent.Callable; |
|
| 12 |
-import java.util.concurrent.ExecutorService; |
|
| 13 |
-import java.util.concurrent.Executors; |
|
| 14 |
-import java.util.concurrent.Future; |
|
| 15 |
-import java.util.concurrent.TimeUnit; |
|
| 16 |
-import java.util.concurrent.atomic.AtomicInteger; |
|
| 17 |
-import java.util.regex.Matcher; |
|
| 18 |
-import java.util.regex.Pattern; |
|
| 19 |
- |
|
| 20 |
-import javax.annotation.Resource; |
|
| 21 |
- |
|
| 22 |
-import org.springframework.http.HttpStatus; |
|
| 23 |
-import org.springframework.stereotype.Service; |
|
| 24 |
- |
|
| 25 |
-import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; |
|
| 26 |
-import egovframework.rte.fdl.idgnr.EgovIdGnrService; |
|
| 27 |
-import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; |
|
| 28 |
-import itn.com.cmm.LoginVO; |
|
| 29 |
-import itn.let.mail.service.StatusResponse; |
|
| 30 |
-import itn.let.mjo.addr.service.AddrGroupVO; |
|
| 31 |
-import itn.let.mjo.addr.service.AddrService; |
|
| 32 |
-import itn.let.mjo.addr.service.AddrTransHistVO; |
|
| 33 |
-import itn.let.mjo.addr.service.AddrVO; |
|
| 34 |
- |
|
| 35 |
-/** |
|
| 36 |
- * 주소록 관리를 위한 서비스 구현 클래스 |
|
| 37 |
- * @author ITN |
|
| 38 |
- * @since 2021.04.08 |
|
| 39 |
- * @version 1.0 |
|
| 40 |
- * @see |
|
| 41 |
- * |
|
| 42 |
- * <pre> |
|
| 43 |
- * << 개정이력(Modification Information) >> |
|
| 44 |
- * 수정일 수정자 수정내용 |
|
| 45 |
- * ------- -------- --------------------------- |
|
| 46 |
- * 2021.04.08 ITN 최초 생성 |
|
| 47 |
- * </pre> |
|
| 48 |
- */ |
|
| 49 |
-@Service("AddrService")
|
|
| 50 |
-public class AddrServiceImpl extends EgovAbstractServiceImpl implements AddrService {
|
|
| 51 |
- |
|
| 52 |
- @Resource(name = "AddrDAO") |
|
| 53 |
- private AddrDAO addrDAO; |
|
| 54 |
- |
|
| 55 |
- @Resource(name = "AddrGroupDAO") |
|
| 56 |
- private AddrGroupDAO addrGroupDAO; |
|
| 57 |
- |
|
| 58 |
- @Resource(name = "AddrTransHistDAO") |
|
| 59 |
- private AddrTransHistDAO addrTransHistDAO; |
|
| 60 |
- |
|
| 61 |
- @Resource(name = "egovAddrTransHistIdGnrService") |
|
| 62 |
- private EgovIdGnrService idgenAddrTransHistId; |
|
| 63 |
- |
|
| 64 |
- |
|
| 65 |
- |
|
| 66 |
- private static final String PHONE_REGEX = "^(01[016789]-?\\d{3,4}-?\\d{4})$";
|
|
| 67 |
- private static final Pattern PHONE_PATTERN = Pattern.compile(PHONE_REGEX); |
|
| 68 |
- private static final Charset EUC_KR = Charset.forName("EUC-KR");
|
|
| 69 |
-// private static final int MAX_ADDR_CNT = 500000; |
|
| 70 |
- //임시 500만개 |
|
| 71 |
- private static final int MAX_SINGLE_ENTRY_CNT = 350000; |
|
| 72 |
- private static final int MAX_ADDR_CNT = 10000000; |
|
| 73 |
- private static final int BATCH_SIZE = 5000; |
|
| 74 |
- private static final int THREAD_COUNT = 3; |
|
| 75 |
- |
|
| 76 |
- |
|
| 77 |
- public List<AddrVO> selectAddrList(AddrVO addrVO) throws Exception {
|
|
| 78 |
- return addrDAO.selectAddrList(addrVO); |
|
| 79 |
- } |
|
| 80 |
- |
|
| 81 |
- @Override |
|
| 82 |
- public int selectAddrListCount(AddrVO addrVO) throws Exception {
|
|
| 83 |
- return addrDAO.selectAddrListCount(addrVO); |
|
| 84 |
- } |
|
| 85 |
- |
|
| 86 |
- public List<AddrVO> selectAddrNewList(AddrVO addrVO) throws Exception {
|
|
| 87 |
- return addrDAO.selectAddrNewList(addrVO); |
|
| 88 |
- } |
|
| 89 |
- |
|
| 90 |
- public AddrVO selectAddrDetail(AddrVO addrVO) throws Exception {
|
|
| 91 |
- return addrDAO.selectAddrDetail(addrVO); |
|
| 92 |
- } |
|
| 93 |
- |
|
| 94 |
- public void insertAddr(AddrVO addrVO) throws Exception {
|
|
| 95 |
- addrDAO.insertAddr(addrVO); |
|
| 96 |
- } |
|
| 97 |
- |
|
| 98 |
- public int updateAddr(AddrVO addrVO) throws Exception{
|
|
| 99 |
- return addrDAO.updateAddr(addrVO); |
|
| 100 |
- } |
|
| 101 |
- |
|
| 102 |
- public int updateAddrGrp(AddrVO addrVO) throws Exception{
|
|
| 103 |
- return addrDAO.updateAddrGrp(addrVO); |
|
| 104 |
- } |
|
| 105 |
- |
|
| 106 |
- public int updateMemoAddr(AddrVO addrVO) throws Exception{
|
|
| 107 |
- return addrDAO.updateMemoAddr(addrVO); |
|
| 108 |
- } |
|
| 109 |
- |
|
| 110 |
- public int updateAddrByAdmin(AddrVO addrVO) throws Exception{
|
|
| 111 |
- return addrDAO.updateAddrByAdmin(addrVO); |
|
| 112 |
- } |
|
| 113 |
- |
|
| 114 |
- public int deleteAddr(AddrVO addrVO) throws Exception{
|
|
| 115 |
- return addrDAO.deleteAddr(addrVO); |
|
| 116 |
- } |
|
| 117 |
- |
|
| 118 |
- public int deleteAddrByAdmin(AddrVO addrVO) throws Exception{
|
|
| 119 |
- return addrDAO.deleteAddrByAdmin(addrVO); |
|
| 120 |
- } |
|
| 121 |
- |
|
| 122 |
- public int deleteAddrByAdminAll(AddrVO addrVO) throws Exception{
|
|
| 123 |
- int rtnCount = 0; |
|
| 124 |
- |
|
| 125 |
- for (String addrId : addrVO.getAddrIds()) {
|
|
| 126 |
- addrVO.setAddrId(addrId); |
|
| 127 |
- rtnCount += addrDAO.deleteAddrByAdmin(addrVO); |
|
| 128 |
- } |
|
| 129 |
- |
|
| 130 |
- return rtnCount; |
|
| 131 |
- } |
|
| 132 |
- |
|
| 133 |
- public int deleteAddrByAdminByGrpid(AddrVO addrVO) throws Exception{
|
|
| 134 |
- return addrDAO.deleteAddrByAdminByGrpid(addrVO); |
|
| 135 |
- } |
|
| 136 |
- |
|
| 137 |
- public int deleteAddrByAdminByGrpidAll(AddrVO addrVO) throws Exception{
|
|
| 138 |
- int rtnCount = 0; |
|
| 139 |
- |
|
| 140 |
- for (String addrGrpId : addrVO.getAddrGrpIds()) {
|
|
| 141 |
- addrVO.setAddrGrpId(addrGrpId); |
|
| 142 |
- rtnCount += addrDAO.deleteAddrByAdminByGrpid(addrVO); |
|
| 143 |
- } |
|
| 144 |
- |
|
| 145 |
- return rtnCount; |
|
| 146 |
- } |
|
| 147 |
- |
|
| 148 |
- @Override |
|
| 149 |
- public List<AddrVO> selectAddrBasicGrpList(AddrVO addrVO) throws Exception {
|
|
| 150 |
- return addrDAO.selectAddrBasicGrpList(addrVO); |
|
| 151 |
- } |
|
| 152 |
- |
|
| 153 |
- @Override |
|
| 154 |
- public int selectAddrTotalCount(AddrVO addrVO) throws Exception {
|
|
| 155 |
- return addrDAO.selectAddrTotalCount(addrVO); |
|
| 156 |
- } |
|
| 157 |
- |
|
| 158 |
- @Override |
|
| 159 |
- public void insertCopyAddr(AddrVO addrVO) throws Exception {
|
|
| 160 |
- addrDAO.insertCopyAddr(addrVO); |
|
| 161 |
- } |
|
| 162 |
- |
|
| 163 |
- @Override |
|
| 164 |
- public String updateAddrAnotherMember(AddrVO addrVO, AddrGroupVO addrGroupVO, |
|
| 165 |
- AddrTransHistVO addrTransHistVO) throws Exception {
|
|
| 166 |
- |
|
| 167 |
- SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "HHmmss", Locale.KOREA ); |
|
| 168 |
- Date currentTime = new Date (); |
|
| 169 |
- String mTime = mSimpleDateFormat.format ( currentTime ); |
|
| 170 |
- |
|
| 171 |
- LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 172 |
- addrVO.setMberId(user.getId()); |
|
| 173 |
- addrTransHistVO.setSendMberId(user.getId()); |
|
| 174 |
- |
|
| 175 |
- String successCd =""; |
|
| 176 |
- int listSize = addrVO.getSendGrps().length; |
|
| 177 |
- |
|
| 178 |
- for(int i=0; i<listSize; i++ ) {
|
|
| 179 |
- |
|
| 180 |
- try {
|
|
| 181 |
- |
|
| 182 |
- /** |
|
| 183 |
- * 1. 이전할 주소록그룹명_시분초 로 받는 회원의 새 주소록 그룹을 만듦 |
|
| 184 |
- */ |
|
| 185 |
- //전송할 그룹의 id를 검색해 올 아이디로 set |
|
| 186 |
- addrGroupVO.setAddrGrpId(addrVO.getSendGrps()[i]); |
|
| 187 |
- |
|
| 188 |
- //vo에 db조회해온 상세데이터를 set함 - 주소록명 가지고오기 위함 |
|
| 189 |
- addrGroupVO = addrGroupDAO.selectAddrGroupDetail(addrGroupVO); |
|
| 190 |
- |
|
| 191 |
- |
|
| 192 |
- |
|
| 193 |
- AddrGroupVO recvAddrGroupVO = new AddrGroupVO(); |
|
| 194 |
- |
|
| 195 |
- //보낼 주소록그룹의 정보를 세팅 |
|
| 196 |
- recvAddrGroupVO.setMberId(addrTransHistVO.getRecvMberId()); |
|
| 197 |
- //기존 그룹명_(시분초) 로 새로운 그룹의 이름을 정함 |
|
| 198 |
- recvAddrGroupVO.setAddrGrpNm(addrGroupVO.getAddrGrpNm()+"_"+mTime); |
|
| 199 |
- |
|
| 200 |
- String newGrpId = addrGroupDAO.insertAddrGroup(recvAddrGroupVO); |
|
| 201 |
- |
|
| 202 |
- /** |
|
| 203 |
- * 2. 주소록그룹ID를 가진 주소록들을 가져와 받는 유저의 주소록 insert |
|
| 204 |
- */ |
|
| 205 |
- |
|
| 206 |
- AddrVO recvAddrVO = new AddrVO(); |
|
| 207 |
- //보낼 주소록 정보를 set |
|
| 208 |
- recvAddrVO.setMberId(addrVO.getMberId()); |
|
| 209 |
- recvAddrVO.setAddrGrpId(addrVO.getSendGrps()[i]); |
|
| 210 |
- recvAddrVO.setRecordCountPerPage(100000); |
|
| 211 |
- recvAddrVO.setFirstIndex(0); |
|
| 212 |
- |
|
| 213 |
- List<AddrVO> recvAddrList = addrDAO.selectAddrList(recvAddrVO); |
|
| 214 |
- |
|
| 215 |
- for(int j=0; j<recvAddrList.size(); j++) {
|
|
| 216 |
- try {
|
|
| 217 |
- recvAddrList.get(j).setRecvStatus("W");
|
|
| 218 |
- |
|
| 219 |
- recvAddrList.get(j).setMberId(addrTransHistVO.getRecvMberId()); |
|
| 220 |
- //새로만든 그룹의 아이디를 세팅 |
|
| 221 |
- recvAddrList.get(j).setAddrGrpId(newGrpId); |
|
| 222 |
- addrDAO.insertAddr(recvAddrList.get(j)); |
|
| 223 |
- |
|
| 224 |
- }catch(Exception e) {
|
|
| 225 |
- e.printStackTrace(); |
|
| 226 |
- } |
|
| 227 |
- |
|
| 228 |
- } |
|
| 229 |
- |
|
| 230 |
- /** |
|
| 231 |
- * 3. 주소록 이전 히스토리 테이블에 등록 |
|
| 232 |
- */ |
|
| 233 |
- addrTransHistVO.setAddrGrpId(newGrpId); |
|
| 234 |
- addrTransHistVO.setAddrTransHistId(idgenAddrTransHistId.getNextStringId()); |
|
| 235 |
- addrTransHistVO.setSendAddrCnt(recvAddrList.size()); |
|
| 236 |
- |
|
| 237 |
- addrTransHistDAO.insertAddrTransHist(addrTransHistVO); |
|
| 238 |
- |
|
| 239 |
- if(i==0) successCd = "Y"; |
|
| 240 |
- if(i!=0) successCd += ",Y"; |
|
| 241 |
- |
|
| 242 |
- } catch(Exception e) {
|
|
| 243 |
- e.printStackTrace(); |
|
| 244 |
- |
|
| 245 |
- if(i==0) successCd = "N"; |
|
| 246 |
- if(i!=0) successCd += ",N"; |
|
| 247 |
- } |
|
| 248 |
- |
|
| 249 |
- } |
|
| 250 |
- |
|
| 251 |
- |
|
| 252 |
- |
|
| 253 |
- return successCd; |
|
| 254 |
- } |
|
| 255 |
- |
|
| 256 |
- //주소록 등록 총 건수 및 정보 불러오기 |
|
| 257 |
- public List<?> selectAddrTotCntInfByUserId(AddrVO addrVO) throws Exception{
|
|
| 258 |
- |
|
| 259 |
- return addrDAO.selectAddrTotCntInfByUserId(addrVO); |
|
| 260 |
- } |
|
| 261 |
- |
|
| 262 |
- //문자발송에서 수신자 리스트를 주소록에 등록하기 |
|
| 263 |
- public int insertAddrList(List<AddrVO> addrList) throws Exception{
|
|
| 264 |
- |
|
| 265 |
- return addrDAO.insertAddrList(addrList); |
|
| 266 |
- } |
|
| 267 |
- |
|
| 268 |
- @Override |
|
| 269 |
- public int selectDuplAddrCnt(AddrVO addrVO) throws Exception {
|
|
| 270 |
- return addrDAO.selectDuplAddrCnt(addrVO); |
|
| 271 |
- } |
|
| 272 |
- |
|
| 273 |
- //주소록 한 그룹에 속한 주소록의 전화번호 조회(중복체크용도) |
|
| 274 |
- public List<?> selectPhoneNumInAddrGroup(AddrVO addrVO) throws Exception{
|
|
| 275 |
- return addrDAO.selectPhoneNumInAddrGroup(addrVO); |
|
| 276 |
- } |
|
| 277 |
- |
|
| 278 |
- //선택한 주소록 문자전송 화면으로 보내기 |
|
| 279 |
- @Override |
|
| 280 |
- public List<AddrVO> selectAddrDataList(AddrVO addrVO) throws Exception {
|
|
| 281 |
- return addrDAO.selectAddrDataList(addrVO); |
|
| 282 |
- } |
|
| 283 |
- |
|
| 284 |
- // 주소록 그룹별 중복 연락처 삭제 |
|
| 285 |
- public int deleteAddrDupliList(AddrVO addrVO) throws Exception {
|
|
| 286 |
- int rtnCnt = 0; |
|
| 287 |
- |
|
| 288 |
- for (int i = 0; i < 20; i++) {
|
|
| 289 |
- // 주소록 그룹별 중복 연락처 목록 |
|
| 290 |
- List<AddrVO> addrDupliList = selectAddrDupliList(addrVO); |
|
| 291 |
- |
|
| 292 |
- if (addrDupliList.size() > 0) {
|
|
| 293 |
- rtnCnt += addrDAO.deleteAddrDupliList(addrVO); |
|
| 294 |
- } |
|
| 295 |
- else {
|
|
| 296 |
- break; |
|
| 297 |
- } |
|
| 298 |
- } |
|
| 299 |
- |
|
| 300 |
- return rtnCnt; |
|
| 301 |
- } |
|
| 302 |
- |
|
| 303 |
- // 주소록 그룹별 중복 연락처 삭제 |
|
| 304 |
- public int deleteAddrDupliListByGrpnm(AddrVO addrVO) throws Exception {
|
|
| 305 |
- int rtnCnt = 0; |
|
| 306 |
- |
|
| 307 |
- for (int i = 0; i < 20; i++) {
|
|
| 308 |
- // 주소록 그룹별 중복 연락처 목록 |
|
| 309 |
- List<AddrVO> addrDupliList = selectAddrDupliListByGrpnm(addrVO); |
|
| 310 |
- |
|
| 311 |
- if (addrDupliList.size() > 0) {
|
|
| 312 |
- rtnCnt += addrDAO.deleteAddrDupliListByGrpnm(addrVO); |
|
| 313 |
- } |
|
| 314 |
- else {
|
|
| 315 |
- break; |
|
| 316 |
- } |
|
| 317 |
- } |
|
| 318 |
- |
|
| 319 |
- return rtnCnt; |
|
| 320 |
- } |
|
| 321 |
- |
|
| 322 |
- // 주소록 전체 중복 연락처 중 한개만 남기고 삭제 |
|
| 323 |
- public int deleteAddrDupliListByAll(AddrVO addrVO) throws Exception {
|
|
| 324 |
- int rtnCnt = 0; |
|
| 325 |
- |
|
| 326 |
- for (int i = 0; i < 20; i++) {
|
|
| 327 |
- if (selectAddrDupliListByAllCnt(addrVO) > 0) {
|
|
| 328 |
- rtnCnt += addrDAO.deleteAddrDupliListByAll(addrVO); |
|
| 329 |
- } |
|
| 330 |
- else {
|
|
| 331 |
- break; |
|
| 332 |
- } |
|
| 333 |
- } |
|
| 334 |
- |
|
| 335 |
- return rtnCnt; |
|
| 336 |
- } |
|
| 337 |
- |
|
| 338 |
- |
|
| 339 |
- // 주소록 그룹별 중복 연락처 리스트 불러오기 |
|
| 340 |
- @Override |
|
| 341 |
- public List<AddrVO> selectAddrDupliList(AddrVO addrVO) throws Exception {
|
|
| 342 |
- return addrDAO.selectAddrDupliList(addrVO); |
|
| 343 |
- } |
|
| 344 |
- |
|
| 345 |
- // 주소록 그룹별 중복 연락처 리스트 불러오기 |
|
| 346 |
- @Override |
|
| 347 |
- public List<AddrVO> selectAddrDupliListByGrpnm(AddrVO addrVO) throws Exception {
|
|
| 348 |
- return addrDAO.selectAddrDupliListByGrpnm(addrVO); |
|
| 349 |
- } |
|
| 350 |
- |
|
| 351 |
- // 주소록 전체 중복 연락처 수 |
|
| 352 |
- @Override |
|
| 353 |
- public int selectAddrDupliListByAllCnt(AddrVO addrVO) throws Exception {
|
|
| 354 |
- return addrDAO.selectAddrDupliListByAllCnt(addrVO); |
|
| 355 |
- } |
|
| 356 |
- |
|
| 357 |
- // 주소록 전체 중복 연락처 목록 |
|
| 358 |
- @Override |
|
| 359 |
- public List<AddrVO> selectAddrDupliListByAll(AddrVO addrVO) throws Exception {
|
|
| 360 |
- return addrDAO.selectAddrDupliListByAll(addrVO); |
|
| 361 |
- } |
|
| 362 |
- |
|
| 363 |
- // TEMP 주소록 중복 연락처 목록 |
|
| 364 |
- @Override |
|
| 365 |
- public List<AddrVO> selectTempAddrDupliList(AddrVO addrVO) throws Exception {
|
|
| 366 |
- return addrDAO.selectTempAddrDupliList(addrVO); |
|
| 367 |
- } |
|
| 368 |
- |
|
| 369 |
- // TEMP 주소록 삭제 |
|
| 370 |
- public int deleteTempAddr(AddrVO addrVO) throws Exception{
|
|
| 371 |
- return addrDAO.deleteTempAddr(addrVO); |
|
| 372 |
- } |
|
| 373 |
- |
|
| 374 |
- // TEMP 주소록 대량등록 |
|
| 375 |
- public int insertTempAddrList(List<AddrVO> addrList) throws Exception{
|
|
| 376 |
- return addrDAO.insertTempAddrList(addrList); |
|
| 377 |
- } |
|
| 378 |
- |
|
| 379 |
- // 주소록 대량등록 By Temp 주소록 |
|
| 380 |
- public int insertAddrByTempAddr(AddrVO addrVO) throws Exception {
|
|
| 381 |
- return addrDAO.insertAddrByTempAddr(addrVO); |
|
| 382 |
- } |
|
| 383 |
- |
|
| 384 |
- // 주소록 대량등록 By Temp 주소록 All |
|
| 385 |
- public int insertAddrByTempAddrAll(List<AddrVO> addrList, AddrVO addrVO) throws Exception{
|
|
| 386 |
- int rtnVal = 0; |
|
| 387 |
- |
|
| 388 |
- // Step 1. TEMP 주소록 삭제 |
|
| 389 |
- deleteTempAddr(addrVO); |
|
| 390 |
- |
|
| 391 |
- // Step 2. TEMP 주소록 대량등록 |
|
| 392 |
- insertTempAddrList(addrList); |
|
| 393 |
- |
|
| 394 |
- // Step 3. 주소록 대량등록 By Temp 주소록 |
|
| 395 |
- rtnVal = insertAddrByTempAddr(addrVO); |
|
| 396 |
- |
|
| 397 |
- return rtnVal; |
|
| 398 |
- } |
|
| 399 |
- |
|
| 400 |
- @Override |
|
| 401 |
- public StatusResponse addrMassInsertByTempAjax_advc(List<AddrVO> addrListVO, String userId) throws Exception {
|
|
| 402 |
- |
|
| 403 |
- |
|
| 404 |
- |
|
| 405 |
- // data init |
|
| 406 |
- // For-each loop |
|
| 407 |
- for (AddrVO addr : addrListVO) { addr.setMberId(userId); }
|
|
| 408 |
- |
|
| 409 |
- |
|
| 410 |
- |
|
| 411 |
- if(addrListVO.size() > MAX_SINGLE_ENTRY_CNT) {
|
|
| 412 |
- return new StatusResponse( |
|
| 413 |
- HttpStatus.BAD_REQUEST |
|
| 414 |
- , "주소록은 한번에 100만개까지만 등록이 가능합니다." |
|
| 415 |
- , LocalDateTime.now() |
|
| 416 |
- ); |
|
| 417 |
- |
|
| 418 |
- } |
|
| 419 |
- // step1 현재 주소록 갯수 조회 |
|
| 420 |
- |
|
| 421 |
- //회원별 주소록 전체 갯수 조회 |
|
| 422 |
- int addrBefCnt = addrDAO.selectAddrTotalCount(addrListVO.get(0)); |
|
| 423 |
- int addrNewCnt = addrListVO.size(); //신규 추가할 주소록 갯수 |
|
| 424 |
- int sumAddrCnt = addrBefCnt + addrNewCnt; |
|
| 425 |
- |
|
| 426 |
- // step1-1 총 갯수가 (주소록 갯수 + 신규 주소록)50만건 체크 |
|
| 427 |
- if(sumAddrCnt > MAX_ADDR_CNT) {
|
|
| 428 |
- return new StatusResponse( |
|
| 429 |
- HttpStatus.BAD_REQUEST |
|
| 430 |
- , "주소록은 총 1000만개까지만 등록이 가능합니다." |
|
| 431 |
- , LocalDateTime.now() |
|
| 432 |
- ); |
|
| 433 |
- |
|
| 434 |
- } |
|
| 435 |
- |
|
| 436 |
- // step2 신규 주소록 생성 및 북마크 체크 |
|
| 437 |
- // => AddrGrpId |
|
| 438 |
- // |
|
| 439 |
- if ("NEW".equals(addrListVO.get(0).getAddrGrpId())) {
|
|
| 440 |
- |
|
| 441 |
- AddrGroupVO addrGroupVO = new AddrGroupVO(); |
|
| 442 |
- addrGroupVO.setMberId(userId); |
|
| 443 |
- addrGroupVO.setAddrGrpNm(addrListVO.get(0).getAddrGrpNm()); |
|
| 444 |
- // 정렬순서 |
|
| 445 |
- |
|
| 446 |
- int nextOrderNumber = addrGroupDAO.selectMaxOrderNumber(addrGroupVO); |
|
| 447 |
- addrGroupVO.setGrpOrder(nextOrderNumber); |
|
| 448 |
- |
|
| 449 |
- addrGroupDAO.insertAddrGroup(addrGroupVO); |
|
| 450 |
- |
|
| 451 |
- // 신규 추가한 그룹아이디 |
|
| 452 |
- for (AddrVO addr : addrListVO) { addr.setAddrGrpId(addrGroupVO.getAddrGrpId()); }
|
|
| 453 |
- |
|
| 454 |
- } |
|
| 455 |
- else if ("bookmark".equals(addrListVO.get(0).getAddrGrpId()))
|
|
| 456 |
- {
|
|
| 457 |
- for (AddrVO addr : addrListVO) { addr.setBookmark("Y"); addr.setAddrGrpId("0"); }
|
|
| 458 |
- } |
|
| 459 |
- else |
|
| 460 |
- {
|
|
| 461 |
- for (AddrVO addr : addrListVO) { addr.setBookmark("N"); }
|
|
| 462 |
- } |
|
| 463 |
- |
|
| 464 |
- // step4-1 true |
|
| 465 |
- // => 폰번호 빼고 바이트 체크해서 20byte만 짜르고 넣기 |
|
| 466 |
- // => 폰번호는 유효성 체크 하기 |
|
| 467 |
- |
|
| 468 |
- long startTime = System.currentTimeMillis(); |
|
| 469 |
- // 유효성 체크 및 하이픈 제거, 유효하지 않은 번호는 리스트에서 제거 |
|
| 470 |
- // 나머지 필드들 20byte (euc-kr) 체크 후 넘으면 자르기 |
|
| 471 |
- AtomicInteger invalid = new AtomicInteger(0); // 스레드-안전(thread-safe)하게 정수 값을 업데이트할 수 있는 기능을 제공 |
|
| 472 |
- addrListVO.removeIf(addr -> {
|
|
| 473 |
- String phoneNo = addr.getAddrPhoneNo(); |
|
| 474 |
-// phoneNo = phoneNo != null ? phoneNo.replaceAll("-", "") : "";
|
|
| 475 |
-// System.out.println("phoneNo : "+ phoneNo);
|
|
| 476 |
- if (isValidPhoneNumber(phoneNo)) {
|
|
| 477 |
- addr.setAddrPhoneNo(phoneNo); // 하이픈이 제거된 유효한 번호 설정 |
|
| 478 |
- trimFieldsBytes(addr); // 다른 필드들에 대한 20바이트 체크 및 자르기 |
|
| 479 |
- return false; // 유효한 번호는 제거하지 않음 |
|
| 480 |
- } else {
|
|
| 481 |
-// System.out.println(phoneNo + " is an invalid phone number. Removing from list."); |
|
| 482 |
- invalid.getAndIncrement(); // 유효하지 않은 번호 개수 증가 |
|
| 483 |
- return true; // 유효하지 않은 번호는 제거 |
|
| 484 |
- } |
|
| 485 |
- }); |
|
| 486 |
- |
|
| 487 |
- |
|
| 488 |
- long endTime = System.currentTimeMillis(); |
|
| 489 |
- double executionTime = (endTime - startTime) / 1000.0; |
|
| 490 |
- System.out.println(" number chk Execution time: " + executionTime + " seconds");
|
|
| 491 |
- |
|
| 492 |
- startTime = System.currentTimeMillis(); |
|
| 493 |
- System.out.println("addrListVO.size() : "+ addrListVO.size());
|
|
| 494 |
- |
|
| 495 |
- try {
|
|
| 496 |
- if(addrListVO.size() > 0) {
|
|
| 497 |
- // 등록 |
|
| 498 |
- // 배치 제거 |
|
| 499 |
- // 참고 http://wiki.iten.co.kr:9999/doku.php?id=%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8:%EB%AC%B8%EC%9E%90%EC%98%A8_%EA%B0%9C%EC%84%A0:03.%ED%85%8C%EC%8A%A4%ED%8A%B8:%EC%A3%BC%EC%86%8C%EB%A1%9D_30%EB%A7%8C%EA%B1%B4#%EB%B9%84%EA%B5%90_%ED%91%9C |
|
| 500 |
- // Batch insert |
|
| 501 |
-// batchInsertAddrListAsync(addrListVO); |
|
| 502 |
- addrDAO.insertAddrList(addrListVO); |
|
| 503 |
- |
|
| 504 |
- } |
|
| 505 |
- |
|
| 506 |
- } catch (Exception e) {
|
|
| 507 |
- // TODO: handle exception |
|
| 508 |
- e.printStackTrace(); |
|
| 509 |
- return new StatusResponse( |
|
| 510 |
- HttpStatus.BAD_REQUEST |
|
| 511 |
- , "배치오류" |
|
| 512 |
- , LocalDateTime.now() |
|
| 513 |
- ); |
|
| 514 |
- } |
|
| 515 |
- endTime = System.currentTimeMillis(); |
|
| 516 |
- executionTime = (endTime - startTime) / 1000.0; |
|
| 517 |
- System.out.println("INSERT Execution time: " + executionTime + " seconds");
|
|
| 518 |
- |
|
| 519 |
- |
|
| 520 |
- // 중복체크 dupliCnt |
|
| 521 |
- |
|
| 522 |
- |
|
| 523 |
- // 현재 시간 가져오기 |
|
| 524 |
- LocalDateTime now = LocalDateTime.now(); |
|
| 525 |
- |
|
| 526 |
- // 원하는 포맷 설정 |
|
| 527 |
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
| 528 |
- |
|
| 529 |
- // 포맷된 시간 문자열로 변환 |
|
| 530 |
- String formattedDateTime = now.format(formatter); |
|
| 531 |
- |
|
| 532 |
- // 출력 |
|
| 533 |
- System.out.println(formattedDateTime); |
|
| 534 |
- // |
|
| 535 |
- String message = "저장에 성공했습니다.\n저장 : " + addrListVO.size() + "건" |
|
| 536 |
-// +", 중복 : " + invalid.dupliCnt + "건" |
|
| 537 |
- +", INERT 총 시간 : " + executionTime+ "초" |
|
| 538 |
- +", 현재시간 : " + formattedDateTime; |
|
| 539 |
- |
|
| 540 |
- return new StatusResponse( |
|
| 541 |
- HttpStatus.OK |
|
| 542 |
- , message |
|
| 543 |
- , addrListVO.get(0).getAddrGrpId() |
|
| 544 |
- ); |
|
| 545 |
- } |
|
| 546 |
- |
|
| 547 |
- |
|
| 548 |
- private void batchInsertAddrListAsync(List<AddrVO> addrListVO) throws InterruptedException {
|
|
| 549 |
- int totalSize = addrListVO.size(); |
|
| 550 |
- int batchCount = (totalSize + BATCH_SIZE - 1) / BATCH_SIZE; |
|
| 551 |
- ExecutorService executor = Executors.newFixedThreadPool(THREAD_COUNT); |
|
| 552 |
- |
|
| 553 |
- for (int i = 0; i < batchCount; i++) {
|
|
| 554 |
- final int startIndex = i * BATCH_SIZE; |
|
| 555 |
- final int endIndex = Math.min(startIndex + BATCH_SIZE, totalSize); |
|
| 556 |
- final List<AddrVO> batchList = addrListVO.subList(startIndex, endIndex); |
|
| 557 |
- |
|
| 558 |
- executor.submit(() -> {
|
|
| 559 |
- try {
|
|
| 560 |
- long startTime = System.currentTimeMillis(); |
|
| 561 |
- addrDAO.insertAddrList(batchList); |
|
| 562 |
- long endTime = System.currentTimeMillis(); |
|
| 563 |
- double executionTime = (endTime - startTime) / 1000.0; |
|
| 564 |
- System.out.println("Batch " + (startIndex / BATCH_SIZE + 1) + "/" + batchCount + " Execution time: " + executionTime + " seconds");
|
|
| 565 |
- } catch (Exception e) {
|
|
| 566 |
- e.printStackTrace(); |
|
| 567 |
- } |
|
| 568 |
- }); |
|
| 569 |
- } |
|
| 570 |
- |
|
| 571 |
- executor.shutdown(); |
|
| 572 |
- executor.awaitTermination(1, TimeUnit.HOURS); |
|
| 573 |
- } |
|
| 574 |
- |
|
| 575 |
- public static boolean isValidPhoneNumber(String phoneNo) {
|
|
| 576 |
- if (phoneNo == null || phoneNo.isEmpty()) {
|
|
| 577 |
- return false; |
|
| 578 |
- } |
|
| 579 |
- Matcher matcher = PHONE_PATTERN.matcher(phoneNo); |
|
| 580 |
- return matcher.matches(); |
|
| 581 |
- } |
|
| 582 |
- |
|
| 583 |
- |
|
| 584 |
- public static void trimFieldsBytes(AddrVO addr) {
|
|
| 585 |
- addr.setAddrInfo1(trimToBytes(addr.getAddrInfo1(), 20)); |
|
| 586 |
- addr.setAddrInfo2(trimToBytes(addr.getAddrInfo2(), 20)); |
|
| 587 |
- addr.setAddrInfo3(trimToBytes(addr.getAddrInfo3(), 20)); |
|
| 588 |
- addr.setAddrInfo4(trimToBytes(addr.getAddrInfo4(), 20)); |
|
| 589 |
- addr.setAddrComment(trimToBytes(addr.getAddrComment(), 250)); |
|
| 590 |
- addr.setAddrNm(trimToBytes(addr.getAddrNm(), 20)); |
|
| 591 |
- } |
|
| 592 |
- |
|
| 593 |
- // maxBytes만큼 글자수 처리해서 리턴 |
|
| 594 |
- public static String trimToBytes(String str, int maxBytes) {
|
|
| 595 |
- if (str == null) {
|
|
| 596 |
- return null; |
|
| 597 |
- } |
|
| 598 |
- byte[] bytes = str.getBytes(EUC_KR); |
|
| 599 |
- if (bytes.length <= maxBytes) {
|
|
| 600 |
- return str; |
|
| 601 |
- } |
|
| 602 |
- int len = maxBytes; |
|
| 603 |
- while (len > 0 && bytes[len - 1] < 0) {
|
|
| 604 |
- len--; // 바이트 배열을 maxBytes로 자를 때, 잘못된 분할을 피하기 위해 문자 경계 확인 |
|
| 605 |
- } |
|
| 606 |
- return new String(bytes, 0, len, EUC_KR); |
|
| 607 |
- } |
|
| 608 |
- |
|
| 609 |
- |
|
| 610 |
- private final ExecutorService executorService = Executors.newFixedThreadPool(3); |
|
| 611 |
- |
|
| 612 |
- |
|
| 613 |
- public void deleteAddr_advc(AddrGroupVO addrGroupVO) throws Exception {
|
|
| 614 |
- |
|
| 615 |
- addrGroupDAO.deleteAddrGroup(addrGroupVO); |
|
| 616 |
- |
|
| 617 |
- AddrVO addrVO = new AddrVO(); |
|
| 618 |
- addrVO.setAddrGrpId(addrGroupVO.getAddrGrpId()); |
|
| 619 |
- addrVO.setGrpDelete("Y");
|
|
| 620 |
- addrVO.setMberId(addrGroupVO.getMberId()); |
|
| 621 |
- |
|
| 622 |
- |
|
| 623 |
-// boolean hasMoreData = true; |
|
| 624 |
-// |
|
| 625 |
-// while (hasMoreData) {
|
|
| 626 |
-// // 1. addrVO에 마지막으로 처리된 ID와 배치 크기를 설정 |
|
| 627 |
-// addrVO.setBatchSize(50000); |
|
| 628 |
-// |
|
| 629 |
- |
|
| 630 |
- |
|
| 631 |
- // 2. 현재 배치에서 삭제된 레코드 수를 확인 |
|
| 632 |
-// int affectedRows = addrDAO.deleteAddr(addrVO); |
|
| 633 |
- |
|
| 634 |
-// // 3. 더 이상 삭제할 데이터가 없으면 종료 |
|
| 635 |
-// if (affectedRows < BATCH_SIZE) {
|
|
| 636 |
-// hasMoreData = false; |
|
| 637 |
-// } |
|
| 638 |
-// } |
|
| 639 |
- |
|
| 640 |
- addrDAO.deleteAddr(addrVO); |
|
| 641 |
- } |
|
| 642 |
- |
|
| 643 |
- @Override |
|
| 644 |
- public int getAddrCount(AddrGroupVO addrGroupVO) throws Exception {
|
|
| 645 |
- |
|
| 646 |
- AddrVO addrVO = new AddrVO(); |
|
| 647 |
- addrVO.setAddrGrpId(addrGroupVO.getAddrGrpId()); |
|
| 648 |
- addrVO.setMberId(addrGroupVO.getMberId()); |
|
| 649 |
- |
|
| 650 |
- int aa = addrDAO.getAddrCount(addrVO); |
|
| 651 |
- |
|
| 652 |
- System.out.println("aa : "+ aa);
|
|
| 653 |
- |
|
| 654 |
- return aa; |
|
| 655 |
- } |
|
| 656 |
- |
|
| 657 |
-} |
|
| 1 |
+package itn.let.mjo.addr.service.impl; |
|
| 2 |
+ |
|
| 3 |
+import java.nio.charset.Charset; |
|
| 4 |
+import java.text.SimpleDateFormat; |
|
| 5 |
+import java.time.LocalDateTime; |
|
| 6 |
+import java.time.format.DateTimeFormatter; |
|
| 7 |
+import java.util.ArrayList; |
|
| 8 |
+import java.util.Date; |
|
| 9 |
+import java.util.HashMap; |
|
| 10 |
+import java.util.List; |
|
| 11 |
+import java.util.Locale; |
|
| 12 |
+import java.util.Map; |
|
| 13 |
+import java.util.concurrent.Callable; |
|
| 14 |
+import java.util.concurrent.ExecutorService; |
|
| 15 |
+import java.util.concurrent.Executors; |
|
| 16 |
+import java.util.concurrent.Future; |
|
| 17 |
+import java.util.concurrent.TimeUnit; |
|
| 18 |
+import java.util.concurrent.atomic.AtomicInteger; |
|
| 19 |
+import java.util.regex.Matcher; |
|
| 20 |
+import java.util.regex.Pattern; |
|
| 21 |
+import java.util.stream.Collectors; |
|
| 22 |
+ |
|
| 23 |
+import javax.annotation.Resource; |
|
| 24 |
+ |
|
| 25 |
+import org.springframework.http.HttpStatus; |
|
| 26 |
+import org.springframework.stereotype.Service; |
|
| 27 |
+ |
|
| 28 |
+import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; |
|
| 29 |
+import egovframework.rte.fdl.idgnr.EgovIdGnrService; |
|
| 30 |
+import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; |
|
| 31 |
+import itn.com.cmm.LoginVO; |
|
| 32 |
+import itn.let.mail.service.StatusResponse; |
|
| 33 |
+import itn.let.mjo.addr.service.AddrGroupVO; |
|
| 34 |
+import itn.let.mjo.addr.service.AddrService; |
|
| 35 |
+import itn.let.mjo.addr.service.AddrTransHistVO; |
|
| 36 |
+import itn.let.mjo.addr.service.AddrVO; |
|
| 37 |
+ |
|
| 38 |
+/** |
|
| 39 |
+ * 주소록 관리를 위한 서비스 구현 클래스 |
|
| 40 |
+ * @author ITN |
|
| 41 |
+ * @since 2021.04.08 |
|
| 42 |
+ * @version 1.0 |
|
| 43 |
+ * @see |
|
| 44 |
+ * |
|
| 45 |
+ * <pre> |
|
| 46 |
+ * << 개정이력(Modification Information) >> |
|
| 47 |
+ * 수정일 수정자 수정내용 |
|
| 48 |
+ * ------- -------- --------------------------- |
|
| 49 |
+ * 2021.04.08 ITN 최초 생성 |
|
| 50 |
+ * </pre> |
|
| 51 |
+ */ |
|
| 52 |
+@Service("AddrService")
|
|
| 53 |
+public class AddrServiceImpl extends EgovAbstractServiceImpl implements AddrService {
|
|
| 54 |
+ |
|
| 55 |
+ @Resource(name = "AddrDAO") |
|
| 56 |
+ private AddrDAO addrDAO; |
|
| 57 |
+ |
|
| 58 |
+ @Resource(name = "AddrGroupDAO") |
|
| 59 |
+ private AddrGroupDAO addrGroupDAO; |
|
| 60 |
+ |
|
| 61 |
+ @Resource(name = "AddrTransHistDAO") |
|
| 62 |
+ private AddrTransHistDAO addrTransHistDAO; |
|
| 63 |
+ |
|
| 64 |
+ @Resource(name = "egovAddrTransHistIdGnrService") |
|
| 65 |
+ private EgovIdGnrService idgenAddrTransHistId; |
|
| 66 |
+ |
|
| 67 |
+ |
|
| 68 |
+ |
|
| 69 |
+ private static final String PHONE_REGEX = "^(01[016789]-?\\d{3,4}-?\\d{4})$";
|
|
| 70 |
+ private static final Pattern PHONE_PATTERN = Pattern.compile(PHONE_REGEX); |
|
| 71 |
+ private static final Charset EUC_KR = Charset.forName("EUC-KR");
|
|
| 72 |
+// private static final int MAX_ADDR_CNT = 500000; |
|
| 73 |
+ //임시 500만개 |
|
| 74 |
+ private static final int MAX_SINGLE_ENTRY_CNT = 350000; |
|
| 75 |
+ private static final int MAX_ADDR_CNT = 10000000; |
|
| 76 |
+ private static final int BATCH_SIZE = 5000; |
|
| 77 |
+ private static final int THREAD_COUNT = 3; |
|
| 78 |
+ |
|
| 79 |
+ |
|
| 80 |
+ public List<AddrVO> selectAddrList(AddrVO addrVO) throws Exception {
|
|
| 81 |
+ return addrDAO.selectAddrList(addrVO); |
|
| 82 |
+ } |
|
| 83 |
+ |
|
| 84 |
+ @Override |
|
| 85 |
+ public int selectAddrListCount(AddrVO addrVO) throws Exception {
|
|
| 86 |
+ return addrDAO.selectAddrListCount(addrVO); |
|
| 87 |
+ } |
|
| 88 |
+ |
|
| 89 |
+ public List<AddrVO> selectAddrNewList(AddrVO addrVO) throws Exception {
|
|
| 90 |
+ return addrDAO.selectAddrNewList(addrVO); |
|
| 91 |
+ } |
|
| 92 |
+ |
|
| 93 |
+ public AddrVO selectAddrDetail(AddrVO addrVO) throws Exception {
|
|
| 94 |
+ return addrDAO.selectAddrDetail(addrVO); |
|
| 95 |
+ } |
|
| 96 |
+ |
|
| 97 |
+ public void insertAddr(AddrVO addrVO) throws Exception {
|
|
| 98 |
+ addrDAO.insertAddr(addrVO); |
|
| 99 |
+ } |
|
| 100 |
+ |
|
| 101 |
+ public int updateAddr(AddrVO addrVO) throws Exception{
|
|
| 102 |
+ return addrDAO.updateAddr(addrVO); |
|
| 103 |
+ } |
|
| 104 |
+ |
|
| 105 |
+ public int updateAddrGrp(AddrVO addrVO) throws Exception{
|
|
| 106 |
+ return addrDAO.updateAddrGrp(addrVO); |
|
| 107 |
+ } |
|
| 108 |
+ |
|
| 109 |
+ public int updateMemoAddr(AddrVO addrVO) throws Exception{
|
|
| 110 |
+ return addrDAO.updateMemoAddr(addrVO); |
|
| 111 |
+ } |
|
| 112 |
+ |
|
| 113 |
+ public int updateAddrByAdmin(AddrVO addrVO) throws Exception{
|
|
| 114 |
+ return addrDAO.updateAddrByAdmin(addrVO); |
|
| 115 |
+ } |
|
| 116 |
+ |
|
| 117 |
+ public int deleteAddr(AddrVO addrVO) throws Exception{
|
|
| 118 |
+ return addrDAO.deleteAddr(addrVO); |
|
| 119 |
+ } |
|
| 120 |
+ |
|
| 121 |
+ public int deleteAddrByAdmin(AddrVO addrVO) throws Exception{
|
|
| 122 |
+ return addrDAO.deleteAddrByAdmin(addrVO); |
|
| 123 |
+ } |
|
| 124 |
+ |
|
| 125 |
+ public int deleteAddrByAdminAll(AddrVO addrVO) throws Exception{
|
|
| 126 |
+ int rtnCount = 0; |
|
| 127 |
+ |
|
| 128 |
+ for (String addrId : addrVO.getAddrIds()) {
|
|
| 129 |
+ addrVO.setAddrId(addrId); |
|
| 130 |
+ rtnCount += addrDAO.deleteAddrByAdmin(addrVO); |
|
| 131 |
+ } |
|
| 132 |
+ |
|
| 133 |
+ return rtnCount; |
|
| 134 |
+ } |
|
| 135 |
+ |
|
| 136 |
+ public int deleteAddrByAdminByGrpid(AddrVO addrVO) throws Exception{
|
|
| 137 |
+ return addrDAO.deleteAddrByAdminByGrpid(addrVO); |
|
| 138 |
+ } |
|
| 139 |
+ |
|
| 140 |
+ public int deleteAddrByAdminByGrpidAll(AddrVO addrVO) throws Exception{
|
|
| 141 |
+ int rtnCount = 0; |
|
| 142 |
+ |
|
| 143 |
+ for (String addrGrpId : addrVO.getAddrGrpIds()) {
|
|
| 144 |
+ addrVO.setAddrGrpId(addrGrpId); |
|
| 145 |
+ rtnCount += addrDAO.deleteAddrByAdminByGrpid(addrVO); |
|
| 146 |
+ } |
|
| 147 |
+ |
|
| 148 |
+ return rtnCount; |
|
| 149 |
+ } |
|
| 150 |
+ |
|
| 151 |
+ @Override |
|
| 152 |
+ public List<AddrVO> selectAddrBasicGrpList(AddrVO addrVO) throws Exception {
|
|
| 153 |
+ return addrDAO.selectAddrBasicGrpList(addrVO); |
|
| 154 |
+ } |
|
| 155 |
+ |
|
| 156 |
+ @Override |
|
| 157 |
+ public int selectAddrTotalCount(AddrVO addrVO) throws Exception {
|
|
| 158 |
+ return addrDAO.selectAddrTotalCount(addrVO); |
|
| 159 |
+ } |
|
| 160 |
+ |
|
| 161 |
+ @Override |
|
| 162 |
+ public void insertCopyAddr(AddrVO addrVO) throws Exception {
|
|
| 163 |
+ addrDAO.insertCopyAddr(addrVO); |
|
| 164 |
+ } |
|
| 165 |
+ |
|
| 166 |
+ @Override |
|
| 167 |
+ public String updateAddrAnotherMember(AddrVO addrVO, AddrGroupVO addrGroupVO, |
|
| 168 |
+ AddrTransHistVO addrTransHistVO) throws Exception {
|
|
| 169 |
+ |
|
| 170 |
+ SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "HHmmss", Locale.KOREA ); |
|
| 171 |
+ Date currentTime = new Date (); |
|
| 172 |
+ String mTime = mSimpleDateFormat.format ( currentTime ); |
|
| 173 |
+ |
|
| 174 |
+ LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 175 |
+ addrVO.setMberId(user.getId()); |
|
| 176 |
+ addrTransHistVO.setSendMberId(user.getId()); |
|
| 177 |
+ |
|
| 178 |
+ String successCd =""; |
|
| 179 |
+ int listSize = addrVO.getSendGrps().length; |
|
| 180 |
+ |
|
| 181 |
+ for(int i=0; i<listSize; i++ ) {
|
|
| 182 |
+ |
|
| 183 |
+ try {
|
|
| 184 |
+ |
|
| 185 |
+ /** |
|
| 186 |
+ * 1. 이전할 주소록그룹명_시분초 로 받는 회원의 새 주소록 그룹을 만듦 |
|
| 187 |
+ */ |
|
| 188 |
+ //전송할 그룹의 id를 검색해 올 아이디로 set |
|
| 189 |
+ addrGroupVO.setAddrGrpId(addrVO.getSendGrps()[i]); |
|
| 190 |
+ |
|
| 191 |
+ //vo에 db조회해온 상세데이터를 set함 - 주소록명 가지고오기 위함 |
|
| 192 |
+ addrGroupVO = addrGroupDAO.selectAddrGroupDetail(addrGroupVO); |
|
| 193 |
+ |
|
| 194 |
+ |
|
| 195 |
+ |
|
| 196 |
+ AddrGroupVO recvAddrGroupVO = new AddrGroupVO(); |
|
| 197 |
+ |
|
| 198 |
+ //보낼 주소록그룹의 정보를 세팅 |
|
| 199 |
+ recvAddrGroupVO.setMberId(addrTransHistVO.getRecvMberId()); |
|
| 200 |
+ //기존 그룹명_(시분초) 로 새로운 그룹의 이름을 정함 |
|
| 201 |
+ recvAddrGroupVO.setAddrGrpNm(addrGroupVO.getAddrGrpNm()+"_"+mTime); |
|
| 202 |
+ |
|
| 203 |
+ String newGrpId = addrGroupDAO.insertAddrGroup(recvAddrGroupVO); |
|
| 204 |
+ |
|
| 205 |
+ /** |
|
| 206 |
+ * 2. 주소록그룹ID를 가진 주소록들을 가져와 받는 유저의 주소록 insert |
|
| 207 |
+ */ |
|
| 208 |
+ |
|
| 209 |
+ AddrVO recvAddrVO = new AddrVO(); |
|
| 210 |
+ //보낼 주소록 정보를 set |
|
| 211 |
+ recvAddrVO.setMberId(addrVO.getMberId()); |
|
| 212 |
+ recvAddrVO.setAddrGrpId(addrVO.getSendGrps()[i]); |
|
| 213 |
+ recvAddrVO.setRecordCountPerPage(100000); |
|
| 214 |
+ recvAddrVO.setFirstIndex(0); |
|
| 215 |
+ |
|
| 216 |
+ List<AddrVO> recvAddrList = addrDAO.selectAddrList(recvAddrVO); |
|
| 217 |
+ |
|
| 218 |
+ for(int j=0; j<recvAddrList.size(); j++) {
|
|
| 219 |
+ try {
|
|
| 220 |
+ recvAddrList.get(j).setRecvStatus("W");
|
|
| 221 |
+ |
|
| 222 |
+ recvAddrList.get(j).setMberId(addrTransHistVO.getRecvMberId()); |
|
| 223 |
+ //새로만든 그룹의 아이디를 세팅 |
|
| 224 |
+ recvAddrList.get(j).setAddrGrpId(newGrpId); |
|
| 225 |
+ addrDAO.insertAddr(recvAddrList.get(j)); |
|
| 226 |
+ |
|
| 227 |
+ }catch(Exception e) {
|
|
| 228 |
+ e.printStackTrace(); |
|
| 229 |
+ } |
|
| 230 |
+ |
|
| 231 |
+ } |
|
| 232 |
+ |
|
| 233 |
+ /** |
|
| 234 |
+ * 3. 주소록 이전 히스토리 테이블에 등록 |
|
| 235 |
+ */ |
|
| 236 |
+ addrTransHistVO.setAddrGrpId(newGrpId); |
|
| 237 |
+ addrTransHistVO.setAddrTransHistId(idgenAddrTransHistId.getNextStringId()); |
|
| 238 |
+ addrTransHistVO.setSendAddrCnt(recvAddrList.size()); |
|
| 239 |
+ |
|
| 240 |
+ addrTransHistDAO.insertAddrTransHist(addrTransHistVO); |
|
| 241 |
+ |
|
| 242 |
+ if(i==0) successCd = "Y"; |
|
| 243 |
+ if(i!=0) successCd += ",Y"; |
|
| 244 |
+ |
|
| 245 |
+ } catch(Exception e) {
|
|
| 246 |
+ e.printStackTrace(); |
|
| 247 |
+ |
|
| 248 |
+ if(i==0) successCd = "N"; |
|
| 249 |
+ if(i!=0) successCd += ",N"; |
|
| 250 |
+ } |
|
| 251 |
+ |
|
| 252 |
+ } |
|
| 253 |
+ |
|
| 254 |
+ |
|
| 255 |
+ |
|
| 256 |
+ return successCd; |
|
| 257 |
+ } |
|
| 258 |
+ |
|
| 259 |
+ //주소록 등록 총 건수 및 정보 불러오기 |
|
| 260 |
+ public List<?> selectAddrTotCntInfByUserId(AddrVO addrVO) throws Exception{
|
|
| 261 |
+ |
|
| 262 |
+ return addrDAO.selectAddrTotCntInfByUserId(addrVO); |
|
| 263 |
+ } |
|
| 264 |
+ |
|
| 265 |
+ //문자발송에서 수신자 리스트를 주소록에 등록하기 |
|
| 266 |
+ public int insertAddrList(List<AddrVO> addrList) throws Exception{
|
|
| 267 |
+ |
|
| 268 |
+ return addrDAO.insertAddrList(addrList); |
|
| 269 |
+ } |
|
| 270 |
+ |
|
| 271 |
+ @Override |
|
| 272 |
+ public int selectDuplAddrCnt(AddrVO addrVO) throws Exception {
|
|
| 273 |
+ return addrDAO.selectDuplAddrCnt(addrVO); |
|
| 274 |
+ } |
|
| 275 |
+ |
|
| 276 |
+ //주소록 한 그룹에 속한 주소록의 전화번호 조회(중복체크용도) |
|
| 277 |
+ public List<?> selectPhoneNumInAddrGroup(AddrVO addrVO) throws Exception{
|
|
| 278 |
+ return addrDAO.selectPhoneNumInAddrGroup(addrVO); |
|
| 279 |
+ } |
|
| 280 |
+ |
|
| 281 |
+ //선택한 주소록 문자전송 화면으로 보내기 |
|
| 282 |
+ @Override |
|
| 283 |
+ public List<AddrVO> selectAddrDataList(AddrVO addrVO) throws Exception {
|
|
| 284 |
+ return addrDAO.selectAddrDataList(addrVO); |
|
| 285 |
+ } |
|
| 286 |
+ |
|
| 287 |
+ // 주소록 그룹별 중복 연락처 삭제 |
|
| 288 |
+ public int deleteAddrDupliList(AddrVO addrVO) throws Exception {
|
|
| 289 |
+ int rtnCnt = 0; |
|
| 290 |
+ |
|
| 291 |
+ for (int i = 0; i < 20; i++) {
|
|
| 292 |
+ // 주소록 그룹별 중복 연락처 목록 |
|
| 293 |
+ List<AddrVO> addrDupliList = selectAddrDupliList(addrVO); |
|
| 294 |
+ |
|
| 295 |
+ if (addrDupliList.size() > 0) {
|
|
| 296 |
+ rtnCnt += addrDAO.deleteAddrDupliList(addrVO); |
|
| 297 |
+ } |
|
| 298 |
+ else {
|
|
| 299 |
+ break; |
|
| 300 |
+ } |
|
| 301 |
+ } |
|
| 302 |
+ |
|
| 303 |
+ return rtnCnt; |
|
| 304 |
+ } |
|
| 305 |
+ |
|
| 306 |
+ // 주소록 그룹별 중복 연락처 삭제 |
|
| 307 |
+ public int deleteAddrDupliListByGrpnm(AddrVO addrVO) throws Exception {
|
|
| 308 |
+ int rtnCnt = 0; |
|
| 309 |
+ |
|
| 310 |
+ for (int i = 0; i < 20; i++) {
|
|
| 311 |
+ // 주소록 그룹별 중복 연락처 목록 |
|
| 312 |
+ List<AddrVO> addrDupliList = selectAddrDupliListByGrpnm(addrVO); |
|
| 313 |
+ |
|
| 314 |
+ if (addrDupliList.size() > 0) {
|
|
| 315 |
+ rtnCnt += addrDAO.deleteAddrDupliListByGrpnm(addrVO); |
|
| 316 |
+ } |
|
| 317 |
+ else {
|
|
| 318 |
+ break; |
|
| 319 |
+ } |
|
| 320 |
+ } |
|
| 321 |
+ |
|
| 322 |
+ return rtnCnt; |
|
| 323 |
+ } |
|
| 324 |
+ |
|
| 325 |
+ // 주소록 전체 중복 연락처 중 한개만 남기고 삭제 |
|
| 326 |
+ public int deleteAddrDupliListByAll(AddrVO addrVO) throws Exception {
|
|
| 327 |
+ int rtnCnt = 0; |
|
| 328 |
+ |
|
| 329 |
+ for (int i = 0; i < 20; i++) {
|
|
| 330 |
+ if (selectAddrDupliListByAllCnt(addrVO) > 0) {
|
|
| 331 |
+ rtnCnt += addrDAO.deleteAddrDupliListByAll(addrVO); |
|
| 332 |
+ } |
|
| 333 |
+ else {
|
|
| 334 |
+ break; |
|
| 335 |
+ } |
|
| 336 |
+ } |
|
| 337 |
+ |
|
| 338 |
+ return rtnCnt; |
|
| 339 |
+ } |
|
| 340 |
+ |
|
| 341 |
+ |
|
| 342 |
+ // 주소록 그룹별 중복 연락처 리스트 불러오기 |
|
| 343 |
+ @Override |
|
| 344 |
+ public List<AddrVO> selectAddrDupliList(AddrVO addrVO) throws Exception {
|
|
| 345 |
+ return addrDAO.selectAddrDupliList(addrVO); |
|
| 346 |
+ } |
|
| 347 |
+ |
|
| 348 |
+ // 주소록 그룹별 중복 연락처 리스트 불러오기 |
|
| 349 |
+ @Override |
|
| 350 |
+ public List<AddrVO> selectAddrDupliListByGrpnm(AddrVO addrVO) throws Exception {
|
|
| 351 |
+ return addrDAO.selectAddrDupliListByGrpnm(addrVO); |
|
| 352 |
+ } |
|
| 353 |
+ |
|
| 354 |
+ // 주소록 전체 중복 연락처 수 |
|
| 355 |
+ @Override |
|
| 356 |
+ public int selectAddrDupliListByAllCnt(AddrVO addrVO) throws Exception {
|
|
| 357 |
+ return addrDAO.selectAddrDupliListByAllCnt(addrVO); |
|
| 358 |
+ } |
|
| 359 |
+ |
|
| 360 |
+ // 주소록 전체 중복 연락처 목록 |
|
| 361 |
+ @Override |
|
| 362 |
+ public List<AddrVO> selectAddrDupliListByAll(AddrVO addrVO) throws Exception {
|
|
| 363 |
+ return addrDAO.selectAddrDupliListByAll(addrVO); |
|
| 364 |
+ } |
|
| 365 |
+ |
|
| 366 |
+ // TEMP 주소록 중복 연락처 목록 |
|
| 367 |
+ @Override |
|
| 368 |
+ public List<AddrVO> selectTempAddrDupliList(AddrVO addrVO) throws Exception {
|
|
| 369 |
+ return addrDAO.selectTempAddrDupliList(addrVO); |
|
| 370 |
+ } |
|
| 371 |
+ |
|
| 372 |
+ // TEMP 주소록 삭제 |
|
| 373 |
+ public int deleteTempAddr(AddrVO addrVO) throws Exception{
|
|
| 374 |
+ return addrDAO.deleteTempAddr(addrVO); |
|
| 375 |
+ } |
|
| 376 |
+ |
|
| 377 |
+ // TEMP 주소록 대량등록 |
|
| 378 |
+ public int insertTempAddrList(List<AddrVO> addrList) throws Exception{
|
|
| 379 |
+ return addrDAO.insertTempAddrList(addrList); |
|
| 380 |
+ } |
|
| 381 |
+ |
|
| 382 |
+ // 주소록 대량등록 By Temp 주소록 |
|
| 383 |
+ public int insertAddrByTempAddr(AddrVO addrVO) throws Exception {
|
|
| 384 |
+ return addrDAO.insertAddrByTempAddr(addrVO); |
|
| 385 |
+ } |
|
| 386 |
+ |
|
| 387 |
+ // 주소록 대량등록 By Temp 주소록 All |
|
| 388 |
+ public int insertAddrByTempAddrAll(List<AddrVO> addrList, AddrVO addrVO) throws Exception{
|
|
| 389 |
+ int rtnVal = 0; |
|
| 390 |
+ |
|
| 391 |
+ // Step 1. TEMP 주소록 삭제 |
|
| 392 |
+ deleteTempAddr(addrVO); |
|
| 393 |
+ |
|
| 394 |
+ // Step 2. TEMP 주소록 대량등록 |
|
| 395 |
+ insertTempAddrList(addrList); |
|
| 396 |
+ |
|
| 397 |
+ // Step 3. 주소록 대량등록 By Temp 주소록 |
|
| 398 |
+ rtnVal = insertAddrByTempAddr(addrVO); |
|
| 399 |
+ |
|
| 400 |
+ return rtnVal; |
|
| 401 |
+ } |
|
| 402 |
+ |
|
| 403 |
+ @Override |
|
| 404 |
+ public StatusResponse addrMassInsertByTempAjax_advc(List<AddrVO> addrListVO, String userId) throws Exception {
|
|
| 405 |
+ |
|
| 406 |
+ |
|
| 407 |
+ |
|
| 408 |
+ // data init |
|
| 409 |
+ // For-each loop |
|
| 410 |
+ for (AddrVO addr : addrListVO) { addr.setMberId(userId); }
|
|
| 411 |
+ |
|
| 412 |
+ |
|
| 413 |
+ |
|
| 414 |
+ if(addrListVO.size() > MAX_SINGLE_ENTRY_CNT) {
|
|
| 415 |
+ return new StatusResponse( |
|
| 416 |
+ HttpStatus.BAD_REQUEST |
|
| 417 |
+ , "주소록은 한번에 100만개까지만 등록이 가능합니다." |
|
| 418 |
+ , LocalDateTime.now() |
|
| 419 |
+ ); |
|
| 420 |
+ |
|
| 421 |
+ } |
|
| 422 |
+ // step1 현재 주소록 갯수 조회 |
|
| 423 |
+ |
|
| 424 |
+ //회원별 주소록 전체 갯수 조회 |
|
| 425 |
+ int addrBefCnt = addrDAO.selectAddrTotalCount(addrListVO.get(0)); |
|
| 426 |
+ int addrNewCnt = addrListVO.size(); //신규 추가할 주소록 갯수 |
|
| 427 |
+ int sumAddrCnt = addrBefCnt + addrNewCnt; |
|
| 428 |
+ |
|
| 429 |
+ // step1-1 총 갯수가 (주소록 갯수 + 신규 주소록)50만건 체크 |
|
| 430 |
+ if(sumAddrCnt > MAX_ADDR_CNT) {
|
|
| 431 |
+ return new StatusResponse( |
|
| 432 |
+ HttpStatus.BAD_REQUEST |
|
| 433 |
+ , "주소록은 총 1000만개까지만 등록이 가능합니다." |
|
| 434 |
+ , LocalDateTime.now() |
|
| 435 |
+ ); |
|
| 436 |
+ |
|
| 437 |
+ } |
|
| 438 |
+ |
|
| 439 |
+ // step2 신규 주소록 생성 및 북마크 체크 |
|
| 440 |
+ // => AddrGrpId |
|
| 441 |
+ // |
|
| 442 |
+ if ("NEW".equals(addrListVO.get(0).getAddrGrpId())) {
|
|
| 443 |
+ |
|
| 444 |
+ AddrGroupVO addrGroupVO = new AddrGroupVO(); |
|
| 445 |
+ addrGroupVO.setMberId(userId); |
|
| 446 |
+ addrGroupVO.setAddrGrpNm(addrListVO.get(0).getAddrGrpNm()); |
|
| 447 |
+ // 정렬순서 |
|
| 448 |
+ |
|
| 449 |
+ int nextOrderNumber = addrGroupDAO.selectMaxOrderNumber(addrGroupVO); |
|
| 450 |
+ addrGroupVO.setGrpOrder(nextOrderNumber); |
|
| 451 |
+ |
|
| 452 |
+ addrGroupDAO.insertAddrGroup(addrGroupVO); |
|
| 453 |
+ |
|
| 454 |
+ // 신규 추가한 그룹아이디 |
|
| 455 |
+ for (AddrVO addr : addrListVO) { addr.setAddrGrpId(addrGroupVO.getAddrGrpId()); }
|
|
| 456 |
+ |
|
| 457 |
+ } |
|
| 458 |
+ else if ("bookmark".equals(addrListVO.get(0).getAddrGrpId()))
|
|
| 459 |
+ {
|
|
| 460 |
+ for (AddrVO addr : addrListVO) { addr.setBookmark("Y"); addr.setAddrGrpId("0"); }
|
|
| 461 |
+ } |
|
| 462 |
+ else |
|
| 463 |
+ {
|
|
| 464 |
+ for (AddrVO addr : addrListVO) { addr.setBookmark("N"); }
|
|
| 465 |
+ } |
|
| 466 |
+ |
|
| 467 |
+ // step4-1 true |
|
| 468 |
+ // => 폰번호 빼고 바이트 체크해서 20byte만 짜르고 넣기 |
|
| 469 |
+ // => 폰번호는 유효성 체크 하기 |
|
| 470 |
+ |
|
| 471 |
+ long startTime = System.currentTimeMillis(); |
|
| 472 |
+ // 유효성 체크 및 하이픈 제거, 유효하지 않은 번호는 리스트에서 제거 |
|
| 473 |
+ // 나머지 필드들 20byte (euc-kr) 체크 후 넘으면 자르기 |
|
| 474 |
+ AtomicInteger invalid = new AtomicInteger(0); // 스레드-안전(thread-safe)하게 정수 값을 업데이트할 수 있는 기능을 제공 |
|
| 475 |
+ addrListVO.removeIf(addr -> {
|
|
| 476 |
+ String phoneNo = addr.getAddrPhoneNo(); |
|
| 477 |
+// phoneNo = phoneNo != null ? phoneNo.replaceAll("-", "") : "";
|
|
| 478 |
+// System.out.println("phoneNo : "+ phoneNo);
|
|
| 479 |
+ if (isValidPhoneNumber(phoneNo)) {
|
|
| 480 |
+ addr.setAddrPhoneNo(phoneNo); // 하이픈이 제거된 유효한 번호 설정 |
|
| 481 |
+ trimFieldsBytes(addr); // 다른 필드들에 대한 20바이트 체크 및 자르기 |
|
| 482 |
+ return false; // 유효한 번호는 제거하지 않음 |
|
| 483 |
+ } else {
|
|
| 484 |
+// System.out.println(phoneNo + " is an invalid phone number. Removing from list."); |
|
| 485 |
+ invalid.getAndIncrement(); // 유효하지 않은 번호 개수 증가 |
|
| 486 |
+ return true; // 유효하지 않은 번호는 제거 |
|
| 487 |
+ } |
|
| 488 |
+ }); |
|
| 489 |
+ |
|
| 490 |
+ |
|
| 491 |
+ long endTime = System.currentTimeMillis(); |
|
| 492 |
+ double executionTime = (endTime - startTime) / 1000.0; |
|
| 493 |
+ System.out.println(" number chk Execution time: " + executionTime + " seconds");
|
|
| 494 |
+ |
|
| 495 |
+ startTime = System.currentTimeMillis(); |
|
| 496 |
+ System.out.println("addrListVO.size() : "+ addrListVO.size());
|
|
| 497 |
+ |
|
| 498 |
+ try {
|
|
| 499 |
+ if(addrListVO.size() > 0) {
|
|
| 500 |
+ // 등록 |
|
| 501 |
+ // 배치 제거 |
|
| 502 |
+ // 참고 http://wiki.iten.co.kr:9999/doku.php?id=%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8:%EB%AC%B8%EC%9E%90%EC%98%A8_%EA%B0%9C%EC%84%A0:03.%ED%85%8C%EC%8A%A4%ED%8A%B8:%EC%A3%BC%EC%86%8C%EB%A1%9D_30%EB%A7%8C%EA%B1%B4#%EB%B9%84%EA%B5%90_%ED%91%9C |
|
| 503 |
+ // Batch insert |
|
| 504 |
+// batchInsertAddrListAsync(addrListVO); |
|
| 505 |
+ addrDAO.insertAddrList(addrListVO); |
|
| 506 |
+ |
|
| 507 |
+ } |
|
| 508 |
+ |
|
| 509 |
+ } catch (Exception e) {
|
|
| 510 |
+ // TODO: handle exception |
|
| 511 |
+ e.printStackTrace(); |
|
| 512 |
+ return new StatusResponse( |
|
| 513 |
+ HttpStatus.BAD_REQUEST |
|
| 514 |
+ , "배치오류" |
|
| 515 |
+ , LocalDateTime.now() |
|
| 516 |
+ ); |
|
| 517 |
+ } |
|
| 518 |
+ endTime = System.currentTimeMillis(); |
|
| 519 |
+ executionTime = (endTime - startTime) / 1000.0; |
|
| 520 |
+ System.out.println("INSERT Execution time: " + executionTime + " seconds");
|
|
| 521 |
+ |
|
| 522 |
+ |
|
| 523 |
+ // 중복체크 dupliCnt |
|
| 524 |
+ |
|
| 525 |
+ |
|
| 526 |
+ // 현재 시간 가져오기 |
|
| 527 |
+ LocalDateTime now = LocalDateTime.now(); |
|
| 528 |
+ |
|
| 529 |
+ // 원하는 포맷 설정 |
|
| 530 |
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
| 531 |
+ |
|
| 532 |
+ // 포맷된 시간 문자열로 변환 |
|
| 533 |
+ String formattedDateTime = now.format(formatter); |
|
| 534 |
+ |
|
| 535 |
+ // 출력 |
|
| 536 |
+ System.out.println(formattedDateTime); |
|
| 537 |
+ // |
|
| 538 |
+ String message = "저장에 성공했습니다.\n저장 : " + addrListVO.size() + "건" |
|
| 539 |
+// +", 중복 : " + invalid.dupliCnt + "건" |
|
| 540 |
+ +", INERT 총 시간 : " + executionTime+ "초" |
|
| 541 |
+ +", 현재시간 : " + formattedDateTime; |
|
| 542 |
+ |
|
| 543 |
+ return new StatusResponse( |
|
| 544 |
+ HttpStatus.OK |
|
| 545 |
+ , message |
|
| 546 |
+ , addrListVO.get(0).getAddrGrpId() |
|
| 547 |
+ ); |
|
| 548 |
+ } |
|
| 549 |
+ |
|
| 550 |
+ |
|
| 551 |
+ private void batchInsertAddrListAsync(List<AddrVO> addrListVO) throws InterruptedException {
|
|
| 552 |
+ int totalSize = addrListVO.size(); |
|
| 553 |
+ int batchCount = (totalSize + BATCH_SIZE - 1) / BATCH_SIZE; |
|
| 554 |
+ ExecutorService executor = Executors.newFixedThreadPool(THREAD_COUNT); |
|
| 555 |
+ |
|
| 556 |
+ for (int i = 0; i < batchCount; i++) {
|
|
| 557 |
+ final int startIndex = i * BATCH_SIZE; |
|
| 558 |
+ final int endIndex = Math.min(startIndex + BATCH_SIZE, totalSize); |
|
| 559 |
+ final List<AddrVO> batchList = addrListVO.subList(startIndex, endIndex); |
|
| 560 |
+ |
|
| 561 |
+ executor.submit(() -> {
|
|
| 562 |
+ try {
|
|
| 563 |
+ long startTime = System.currentTimeMillis(); |
|
| 564 |
+ addrDAO.insertAddrList(batchList); |
|
| 565 |
+ long endTime = System.currentTimeMillis(); |
|
| 566 |
+ double executionTime = (endTime - startTime) / 1000.0; |
|
| 567 |
+ System.out.println("Batch " + (startIndex / BATCH_SIZE + 1) + "/" + batchCount + " Execution time: " + executionTime + " seconds");
|
|
| 568 |
+ } catch (Exception e) {
|
|
| 569 |
+ e.printStackTrace(); |
|
| 570 |
+ } |
|
| 571 |
+ }); |
|
| 572 |
+ } |
|
| 573 |
+ |
|
| 574 |
+ executor.shutdown(); |
|
| 575 |
+ executor.awaitTermination(1, TimeUnit.HOURS); |
|
| 576 |
+ } |
|
| 577 |
+ |
|
| 578 |
+ public static boolean isValidPhoneNumber(String phoneNo) {
|
|
| 579 |
+ if (phoneNo == null || phoneNo.isEmpty()) {
|
|
| 580 |
+ return false; |
|
| 581 |
+ } |
|
| 582 |
+ Matcher matcher = PHONE_PATTERN.matcher(phoneNo); |
|
| 583 |
+ return matcher.matches(); |
|
| 584 |
+ } |
|
| 585 |
+ |
|
| 586 |
+ |
|
| 587 |
+ public static void trimFieldsBytes(AddrVO addr) {
|
|
| 588 |
+ addr.setAddrInfo1(trimToBytes(addr.getAddrInfo1(), 20)); |
|
| 589 |
+ addr.setAddrInfo2(trimToBytes(addr.getAddrInfo2(), 20)); |
|
| 590 |
+ addr.setAddrInfo3(trimToBytes(addr.getAddrInfo3(), 20)); |
|
| 591 |
+ addr.setAddrInfo4(trimToBytes(addr.getAddrInfo4(), 20)); |
|
| 592 |
+ addr.setAddrComment(trimToBytes(addr.getAddrComment(), 250)); |
|
| 593 |
+ addr.setAddrNm(trimToBytes(addr.getAddrNm(), 20)); |
|
| 594 |
+ } |
|
| 595 |
+ |
|
| 596 |
+ // maxBytes만큼 글자수 처리해서 리턴 |
|
| 597 |
+ public static String trimToBytes(String str, int maxBytes) {
|
|
| 598 |
+ if (str == null) {
|
|
| 599 |
+ return null; |
|
| 600 |
+ } |
|
| 601 |
+ byte[] bytes = str.getBytes(EUC_KR); |
|
| 602 |
+ if (bytes.length <= maxBytes) {
|
|
| 603 |
+ return str; |
|
| 604 |
+ } |
|
| 605 |
+ int len = maxBytes; |
|
| 606 |
+ while (len > 0 && bytes[len - 1] < 0) {
|
|
| 607 |
+ len--; // 바이트 배열을 maxBytes로 자를 때, 잘못된 분할을 피하기 위해 문자 경계 확인 |
|
| 608 |
+ } |
|
| 609 |
+ return new String(bytes, 0, len, EUC_KR); |
|
| 610 |
+ } |
|
| 611 |
+ |
|
| 612 |
+ |
|
| 613 |
+ private final ExecutorService executorService = Executors.newFixedThreadPool(3); |
|
| 614 |
+ |
|
| 615 |
+ |
|
| 616 |
+ public void deleteAddr_advc(AddrGroupVO addrGroupVO) throws Exception {
|
|
| 617 |
+ addrGroupDAO.deleteAddrGroup_advc(addrGroupVO); |
|
| 618 |
+ } |
|
| 619 |
+ |
|
| 620 |
+ @Override |
|
| 621 |
+ public int getAddrCount(AddrGroupVO addrGroupVO) throws Exception {
|
|
| 622 |
+ |
|
| 623 |
+ AddrVO addrVO = new AddrVO(); |
|
| 624 |
+ addrVO.setAddrGrpId(addrGroupVO.getAddrGrpId()); |
|
| 625 |
+ addrVO.setMberId(addrGroupVO.getMberId()); |
|
| 626 |
+ |
|
| 627 |
+ int aa = addrDAO.getAddrCount(addrVO); |
|
| 628 |
+ |
|
| 629 |
+ System.out.println("aa : "+ aa);
|
|
| 630 |
+ |
|
| 631 |
+ return aa; |
|
| 632 |
+ } |
|
| 633 |
+ |
|
| 634 |
+} |
--- src/main/java/itn/let/mjo/addr/web/AddrController.java
+++ src/main/java/itn/let/mjo/addr/web/AddrController.java
... | ... | @@ -1,2277 +1,2276 @@ |
| 1 |
-package itn.let.mjo.addr.web; |
|
| 2 |
- |
|
| 3 |
-import java.io.BufferedReader; |
|
| 4 |
-import java.io.InputStreamReader; |
|
| 5 |
-import java.io.OutputStream; |
|
| 6 |
-import java.text.SimpleDateFormat; |
|
| 7 |
-import java.util.ArrayList; |
|
| 8 |
-import java.util.Calendar; |
|
| 9 |
-import java.util.Date; |
|
| 10 |
-import java.util.HashMap; |
|
| 11 |
-import java.util.List; |
|
| 12 |
-import java.util.Locale; |
|
| 13 |
- |
|
| 14 |
-import javax.annotation.Resource; |
|
| 15 |
-import javax.servlet.http.HttpServletRequest; |
|
| 16 |
-import javax.servlet.http.HttpServletResponse; |
|
| 17 |
- |
|
| 18 |
-import org.apache.poi.hssf.usermodel.HSSFCell; |
|
| 19 |
-import org.apache.poi.hssf.usermodel.HSSFRow; |
|
| 20 |
-import org.apache.poi.hssf.usermodel.HSSFSheet; |
|
| 21 |
-import org.apache.poi.hssf.usermodel.HSSFWorkbook; |
|
| 22 |
-import org.apache.poi.openxml4j.opc.OPCPackage; |
|
| 23 |
-import org.apache.poi.ss.usermodel.Cell; |
|
| 24 |
-import org.apache.poi.ss.usermodel.CellStyle; |
|
| 25 |
-import org.apache.poi.ss.usermodel.Font; |
|
| 26 |
-import org.apache.poi.ss.usermodel.Row; |
|
| 27 |
-import org.apache.poi.ss.usermodel.Sheet; |
|
| 28 |
-import org.apache.poi.xssf.streaming.SXSSFWorkbook; |
|
| 29 |
-import org.apache.poi.xssf.usermodel.XSSFCell; |
|
| 30 |
-import org.apache.poi.xssf.usermodel.XSSFRow; |
|
| 31 |
-import org.apache.poi.xssf.usermodel.XSSFSheet; |
|
| 32 |
-import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
|
| 33 |
-import org.springframework.stereotype.Controller; |
|
| 34 |
-import org.springframework.ui.Model; |
|
| 35 |
-import org.springframework.ui.ModelMap; |
|
| 36 |
-import org.springframework.web.bind.annotation.ModelAttribute; |
|
| 37 |
-import org.springframework.web.bind.annotation.RequestMapping; |
|
| 38 |
-import org.springframework.web.bind.annotation.RequestParam; |
|
| 39 |
-import org.springframework.web.bind.annotation.ResponseBody; |
|
| 40 |
-import org.springframework.web.multipart.MultipartFile; |
|
| 41 |
-import org.springframework.web.multipart.MultipartHttpServletRequest; |
|
| 42 |
-import org.springframework.web.servlet.ModelAndView; |
|
| 43 |
-import org.springframework.web.servlet.mvc.support.RedirectAttributes; |
|
| 44 |
- |
|
| 45 |
-import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; |
|
| 46 |
-import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; |
|
| 47 |
-import itn.com.cmm.EgovMessageSource; |
|
| 48 |
-import itn.com.cmm.JsonResult; |
|
| 49 |
-import itn.com.cmm.LoginVO; |
|
| 50 |
-import itn.com.cmm.util.RedirectUrlMaker; |
|
| 51 |
-import itn.com.cmm.util.StringUtil; |
|
| 52 |
-import itn.com.utl.fcc.service.EgovStringUtil; |
|
| 53 |
-import itn.let.mjo.addr.service.AddrGroupService; |
|
| 54 |
-import itn.let.mjo.addr.service.AddrGroupVO; |
|
| 55 |
-import itn.let.mjo.addr.service.AddrService; |
|
| 56 |
-import itn.let.mjo.addr.service.AddrTransHistVO; |
|
| 57 |
-import itn.let.mjo.addr.service.AddrVO; |
|
| 58 |
-import itn.let.mjo.msgdata.service.PhoneVO; |
|
| 59 |
- |
|
| 60 |
-/** |
|
| 61 |
- * 주소록 관한 controller 클래스를 정의한다. |
|
| 62 |
- * @author ITN |
|
| 63 |
- * @since 2021.04.08 |
|
| 64 |
- * @version 1.0 |
|
| 65 |
- * @see |
|
| 66 |
- * |
|
| 67 |
- * <pre> |
|
| 68 |
- * << 개정이력(Modification Information) >> |
|
| 69 |
- * |
|
| 70 |
- * 수정일 수정자 수정내용 |
|
| 71 |
- * ------- -------- --------------------------- |
|
| 72 |
- * 2021.04.08 ITN 최초 생성 |
|
| 73 |
- * |
|
| 74 |
- * </pre> |
|
| 75 |
- */ |
|
| 76 |
-@Controller |
|
| 77 |
-public class AddrController {
|
|
| 78 |
- |
|
| 79 |
- |
|
| 80 |
- @Resource (name = "AddrService") |
|
| 81 |
- private AddrService addrService; |
|
| 82 |
- |
|
| 83 |
- @Resource (name = "AddrGroupService") |
|
| 84 |
- private AddrGroupService addrGroupService; |
|
| 85 |
- |
|
| 86 |
- /** EgovMessageSource */ |
|
| 87 |
- @Resource(name="egovMessageSource") |
|
| 88 |
- EgovMessageSource egovMessageSource; |
|
| 89 |
- |
|
| 90 |
- |
|
| 91 |
- /** |
|
| 92 |
- * 주소록 리스트 |
|
| 93 |
- * @param addrVO |
|
| 94 |
- * @param model |
|
| 95 |
- * @return |
|
| 96 |
- * @throws Exception |
|
| 97 |
- */ |
|
| 98 |
- @RequestMapping("/uss/ion/addr/selectAddrList.do")
|
|
| 99 |
- public String selectAddrList(@ModelAttribute("searchVO") AddrVO addrVO
|
|
| 100 |
- ,ModelMap model) throws Exception {
|
|
| 101 |
- |
|
| 102 |
- if(addrVO.getPageUnit() != 10) {
|
|
| 103 |
- addrVO.setPageUnit(addrVO.getPageUnit()); |
|
| 104 |
- } |
|
| 105 |
- |
|
| 106 |
- /** pageing */ |
|
| 107 |
- PaginationInfo paginationInfo = new PaginationInfo(); |
|
| 108 |
- paginationInfo.setCurrentPageNo(addrVO.getPageIndex()); |
|
| 109 |
- paginationInfo.setRecordCountPerPage(addrVO.getPageUnit()); |
|
| 110 |
- paginationInfo.setPageSize(addrVO.getPageSize()); |
|
| 111 |
- |
|
| 112 |
- addrVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); |
|
| 113 |
- addrVO.setLastIndex(paginationInfo.getLastRecordIndex()); |
|
| 114 |
- addrVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); |
|
| 115 |
- |
|
| 116 |
- if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
|
| 117 |
- addrVO.setSearchSortCnd("addrId");
|
|
| 118 |
- addrVO.setSearchSortOrd("asc");
|
|
| 119 |
- } |
|
| 120 |
- |
|
| 121 |
- // 기간검색 설정 |
|
| 122 |
- Calendar mon = Calendar.getInstance(); |
|
| 123 |
- mon.add(Calendar.WEEK_OF_MONTH , -2); |
|
| 124 |
- String before2Week = new java.text.SimpleDateFormat("yyyy-MM-dd").format(mon.getTime());
|
|
| 125 |
- if (null == addrVO.getSearchStartDate() || addrVO.getSearchStartDate().equals("")) {
|
|
| 126 |
- addrVO.setSearchStartDate(before2Week); |
|
| 127 |
- } |
|
| 128 |
- |
|
| 129 |
- List<AddrVO> addrList = addrService.selectAddrNewList(addrVO); |
|
| 130 |
- |
|
| 131 |
- int totCnt = 0; |
|
| 132 |
- if(addrList.size() > 0) {
|
|
| 133 |
- totCnt = addrList.get(0).getTotcnt(); |
|
| 134 |
- } |
|
| 135 |
- |
|
| 136 |
- paginationInfo.setTotalRecordCount(totCnt); |
|
| 137 |
- model.addAttribute("addrList", addrList);
|
|
| 138 |
- model.addAttribute("paginationInfo", paginationInfo);
|
|
| 139 |
- |
|
| 140 |
- return "/uss/ion/addr/AddrList"; |
|
| 141 |
- } |
|
| 142 |
- |
|
| 143 |
- |
|
| 144 |
- /** |
|
| 145 |
- * 주소록 등록 페이지 이동 |
|
| 146 |
- * @param addrVO |
|
| 147 |
- * @return |
|
| 148 |
- * @throws Exception |
|
| 149 |
- */ |
|
| 150 |
- @RequestMapping("/uss/ion/addr/registAddr.do")
|
|
| 151 |
- public String registAddr(ModelMap model) throws Exception {
|
|
| 152 |
- |
|
| 153 |
- return "/uss/ion/addr/AddrRegist"; |
|
| 154 |
- } |
|
| 155 |
- |
|
| 156 |
- |
|
| 157 |
- /** |
|
| 158 |
- * 주소록 추가 로직 |
|
| 159 |
- * @param addrVO |
|
| 160 |
- * @param redirectAttributes |
|
| 161 |
- * @param request |
|
| 162 |
- * @return |
|
| 163 |
- * @throws Exception |
|
| 164 |
- */ |
|
| 165 |
- @RequestMapping("/uss/ion/addr/insertAddr.do")
|
|
| 166 |
- public String insertAddr(AddrVO addrVO |
|
| 167 |
- ,RedirectAttributes redirectAttributes |
|
| 168 |
- ,HttpServletRequest request) throws Exception {
|
|
| 169 |
- |
|
| 170 |
- try {
|
|
| 171 |
- LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 172 |
- |
|
| 173 |
- if( addrVO.getMberId() == null || "".equals(addrVO.getMberId()) ) {
|
|
| 174 |
- addrVO.setMberId(user.getId()); |
|
| 175 |
- } |
|
| 176 |
- |
|
| 177 |
- // 자주 보내는 번호 |
|
| 178 |
- if("bookmark".equals(addrVO.getAddrGrpId())) {
|
|
| 179 |
- addrVO.setBookmark("Y");
|
|
| 180 |
- addrVO.setAddrGrpId("0");
|
|
| 181 |
- } |
|
| 182 |
- |
|
| 183 |
- // 주소록 그룹 내 휴대폰번호 중복체크 |
|
| 184 |
- int usedCnt = addrService.selectDuplAddrCnt(addrVO); |
|
| 185 |
- if (usedCnt > 0) {
|
|
| 186 |
- redirectAttributes.addFlashAttribute("message", "해당 그룹내 중복된 휴대폰 번호가 있습니다.");
|
|
| 187 |
- } |
|
| 188 |
- else {
|
|
| 189 |
- addrService.insertAddr(addrVO); |
|
| 190 |
- redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.insert"));
|
|
| 191 |
- } |
|
| 192 |
- |
|
| 193 |
- }catch (Exception e) {
|
|
| 194 |
- redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.insert"));
|
|
| 195 |
- } |
|
| 196 |
- RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/addr/selectAddrList.do");
|
|
| 197 |
- return redirectUrlMaker.getRedirectUrl(); |
|
| 198 |
- |
|
| 199 |
- } |
|
| 200 |
- |
|
| 201 |
- |
|
| 202 |
- /** |
|
| 203 |
- * 주소록 수정 로직 |
|
| 204 |
- * |
|
| 205 |
- * @param addrVO |
|
| 206 |
- * @param redirectAttributes |
|
| 207 |
- * @param request |
|
| 208 |
- * @return |
|
| 209 |
- * @throws Exception |
|
| 210 |
- */ |
|
| 211 |
- @RequestMapping("/uss/ion/addr/updateAddrByAdminAjax.do")
|
|
| 212 |
- public ModelAndView updateAddrByAdminAjax(AddrVO addrVO |
|
| 213 |
- ,RedirectAttributes redirectAttributes |
|
| 214 |
- ,HttpServletRequest request |
|
| 215 |
- ) throws Exception{
|
|
| 216 |
- |
|
| 217 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 218 |
- modelAndView.setViewName("jsonView");
|
|
| 219 |
- |
|
| 220 |
- boolean isSuccess = true; |
|
| 221 |
- String msg = ""; |
|
| 222 |
- |
|
| 223 |
- try {
|
|
| 224 |
- |
|
| 225 |
- addrService.updateAddrByAdmin(addrVO); |
|
| 226 |
- |
|
| 227 |
- } |
|
| 228 |
- catch(Exception e) {
|
|
| 229 |
- System.out.println("");
|
|
| 230 |
- isSuccess = false; |
|
| 231 |
- msg = "에러메시지 : " + e.getMessage(); |
|
| 232 |
- e.printStackTrace(); |
|
| 233 |
- } |
|
| 234 |
- |
|
| 235 |
- modelAndView.addObject("isSuccess", isSuccess);
|
|
| 236 |
- modelAndView.addObject("msg", msg);
|
|
| 237 |
- |
|
| 238 |
- return modelAndView; |
|
| 239 |
- } |
|
| 240 |
- |
|
| 241 |
- |
|
| 242 |
- /** |
|
| 243 |
- * 주소록 수정 페이지 이동 |
|
| 244 |
- * |
|
| 245 |
- * @param addrVO |
|
| 246 |
- * @param model |
|
| 247 |
- * @return |
|
| 248 |
- * @throws Exception |
|
| 249 |
- */ |
|
| 250 |
- @RequestMapping("/uss/ion/addr/editAddr.do")
|
|
| 251 |
- public String editAddr(AddrVO addrVO |
|
| 252 |
- , ModelMap model ) throws Exception {
|
|
| 253 |
- |
|
| 254 |
- AddrVO addrInfo = addrService.selectAddrDetail(addrVO); |
|
| 255 |
- |
|
| 256 |
- model.addAttribute("addrInfo", addrInfo);
|
|
| 257 |
- |
|
| 258 |
- return "/uss/ion/addr/AddrEdit"; |
|
| 259 |
- } |
|
| 260 |
- |
|
| 261 |
- /** |
|
| 262 |
- * 주소록 삭제 로직 |
|
| 263 |
- * |
|
| 264 |
- * @param request |
|
| 265 |
- * @param addrVO |
|
| 266 |
- * @param redirectAttributes |
|
| 267 |
- * @param model |
|
| 268 |
- * @return |
|
| 269 |
- * @throws Exception |
|
| 270 |
- */ |
|
| 271 |
- @RequestMapping("/uss/ion/addr/deleteAddr.do")
|
|
| 272 |
- public String deleteAddr (HttpServletRequest request, @ModelAttribute("searchVO") AddrVO addrVO
|
|
| 273 |
- ,RedirectAttributes redirectAttributes |
|
| 274 |
- ,ModelMap model) throws Exception {
|
|
| 275 |
- |
|
| 276 |
- int result = addrService.deleteAddrByAdminAll(addrVO); |
|
| 277 |
- |
|
| 278 |
- if (result > 0) {
|
|
| 279 |
- redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete"));
|
|
| 280 |
- } else {
|
|
| 281 |
- redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.delete"));
|
|
| 282 |
- } |
|
| 283 |
- redirectAttributes.addAttribute("pageIndex", addrVO.getPageIndex());
|
|
| 284 |
- redirectAttributes.addAttribute("searchCondition", addrVO.getSearchCondition());
|
|
| 285 |
- redirectAttributes.addAttribute("searchKeyword", addrVO.getSearchKeyword());
|
|
| 286 |
- |
|
| 287 |
- return "redirect:/uss/ion/addr/selectAddrList.do"; |
|
| 288 |
- } |
|
| 289 |
- |
|
| 290 |
- |
|
| 291 |
- |
|
| 292 |
- |
|
| 293 |
- /** |
|
| 294 |
- * 주소록 타 회원으로 이전(복사) 처리 |
|
| 295 |
- * @param addrVO |
|
| 296 |
- * @param addrGroupVO |
|
| 297 |
- * @param addrTransHistVO |
|
| 298 |
- * @return |
|
| 299 |
- * @throws Exception |
|
| 300 |
- */ |
|
| 301 |
- @RequestMapping("/web/mjon/addr/transAddrGroupAjax.do")
|
|
| 302 |
- public ModelAndView transAddrGroupAjax(AddrVO addrVO, AddrGroupVO addrGroupVO, AddrTransHistVO addrTransHistVO) throws Exception {
|
|
| 303 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 304 |
- modelAndView.setViewName("jsonView");
|
|
| 305 |
- |
|
| 306 |
- try {
|
|
| 307 |
- String successCd = addrService.updateAddrAnotherMember(addrVO, addrGroupVO, addrTransHistVO); |
|
| 308 |
- |
|
| 309 |
- modelAndView.addObject("status", "success");
|
|
| 310 |
- modelAndView.addObject("result", successCd);
|
|
| 311 |
- |
|
| 312 |
- }catch(Exception e) {
|
|
| 313 |
- e.printStackTrace(); |
|
| 314 |
- modelAndView.addObject("status", "fail");
|
|
| 315 |
- return modelAndView; |
|
| 316 |
- } |
|
| 317 |
- |
|
| 318 |
- return modelAndView; |
|
| 319 |
- } |
|
| 320 |
- |
|
| 321 |
- |
|
| 322 |
- |
|
| 323 |
- /** |
|
| 324 |
- * 주소록 사용자 화면 껍데기 |
|
| 325 |
- * @param addrVO |
|
| 326 |
- * @param model |
|
| 327 |
- * @return |
|
| 328 |
- * @throws Exception |
|
| 329 |
- */ |
|
| 330 |
- @RequestMapping("/web/mjon/addr/selectAddrList.do")
|
|
| 331 |
- public String selectAddrWebList(@ModelAttribute("searchVO") AddrVO addrVO
|
|
| 332 |
- ,AddrGroupVO addrGroupVO, ModelMap model, RedirectAttributes redirectAttributes) throws Exception {
|
|
| 333 |
- |
|
| 334 |
- LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 335 |
- String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 336 |
- |
|
| 337 |
- if(userId == "") {
|
|
| 338 |
- /*redirectAttributes.addFlashAttribute("fail", true);*/
|
|
| 339 |
- //redirectAttributes.addFlashAttribute("message", "문자온 서비스는 로그인 후 이용 가능합니다.");
|
|
| 340 |
- return "redirect:/web/user/login/login.do"; |
|
| 341 |
- } |
|
| 342 |
- |
|
| 343 |
- return "/web/addr/AddrList"; |
|
| 344 |
- } |
|
| 345 |
- |
|
| 346 |
- |
|
| 347 |
- |
|
| 348 |
- /** |
|
| 349 |
- * 사용자 주소록 리스트 Ajax |
|
| 350 |
- * @param request |
|
| 351 |
- * @param model |
|
| 352 |
- * @param addrVO |
|
| 353 |
- * @param redirectAttributes |
|
| 354 |
- * @return |
|
| 355 |
- * @throws Exception |
|
| 356 |
- */ |
|
| 357 |
- @RequestMapping("/web/mjon/addr/selectAddrAjax.do")
|
|
| 358 |
- public String selectAddrAjax(HttpServletRequest request, ModelMap model, |
|
| 359 |
- @ModelAttribute("searchVO") AddrVO addrVO) throws Exception {
|
|
| 360 |
- |
|
| 361 |
- //로그인 권한정보 불러오기 |
|
| 362 |
- LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 363 |
- String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 364 |
- |
|
| 365 |
- if(userId != "") {
|
|
| 366 |
- addrVO.setMberId(userId); |
|
| 367 |
- } else {
|
|
| 368 |
- return "/web/addr/AddrListAjax"; |
|
| 369 |
- } |
|
| 370 |
- |
|
| 371 |
- if(addrVO.getPageUnit() != 10) {
|
|
| 372 |
- addrVO.setPageUnit(addrVO.getPageUnit()); |
|
| 373 |
- } |
|
| 374 |
- |
|
| 375 |
- /** pageing */ |
|
| 376 |
- PaginationInfo paginationInfo = new PaginationInfo(); |
|
| 377 |
- paginationInfo.setCurrentPageNo(addrVO.getPageIndex()); |
|
| 378 |
- paginationInfo.setRecordCountPerPage(addrVO.getPageUnit()); |
|
| 379 |
- paginationInfo.setPageSize(addrVO.getPageSize()); |
|
| 380 |
- |
|
| 381 |
- addrVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); |
|
| 382 |
- addrVO.setLastIndex(paginationInfo.getLastRecordIndex()); |
|
| 383 |
- addrVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); |
|
| 384 |
- |
|
| 385 |
- if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
|
| 386 |
- addrVO.setSearchSortCnd("addrId");
|
|
| 387 |
- addrVO.setSearchSortOrd("asc");
|
|
| 388 |
- } |
|
| 389 |
- |
|
| 390 |
- List<AddrVO> addrList = addrService.selectAddrList(addrVO); |
|
| 391 |
- |
|
| 392 |
- int totCnt = 0; |
|
| 393 |
- if(addrList.size() > 0) {
|
|
| 394 |
- totCnt = addrList.get(0).getTotcnt(); |
|
| 395 |
- } |
|
| 396 |
- |
|
| 397 |
- paginationInfo.setTotalRecordCount(totCnt); |
|
| 398 |
- |
|
| 399 |
- model.addAttribute("paginationInfo", paginationInfo);
|
|
| 400 |
- model.addAttribute("addrList", addrList);
|
|
| 401 |
- model.addAttribute("startKeyword",addrVO.getStartKeyword());
|
|
| 402 |
- model.addAttribute("userId", userId);
|
|
| 403 |
- |
|
| 404 |
- return "/web/addr/AddrListAjax"; |
|
| 405 |
- } |
|
| 406 |
- |
|
| 407 |
- |
|
| 408 |
- |
|
| 409 |
- @RequestMapping("/web/mjon/addr/addrListforExcelAjax.do")
|
|
| 410 |
- public String AddrListforExcel(HttpServletRequest request, ModelMap model, |
|
| 411 |
- @ModelAttribute("searchVO") AddrVO addrVO) throws Exception {
|
|
| 412 |
- |
|
| 413 |
- return "/web/addr/addrListforExcel"; |
|
| 414 |
- } |
|
| 415 |
- /** |
|
| 416 |
- * 사용자 주소록 중복 리스트 Ajax |
|
| 417 |
- * @param request |
|
| 418 |
- * @param model |
|
| 419 |
- * @param addrVO |
|
| 420 |
- * @param redirectAttributes |
|
| 421 |
- * @return |
|
| 422 |
- * @throws Exception |
|
| 423 |
- */ |
|
| 424 |
- @RequestMapping("/web/mjon/addr/selectAddrDupliAjax.do")
|
|
| 425 |
- public String selectAddrDupliAjax(HttpServletRequest request, ModelMap model, |
|
| 426 |
- @ModelAttribute("searchVO") AddrVO addrVO) throws Exception {
|
|
| 427 |
- |
|
| 428 |
- //로그인 권한정보 불러오기 |
|
| 429 |
- LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 430 |
- String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 431 |
- |
|
| 432 |
- if(userId != "") {
|
|
| 433 |
- addrVO.setMberId(userId); |
|
| 434 |
- } |
|
| 435 |
- |
|
| 436 |
- if(addrVO.getPageUnit() != 10) {
|
|
| 437 |
- addrVO.setPageUnit(addrVO.getPageUnit()); |
|
| 438 |
- } |
|
| 439 |
- |
|
| 440 |
- /** pageing */ |
|
| 441 |
- PaginationInfo paginationInfo = new PaginationInfo(); |
|
| 442 |
- paginationInfo.setCurrentPageNo(addrVO.getPageIndex()); |
|
| 443 |
- paginationInfo.setRecordCountPerPage(addrVO.getPageUnit()); |
|
| 444 |
- paginationInfo.setPageSize(addrVO.getPageSize()); |
|
| 445 |
- |
|
| 446 |
- addrVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); |
|
| 447 |
- addrVO.setLastIndex(paginationInfo.getLastRecordIndex()); |
|
| 448 |
- addrVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); |
|
| 449 |
- |
|
| 450 |
- if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
|
| 451 |
- addrVO.setSearchSortCnd("addrId");
|
|
| 452 |
- addrVO.setSearchSortOrd("asc");
|
|
| 453 |
- } |
|
| 454 |
- |
|
| 455 |
- List<AddrVO> addrDupliList = addrService.selectAddrDupliListByAll(addrVO); |
|
| 456 |
- |
|
| 457 |
- int totCnt = 0; |
|
| 458 |
- if(addrDupliList.size() > 0) {
|
|
| 459 |
- totCnt = addrDupliList.get(0).getTotcnt(); |
|
| 460 |
- } |
|
| 461 |
- |
|
| 462 |
- paginationInfo.setTotalRecordCount(totCnt); |
|
| 463 |
- |
|
| 464 |
- model.addAttribute("paginationInfo2", paginationInfo);
|
|
| 465 |
- model.addAttribute("addrDupliList", addrDupliList);
|
|
| 466 |
- |
|
| 467 |
- return "/web/addr/AddrListDupliAjax"; |
|
| 468 |
- } |
|
| 469 |
- |
|
| 470 |
- @RequestMapping("/web/mjon/addr/selectAddrPrint.do")
|
|
| 471 |
- public String selectAddrPrint(@RequestParam("cellCheck2") String[] cellCheck,
|
|
| 472 |
- AddrVO addrVO, |
|
| 473 |
- HttpServletRequest request, |
|
| 474 |
- HttpServletResponse response , |
|
| 475 |
- ModelMap model) throws Exception {
|
|
| 476 |
- |
|
| 477 |
- //로그인 권한정보 불러오기 |
|
| 478 |
- LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 479 |
- String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 480 |
- |
|
| 481 |
- if(userId != "") {
|
|
| 482 |
- addrVO.setMberId(userId); |
|
| 483 |
- } |
|
| 484 |
- |
|
| 485 |
- addrVO.setRecordCountPerPage(100000); |
|
| 486 |
- addrVO.setFirstIndex(0); |
|
| 487 |
- |
|
| 488 |
- List<AddrVO> addrList = addrService.selectAddrList(addrVO); |
|
| 489 |
- |
|
| 490 |
- String chk = ""; |
|
| 491 |
- |
|
| 492 |
- for(int i=0; i<cellCheck.length; i++ ) {
|
|
| 493 |
- chk += cellCheck[i] + ","; |
|
| 494 |
- } |
|
| 495 |
- |
|
| 496 |
- |
|
| 497 |
- model.addAttribute("chk", chk);
|
|
| 498 |
- model.addAttribute("addrList", addrList);
|
|
| 499 |
- |
|
| 500 |
- return "/web/addr/AddrListPrint"; |
|
| 501 |
- } |
|
| 502 |
- |
|
| 503 |
- /** |
|
| 504 |
- * 주소록 상세정보 ajax |
|
| 505 |
- * @param addrCheck |
|
| 506 |
- * @param request |
|
| 507 |
- * @param addrVO |
|
| 508 |
- * @param model |
|
| 509 |
- * @param redirectAttributes |
|
| 510 |
- * @return |
|
| 511 |
- * @throws Exception |
|
| 512 |
- */ |
|
| 513 |
- @RequestMapping("/web/mjon/addr/selectAddrDetailAjax.do")
|
|
| 514 |
- public ModelAndView selectAddrDetailAjax(HttpServletRequest request, |
|
| 515 |
- AddrVO addrVO, Model model) throws Exception {
|
|
| 516 |
- |
|
| 517 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 518 |
- modelAndView.setViewName("jsonView");
|
|
| 519 |
- |
|
| 520 |
- boolean isSuccess = true; |
|
| 521 |
- String msg = ""; |
|
| 522 |
- AddrVO addrInfo = null; |
|
| 523 |
- |
|
| 524 |
- try {
|
|
| 525 |
- |
|
| 526 |
- addrInfo = addrService.selectAddrDetail(addrVO); |
|
| 527 |
- |
|
| 528 |
- } catch (Exception e) {
|
|
| 529 |
- isSuccess = false; |
|
| 530 |
- msg = e.getMessage(); |
|
| 531 |
- } |
|
| 532 |
- |
|
| 533 |
- modelAndView.addObject("isSuccess", isSuccess);
|
|
| 534 |
- modelAndView.addObject("msg", msg);
|
|
| 535 |
- modelAndView.addObject("addrInfo", addrInfo);
|
|
| 536 |
- |
|
| 537 |
- return modelAndView; |
|
| 538 |
- |
|
| 539 |
- } |
|
| 540 |
- |
|
| 541 |
- |
|
| 542 |
- /** |
|
| 543 |
- * 주소록 그룹 삭제 로직 ajax |
|
| 544 |
- * |
|
| 545 |
- * @param request |
|
| 546 |
- * @param addrGroupVO |
|
| 547 |
- * @param redirectAttributes |
|
| 548 |
- * @param model |
|
| 549 |
- * @return |
|
| 550 |
- * @throws Exception |
|
| 551 |
- */ |
|
| 552 |
- @RequestMapping("/web/mjon/addr/deleteAddrAjax.do")
|
|
| 553 |
- public ModelAndView deleteAddrAjax(@RequestParam(value="addrCheck", defaultValue="0") String[] addrCheck, HttpServletRequest request, |
|
| 554 |
- AddrVO addrVO, Model model |
|
| 555 |
- ,RedirectAttributes redirectAttributes |
|
| 556 |
- ) throws Exception {
|
|
| 557 |
- |
|
| 558 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 559 |
- modelAndView.setViewName("jsonView");
|
|
| 560 |
- |
|
| 561 |
- LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 562 |
- addrVO.setLastUpdusrId(user.getId()); |
|
| 563 |
- addrVO.setMberId(user.getId()); |
|
| 564 |
- |
|
| 565 |
- //단일삭제 |
|
| 566 |
- if(!"".equals(addrVO.getAddrId())) {
|
|
| 567 |
- addrCheck[0] = addrVO.getAddrId(); |
|
| 568 |
- } |
|
| 569 |
- |
|
| 570 |
- for(String id:addrCheck) {
|
|
| 571 |
- try {
|
|
| 572 |
- addrVO.setAddrId(id); |
|
| 573 |
-// addrService.deleteAddr(addrVO); |
|
| 574 |
- System.out.println("??????");
|
|
| 575 |
- |
|
| 576 |
- modelAndView.addObject("result", "success");
|
|
| 577 |
- } catch (Exception e) {
|
|
| 578 |
- e.printStackTrace(); |
|
| 579 |
- modelAndView.addObject("result", "fail");
|
|
| 580 |
- return modelAndView; |
|
| 581 |
- } |
|
| 582 |
- } |
|
| 583 |
- |
|
| 584 |
- return modelAndView; |
|
| 585 |
- |
|
| 586 |
- } |
|
| 587 |
- |
|
| 588 |
- |
|
| 589 |
- |
|
| 590 |
- /** |
|
| 591 |
- * 주소록 등록 로직 (ajax) |
|
| 592 |
- * @param addrVO |
|
| 593 |
- * @param request |
|
| 594 |
- * @return |
|
| 595 |
- * @throws Exception |
|
| 596 |
- */ |
|
| 597 |
- @RequestMapping("/web/mjon/addr/insertAddrAjax.do")
|
|
| 598 |
- public ModelAndView insertAddrAjax(HttpServletRequest request, ModelMap model, |
|
| 599 |
- AddrVO addrVO |
|
| 600 |
- ) throws Exception {
|
|
| 601 |
- ModelAndView mv = new ModelAndView(); |
|
| 602 |
- mv.setViewName("jsonView");
|
|
| 603 |
- |
|
| 604 |
- LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 605 |
- String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 606 |
- |
|
| 607 |
- addrVO.setMberId(userId); |
|
| 608 |
- |
|
| 609 |
- if("bookmark".equals(addrVO.getAddrGrpId())) {
|
|
| 610 |
- addrVO.setBookmark("Y");
|
|
| 611 |
- addrVO.setAddrGrpId("0");
|
|
| 612 |
- } |
|
| 613 |
- |
|
| 614 |
- int usedCnt = addrService.selectDuplAddrCnt(addrVO); |
|
| 615 |
- if(usedCnt > 0) {
|
|
| 616 |
- mv.addObject("result","dupl");
|
|
| 617 |
- }else {
|
|
| 618 |
- if(userId != "") {
|
|
| 619 |
- try {
|
|
| 620 |
- addrService.insertAddr(addrVO); |
|
| 621 |
- mv.addObject("result","success");
|
|
| 622 |
- } catch (Exception e) {
|
|
| 623 |
- e.printStackTrace(); |
|
| 624 |
- mv.addObject("result","fail");
|
|
| 625 |
- } |
|
| 626 |
- |
|
| 627 |
- } else {
|
|
| 628 |
- mv.addObject("result","fail");
|
|
| 629 |
- } |
|
| 630 |
- } |
|
| 631 |
- return mv; |
|
| 632 |
- } |
|
| 633 |
- |
|
| 634 |
- |
|
| 635 |
- /** |
|
| 636 |
- * 주소록 다중수정 ajax |
|
| 637 |
- * @param addrCheck |
|
| 638 |
- * @param request |
|
| 639 |
- * @param addrVO |
|
| 640 |
- * @param model |
|
| 641 |
- * @param redirectAttributes |
|
| 642 |
- * @return |
|
| 643 |
- * @throws Exception |
|
| 644 |
- */ |
|
| 645 |
- @RequestMapping("/web/mjon/addr/updateAddrListAjax.do")
|
|
| 646 |
- public ModelAndView updateAddrListAjax(HttpServletRequest request, |
|
| 647 |
- AddrVO addrVO, Model model |
|
| 648 |
- ,RedirectAttributes redirectAttributes |
|
| 649 |
- ) throws Exception {
|
|
| 650 |
- |
|
| 651 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 652 |
- modelAndView.setViewName("jsonView");
|
|
| 653 |
- |
|
| 654 |
- LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 655 |
- addrVO.setLastUpdusrId(user.getId()); |
|
| 656 |
- addrVO.setMberId(user.getId()); |
|
| 657 |
- |
|
| 658 |
- int listSize = addrVO.getAddrIds().length; |
|
| 659 |
- |
|
| 660 |
- for(int i=0; i<listSize; i++) {
|
|
| 661 |
- try {
|
|
| 662 |
- // JSP 2023.04.07 => 주소록그룹 수정 추가 |
|
| 663 |
- if (addrVO.getAddrGrpIds()[i].equals("bookmark")) {
|
|
| 664 |
- // 자주보내는 번호 |
|
| 665 |
- addrVO.setAddrGrpId("0");
|
|
| 666 |
- addrVO.setBookmark("Y");
|
|
| 667 |
- } |
|
| 668 |
- else {
|
|
| 669 |
- addrVO.setAddrGrpId(addrVO.getAddrGrpIds()[i]); |
|
| 670 |
- addrVO.setBookmark("N");
|
|
| 671 |
- } |
|
| 672 |
- |
|
| 673 |
- addrVO.setAddrId(addrVO.getAddrIds()[i]); |
|
| 674 |
- |
|
| 675 |
- if(addrVO.getAddrPhones().length > 0) {
|
|
| 676 |
- addrVO.setAddrPhoneNo(addrVO.getAddrPhones()[i]); |
|
| 677 |
- } |
|
| 678 |
- else {
|
|
| 679 |
- addrVO.setAddrPhoneNo(null); |
|
| 680 |
- } |
|
| 681 |
- |
|
| 682 |
- if(addrVO.getAddrNms().length > 0) {
|
|
| 683 |
- addrVO.setAddrNm(addrVO.getAddrNms()[i]); |
|
| 684 |
- } |
|
| 685 |
- else {
|
|
| 686 |
- addrVO.setAddrNm(null); |
|
| 687 |
- } |
|
| 688 |
- |
|
| 689 |
- if(!addrVO.getAddrInfo1s()[i].equals(null) || !"".equals(addrVO.getAddrInfo1s()[i])) {
|
|
| 690 |
- addrVO.setAddrInfo1(addrVO.getAddrInfo1s()[i]); |
|
| 691 |
- }else {
|
|
| 692 |
- addrVO.setAddrInfo1("");
|
|
| 693 |
- } |
|
| 694 |
- |
|
| 695 |
- if(!addrVO.getAddrInfo2s()[i].equals(null) || !"".equals(addrVO.getAddrInfo2s()[i])) {
|
|
| 696 |
- addrVO.setAddrInfo2(addrVO.getAddrInfo2s()[i]); |
|
| 697 |
- }else {
|
|
| 698 |
- addrVO.setAddrInfo2("");
|
|
| 699 |
- } |
|
| 700 |
- |
|
| 701 |
- if(!addrVO.getAddrInfo3s()[i].equals(null) || !"".equals(addrVO.getAddrInfo3s()[i])) {
|
|
| 702 |
- addrVO.setAddrInfo3(addrVO.getAddrInfo3s()[i]); |
|
| 703 |
- }else {
|
|
| 704 |
- addrVO.setAddrInfo3("");
|
|
| 705 |
- } |
|
| 706 |
- |
|
| 707 |
- if(!addrVO.getAddrInfo4s()[i].equals(null) || !"".equals(addrVO.getAddrInfo4s()[i])) {
|
|
| 708 |
- addrVO.setAddrInfo4(addrVO.getAddrInfo4s()[i]); |
|
| 709 |
- }else {
|
|
| 710 |
- addrVO.setAddrInfo4("");
|
|
| 711 |
- } |
|
| 712 |
- |
|
| 713 |
- addrService.updateAddr(addrVO); |
|
| 714 |
- |
|
| 715 |
- modelAndView.addObject("result", "success");
|
|
| 716 |
- } catch (Exception e) {
|
|
| 717 |
- e.printStackTrace(); |
|
| 718 |
- modelAndView.addObject("result", "fail");
|
|
| 719 |
- return modelAndView; |
|
| 720 |
- } |
|
| 721 |
- } |
|
| 722 |
- return modelAndView; |
|
| 723 |
- } |
|
| 724 |
- |
|
| 725 |
- |
|
| 726 |
- /** |
|
| 727 |
- * 주소록 다중수정 ajax |
|
| 728 |
- * @param addrCheck |
|
| 729 |
- * @param request |
|
| 730 |
- * @param addrVO |
|
| 731 |
- * @param model |
|
| 732 |
- * @param redirectAttributes |
|
| 733 |
- * @return |
|
| 734 |
- * @throws Exception |
|
| 735 |
- */ |
|
| 736 |
- @RequestMapping("/web/mjon/addr/updateAddrAjax.do")
|
|
| 737 |
- public ModelAndView updateAddrAjax(@RequestParam("addrCheck") String[] addrCheck, HttpServletRequest request,
|
|
| 738 |
- AddrVO addrVO, Model model |
|
| 739 |
- ,RedirectAttributes redirectAttributes |
|
| 740 |
- ) throws Exception {
|
|
| 741 |
- |
|
| 742 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 743 |
- modelAndView.setViewName("jsonView");
|
|
| 744 |
- |
|
| 745 |
- LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 746 |
- addrVO.setLastUpdusrId(user.getId()); |
|
| 747 |
- addrVO.setMberId(user.getId()); |
|
| 748 |
- |
|
| 749 |
- for(String id:addrCheck) {
|
|
| 750 |
- try {
|
|
| 751 |
- |
|
| 752 |
- if("0".equals (addrVO.getAddrGrpId())) {
|
|
| 753 |
- addrVO.setBookmark("Y");
|
|
| 754 |
- } else if(addrVO.getAddrGrpId() != null && !"".equals(addrVO.getAddrGrpId())) {
|
|
| 755 |
- addrVO.setBookmark("N");
|
|
| 756 |
- } |
|
| 757 |
- |
|
| 758 |
- addrVO.setAddrId(id); |
|
| 759 |
- addrService.updateMemoAddr(addrVO); |
|
| 760 |
- |
|
| 761 |
- modelAndView.addObject("result", "success");
|
|
| 762 |
- } catch (Exception e) {
|
|
| 763 |
- e.printStackTrace(); |
|
| 764 |
- modelAndView.addObject("result", "fail");
|
|
| 765 |
- return modelAndView; |
|
| 766 |
- } |
|
| 767 |
- } |
|
| 768 |
- |
|
| 769 |
- return modelAndView; |
|
| 770 |
- |
|
| 771 |
- } |
|
| 772 |
- |
|
| 773 |
- |
|
| 774 |
- /** |
|
| 775 |
- * 주소록 그룹이동 ajax |
|
| 776 |
- * @param addrCheck |
|
| 777 |
- * @param request |
|
| 778 |
- * @param addrVO |
|
| 779 |
- * @param model |
|
| 780 |
- * @param redirectAttributes |
|
| 781 |
- * @return |
|
| 782 |
- * @throws Exception |
|
| 783 |
- */ |
|
| 784 |
- @RequestMapping("/web/mjon/addr/updateAddrMoveGrpAjax.do")
|
|
| 785 |
- public ModelAndView updateAddrMoveGrpAjax(@RequestParam("addrCheck") String[] addrCheck,
|
|
| 786 |
- @RequestParam("addrPhoneNos") String[] addrPhoneNos,
|
|
| 787 |
- HttpServletRequest request, |
|
| 788 |
- AddrVO addrVO, Model model, |
|
| 789 |
- RedirectAttributes redirectAttributes |
|
| 790 |
- ) throws Exception {
|
|
| 791 |
- |
|
| 792 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 793 |
- modelAndView.setViewName("jsonView");
|
|
| 794 |
- |
|
| 795 |
- LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 796 |
- addrVO.setLastUpdusrId(user.getId()); |
|
| 797 |
- addrVO.setMberId(user.getId()); |
|
| 798 |
- |
|
| 799 |
- // 그룹미지정, 자주보내는 번호 구분처리 |
|
| 800 |
- if("0".equals (addrVO.getAddrGrpId())) {
|
|
| 801 |
- // 그룹미지정 |
|
| 802 |
- addrVO.setBookmark("N");
|
|
| 803 |
- } |
|
| 804 |
- else if("bookmark".equals (addrVO.getAddrGrpId())) {
|
|
| 805 |
- // 자주보내는 번호 |
|
| 806 |
- addrVO.setBookmark("Y");
|
|
| 807 |
- addrVO.setAddrGrpId("0");
|
|
| 808 |
- } |
|
| 809 |
- else if(addrVO.getAddrGrpId() != null && !"".equals(addrVO.getAddrGrpId())) {
|
|
| 810 |
- addrVO.setBookmark("N");
|
|
| 811 |
- } |
|
| 812 |
- |
|
| 813 |
- /** |
|
| 814 |
- * 보내려는 그룹에 등록되어있는 전화번호를 변수에 담아둠 |
|
| 815 |
- */ |
|
| 816 |
- List<?> addrPhoneList = addrService.selectPhoneNumInAddrGroup(addrVO); |
|
| 817 |
- |
|
| 818 |
- String phoneNos = ""; |
|
| 819 |
- for(int i=0; i<addrPhoneList.size(); i++) {
|
|
| 820 |
- if(i == 0) {
|
|
| 821 |
- phoneNos = ((AddrVO)addrPhoneList.get(i)).getAddrPhoneNo(); |
|
| 822 |
- } else {
|
|
| 823 |
- phoneNos = phoneNos + "," + ((AddrVO)addrPhoneList.get(i)).getAddrPhoneNo(); |
|
| 824 |
- } |
|
| 825 |
- } |
|
| 826 |
- |
|
| 827 |
- /** |
|
| 828 |
- * 2. 넘어온 주소록 id를 db조회하여 리스트로 받아옴 |
|
| 829 |
- */ |
|
| 830 |
- String duplYn = "N"; |
|
| 831 |
- for(String phoneNo:addrPhoneNos) {
|
|
| 832 |
- if(phoneNos != null && phoneNos.contains(phoneNo)) {
|
|
| 833 |
- modelAndView.addObject("result","dupl");
|
|
| 834 |
- duplYn = "Y"; |
|
| 835 |
- break; |
|
| 836 |
- } |
|
| 837 |
- } |
|
| 838 |
- |
|
| 839 |
- if(duplYn == "N") {
|
|
| 840 |
- for(String id:addrCheck) {
|
|
| 841 |
- |
|
| 842 |
- try {
|
|
| 843 |
- addrVO.setAddrId(id); |
|
| 844 |
- addrService.updateAddrGrp(addrVO); |
|
| 845 |
- |
|
| 846 |
- modelAndView.addObject("result", "success");
|
|
| 847 |
- } catch (Exception e) {
|
|
| 848 |
- e.printStackTrace(); |
|
| 849 |
- modelAndView.addObject("result", "fail");
|
|
| 850 |
- return modelAndView; |
|
| 851 |
- } |
|
| 852 |
- } |
|
| 853 |
- } |
|
| 854 |
- |
|
| 855 |
- return modelAndView; |
|
| 856 |
- |
|
| 857 |
- } |
|
| 858 |
- |
|
| 859 |
- |
|
| 860 |
- /** |
|
| 861 |
- * 주소록 복사 ajax |
|
| 862 |
- * @param addrCheck |
|
| 863 |
- * @param request |
|
| 864 |
- * @param addrVO |
|
| 865 |
- * @param model |
|
| 866 |
- * @param redirectAttributes |
|
| 867 |
- * @return |
|
| 868 |
- * @throws Exception |
|
| 869 |
- */ |
|
| 870 |
- @RequestMapping("/web/mjon/addr/insertCopyAddrAjax.do")
|
|
| 871 |
- public ModelAndView insertCopyAddrAjax(@RequestParam("addrCheck") String[] addrCheck,
|
|
| 872 |
- @RequestParam("addrPhoneNos") String[] addrPhoneNos,
|
|
| 873 |
- HttpServletRequest request, |
|
| 874 |
- AddrVO addrVO, Model model, |
|
| 875 |
- RedirectAttributes redirectAttributes |
|
| 876 |
- ) throws Exception {
|
|
| 877 |
- |
|
| 878 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 879 |
- modelAndView.setViewName("jsonView");
|
|
| 880 |
- |
|
| 881 |
- LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 882 |
- addrVO.setMberId(user.getId()); |
|
| 883 |
- |
|
| 884 |
- // 그룹미지정, 자주보내는 번호 구분처리 |
|
| 885 |
- if("0".equals (addrVO.getAddrGrpId())) {
|
|
| 886 |
- // 그룹미지정 |
|
| 887 |
- addrVO.setBookmark("N");
|
|
| 888 |
- } |
|
| 889 |
- else if("bookmark".equals (addrVO.getAddrGrpId())) {
|
|
| 890 |
- // 자주보내는 번호 |
|
| 891 |
- addrVO.setBookmark("Y");
|
|
| 892 |
- addrVO.setAddrGrpId("0");
|
|
| 893 |
- } |
|
| 894 |
- else if(addrVO.getAddrGrpId() != null && !"".equals(addrVO.getAddrGrpId())) {
|
|
| 895 |
- addrVO.setBookmark("N");
|
|
| 896 |
- } |
|
| 897 |
- |
|
| 898 |
- /** |
|
| 899 |
- * 복사하려는 그룹에 등록되어있는 전화번호를 변수에 담아둠 |
|
| 900 |
- */ |
|
| 901 |
- List<?> addrPhoneList = addrService.selectPhoneNumInAddrGroup(addrVO); |
|
| 902 |
- |
|
| 903 |
- String phoneNos = ""; |
|
| 904 |
- for(int i=0; i<addrPhoneList.size(); i++) {
|
|
| 905 |
- if(i == 0) {
|
|
| 906 |
- phoneNos = ((AddrVO)addrPhoneList.get(i)).getAddrPhoneNo(); |
|
| 907 |
- } else {
|
|
| 908 |
- phoneNos = phoneNos + "," + ((AddrVO)addrPhoneList.get(i)).getAddrPhoneNo(); |
|
| 909 |
- } |
|
| 910 |
- } |
|
| 911 |
- |
|
| 912 |
- /** |
|
| 913 |
- * 2. 넘어온 주소록 id를 db조회하여 리스트로 받아옴 |
|
| 914 |
- */ |
|
| 915 |
- String duplYn = "N"; |
|
| 916 |
- for(String phoneNo:addrPhoneNos) {
|
|
| 917 |
- if(phoneNos != null && phoneNos.contains(phoneNo)) {
|
|
| 918 |
- modelAndView.addObject("result","dupl");
|
|
| 919 |
- duplYn = "Y"; |
|
| 920 |
- break; |
|
| 921 |
- } |
|
| 922 |
- } |
|
| 923 |
- |
|
| 924 |
- if(duplYn == "N") {
|
|
| 925 |
- for(String id:addrCheck) {
|
|
| 926 |
- try {
|
|
| 927 |
- addrVO.setAddrId(id); |
|
| 928 |
- addrService.insertCopyAddr(addrVO); |
|
| 929 |
- |
|
| 930 |
- modelAndView.addObject("result", "success");
|
|
| 931 |
- } catch (Exception e) {
|
|
| 932 |
- e.printStackTrace(); |
|
| 933 |
- modelAndView.addObject("result", "fail");
|
|
| 934 |
- return modelAndView; |
|
| 935 |
- } |
|
| 936 |
- } |
|
| 937 |
- } |
|
| 938 |
- return modelAndView; |
|
| 939 |
- |
|
| 940 |
- } |
|
| 941 |
- |
|
| 942 |
- |
|
| 943 |
- /** |
|
| 944 |
- * 주소록 그룹 내 휴대폰번호 중복체크 |
|
| 945 |
- * |
|
| 946 |
- * @param addrVO |
|
| 947 |
- * @return |
|
| 948 |
- * @throws Exception |
|
| 949 |
- */ |
|
| 950 |
- @RequestMapping("/uss/ion/addr/selectDuplAddrAjax.do")
|
|
| 951 |
- public ModelAndView selectDuplAddrAjax(AddrVO addrVO) throws Exception {
|
|
| 952 |
- ModelAndView mv = new ModelAndView(); |
|
| 953 |
- mv.setViewName("jsonView");
|
|
| 954 |
- |
|
| 955 |
- int usedCnt = addrService.selectDuplAddrCnt(addrVO); |
|
| 956 |
- |
|
| 957 |
- mv.addObject("usedCnt", usedCnt);
|
|
| 958 |
- |
|
| 959 |
- return mv; |
|
| 960 |
- } |
|
| 961 |
- |
|
| 962 |
- |
|
| 963 |
- /** |
|
| 964 |
- * 주소록 폰주소록 가이드 이동 |
|
| 965 |
- * |
|
| 966 |
- * @param addrVO |
|
| 967 |
- * @param model |
|
| 968 |
- * @return |
|
| 969 |
- * @throws Exception |
|
| 970 |
- */ |
|
| 971 |
- @RequestMapping("/web/mjon/addr/addrMobGuide.do")
|
|
| 972 |
- public String addrMobGuide(ModelMap model) throws Exception {
|
|
| 973 |
- |
|
| 974 |
- return "/web/addr/AddrMobGuide"; |
|
| 975 |
- } |
|
| 976 |
- |
|
| 977 |
- |
|
| 978 |
- |
|
| 979 |
- /** |
|
| 980 |
- * 선택한 주소록을 문자전송 화면으로 보내기 |
|
| 981 |
- * @param addrVO |
|
| 982 |
- * @param req |
|
| 983 |
- * @param model |
|
| 984 |
- * @return |
|
| 985 |
- * @throws Exception |
|
| 986 |
- */ |
|
| 987 |
- @RequestMapping(value= {"/web/mjon/addr/selectAddrDataListAjax.do"})
|
|
| 988 |
- public ModelAndView selectAddrDataListAjax( |
|
| 989 |
- AddrVO addrVO, |
|
| 990 |
- HttpServletRequest req, |
|
| 991 |
- ModelMap model) throws Exception {
|
|
| 992 |
- |
|
| 993 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 994 |
- modelAndView.setViewName("jsonView");
|
|
| 995 |
- |
|
| 996 |
- LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 997 |
- String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 998 |
- |
|
| 999 |
- if(userId.equals("")) {
|
|
| 1000 |
- |
|
| 1001 |
- modelAndView.addObject("status", "loginFail");
|
|
| 1002 |
- modelAndView.addObject("message", "로그인이 필요합니다.");
|
|
| 1003 |
- return modelAndView; |
|
| 1004 |
- |
|
| 1005 |
- }else {
|
|
| 1006 |
- |
|
| 1007 |
- addrVO.setMberId(userId); |
|
| 1008 |
- |
|
| 1009 |
- } |
|
| 1010 |
- |
|
| 1011 |
- |
|
| 1012 |
- List<String> addrIdList = addrVO.getAddrIdList(); |
|
| 1013 |
- List<String> tempList = new ArrayList<String>(); |
|
| 1014 |
- |
|
| 1015 |
- for(String seqStr : addrIdList) {
|
|
| 1016 |
- |
|
| 1017 |
- String seqId = seqStr.replace("[", "");
|
|
| 1018 |
- seqId = seqId.replace("]", "");
|
|
| 1019 |
- |
|
| 1020 |
- tempList.add(seqId); |
|
| 1021 |
- } |
|
| 1022 |
- |
|
| 1023 |
- addrVO.setAddrIdList(tempList); |
|
| 1024 |
- |
|
| 1025 |
- List<AddrVO> resultList = addrService.selectAddrDataList(addrVO); |
|
| 1026 |
- |
|
| 1027 |
- |
|
| 1028 |
- if(resultList == null) {
|
|
| 1029 |
- modelAndView.addObject("status", "emptyList");
|
|
| 1030 |
- modelAndView.addObject("message", "가져온 주소록 목록이 없습니다.");
|
|
| 1031 |
- |
|
| 1032 |
- }else {
|
|
| 1033 |
- |
|
| 1034 |
- modelAndView.addObject("status", "success");
|
|
| 1035 |
- modelAndView.addObject("resultList", resultList);
|
|
| 1036 |
- modelAndView.addObject("resultListCnt", resultList.size());
|
|
| 1037 |
- |
|
| 1038 |
- } |
|
| 1039 |
- |
|
| 1040 |
- return modelAndView; |
|
| 1041 |
- } |
|
| 1042 |
- |
|
| 1043 |
- |
|
| 1044 |
- |
|
| 1045 |
- |
|
| 1046 |
- //주소록 엑셀 다운로드 |
|
| 1047 |
- @RequestMapping("/web/mjon/addr/addrExcelDownload.do")
|
|
| 1048 |
- public void addrExcelDownload(@RequestParam("cellCheck") String[] cellCheck,
|
|
| 1049 |
- AddrVO addrVO, |
|
| 1050 |
- HttpServletRequest request, |
|
| 1051 |
- HttpServletResponse response , |
|
| 1052 |
- ModelMap model) throws Exception {
|
|
| 1053 |
- |
|
| 1054 |
- addrVO.setRecordCountPerPage(100000); |
|
| 1055 |
- addrVO.setFirstIndex(0); |
|
| 1056 |
- |
|
| 1057 |
- if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
|
| 1058 |
- addrVO.setSearchSortCnd("addrId");
|
|
| 1059 |
- addrVO.setSearchSortOrd("asc");
|
|
| 1060 |
- } |
|
| 1061 |
- |
|
| 1062 |
- LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 1063 |
- |
|
| 1064 |
- // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. |
|
| 1065 |
- SXSSFWorkbook wb = new SXSSFWorkbook(100); |
|
| 1066 |
- CellStyle styleHeader = wb.createCellStyle(); |
|
| 1067 |
- styleHeader.setBorderBottom(CellStyle.BORDER_THIN); //테두리 두껍게 |
|
| 1068 |
- styleHeader.setBorderLeft(CellStyle.BORDER_THIN); |
|
| 1069 |
- styleHeader.setBorderRight(CellStyle.BORDER_THIN); |
|
| 1070 |
- styleHeader.setBorderTop(CellStyle.BORDER_THIN); |
|
| 1071 |
- |
|
| 1072 |
- CellStyle styleList = wb.createCellStyle(); |
|
| 1073 |
- |
|
| 1074 |
- Font font = wb.createFont(); |
|
| 1075 |
- font.setBoldweight(Font.BOLDWEIGHT_BOLD); //글씨 bold |
|
| 1076 |
- |
|
| 1077 |
- Cell cell = null; |
|
| 1078 |
- Row row = null; |
|
| 1079 |
- |
|
| 1080 |
- String fileName ="주소록"; |
|
| 1081 |
- |
|
| 1082 |
- String sheetTitle = ""; |
|
| 1083 |
- try{
|
|
| 1084 |
- if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
|
| 1085 |
- addrVO.setSearchSortOrd("desc");
|
|
| 1086 |
- } |
|
| 1087 |
- addrVO.setMberId(loginVO.getId()); |
|
| 1088 |
- List<AddrVO> addrList = addrService.selectAddrList(addrVO); |
|
| 1089 |
- {
|
|
| 1090 |
- // row, cell 개수 순서대로 증가용 필드 |
|
| 1091 |
- int rowNumber = 0; |
|
| 1092 |
- int celNumber = 0; |
|
| 1093 |
- //화면 리스트 |
|
| 1094 |
- sheetTitle = "주소록" ; //제목 |
|
| 1095 |
- Sheet sheet = wb.createSheet(sheetTitle); |
|
| 1096 |
- row = sheet.createRow(rowNumber++); |
|
| 1097 |
- row = sheet.createRow(rowNumber++); //줄추가 |
|
| 1098 |
- |
|
| 1099 |
- //cell = row.createCell(celNumber++); |
|
| 1100 |
- //cell.setCellValue("번호");
|
|
| 1101 |
- //cell.setCellStyle(style); |
|
| 1102 |
- |
|
| 1103 |
- int y = 0; |
|
| 1104 |
- for(String field : cellCheck) {
|
|
| 1105 |
- //셀 칼럼 크기 설정 |
|
| 1106 |
- sheet.setColumnWidth(y, 4000); |
|
| 1107 |
- |
|
| 1108 |
- cell = row.createCell(celNumber++); |
|
| 1109 |
- cell.setCellValue(addrVO.getHeaderName(field)); |
|
| 1110 |
- cell.setCellStyle(styleHeader); |
|
| 1111 |
- |
|
| 1112 |
- y++; |
|
| 1113 |
- } |
|
| 1114 |
- |
|
| 1115 |
- for(int i=0; i < addrList.size(); i++){
|
|
| 1116 |
- row = sheet.createRow(rowNumber++); //줄추가 |
|
| 1117 |
- celNumber = 0; |
|
| 1118 |
- //cell = row.createCell(celNumber++); |
|
| 1119 |
- //cell.setCellStyle(style); |
|
| 1120 |
- //cell.setCellValue(i+1); //번호 |
|
| 1121 |
- |
|
| 1122 |
- for(String field : cellCheck) {
|
|
| 1123 |
- cell = row.createCell(celNumber++); |
|
| 1124 |
- cell.setCellStyle(styleList); |
|
| 1125 |
- cell.setCellValue(((AddrVO)addrList.get(i)).getFieldValue(field)); |
|
| 1126 |
- } |
|
| 1127 |
- } |
|
| 1128 |
- } |
|
| 1129 |
- |
|
| 1130 |
- response.setHeader("Set-Cookie", "fileDownload=true; path=/");
|
|
| 1131 |
- SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "yyyy_MM_dd_HH_mm_ss", Locale.KOREA ); |
|
| 1132 |
- Date currentTime = new Date (); |
|
| 1133 |
- String mTime = mSimpleDateFormat.format ( currentTime ); |
|
| 1134 |
- fileName = fileName+"("+mTime+")";
|
|
| 1135 |
- |
|
| 1136 |
- response.setHeader("Content-Disposition", String.format("attachment; filename=\""+new String((fileName).getBytes("KSC5601"),"8859_1")+".xlsx"));
|
|
| 1137 |
- wb.write(response.getOutputStream()); |
|
| 1138 |
- |
|
| 1139 |
- }catch(Exception e) {
|
|
| 1140 |
- response.setHeader("Set-Cookie", "fileDownload=false; path=/");
|
|
| 1141 |
- response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
|
|
| 1142 |
- response.setHeader("Content-Type","text/html; charset=utf-8");
|
|
| 1143 |
- OutputStream out = null; |
|
| 1144 |
- try {
|
|
| 1145 |
- out = response.getOutputStream(); |
|
| 1146 |
- byte[] data = new String("fail..").getBytes();
|
|
| 1147 |
- out.write(data, 0, data.length); |
|
| 1148 |
- } catch(Exception ignore) {
|
|
| 1149 |
- ignore.printStackTrace(); |
|
| 1150 |
- } finally {
|
|
| 1151 |
- if(out != null) try { out.close(); } catch(Exception ignore) {}
|
|
| 1152 |
- } |
|
| 1153 |
- }finally {
|
|
| 1154 |
- // 디스크 적었던 임시파일을 제거합니다. |
|
| 1155 |
- wb.dispose(); |
|
| 1156 |
- try { wb.close(); } catch(Exception ignore) {}
|
|
| 1157 |
- } |
|
| 1158 |
- } |
|
| 1159 |
- |
|
| 1160 |
- |
|
| 1161 |
- /** |
|
| 1162 |
- * 주소록 대량등록 - 엑셀파일 불러오기 |
|
| 1163 |
- * @param body |
|
| 1164 |
- * @param uploadFile |
|
| 1165 |
- * @param search |
|
| 1166 |
- * @param result |
|
| 1167 |
- * @param model |
|
| 1168 |
- * @param request |
|
| 1169 |
- * @return |
|
| 1170 |
- * @throws Exception |
|
| 1171 |
- */ |
|
| 1172 |
- @RequestMapping(value = "/web/mjon/addr/sendExelFilePhoneNumAjax.do") |
|
| 1173 |
- @ResponseBody |
|
| 1174 |
- public Object sendExelFilePhoneNumAjax(final MultipartHttpServletRequest multiRequest) throws Exception {
|
|
| 1175 |
- |
|
| 1176 |
- JsonResult jr = new JsonResult(); |
|
| 1177 |
- jr.setSuccess(false); |
|
| 1178 |
- jr.setMessage("엑셀 파일만 업로드할 수 있습니다.");
|
|
| 1179 |
- |
|
| 1180 |
- //final Map<String, MultipartFile> files = multiRequest.getFileMap(); |
|
| 1181 |
- List<MultipartFile> files = (List<MultipartFile>) multiRequest.getFiles("file0");
|
|
| 1182 |
- |
|
| 1183 |
- // 파일명에 .이 있을경우 오류 => Ex) 테스트6.20.xlsx |
|
| 1184 |
- int fileNameSplitCnt = 0; |
|
| 1185 |
- |
|
| 1186 |
- if(!files.isEmpty()) {
|
|
| 1187 |
- fileNameSplitCnt = files.get(0).getOriginalFilename().split("[.]").length;
|
|
| 1188 |
- //System.out.println("fileNameSplitCnt : " + fileNameSplitCnt);
|
|
| 1189 |
- |
|
| 1190 |
- if (files.get(0).getSize() > 0 |
|
| 1191 |
- && (files.get(0).getContentType().indexOf("spreadsheetml") > -1)
|
|
| 1192 |
- || files.get(0).getContentType().indexOf("ms-excel") > -1
|
|
| 1193 |
- || files.get(0).getOriginalFilename().split("[.]")[fileNameSplitCnt-1].indexOf("xlsx") > -1
|
|
| 1194 |
- || files.get(0).getOriginalFilename().split("[.]")[fileNameSplitCnt-1].indexOf("xls") > -1) {
|
|
| 1195 |
- |
|
| 1196 |
- // 엑셀 파일 용량 3MB이상 시 10만건 이상으로 서버가 다운되는 증상 발생 |
|
| 1197 |
- long fileSize = multiRequest.getFile("file0").getSize();
|
|
| 1198 |
- |
|
| 1199 |
- if(fileSize > 3374653) {
|
|
| 1200 |
- jr.setMessage("엑셀 파일은 3MB를 넘을수 없습니다.");
|
|
| 1201 |
- return jr; |
|
| 1202 |
- } |
|
| 1203 |
- |
|
| 1204 |
- String Ext = files.get(0).getOriginalFilename().split("[.]")[1];
|
|
| 1205 |
- String errMessage = ""; |
|
| 1206 |
- String cellValue = ""; |
|
| 1207 |
- |
|
| 1208 |
- //String phoneRegExp = "^01(?:0|1|[6-9])[.-]?(\\d{3}|\\d{4})[.-]?(\\d{4})$";
|
|
| 1209 |
- String phoneRegExp = "^(050[2345678]{1}|01[016789]{1})-?[0-9]{3,4}-?[0-9]{4}$";
|
|
| 1210 |
- |
|
| 1211 |
- int errPhoneCnt = 0; |
|
| 1212 |
- int errNameCnt = 0; |
|
| 1213 |
- int errRep1Cnt = 0; |
|
| 1214 |
- int errRep2Cnt = 0; |
|
| 1215 |
- int errRep3Cnt = 0; |
|
| 1216 |
- int errRep4Cnt = 0; |
|
| 1217 |
- int errMemoCnt = 0; |
|
| 1218 |
- |
|
| 1219 |
- |
|
| 1220 |
- //엑셀 확장자에 따른 처리 로직 분리 |
|
| 1221 |
- if(Ext.equals("xls")) {
|
|
| 1222 |
- |
|
| 1223 |
- HSSFWorkbook workbook = new HSSFWorkbook(files.get(0).getInputStream()); |
|
| 1224 |
- HSSFSheet sheet = workbook.getSheetAt(0); |
|
| 1225 |
- |
|
| 1226 |
- if(sheet.getLastRowNum() > 20000) { //
|
|
| 1227 |
- errMessage = "2만줄 이상의 업로드는 데이터 부하로 업로드 할수 없습니다."; |
|
| 1228 |
- jr.setSuccess(false); |
|
| 1229 |
- jr.setMessage(errMessage); |
|
| 1230 |
- return jr; |
|
| 1231 |
- } |
|
| 1232 |
- |
|
| 1233 |
- List<HashMap<String, String>> json = new ArrayList<HashMap<String, String>>(); |
|
| 1234 |
- PhoneVO pVO = new PhoneVO(); |
|
| 1235 |
- for(int i=2; i< sheet.getLastRowNum() + 2; i++){ //먼저 밸리데이션 체크(1줄은 생략)
|
|
| 1236 |
- HSSFRow row = sheet.getRow(i); //열읽기 |
|
| 1237 |
- if(null == row) {
|
|
| 1238 |
- continue; |
|
| 1239 |
- } |
|
| 1240 |
- |
|
| 1241 |
- HashMap<String, String> jm = new HashMap<>(); |
|
| 1242 |
- // 행의 두번째 열(이름부터 받아오기) |
|
| 1243 |
- HSSFCell cell = null; |
|
| 1244 |
- boolean errSts = true; |
|
| 1245 |
- for(int j = 0 ; j < 7; j++){ //행읽기(6행까지나 2행까지만 필요)
|
|
| 1246 |
- cellValue = ""; |
|
| 1247 |
- cell = row.getCell(j); //이름/핸드폰/info1/info2/info3/info4/메모 |
|
| 1248 |
- if(null == cell || "".equals(cell.toString().trim())) { //셀에 값이 없으면
|
|
| 1249 |
- if(j == 1) {
|
|
| 1250 |
- if (sheet.getLastRowNum() == i) {
|
|
| 1251 |
- continue; |
|
| 1252 |
- } |
|
| 1253 |
- |
|
| 1254 |
- //errPhoneCnt++; |
|
| 1255 |
- //errSts = false; |
|
| 1256 |
- break; |
|
| 1257 |
- } |
|
| 1258 |
- } |
|
| 1259 |
- if(null != cell){
|
|
| 1260 |
- switch(cell.getCellType()){ //숫자타임을 문자로 변환
|
|
| 1261 |
- case Cell.CELL_TYPE_NUMERIC: |
|
| 1262 |
- cell.setCellType(Cell.CELL_TYPE_STRING); |
|
| 1263 |
- } |
|
| 1264 |
- cellValue = StringUtil.getString(cell.getStringCellValue().trim()) ; |
|
| 1265 |
- } |
|
| 1266 |
- |
|
| 1267 |
- if(j == 0) {
|
|
| 1268 |
- //이름 |
|
| 1269 |
- boolean nmChk = getNameRepLenChk("name", cellValue);
|
|
| 1270 |
- |
|
| 1271 |
- if(nmChk && errSts) {
|
|
| 1272 |
- jm.put("name", cellValue);
|
|
| 1273 |
- }else {
|
|
| 1274 |
- errNameCnt++; |
|
| 1275 |
- errSts = false; |
|
| 1276 |
- break; |
|
| 1277 |
- } |
|
| 1278 |
- } |
|
| 1279 |
- if(j == 1) {
|
|
| 1280 |
- // 문자열에서 숫자만 추출 |
|
| 1281 |
- cellValue = getOnlyNumber(cellValue); |
|
| 1282 |
- |
|
| 1283 |
- //전화번호 |
|
| 1284 |
- if(cellValue.matches(phoneRegExp) && errSts) {
|
|
| 1285 |
- jm.put("phone", cellValue);
|
|
| 1286 |
- }else {
|
|
| 1287 |
- errPhoneCnt++; |
|
| 1288 |
- errSts = false; |
|
| 1289 |
- break; |
|
| 1290 |
- } |
|
| 1291 |
- } |
|
| 1292 |
- if(j == 2) {
|
|
| 1293 |
- //치환1 |
|
| 1294 |
- boolean repChk = getNameRepLenChk("rep", cellValue);
|
|
| 1295 |
- |
|
| 1296 |
- if(repChk && errSts) {
|
|
| 1297 |
- jm.put("info1", cellValue);
|
|
| 1298 |
- }else {
|
|
| 1299 |
- errRep1Cnt++; |
|
| 1300 |
- errSts = false; |
|
| 1301 |
- break; |
|
| 1302 |
- } |
|
| 1303 |
- } |
|
| 1304 |
- if(j == 3) {
|
|
| 1305 |
- //치환2 |
|
| 1306 |
- boolean repChk = getNameRepLenChk("rep", cellValue);
|
|
| 1307 |
- |
|
| 1308 |
- if(repChk && errSts) {
|
|
| 1309 |
- jm.put("info2", cellValue);
|
|
| 1310 |
- }else {
|
|
| 1311 |
- errRep2Cnt++; |
|
| 1312 |
- errSts = false; |
|
| 1313 |
- break; |
|
| 1314 |
- } |
|
| 1315 |
- } |
|
| 1316 |
- if(j == 4) {
|
|
| 1317 |
- //치환3 |
|
| 1318 |
- boolean repChk = getNameRepLenChk("rep", cellValue);
|
|
| 1319 |
- |
|
| 1320 |
- if(repChk && errSts) {
|
|
| 1321 |
- jm.put("info3", cellValue);
|
|
| 1322 |
- }else {
|
|
| 1323 |
- errRep3Cnt++; |
|
| 1324 |
- errSts = false; |
|
| 1325 |
- break; |
|
| 1326 |
- } |
|
| 1327 |
- } |
|
| 1328 |
- if(j == 5) {
|
|
| 1329 |
- //치환4 |
|
| 1330 |
- boolean repChk = getNameRepLenChk("rep", cellValue);
|
|
| 1331 |
- |
|
| 1332 |
- if(repChk && errSts) {
|
|
| 1333 |
- jm.put("info4", cellValue);
|
|
| 1334 |
- }else {
|
|
| 1335 |
- errRep4Cnt++; |
|
| 1336 |
- errSts = false; |
|
| 1337 |
- break; |
|
| 1338 |
- } |
|
| 1339 |
- } |
|
| 1340 |
- if(j == 6) {
|
|
| 1341 |
- //메모 |
|
| 1342 |
- boolean repChk = getNameRepLenChk("memo", cellValue);
|
|
| 1343 |
- |
|
| 1344 |
- if(repChk && errSts) {
|
|
| 1345 |
- jm.put("memo", cellValue);
|
|
| 1346 |
- }else {
|
|
| 1347 |
- errMemoCnt++; |
|
| 1348 |
- errSts = false; |
|
| 1349 |
- break; |
|
| 1350 |
- } |
|
| 1351 |
- } |
|
| 1352 |
- } |
|
| 1353 |
- if(null != jm.get("phone")) {
|
|
| 1354 |
- json.add(jm); |
|
| 1355 |
- } |
|
| 1356 |
- |
|
| 1357 |
- } |
|
| 1358 |
- |
|
| 1359 |
- int resultErrCnt = errPhoneCnt + errNameCnt + errRep1Cnt + errRep2Cnt + errRep3Cnt + errRep4Cnt + errMemoCnt; |
|
| 1360 |
- |
|
| 1361 |
- jr.setData(json); |
|
| 1362 |
- jr.setSuccess(true); |
|
| 1363 |
- |
|
| 1364 |
- if(resultErrCnt > 0) {
|
|
| 1365 |
- jr.setMessage("올바르지 않은 휴대폰 번호가 "+ resultErrCnt +" 건 있습니다.");
|
|
| 1366 |
- }else {
|
|
| 1367 |
- jr.setMessage("");
|
|
| 1368 |
- } |
|
| 1369 |
- |
|
| 1370 |
- }else { //확장자가 xlsx
|
|
| 1371 |
- |
|
| 1372 |
- OPCPackage opcPackage = OPCPackage.open(files.get(0).getInputStream()); |
|
| 1373 |
- XSSFWorkbook workbook = new XSSFWorkbook(opcPackage); |
|
| 1374 |
- XSSFSheet sheet = workbook.getSheetAt(0); // 첫번째 시트 불러오기 |
|
| 1375 |
- opcPackage.close(); |
|
| 1376 |
- |
|
| 1377 |
- int totRowDataCnt = 0; |
|
| 1378 |
- for(int r=1; r<sheet.getPhysicalNumberOfRows(); r++) {
|
|
| 1379 |
- |
|
| 1380 |
- XSSFRow tmpRow = sheet.getRow(r); |
|
| 1381 |
- //System.out.println("=================r:"+r);
|
|
| 1382 |
- XSSFCell cell = null; |
|
| 1383 |
- if(tmpRow.getCell(1) != null) {
|
|
| 1384 |
- |
|
| 1385 |
- cell = tmpRow.getCell(1); //이름/핸드폰/변환1/변환2/변환3/변환4/변환5 |
|
| 1386 |
- if(cell != null && !cell.toString().trim().equals("")) {
|
|
| 1387 |
- //System.out.println("value-" + r + ":" +cell.getStringCellValue());
|
|
| 1388 |
- totRowDataCnt++; |
|
| 1389 |
- //System.out.println("tmpRowCnt:"+totRowDataCnt);
|
|
| 1390 |
- } |
|
| 1391 |
- } |
|
| 1392 |
- } |
|
| 1393 |
- System.out.println("+++++++++++++++++ totRowDataCnt ::: "+totRowDataCnt);
|
|
| 1394 |
- |
|
| 1395 |
- //if(sheet.getLastRowNum() > 20000) { //
|
|
| 1396 |
- if(totRowDataCnt > 20001) {
|
|
| 1397 |
- System.out.println("totRowDataCnt : " + totRowDataCnt);
|
|
| 1398 |
- errMessage = "2만줄 이상의 업로드는 데이터 부하로 업로드 할수 없습니다."; |
|
| 1399 |
- jr.setSuccess(false); |
|
| 1400 |
- jr.setMessage(errMessage); |
|
| 1401 |
- return jr; |
|
| 1402 |
- } |
|
| 1403 |
- |
|
| 1404 |
- List<HashMap<String, String>> json = new ArrayList<HashMap<String, String>>(); |
|
| 1405 |
- PhoneVO pVO = new PhoneVO(); |
|
| 1406 |
- System.out.println("sheet.getLastRowNum() : " + sheet.getLastRowNum());
|
|
| 1407 |
- for(int i=2; i< sheet.getLastRowNum() + 2; i++){ //먼저 밸리데이션 체크(1줄은 생략)
|
|
| 1408 |
- XSSFRow row = sheet.getRow(i); //열읽기 |
|
| 1409 |
- if(null == row) {
|
|
| 1410 |
- continue; |
|
| 1411 |
- } |
|
| 1412 |
- |
|
| 1413 |
- HashMap<String, String> jm = new HashMap<>(); |
|
| 1414 |
- // 행의 두번째 열(핸드폰부터 받아오기) |
|
| 1415 |
- XSSFCell cell = null; |
|
| 1416 |
- boolean errSts = true; |
|
| 1417 |
- |
|
| 1418 |
- for(int j = 0 ; j < 7; j++){ //행읽기(6행까지나 2행까지만 필요)
|
|
| 1419 |
- cellValue = ""; |
|
| 1420 |
- cell = row.getCell(j); //이름/핸드폰/변환1/변환2/변환3/변환4/변환5/메모 |
|
| 1421 |
- if(null == cell || "".equals(cell.toString().trim())) { //셀에 값이 없으면
|
|
| 1422 |
- if(j == 1) {
|
|
| 1423 |
- if (sheet.getLastRowNum() == i) {
|
|
| 1424 |
- continue; |
|
| 1425 |
- } |
|
| 1426 |
- |
|
| 1427 |
- //errPhoneCnt++; |
|
| 1428 |
- //errSts = false; |
|
| 1429 |
- break; |
|
| 1430 |
- } |
|
| 1431 |
- } |
|
| 1432 |
- if(null != cell){
|
|
| 1433 |
- switch(cell.getCellType()){ //숫자타임을 문자로 변환
|
|
| 1434 |
- case Cell.CELL_TYPE_NUMERIC: |
|
| 1435 |
- cell.setCellType(Cell.CELL_TYPE_STRING); |
|
| 1436 |
- } |
|
| 1437 |
- cellValue = StringUtil.getString(cell.getStringCellValue().trim()) ; |
|
| 1438 |
- } |
|
| 1439 |
- |
|
| 1440 |
- if(j == 0) {
|
|
| 1441 |
- //이름 |
|
| 1442 |
- boolean nmChk = getNameRepLenChk("name", cellValue);
|
|
| 1443 |
- |
|
| 1444 |
- if(nmChk && errSts) {
|
|
| 1445 |
- jm.put("name", cellValue);
|
|
| 1446 |
- }else {
|
|
| 1447 |
- errNameCnt++; |
|
| 1448 |
- errSts = false; |
|
| 1449 |
- break; |
|
| 1450 |
- } |
|
| 1451 |
- } |
|
| 1452 |
- if(j == 1) {
|
|
| 1453 |
- // 문자열에서 숫자만 추출 |
|
| 1454 |
- cellValue = getOnlyNumber(cellValue); |
|
| 1455 |
- |
|
| 1456 |
- //전화번호 |
|
| 1457 |
- if(cellValue.matches(phoneRegExp) && errSts) {
|
|
| 1458 |
- jm.put("phone", cellValue);
|
|
| 1459 |
- }else {
|
|
| 1460 |
- errPhoneCnt++; |
|
| 1461 |
- errSts = false; |
|
| 1462 |
- break; |
|
| 1463 |
- } |
|
| 1464 |
- } |
|
| 1465 |
- if(j == 2) {
|
|
| 1466 |
- //치환1 |
|
| 1467 |
- boolean repChk = getNameRepLenChk("rep", cellValue);
|
|
| 1468 |
- |
|
| 1469 |
- if(repChk && errSts) {
|
|
| 1470 |
- jm.put("info1", cellValue);
|
|
| 1471 |
- }else {
|
|
| 1472 |
- errRep1Cnt++; |
|
| 1473 |
- errSts = false; |
|
| 1474 |
- break; |
|
| 1475 |
- } |
|
| 1476 |
- } |
|
| 1477 |
- if(j == 3) {
|
|
| 1478 |
- //치환2 |
|
| 1479 |
- boolean repChk = getNameRepLenChk("rep", cellValue);
|
|
| 1480 |
- |
|
| 1481 |
- if(repChk && errSts) {
|
|
| 1482 |
- jm.put("info2", cellValue);
|
|
| 1483 |
- }else {
|
|
| 1484 |
- errRep2Cnt++; |
|
| 1485 |
- errSts = false; |
|
| 1486 |
- break; |
|
| 1487 |
- } |
|
| 1488 |
- } |
|
| 1489 |
- if(j == 4) {
|
|
| 1490 |
- //치환3 |
|
| 1491 |
- boolean repChk = getNameRepLenChk("rep", cellValue);
|
|
| 1492 |
- |
|
| 1493 |
- if(repChk && errSts) {
|
|
| 1494 |
- jm.put("info3", cellValue);
|
|
| 1495 |
- }else {
|
|
| 1496 |
- errRep3Cnt++; |
|
| 1497 |
- errSts = false; |
|
| 1498 |
- break; |
|
| 1499 |
- } |
|
| 1500 |
- } |
|
| 1501 |
- if(j == 5) {
|
|
| 1502 |
- //치환4 |
|
| 1503 |
- boolean repChk = getNameRepLenChk("rep", cellValue);
|
|
| 1504 |
- |
|
| 1505 |
- if(repChk && errSts) {
|
|
| 1506 |
- jm.put("info4", cellValue);
|
|
| 1507 |
- }else {
|
|
| 1508 |
- errRep4Cnt++; |
|
| 1509 |
- errSts = false; |
|
| 1510 |
- break; |
|
| 1511 |
- } |
|
| 1512 |
- } |
|
| 1513 |
- if(j == 6) {
|
|
| 1514 |
- //메모 |
|
| 1515 |
- boolean repChk = getNameRepLenChk("memo", cellValue);
|
|
| 1516 |
- |
|
| 1517 |
- if(repChk && errSts) {
|
|
| 1518 |
- jm.put("memo", cellValue);
|
|
| 1519 |
- }else {
|
|
| 1520 |
- errMemoCnt++; |
|
| 1521 |
- errSts = false; |
|
| 1522 |
- break; |
|
| 1523 |
- } |
|
| 1524 |
- } |
|
| 1525 |
- |
|
| 1526 |
- } |
|
| 1527 |
- if(null != jm.get("phone") && errSts) {
|
|
| 1528 |
- json.add(jm); |
|
| 1529 |
- } |
|
| 1530 |
- |
|
| 1531 |
- } |
|
| 1532 |
- |
|
| 1533 |
- int resultErrCnt = errPhoneCnt + errNameCnt + errRep1Cnt + errRep2Cnt + errRep3Cnt + errRep4Cnt; |
|
| 1534 |
- |
|
| 1535 |
- jr.setData(json); |
|
| 1536 |
- jr.setSuccess(true); |
|
| 1537 |
- |
|
| 1538 |
- if(resultErrCnt > 0) {
|
|
| 1539 |
- jr.setMessage("올바르지 않은 휴대폰 번호가 "+ resultErrCnt +" 건 있습니다.");
|
|
| 1540 |
- }else {
|
|
| 1541 |
- jr.setMessage("");
|
|
| 1542 |
- } |
|
| 1543 |
- } //xlsx 처리 끝 |
|
| 1544 |
- |
|
| 1545 |
- } |
|
| 1546 |
- else {
|
|
| 1547 |
- |
|
| 1548 |
- String ttt = files.get(0).getSize() + "_" + |
|
| 1549 |
- files.get(0).getContentType() + "_" + |
|
| 1550 |
- files.get(0).getOriginalFilename().split("[.]")[fileNameSplitCnt-1];
|
|
| 1551 |
- |
|
| 1552 |
- jr.setSuccess(false); |
|
| 1553 |
- jr.setMessage("엑셀파일 인식오류.");
|
|
| 1554 |
- //jr.setMessage("엑셀파일 인식오류" + ttt);
|
|
| 1555 |
- } |
|
| 1556 |
- } |
|
| 1557 |
- else {
|
|
| 1558 |
- jr.setSuccess(false); |
|
| 1559 |
- jr.setMessage("엑셀파일 인식오류.");
|
|
| 1560 |
- } |
|
| 1561 |
- |
|
| 1562 |
- return jr; |
|
| 1563 |
- } |
|
| 1564 |
- |
|
| 1565 |
- |
|
| 1566 |
- /** |
|
| 1567 |
- * 주소록 대량등록 - TXT파일 불러오기 |
|
| 1568 |
- * @param body |
|
| 1569 |
- * @param uploadFile |
|
| 1570 |
- * @param search |
|
| 1571 |
- * @param result |
|
| 1572 |
- * @param model |
|
| 1573 |
- * @param request |
|
| 1574 |
- * @return |
|
| 1575 |
- * @throws Exception |
|
| 1576 |
- */ |
|
| 1577 |
- @RequestMapping(value = "/web/mjon/addr/sendTxtFilePhoneNumAjax.do") |
|
| 1578 |
- @ResponseBody |
|
| 1579 |
- public Object sendTxtFilePhoneNumAjax(final MultipartHttpServletRequest multiRequest) throws Exception {
|
|
| 1580 |
- |
|
| 1581 |
- JsonResult jr = new JsonResult(); |
|
| 1582 |
- jr.setSuccess(false); |
|
| 1583 |
- jr.setMessage("TXT 파일만 업로드할 수 있습니다.");
|
|
| 1584 |
- |
|
| 1585 |
- List<MultipartFile> files = (List<MultipartFile>) multiRequest.getFiles("file0");
|
|
| 1586 |
- |
|
| 1587 |
- if(!files.isEmpty()) {
|
|
| 1588 |
- |
|
| 1589 |
- if (files.get(0).getSize() > 0 |
|
| 1590 |
- || files.get(0).getOriginalFilename().split("[.]")[1].indexOf("txt") > -1) {
|
|
| 1591 |
- |
|
| 1592 |
- // txt 파일 용량 3MB이상 시 10만건 이상으로 서버가 다운되는 증상 발생 |
|
| 1593 |
- long fileSize = multiRequest.getFile("file0").getSize();
|
|
| 1594 |
- |
|
| 1595 |
- if(fileSize > 3374653) {
|
|
| 1596 |
- jr.setMessage("txt 파일은 3MB를 넘을수 없습니다.");
|
|
| 1597 |
- return jr; |
|
| 1598 |
- } |
|
| 1599 |
- |
|
| 1600 |
- BufferedReader reader = new BufferedReader(new InputStreamReader(multiRequest.getFile("file0").getInputStream()));
|
|
| 1601 |
- |
|
| 1602 |
- String line = null; |
|
| 1603 |
- String[] splitedStr = null; |
|
| 1604 |
- String[] tempStr = null; |
|
| 1605 |
- int errPhoneCnt = 0; |
|
| 1606 |
- int totRowNum = 0; |
|
| 1607 |
- |
|
| 1608 |
- //String phoneRegExp = "^01(?:0|1|[6-9])[.-]?(\\d{3}|\\d{4})[.-]?(\\d{4})$";
|
|
| 1609 |
- String phoneRegExp = "^(050[2345678]{1}|01[016789]{1})-?[0-9]{3,4}-?[0-9]{4}$";
|
|
| 1610 |
- |
|
| 1611 |
- List<HashMap<String, String>> json = new ArrayList<HashMap<String, String>>(); |
|
| 1612 |
- |
|
| 1613 |
- //파일 읽어서 탭으로 구분해주기 |
|
| 1614 |
- while ((line = reader.readLine()) != null) {
|
|
| 1615 |
- |
|
| 1616 |
- HashMap<String, String> jm = new HashMap<>(); |
|
| 1617 |
- splitedStr = null; |
|
| 1618 |
- tempStr = null; |
|
| 1619 |
- |
|
| 1620 |
- //txt 파일의 데이터가 탭 혹은 콤마로 구분되어 있는지 구분처리 |
|
| 1621 |
- tempStr = line.split("\\,");
|
|
| 1622 |
- if(tempStr.length > 1) {
|
|
| 1623 |
- splitedStr = line.split("\\,");
|
|
| 1624 |
- }else {
|
|
| 1625 |
- splitedStr = line.split("\t");;
|
|
| 1626 |
- } |
|
| 1627 |
- |
|
| 1628 |
- for (int i = 0; i < splitedStr.length; i++) {
|
|
| 1629 |
- splitedStr[i] = splitedStr[i].trim(); |
|
| 1630 |
- if(i == 0) {
|
|
| 1631 |
- //이름 |
|
| 1632 |
- jm.put("name", splitedStr[i]);
|
|
| 1633 |
- } |
|
| 1634 |
- if(i == 1) {
|
|
| 1635 |
- // 문자열에서 숫자만 추출 |
|
| 1636 |
- splitedStr[i] = getOnlyNumber(splitedStr[i]); |
|
| 1637 |
- |
|
| 1638 |
- if(splitedStr[i].matches(phoneRegExp)) {
|
|
| 1639 |
- //휴대폰 번호 |
|
| 1640 |
- jm.put("phone", splitedStr[i]);
|
|
| 1641 |
- }else {
|
|
| 1642 |
- errPhoneCnt++; |
|
| 1643 |
- } |
|
| 1644 |
- } |
|
| 1645 |
- if(i == 2) {
|
|
| 1646 |
- //info1 |
|
| 1647 |
- jm.put("info1", splitedStr[i]);
|
|
| 1648 |
- } |
|
| 1649 |
- if(i == 3) {
|
|
| 1650 |
- //info2 |
|
| 1651 |
- jm.put("info2", splitedStr[i]);
|
|
| 1652 |
- } |
|
| 1653 |
- if(i == 4) {
|
|
| 1654 |
- //info3 |
|
| 1655 |
- jm.put("info3", splitedStr[i]);
|
|
| 1656 |
- } |
|
| 1657 |
- if(i == 5) {
|
|
| 1658 |
- //info4 |
|
| 1659 |
- jm.put("info4", splitedStr[i]);
|
|
| 1660 |
- } |
|
| 1661 |
- if(i == 6) {
|
|
| 1662 |
- //메모 |
|
| 1663 |
- jm.put("memo", splitedStr[i]);
|
|
| 1664 |
- } |
|
| 1665 |
- } |
|
| 1666 |
- |
|
| 1667 |
- if(jm.get("phone") != null) {
|
|
| 1668 |
- json.add(jm); |
|
| 1669 |
- } |
|
| 1670 |
- |
|
| 1671 |
- totRowNum++; |
|
| 1672 |
- } // end while |
|
| 1673 |
- jr.setData(json); |
|
| 1674 |
- jr.setSuccess(true); |
|
| 1675 |
- |
|
| 1676 |
- if (totRowNum > 20000) {
|
|
| 1677 |
- jr.setMessage("20000");
|
|
| 1678 |
- } |
|
| 1679 |
- else {
|
|
| 1680 |
- if(errPhoneCnt > 0) {
|
|
| 1681 |
- jr.setMessage("올바르지 않은 휴대폰 번호가 "+ errPhoneCnt +" 건 있습니다.");
|
|
| 1682 |
- }else {
|
|
| 1683 |
- jr.setMessage("");
|
|
| 1684 |
- } |
|
| 1685 |
- } |
|
| 1686 |
- } |
|
| 1687 |
- |
|
| 1688 |
- } |
|
| 1689 |
- |
|
| 1690 |
- return jr; |
|
| 1691 |
- } |
|
| 1692 |
- |
|
| 1693 |
- |
|
| 1694 |
- /** |
|
| 1695 |
- * 주소록 대량등록 저장 |
|
| 1696 |
- * @param searchVO |
|
| 1697 |
- * @param model |
|
| 1698 |
- * @return "/web/mjon/addr/addrMassInsertByTempAjax.do" |
|
| 1699 |
- * @throws Exception |
|
| 1700 |
- */ |
|
| 1701 |
- @RequestMapping(value= {"/web/mjon/addr/addrMassInsertByTempAjax.do"})
|
|
| 1702 |
- public ModelAndView addrMassInsertByTempAjax(@ModelAttribute("searchVO") AddrVO addrVO,
|
|
| 1703 |
- RedirectAttributes redirectAttributes, |
|
| 1704 |
- ModelMap model) throws Exception{
|
|
| 1705 |
- |
|
| 1706 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 1707 |
- modelAndView.setViewName("jsonView");
|
|
| 1708 |
- |
|
| 1709 |
- //String phoneRegExp = "^01(?:0|1|[6-9])[.-]?(\\d{3}|\\d{4})[.-]?(\\d{4})$";
|
|
| 1710 |
- String phoneRegExp = "^(050[2345678]{1}|01[016789]{1})-?[0-9]{3,4}-?[0-9]{4}$";
|
|
| 1711 |
- |
|
| 1712 |
- String charset = "euc-kr"; |
|
| 1713 |
- boolean isSuccess = true; |
|
| 1714 |
- String msg = ""; |
|
| 1715 |
- int resultCnt = 0; |
|
| 1716 |
- int dupliCnt = 0; // 중복 데이터 수 |
|
| 1717 |
- int errPhoneCnt = 0; |
|
| 1718 |
- List<AddrVO> addrMassDupliList = new ArrayList<AddrVO>(); // 중복 휴대폰번호 |
|
| 1719 |
- |
|
| 1720 |
- try {
|
|
| 1721 |
- |
|
| 1722 |
- LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 1723 |
- String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 1724 |
- |
|
| 1725 |
- if(userId.equals("")) {
|
|
| 1726 |
- isSuccess = false; |
|
| 1727 |
- modelAndView.addObject("isSuccess", isSuccess);
|
|
| 1728 |
- modelAndView.addObject("msg", "로그인 후 이용이 가능합니다.");
|
|
| 1729 |
- return modelAndView; |
|
| 1730 |
- } |
|
| 1731 |
- else {
|
|
| 1732 |
- addrVO.setMberId(userId); |
|
| 1733 |
- } |
|
| 1734 |
- |
|
| 1735 |
- //회원별 주소록 전체 갯수 조회 |
|
| 1736 |
- int addrBefAfterCnt = 0; |
|
| 1737 |
- int addrBefCnt = addrService.selectAddrTotalCount(addrVO); |
|
| 1738 |
- int addrNewCnt = addrVO.getPhoneList().length; //신규 추가할 주소록 갯수 |
|
| 1739 |
- int sumAddrCnt = addrBefCnt + addrNewCnt; //기존 + 신규 주소록 합산 |
|
| 1740 |
- |
|
| 1741 |
- // 신규 주소록 여부 체크 |
|
| 1742 |
- if (addrVO.getAddrGrpId().equals("NEW")) {
|
|
| 1743 |
- |
|
| 1744 |
- AddrGroupVO addrGroupVO = new AddrGroupVO(); |
|
| 1745 |
- addrGroupVO.setMberId(userId); |
|
| 1746 |
- addrGroupVO.setAddrGrpNm(addrVO.getAddrGrpNm()); |
|
| 1747 |
- // 정렬순서 |
|
| 1748 |
- int nextOrderNumber = addrGroupService.selectMaxOrderNumber(addrGroupVO); |
|
| 1749 |
- addrGroupVO.setGrpOrder(nextOrderNumber); |
|
| 1750 |
- |
|
| 1751 |
- addrGroupService.insertAddrGroup(addrGroupVO); |
|
| 1752 |
- |
|
| 1753 |
- // 신규 추가한 그룹아이디 |
|
| 1754 |
- addrVO.setAddrGrpId(addrGroupVO.getAddrGrpId()); |
|
| 1755 |
- } |
|
| 1756 |
- |
|
| 1757 |
- // 그룹미지정, 자주보내는 번호 구분처리 |
|
| 1758 |
- if("bookmark".equals (addrVO.getAddrGrpId())) {
|
|
| 1759 |
- // 자주보내는 번호 |
|
| 1760 |
- addrVO.setBookmark("Y");
|
|
| 1761 |
- addrVO.setAddrGrpId("0");
|
|
| 1762 |
- } |
|
| 1763 |
- else {
|
|
| 1764 |
- addrVO.setBookmark("N");
|
|
| 1765 |
- } |
|
| 1766 |
- |
|
| 1767 |
- // 2024.01.24 10만건 -> 50만건으로 증설 요청으로 인한 증설 |
|
| 1768 |
- List<AddrVO> addrDataInfo = new ArrayList<AddrVO>(); |
|
| 1769 |
- if(addrBefCnt < 500000) { // 기존 등록된 주소록이 10만건 미만이면
|
|
| 1770 |
- |
|
| 1771 |
- //받는사람 리스트 건수 체크해주기 |
|
| 1772 |
- if(sumAddrCnt > 500000) {
|
|
| 1773 |
- isSuccess = false; |
|
| 1774 |
- msg = "주소록은 총 50만개까지만 등록이 가능합니다."; |
|
| 1775 |
- } |
|
| 1776 |
- else {
|
|
| 1777 |
- for(int i=0; i < addrNewCnt; i++) {
|
|
| 1778 |
- AddrVO tempAddrVO = new AddrVO(); |
|
| 1779 |
- |
|
| 1780 |
- if(addrVO.getNameList().length > 0) {
|
|
| 1781 |
- if(addrVO.getNameList()[i].equals("-")) {
|
|
| 1782 |
- tempAddrVO.setAddrNm(null); |
|
| 1783 |
- }else {
|
|
| 1784 |
- String tmpNm = addrVO.getNameList()[i].trim().replaceAll("§", ",");
|
|
| 1785 |
- int nmLen = tmpNm.getBytes(charset).length; |
|
| 1786 |
- |
|
| 1787 |
- if(nmLen >= 20) {
|
|
| 1788 |
- //isSuccess = false; |
|
| 1789 |
- //msg = "이름 항목의 내용(\" " + tmpNm + " \")이 길이를 초과하여 입력되었습니다. 12글자 이하로 입력해 주세요."; |
|
| 1790 |
- //break; |
|
| 1791 |
- |
|
| 1792 |
- tempAddrVO.setAddrNm(subStringBytes(addrVO.getNameList()[i].replaceAll("§", ","), 20, 2));
|
|
| 1793 |
- }else {
|
|
| 1794 |
- tempAddrVO.setAddrNm(addrVO.getNameList()[i].trim().replaceAll("§", ","));
|
|
| 1795 |
- } |
|
| 1796 |
- |
|
| 1797 |
- } |
|
| 1798 |
- } |
|
| 1799 |
- else {
|
|
| 1800 |
- tempAddrVO.setAddrNm(null); |
|
| 1801 |
- } |
|
| 1802 |
- |
|
| 1803 |
- if(addrVO.getPhoneList().length > 0) {
|
|
| 1804 |
- if(addrVO.getPhoneList()[i].equals("-")) {
|
|
| 1805 |
- tempAddrVO.setAddrPhoneNo(null); |
|
| 1806 |
- }else {
|
|
| 1807 |
- tempAddrVO.setAddrPhoneNo(addrVO.getPhoneList()[i].trim().replaceAll("§", ","));
|
|
| 1808 |
- } |
|
| 1809 |
- } |
|
| 1810 |
- else {
|
|
| 1811 |
- tempAddrVO.setAddrPhoneNo(null); |
|
| 1812 |
- } |
|
| 1813 |
- |
|
| 1814 |
- if(addrVO.getInfo1List().length > 0) {
|
|
| 1815 |
- if(addrVO.getInfo1List()[i].equals("-")) {
|
|
| 1816 |
- tempAddrVO.setAddrInfo1(null); |
|
| 1817 |
- }else {
|
|
| 1818 |
- |
|
| 1819 |
- String tmpInfo1 = addrVO.getInfo1List()[i].replaceAll("§", ",");
|
|
| 1820 |
- int info1Len = tmpInfo1.getBytes(charset).length; |
|
| 1821 |
- |
|
| 1822 |
- if(info1Len >= 40) {
|
|
| 1823 |
- //isSuccess = false; |
|
| 1824 |
- //msg = "[*1*] 항목의 내용(\" " + tmpInfo1 + " \")이 길이를 초과하여 입력되었습니다. 20글자 이하로 입력해 주세요."; |
|
| 1825 |
- //break; |
|
| 1826 |
- tempAddrVO.setAddrInfo1(subStringBytes(addrVO.getInfo1List()[i].replaceAll("§", ","), 40, 2));
|
|
| 1827 |
- }else {
|
|
| 1828 |
- tempAddrVO.setAddrInfo1(addrVO.getInfo1List()[i].replaceAll("§", ","));
|
|
| 1829 |
- } |
|
| 1830 |
- } |
|
| 1831 |
- } |
|
| 1832 |
- else {
|
|
| 1833 |
- tempAddrVO.setAddrInfo1(null); |
|
| 1834 |
- } |
|
| 1835 |
- |
|
| 1836 |
- if(addrVO.getInfo2List().length > 0) {
|
|
| 1837 |
- if(addrVO.getInfo2List()[i].equals("-")) {
|
|
| 1838 |
- tempAddrVO.setAddrInfo2(null); |
|
| 1839 |
- }else {
|
|
| 1840 |
- String tmpInfo2 = addrVO.getInfo2List()[i].replaceAll("§", ",");
|
|
| 1841 |
- int info2Len = tmpInfo2.getBytes(charset).length; |
|
| 1842 |
- |
|
| 1843 |
- if(info2Len >= 40) {
|
|
| 1844 |
- //isSuccess = false; |
|
| 1845 |
- //msg = "[*2*] 항목의 내용(\" " + tmpInfo2 + " \")이 길이를 초과하여 입력되었습니다. 20글자 이하로 입력해 주세요."; |
|
| 1846 |
- //break; |
|
| 1847 |
- |
|
| 1848 |
- tempAddrVO.setAddrInfo2(subStringBytes(addrVO.getInfo2List()[i].replaceAll("§", ","), 40, 2));
|
|
| 1849 |
- }else {
|
|
| 1850 |
- tempAddrVO.setAddrInfo2(addrVO.getInfo2List()[i].replaceAll("§", ","));
|
|
| 1851 |
- } |
|
| 1852 |
- |
|
| 1853 |
- } |
|
| 1854 |
- } |
|
| 1855 |
- else {
|
|
| 1856 |
- tempAddrVO.setAddrInfo2(null); |
|
| 1857 |
- } |
|
| 1858 |
- |
|
| 1859 |
- if(addrVO.getInfo3List().length > 0) {
|
|
| 1860 |
- if(addrVO.getInfo3List()[i].equals("-")) {
|
|
| 1861 |
- tempAddrVO.setAddrInfo3(null); |
|
| 1862 |
- }else {
|
|
| 1863 |
- String tmpInfo3 = addrVO.getInfo3List()[i].replaceAll("§", ",");
|
|
| 1864 |
- int info3Len = tmpInfo3.getBytes(charset).length; |
|
| 1865 |
- |
|
| 1866 |
- if(info3Len >= 40) {
|
|
| 1867 |
- //isSuccess = false; |
|
| 1868 |
- //msg = "[*3*] 항목의 내용(\" " + tmpInfo3 + " \")이 길이를 초과하여 입력되었습니다. 20글자 이하로 입력해 주세요."; |
|
| 1869 |
- //break; |
|
| 1870 |
- |
|
| 1871 |
- tempAddrVO.setAddrInfo3(subStringBytes(addrVO.getInfo3List()[i].replaceAll("§", ","), 40, 2));
|
|
| 1872 |
- }else {
|
|
| 1873 |
- tempAddrVO.setAddrInfo3(addrVO.getInfo3List()[i].replaceAll("§", ","));
|
|
| 1874 |
- } |
|
| 1875 |
- } |
|
| 1876 |
- } |
|
| 1877 |
- else {
|
|
| 1878 |
- tempAddrVO.setAddrInfo3(null); |
|
| 1879 |
- } |
|
| 1880 |
- |
|
| 1881 |
- if(addrVO.getInfo4List().length > 0) {
|
|
| 1882 |
- if(addrVO.getInfo4List()[i].equals("-")) {
|
|
| 1883 |
- tempAddrVO.setAddrInfo4(null); |
|
| 1884 |
- }else {
|
|
| 1885 |
- String tmpInfo4 = addrVO.getInfo4List()[i].replaceAll("§", ",");
|
|
| 1886 |
- int info4Len = tmpInfo4.getBytes(charset).length; |
|
| 1887 |
- |
|
| 1888 |
- if(info4Len >= 40) {
|
|
| 1889 |
- //isSuccess = false; |
|
| 1890 |
- //msg = "[*4*] 항목의 내용(\" " + tmpInfo4 + " \")이 길이를 초과하여 입력되었습니다. 20글자 이하로 입력해 주세요."; |
|
| 1891 |
- //break; |
|
| 1892 |
- |
|
| 1893 |
- tempAddrVO.setAddrInfo4(subStringBytes(addrVO.getInfo4List()[i].replaceAll("§", ","), 40, 2));
|
|
| 1894 |
- }else {
|
|
| 1895 |
- tempAddrVO.setAddrInfo4(addrVO.getInfo4List()[i].replaceAll("§", ","));
|
|
| 1896 |
- } |
|
| 1897 |
- } |
|
| 1898 |
- } |
|
| 1899 |
- else {
|
|
| 1900 |
- tempAddrVO.setAddrInfo4(null); |
|
| 1901 |
- } |
|
| 1902 |
- |
|
| 1903 |
- if(addrVO.getMemoList().length > 0) {
|
|
| 1904 |
- if(addrVO.getMemoList()[i].equals("-")) {
|
|
| 1905 |
- tempAddrVO.setAddrComment(null); |
|
| 1906 |
- }else {
|
|
| 1907 |
- String tmpComment = addrVO.getMemoList()[i].replaceAll("§", ",");
|
|
| 1908 |
- int commLen = tmpComment.getBytes(charset).length; |
|
| 1909 |
- |
|
| 1910 |
- if(commLen >= 200) {
|
|
| 1911 |
- //isSuccess = false; |
|
| 1912 |
- //msg = "메모 항목의 내용(\" " + tmpComment + " \")이 길이를 초과하여 입력되었습니다. 100글자 이하로 입력해 주세요."; |
|
| 1913 |
- //break; |
|
| 1914 |
- |
|
| 1915 |
- tempAddrVO.setAddrComment(subStringBytes(addrVO.getMemoList()[i].replaceAll("§", ","), 200, 2));
|
|
| 1916 |
- }else {
|
|
| 1917 |
- tempAddrVO.setAddrComment(addrVO.getMemoList()[i].replaceAll("§", ","));
|
|
| 1918 |
- } |
|
| 1919 |
- } |
|
| 1920 |
- } |
|
| 1921 |
- else {
|
|
| 1922 |
- tempAddrVO.setAddrComment(null); |
|
| 1923 |
- } |
|
| 1924 |
- |
|
| 1925 |
- tempAddrVO.setMberId(userId); |
|
| 1926 |
- tempAddrVO.setFrstRegisterId(userId); |
|
| 1927 |
- tempAddrVO.setAddrGrpId(addrVO.getAddrGrpId()); // 그룹 지정 |
|
| 1928 |
- |
|
| 1929 |
- // 그룹미지정, 자주보내는 번호 구분처리 |
|
| 1930 |
- if("Y".equals (addrVO.getBookmark())) {
|
|
| 1931 |
- // 자주보내는 번호 |
|
| 1932 |
- tempAddrVO.setBookmark("Y");
|
|
| 1933 |
- tempAddrVO.setAddrGrpId("0");
|
|
| 1934 |
- } |
|
| 1935 |
- else {
|
|
| 1936 |
- tempAddrVO.setBookmark("N");
|
|
| 1937 |
- } |
|
| 1938 |
- |
|
| 1939 |
- AddrVO addrVO2 = new AddrVO(); |
|
| 1940 |
- addrVO2.setMberId(userId); |
|
| 1941 |
- addrVO2.setAddrGrpId(addrVO.getAddrGrpId()); // 그룹 지정 |
|
| 1942 |
- addrVO2.setAddrPhoneNo(addrVO.getPhoneList()[i]); // 연락처 |
|
| 1943 |
- |
|
| 1944 |
- // 휴대폰 유효성 검사 |
|
| 1945 |
- boolean isPhoneNoErr = true; |
|
| 1946 |
- if(addrVO.getPhoneList()[i].matches(phoneRegExp)) {
|
|
| 1947 |
- isPhoneNoErr = false; // 유효성 통과 |
|
| 1948 |
- }else {
|
|
| 1949 |
- errPhoneCnt++; |
|
| 1950 |
- } |
|
| 1951 |
- |
|
| 1952 |
- //int usedCnt = addrService.selectDuplAddrCnt(addrVO2); |
|
| 1953 |
- if(isPhoneNoErr == false) {
|
|
| 1954 |
- //주소록 리스트에 데이터 추가해 주기 |
|
| 1955 |
- addrDataInfo.add(tempAddrVO); |
|
| 1956 |
- } |
|
| 1957 |
- } |
|
| 1958 |
- |
|
| 1959 |
- System.out.println("======================================================");
|
|
| 1960 |
- System.out.println("+++++++++++++++++++++++++ isSuccess ::: "+isSuccess);
|
|
| 1961 |
- System.out.println("======================================================");
|
|
| 1962 |
- |
|
| 1963 |
- //주소록에 데이터 추가해 주기 |
|
| 1964 |
- if (isSuccess == true && addrDataInfo.size() > 0) {
|
|
| 1965 |
- // 주소록 대량등록 By Temp 주소록 All |
|
| 1966 |
- resultCnt = addrService.insertAddrByTempAddrAll(addrDataInfo, addrVO); |
|
| 1967 |
- |
|
| 1968 |
- addrBefAfterCnt = addrService.selectAddrTotalCount(addrVO); |
|
| 1969 |
- |
|
| 1970 |
- addrMassDupliList = addrService.selectTempAddrDupliList(addrVO); |
|
| 1971 |
- |
|
| 1972 |
- resultCnt = addrBefAfterCnt - addrBefCnt; |
|
| 1973 |
- dupliCnt = addrNewCnt - resultCnt; |
|
| 1974 |
- } |
|
| 1975 |
- } |
|
| 1976 |
- } |
|
| 1977 |
- else {
|
|
| 1978 |
- isSuccess = false; |
|
| 1979 |
- msg = "주소록은 총 50만개까지만 등록이 가능합니다."; |
|
| 1980 |
- } |
|
| 1981 |
- } |
|
| 1982 |
- catch(Exception e) {
|
|
| 1983 |
- |
|
| 1984 |
- isSuccess = false; |
|
| 1985 |
- msg = "주소록 저장에 오류가 발생하였습니다. 시스템 관리자에게 문의 바랍니다."; |
|
| 1986 |
- System.out.println("==============================================");
|
|
| 1987 |
- System.out.println("+++++++++++++++++++ addrMassInsertByTempAjax Error ::: "+e.getMessage());
|
|
| 1988 |
- System.out.println("==============================================");
|
|
| 1989 |
- |
|
| 1990 |
- } |
|
| 1991 |
- |
|
| 1992 |
- modelAndView.addObject("isSuccess", isSuccess);
|
|
| 1993 |
- modelAndView.addObject("msg", msg);
|
|
| 1994 |
- modelAndView.addObject("resultCnt", resultCnt);
|
|
| 1995 |
- modelAndView.addObject("dupliCnt", dupliCnt);
|
|
| 1996 |
- modelAndView.addObject("errPhoneCnt", errPhoneCnt);
|
|
| 1997 |
- modelAndView.addObject("addrMassDupliList", addrMassDupliList);
|
|
| 1998 |
- |
|
| 1999 |
- return modelAndView; |
|
| 2000 |
- } |
|
| 2001 |
- |
|
| 2002 |
- /* 바이트 자르기 |
|
| 2003 |
- UTF-8일 경우 |
|
| 2004 |
- subStringBytes("블라블라블라라", 10, 3);
|
|
| 2005 |
- EUC-KR일 경우 |
|
| 2006 |
- subStringBytes("블라블라블라라", 10, 2);
|
|
| 2007 |
- */ |
|
| 2008 |
- public String subStringBytes(String str, int byteLength, int sizePerLetter) {
|
|
| 2009 |
- int retLength = 0; |
|
| 2010 |
- int tempSize = 0; |
|
| 2011 |
- int asc; |
|
| 2012 |
- if (str == null || "".equals(str) || "null".equals(str)) {
|
|
| 2013 |
- str = ""; |
|
| 2014 |
- } |
|
| 2015 |
- |
|
| 2016 |
- int length = str.length(); |
|
| 2017 |
- |
|
| 2018 |
- for (int i = 1; i <= length; i++) {
|
|
| 2019 |
- asc = (int) str.charAt(i - 1); |
|
| 2020 |
- if (asc > 127) {
|
|
| 2021 |
- if (byteLength >= tempSize + sizePerLetter) {
|
|
| 2022 |
- tempSize += sizePerLetter; |
|
| 2023 |
- retLength++; |
|
| 2024 |
- } |
|
| 2025 |
- } else {
|
|
| 2026 |
- if (byteLength > tempSize) {
|
|
| 2027 |
- tempSize++; |
|
| 2028 |
- retLength++; |
|
| 2029 |
- } |
|
| 2030 |
- } |
|
| 2031 |
- } |
|
| 2032 |
- |
|
| 2033 |
- return str.substring(0, retLength); |
|
| 2034 |
- } |
|
| 2035 |
- |
|
| 2036 |
- |
|
| 2037 |
- |
|
| 2038 |
- /** |
|
| 2039 |
- * 주소록 그룹 목록 |
|
| 2040 |
- * @param searchVO |
|
| 2041 |
- * @param model |
|
| 2042 |
- * @return "/web/mjon/addr/addrGroupListAjax.do" |
|
| 2043 |
- * @throws Exception |
|
| 2044 |
- */ |
|
| 2045 |
- @RequestMapping(value= {"/web/mjon/addr/addrGroupListAjax.do"})
|
|
| 2046 |
- public ModelAndView addrGroupListAjax(@ModelAttribute("searchVO") AddrGroupVO addrGroupVO,
|
|
| 2047 |
- RedirectAttributes redirectAttributes, |
|
| 2048 |
- ModelMap model) throws Exception{
|
|
| 2049 |
- |
|
| 2050 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 2051 |
- modelAndView.setViewName("jsonView");
|
|
| 2052 |
- |
|
| 2053 |
- boolean isSuccess = true; |
|
| 2054 |
- String msg = ""; |
|
| 2055 |
- |
|
| 2056 |
- List<AddrGroupVO> addrGroupList = null; |
|
| 2057 |
- |
|
| 2058 |
- try {
|
|
| 2059 |
- LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 2060 |
- String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 2061 |
- |
|
| 2062 |
- if(userId != "") {
|
|
| 2063 |
- addrGroupVO.setMberId(userId); |
|
| 2064 |
- |
|
| 2065 |
- if(addrGroupVO.getPageUnit() != 10) {
|
|
| 2066 |
- addrGroupVO.setPageUnit(addrGroupVO.getPageUnit()); |
|
| 2067 |
- } |
|
| 2068 |
- |
|
| 2069 |
- if("".equals(addrGroupVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
|
| 2070 |
- addrGroupVO.setSearchSortCnd("grpOrder");
|
|
| 2071 |
- addrGroupVO.setSearchSortOrd("desc");
|
|
| 2072 |
- } |
|
| 2073 |
- |
|
| 2074 |
- addrGroupVO.setSiteId("web");
|
|
| 2075 |
- addrGroupList = addrGroupService.selectAddrGroupList(addrGroupVO); |
|
| 2076 |
- } |
|
| 2077 |
- } |
|
| 2078 |
- catch(Exception e) {
|
|
| 2079 |
- isSuccess = false; |
|
| 2080 |
- msg = e.getMessage(); |
|
| 2081 |
- } |
|
| 2082 |
- |
|
| 2083 |
- modelAndView.addObject("isSuccess", isSuccess);
|
|
| 2084 |
- modelAndView.addObject("msg", msg);
|
|
| 2085 |
- model.addAttribute("addrGroupList", addrGroupList);
|
|
| 2086 |
- |
|
| 2087 |
- return modelAndView; |
|
| 2088 |
- } |
|
| 2089 |
- |
|
| 2090 |
- /** |
|
| 2091 |
- * 주소록 그룹별 중복 연락처 목록 |
|
| 2092 |
- * @param searchVO |
|
| 2093 |
- * @param model |
|
| 2094 |
- * @return "/web/mjon/addr/addrDupliListAjax.do" |
|
| 2095 |
- * @throws Exception |
|
| 2096 |
- */ |
|
| 2097 |
- @RequestMapping(value= {"/web/mjon/addr/addrDupliListAjax.do"})
|
|
| 2098 |
- public ModelAndView addrDupliListAjax(@ModelAttribute("searchVO") AddrVO addrVO,
|
|
| 2099 |
- RedirectAttributes redirectAttributes, |
|
| 2100 |
- ModelMap model) throws Exception{
|
|
| 2101 |
- |
|
| 2102 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 2103 |
- modelAndView.setViewName("jsonView");
|
|
| 2104 |
- |
|
| 2105 |
- boolean isSuccess = true; |
|
| 2106 |
- String msg = ""; |
|
| 2107 |
- |
|
| 2108 |
- List<AddrVO> addrDupliList = null; |
|
| 2109 |
- |
|
| 2110 |
- try {
|
|
| 2111 |
- LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 2112 |
- String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 2113 |
- |
|
| 2114 |
- if(userId != "") {
|
|
| 2115 |
- addrVO.setMberId(userId); |
|
| 2116 |
- |
|
| 2117 |
- // 주소록 그룹별 중복 연락처 목록 |
|
| 2118 |
- addrDupliList = addrService.selectAddrDupliList(addrVO); |
|
| 2119 |
- } |
|
| 2120 |
- } |
|
| 2121 |
- catch(Exception e) {
|
|
| 2122 |
- isSuccess = false; |
|
| 2123 |
- msg = e.getMessage(); |
|
| 2124 |
- } |
|
| 2125 |
- |
|
| 2126 |
- modelAndView.addObject("isSuccess", isSuccess);
|
|
| 2127 |
- modelAndView.addObject("msg", msg);
|
|
| 2128 |
- model.addAttribute("addrDupliList", addrDupliList);
|
|
| 2129 |
- |
|
| 2130 |
- return modelAndView; |
|
| 2131 |
- } |
|
| 2132 |
- |
|
| 2133 |
- /** |
|
| 2134 |
- * 주소록 그룹별 중복 연락처 삭제 |
|
| 2135 |
- * @param searchVO |
|
| 2136 |
- * @param model |
|
| 2137 |
- * @return "/web/mjon/addr/deleteAddrDupliList.do" |
|
| 2138 |
- * @throws Exception |
|
| 2139 |
- */ |
|
| 2140 |
- @RequestMapping(value= {"/web/mjon/addr/deleteAddrDupliListAjax.do"})
|
|
| 2141 |
- public ModelAndView deleteAddrDupliListAjax(@ModelAttribute("searchVO") AddrVO addrVO,
|
|
| 2142 |
- RedirectAttributes redirectAttributes, |
|
| 2143 |
- ModelMap model) throws Exception{
|
|
| 2144 |
- |
|
| 2145 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 2146 |
- modelAndView.setViewName("jsonView");
|
|
| 2147 |
- |
|
| 2148 |
- boolean isSuccess = true; |
|
| 2149 |
- String msg = ""; |
|
| 2150 |
- |
|
| 2151 |
- try {
|
|
| 2152 |
- LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 2153 |
- String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 2154 |
- |
|
| 2155 |
- if(userId != "") {
|
|
| 2156 |
- addrVO.setMberId(userId); |
|
| 2157 |
- |
|
| 2158 |
- // 주소록 그룹별 중복 연락처 삭제 |
|
| 2159 |
- addrService.deleteAddrDupliList(addrVO); |
|
| 2160 |
- } |
|
| 2161 |
- else {
|
|
| 2162 |
- isSuccess = false; |
|
| 2163 |
- msg = "로그인후 이용하세요."; |
|
| 2164 |
- } |
|
| 2165 |
- } |
|
| 2166 |
- catch(Exception e) {
|
|
| 2167 |
- isSuccess = false; |
|
| 2168 |
- msg = e.getMessage(); |
|
| 2169 |
- } |
|
| 2170 |
- |
|
| 2171 |
- modelAndView.addObject("isSuccess", isSuccess);
|
|
| 2172 |
- modelAndView.addObject("msg", msg);
|
|
| 2173 |
- |
|
| 2174 |
- return modelAndView; |
|
| 2175 |
- } |
|
| 2176 |
- |
|
| 2177 |
- |
|
| 2178 |
- /** |
|
| 2179 |
- * 주소록 그룹별 중복 연락처 삭제 |
|
| 2180 |
- * @param searchVO |
|
| 2181 |
- * @param model |
|
| 2182 |
- * @return "/web/mjon/addr/deleteAddrByAllDupliListAjax.do" |
|
| 2183 |
- * @throws Exception |
|
| 2184 |
- */ |
|
| 2185 |
- @RequestMapping(value= {"/web/mjon/addr/deleteAddrByAllDupliListAjax.do"})
|
|
| 2186 |
- public ModelAndView deleteAddrByAllDupliListAjax(@ModelAttribute("searchVO") AddrVO addrVO,
|
|
| 2187 |
- RedirectAttributes redirectAttributes, |
|
| 2188 |
- ModelMap model) throws Exception{
|
|
| 2189 |
- |
|
| 2190 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 2191 |
- modelAndView.setViewName("jsonView");
|
|
| 2192 |
- |
|
| 2193 |
- boolean isSuccess = true; |
|
| 2194 |
- String msg = ""; |
|
| 2195 |
- |
|
| 2196 |
- try {
|
|
| 2197 |
- LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 2198 |
- String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 2199 |
- |
|
| 2200 |
- if(userId != "") {
|
|
| 2201 |
- addrVO.setMberId(userId); |
|
| 2202 |
- |
|
| 2203 |
- // 주소록 그룹별 중복 연락처 삭제 |
|
| 2204 |
- addrService.deleteAddrDupliListByAll(addrVO); |
|
| 2205 |
- } |
|
| 2206 |
- else {
|
|
| 2207 |
- isSuccess = false; |
|
| 2208 |
- msg = "로그인후 이용하세요."; |
|
| 2209 |
- } |
|
| 2210 |
- } |
|
| 2211 |
- catch(Exception e) {
|
|
| 2212 |
- isSuccess = false; |
|
| 2213 |
- msg = e.getMessage(); |
|
| 2214 |
- } |
|
| 2215 |
- |
|
| 2216 |
- modelAndView.addObject("isSuccess", isSuccess);
|
|
| 2217 |
- modelAndView.addObject("msg", msg);
|
|
| 2218 |
- |
|
| 2219 |
- return modelAndView; |
|
| 2220 |
- } |
|
| 2221 |
- |
|
| 2222 |
- |
|
| 2223 |
- |
|
| 2224 |
- public boolean getNameRepLenChk(String type, String value) {
|
|
| 2225 |
- |
|
| 2226 |
- boolean rtnValue = true; |
|
| 2227 |
- |
|
| 2228 |
- // JSPark 2023.02.17 : 글자길이체크 주석처리 => 저장시 절삭하기 때문 |
|
| 2229 |
- /* |
|
| 2230 |
- if(type.equals("name")) {
|
|
| 2231 |
- |
|
| 2232 |
- String tmpNm = value; |
|
| 2233 |
- int nmLen = tmpNm.length(); |
|
| 2234 |
- |
|
| 2235 |
- if(nmLen > 12) {
|
|
| 2236 |
- |
|
| 2237 |
- rtnValue = false; |
|
| 2238 |
- |
|
| 2239 |
- } |
|
| 2240 |
- |
|
| 2241 |
- }else if(type.equals("rep")) {
|
|
| 2242 |
- |
|
| 2243 |
- String tmpRep = value; |
|
| 2244 |
- int repLen = tmpRep.length(); |
|
| 2245 |
- |
|
| 2246 |
- if(repLen > 20) {
|
|
| 2247 |
- |
|
| 2248 |
- rtnValue = false; |
|
| 2249 |
- |
|
| 2250 |
- } |
|
| 2251 |
- |
|
| 2252 |
- }else if(type.equals("memo")) {
|
|
| 2253 |
- |
|
| 2254 |
- String tmpRep = value; |
|
| 2255 |
- int repLen = tmpRep.length(); |
|
| 2256 |
- |
|
| 2257 |
- if(repLen > 120) {
|
|
| 2258 |
- |
|
| 2259 |
- rtnValue = false; |
|
| 2260 |
- |
|
| 2261 |
- } |
|
| 2262 |
- |
|
| 2263 |
- } |
|
| 2264 |
- */ |
|
| 2265 |
- |
|
| 2266 |
- return rtnValue; |
|
| 2267 |
- } |
|
| 2268 |
- |
|
| 2269 |
- // 문자열에서 숫자만 추출 |
|
| 2270 |
- public String getOnlyNumber(String str) {
|
|
| 2271 |
- //String str = "aaa1234, ^&*2233pp"; |
|
| 2272 |
- |
|
| 2273 |
- String intStr = str.replaceAll("[^\\d]", "");
|
|
| 2274 |
- |
|
| 2275 |
- return intStr; |
|
| 2276 |
- } |
|
| 1 |
+package itn.let.mjo.addr.web; |
|
| 2 |
+ |
|
| 3 |
+import java.io.BufferedReader; |
|
| 4 |
+import java.io.InputStreamReader; |
|
| 5 |
+import java.io.OutputStream; |
|
| 6 |
+import java.text.SimpleDateFormat; |
|
| 7 |
+import java.util.ArrayList; |
|
| 8 |
+import java.util.Calendar; |
|
| 9 |
+import java.util.Date; |
|
| 10 |
+import java.util.HashMap; |
|
| 11 |
+import java.util.List; |
|
| 12 |
+import java.util.Locale; |
|
| 13 |
+ |
|
| 14 |
+import javax.annotation.Resource; |
|
| 15 |
+import javax.servlet.http.HttpServletRequest; |
|
| 16 |
+import javax.servlet.http.HttpServletResponse; |
|
| 17 |
+ |
|
| 18 |
+import org.apache.poi.hssf.usermodel.HSSFCell; |
|
| 19 |
+import org.apache.poi.hssf.usermodel.HSSFRow; |
|
| 20 |
+import org.apache.poi.hssf.usermodel.HSSFSheet; |
|
| 21 |
+import org.apache.poi.hssf.usermodel.HSSFWorkbook; |
|
| 22 |
+import org.apache.poi.openxml4j.opc.OPCPackage; |
|
| 23 |
+import org.apache.poi.ss.usermodel.Cell; |
|
| 24 |
+import org.apache.poi.ss.usermodel.CellStyle; |
|
| 25 |
+import org.apache.poi.ss.usermodel.Font; |
|
| 26 |
+import org.apache.poi.ss.usermodel.Row; |
|
| 27 |
+import org.apache.poi.ss.usermodel.Sheet; |
|
| 28 |
+import org.apache.poi.xssf.streaming.SXSSFWorkbook; |
|
| 29 |
+import org.apache.poi.xssf.usermodel.XSSFCell; |
|
| 30 |
+import org.apache.poi.xssf.usermodel.XSSFRow; |
|
| 31 |
+import org.apache.poi.xssf.usermodel.XSSFSheet; |
|
| 32 |
+import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
|
| 33 |
+import org.springframework.stereotype.Controller; |
|
| 34 |
+import org.springframework.ui.Model; |
|
| 35 |
+import org.springframework.ui.ModelMap; |
|
| 36 |
+import org.springframework.web.bind.annotation.ModelAttribute; |
|
| 37 |
+import org.springframework.web.bind.annotation.RequestMapping; |
|
| 38 |
+import org.springframework.web.bind.annotation.RequestParam; |
|
| 39 |
+import org.springframework.web.bind.annotation.ResponseBody; |
|
| 40 |
+import org.springframework.web.multipart.MultipartFile; |
|
| 41 |
+import org.springframework.web.multipart.MultipartHttpServletRequest; |
|
| 42 |
+import org.springframework.web.servlet.ModelAndView; |
|
| 43 |
+import org.springframework.web.servlet.mvc.support.RedirectAttributes; |
|
| 44 |
+ |
|
| 45 |
+import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; |
|
| 46 |
+import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; |
|
| 47 |
+import itn.com.cmm.EgovMessageSource; |
|
| 48 |
+import itn.com.cmm.JsonResult; |
|
| 49 |
+import itn.com.cmm.LoginVO; |
|
| 50 |
+import itn.com.cmm.util.RedirectUrlMaker; |
|
| 51 |
+import itn.com.cmm.util.StringUtil; |
|
| 52 |
+import itn.com.utl.fcc.service.EgovStringUtil; |
|
| 53 |
+import itn.let.mjo.addr.service.AddrGroupService; |
|
| 54 |
+import itn.let.mjo.addr.service.AddrGroupVO; |
|
| 55 |
+import itn.let.mjo.addr.service.AddrService; |
|
| 56 |
+import itn.let.mjo.addr.service.AddrTransHistVO; |
|
| 57 |
+import itn.let.mjo.addr.service.AddrVO; |
|
| 58 |
+import itn.let.mjo.msgdata.service.PhoneVO; |
|
| 59 |
+ |
|
| 60 |
+/** |
|
| 61 |
+ * 주소록 관한 controller 클래스를 정의한다. |
|
| 62 |
+ * @author ITN |
|
| 63 |
+ * @since 2021.04.08 |
|
| 64 |
+ * @version 1.0 |
|
| 65 |
+ * @see |
|
| 66 |
+ * |
|
| 67 |
+ * <pre> |
|
| 68 |
+ * << 개정이력(Modification Information) >> |
|
| 69 |
+ * |
|
| 70 |
+ * 수정일 수정자 수정내용 |
|
| 71 |
+ * ------- -------- --------------------------- |
|
| 72 |
+ * 2021.04.08 ITN 최초 생성 |
|
| 73 |
+ * |
|
| 74 |
+ * </pre> |
|
| 75 |
+ */ |
|
| 76 |
+@Controller |
|
| 77 |
+public class AddrController {
|
|
| 78 |
+ |
|
| 79 |
+ |
|
| 80 |
+ @Resource (name = "AddrService") |
|
| 81 |
+ private AddrService addrService; |
|
| 82 |
+ |
|
| 83 |
+ @Resource (name = "AddrGroupService") |
|
| 84 |
+ private AddrGroupService addrGroupService; |
|
| 85 |
+ |
|
| 86 |
+ /** EgovMessageSource */ |
|
| 87 |
+ @Resource(name="egovMessageSource") |
|
| 88 |
+ EgovMessageSource egovMessageSource; |
|
| 89 |
+ |
|
| 90 |
+ |
|
| 91 |
+ /** |
|
| 92 |
+ * 주소록 리스트 |
|
| 93 |
+ * @param addrVO |
|
| 94 |
+ * @param model |
|
| 95 |
+ * @return |
|
| 96 |
+ * @throws Exception |
|
| 97 |
+ */ |
|
| 98 |
+ @RequestMapping("/uss/ion/addr/selectAddrList.do")
|
|
| 99 |
+ public String selectAddrList(@ModelAttribute("searchVO") AddrVO addrVO
|
|
| 100 |
+ ,ModelMap model) throws Exception {
|
|
| 101 |
+ |
|
| 102 |
+ if(addrVO.getPageUnit() != 10) {
|
|
| 103 |
+ addrVO.setPageUnit(addrVO.getPageUnit()); |
|
| 104 |
+ } |
|
| 105 |
+ |
|
| 106 |
+ /** pageing */ |
|
| 107 |
+ PaginationInfo paginationInfo = new PaginationInfo(); |
|
| 108 |
+ paginationInfo.setCurrentPageNo(addrVO.getPageIndex()); |
|
| 109 |
+ paginationInfo.setRecordCountPerPage(addrVO.getPageUnit()); |
|
| 110 |
+ paginationInfo.setPageSize(addrVO.getPageSize()); |
|
| 111 |
+ |
|
| 112 |
+ addrVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); |
|
| 113 |
+ addrVO.setLastIndex(paginationInfo.getLastRecordIndex()); |
|
| 114 |
+ addrVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); |
|
| 115 |
+ |
|
| 116 |
+ if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
|
| 117 |
+ addrVO.setSearchSortCnd("addrId");
|
|
| 118 |
+ addrVO.setSearchSortOrd("asc");
|
|
| 119 |
+ } |
|
| 120 |
+ |
|
| 121 |
+ // 기간검색 설정 |
|
| 122 |
+ Calendar mon = Calendar.getInstance(); |
|
| 123 |
+ mon.add(Calendar.WEEK_OF_MONTH , -2); |
|
| 124 |
+ String before2Week = new java.text.SimpleDateFormat("yyyy-MM-dd").format(mon.getTime());
|
|
| 125 |
+ if (null == addrVO.getSearchStartDate() || addrVO.getSearchStartDate().equals("")) {
|
|
| 126 |
+ addrVO.setSearchStartDate(before2Week); |
|
| 127 |
+ } |
|
| 128 |
+ |
|
| 129 |
+ List<AddrVO> addrList = addrService.selectAddrNewList(addrVO); |
|
| 130 |
+ |
|
| 131 |
+ int totCnt = 0; |
|
| 132 |
+ if(addrList.size() > 0) {
|
|
| 133 |
+ totCnt = addrList.get(0).getTotcnt(); |
|
| 134 |
+ } |
|
| 135 |
+ |
|
| 136 |
+ paginationInfo.setTotalRecordCount(totCnt); |
|
| 137 |
+ model.addAttribute("addrList", addrList);
|
|
| 138 |
+ model.addAttribute("paginationInfo", paginationInfo);
|
|
| 139 |
+ |
|
| 140 |
+ return "/uss/ion/addr/AddrList"; |
|
| 141 |
+ } |
|
| 142 |
+ |
|
| 143 |
+ |
|
| 144 |
+ /** |
|
| 145 |
+ * 주소록 등록 페이지 이동 |
|
| 146 |
+ * @param addrVO |
|
| 147 |
+ * @return |
|
| 148 |
+ * @throws Exception |
|
| 149 |
+ */ |
|
| 150 |
+ @RequestMapping("/uss/ion/addr/registAddr.do")
|
|
| 151 |
+ public String registAddr(ModelMap model) throws Exception {
|
|
| 152 |
+ |
|
| 153 |
+ return "/uss/ion/addr/AddrRegist"; |
|
| 154 |
+ } |
|
| 155 |
+ |
|
| 156 |
+ |
|
| 157 |
+ /** |
|
| 158 |
+ * 주소록 추가 로직 |
|
| 159 |
+ * @param addrVO |
|
| 160 |
+ * @param redirectAttributes |
|
| 161 |
+ * @param request |
|
| 162 |
+ * @return |
|
| 163 |
+ * @throws Exception |
|
| 164 |
+ */ |
|
| 165 |
+ @RequestMapping("/uss/ion/addr/insertAddr.do")
|
|
| 166 |
+ public String insertAddr(AddrVO addrVO |
|
| 167 |
+ ,RedirectAttributes redirectAttributes |
|
| 168 |
+ ,HttpServletRequest request) throws Exception {
|
|
| 169 |
+ |
|
| 170 |
+ try {
|
|
| 171 |
+ LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 172 |
+ |
|
| 173 |
+ if( addrVO.getMberId() == null || "".equals(addrVO.getMberId()) ) {
|
|
| 174 |
+ addrVO.setMberId(user.getId()); |
|
| 175 |
+ } |
|
| 176 |
+ |
|
| 177 |
+ // 자주 보내는 번호 |
|
| 178 |
+ if("bookmark".equals(addrVO.getAddrGrpId())) {
|
|
| 179 |
+ addrVO.setBookmark("Y");
|
|
| 180 |
+ addrVO.setAddrGrpId("0");
|
|
| 181 |
+ } |
|
| 182 |
+ |
|
| 183 |
+ // 주소록 그룹 내 휴대폰번호 중복체크 |
|
| 184 |
+ int usedCnt = addrService.selectDuplAddrCnt(addrVO); |
|
| 185 |
+ if (usedCnt > 0) {
|
|
| 186 |
+ redirectAttributes.addFlashAttribute("message", "해당 그룹내 중복된 휴대폰 번호가 있습니다.");
|
|
| 187 |
+ } |
|
| 188 |
+ else {
|
|
| 189 |
+ addrService.insertAddr(addrVO); |
|
| 190 |
+ redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.insert"));
|
|
| 191 |
+ } |
|
| 192 |
+ |
|
| 193 |
+ }catch (Exception e) {
|
|
| 194 |
+ redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.insert"));
|
|
| 195 |
+ } |
|
| 196 |
+ RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/addr/selectAddrList.do");
|
|
| 197 |
+ return redirectUrlMaker.getRedirectUrl(); |
|
| 198 |
+ |
|
| 199 |
+ } |
|
| 200 |
+ |
|
| 201 |
+ |
|
| 202 |
+ /** |
|
| 203 |
+ * 주소록 수정 로직 |
|
| 204 |
+ * |
|
| 205 |
+ * @param addrVO |
|
| 206 |
+ * @param redirectAttributes |
|
| 207 |
+ * @param request |
|
| 208 |
+ * @return |
|
| 209 |
+ * @throws Exception |
|
| 210 |
+ */ |
|
| 211 |
+ @RequestMapping("/uss/ion/addr/updateAddrByAdminAjax.do")
|
|
| 212 |
+ public ModelAndView updateAddrByAdminAjax(AddrVO addrVO |
|
| 213 |
+ ,RedirectAttributes redirectAttributes |
|
| 214 |
+ ,HttpServletRequest request |
|
| 215 |
+ ) throws Exception{
|
|
| 216 |
+ |
|
| 217 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 218 |
+ modelAndView.setViewName("jsonView");
|
|
| 219 |
+ |
|
| 220 |
+ boolean isSuccess = true; |
|
| 221 |
+ String msg = ""; |
|
| 222 |
+ |
|
| 223 |
+ try {
|
|
| 224 |
+ |
|
| 225 |
+ addrService.updateAddrByAdmin(addrVO); |
|
| 226 |
+ |
|
| 227 |
+ } |
|
| 228 |
+ catch(Exception e) {
|
|
| 229 |
+ System.out.println("");
|
|
| 230 |
+ isSuccess = false; |
|
| 231 |
+ msg = "에러메시지 : " + e.getMessage(); |
|
| 232 |
+ e.printStackTrace(); |
|
| 233 |
+ } |
|
| 234 |
+ |
|
| 235 |
+ modelAndView.addObject("isSuccess", isSuccess);
|
|
| 236 |
+ modelAndView.addObject("msg", msg);
|
|
| 237 |
+ |
|
| 238 |
+ return modelAndView; |
|
| 239 |
+ } |
|
| 240 |
+ |
|
| 241 |
+ |
|
| 242 |
+ /** |
|
| 243 |
+ * 주소록 수정 페이지 이동 |
|
| 244 |
+ * |
|
| 245 |
+ * @param addrVO |
|
| 246 |
+ * @param model |
|
| 247 |
+ * @return |
|
| 248 |
+ * @throws Exception |
|
| 249 |
+ */ |
|
| 250 |
+ @RequestMapping("/uss/ion/addr/editAddr.do")
|
|
| 251 |
+ public String editAddr(AddrVO addrVO |
|
| 252 |
+ , ModelMap model ) throws Exception {
|
|
| 253 |
+ |
|
| 254 |
+ AddrVO addrInfo = addrService.selectAddrDetail(addrVO); |
|
| 255 |
+ |
|
| 256 |
+ model.addAttribute("addrInfo", addrInfo);
|
|
| 257 |
+ |
|
| 258 |
+ return "/uss/ion/addr/AddrEdit"; |
|
| 259 |
+ } |
|
| 260 |
+ |
|
| 261 |
+ /** |
|
| 262 |
+ * 주소록 삭제 로직 |
|
| 263 |
+ * |
|
| 264 |
+ * @param request |
|
| 265 |
+ * @param addrVO |
|
| 266 |
+ * @param redirectAttributes |
|
| 267 |
+ * @param model |
|
| 268 |
+ * @return |
|
| 269 |
+ * @throws Exception |
|
| 270 |
+ */ |
|
| 271 |
+ @RequestMapping("/uss/ion/addr/deleteAddr.do")
|
|
| 272 |
+ public String deleteAddr (HttpServletRequest request, @ModelAttribute("searchVO") AddrVO addrVO
|
|
| 273 |
+ ,RedirectAttributes redirectAttributes |
|
| 274 |
+ ,ModelMap model) throws Exception {
|
|
| 275 |
+ |
|
| 276 |
+ int result = addrService.deleteAddrByAdminAll(addrVO); |
|
| 277 |
+ |
|
| 278 |
+ if (result > 0) {
|
|
| 279 |
+ redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete"));
|
|
| 280 |
+ } else {
|
|
| 281 |
+ redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.delete"));
|
|
| 282 |
+ } |
|
| 283 |
+ redirectAttributes.addAttribute("pageIndex", addrVO.getPageIndex());
|
|
| 284 |
+ redirectAttributes.addAttribute("searchCondition", addrVO.getSearchCondition());
|
|
| 285 |
+ redirectAttributes.addAttribute("searchKeyword", addrVO.getSearchKeyword());
|
|
| 286 |
+ |
|
| 287 |
+ return "redirect:/uss/ion/addr/selectAddrList.do"; |
|
| 288 |
+ } |
|
| 289 |
+ |
|
| 290 |
+ |
|
| 291 |
+ |
|
| 292 |
+ |
|
| 293 |
+ /** |
|
| 294 |
+ * 주소록 타 회원으로 이전(복사) 처리 |
|
| 295 |
+ * @param addrVO |
|
| 296 |
+ * @param addrGroupVO |
|
| 297 |
+ * @param addrTransHistVO |
|
| 298 |
+ * @return |
|
| 299 |
+ * @throws Exception |
|
| 300 |
+ */ |
|
| 301 |
+ @RequestMapping("/web/mjon/addr/transAddrGroupAjax.do")
|
|
| 302 |
+ public ModelAndView transAddrGroupAjax(AddrVO addrVO, AddrGroupVO addrGroupVO, AddrTransHistVO addrTransHistVO) throws Exception {
|
|
| 303 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 304 |
+ modelAndView.setViewName("jsonView");
|
|
| 305 |
+ |
|
| 306 |
+ try {
|
|
| 307 |
+ String successCd = addrService.updateAddrAnotherMember(addrVO, addrGroupVO, addrTransHistVO); |
|
| 308 |
+ |
|
| 309 |
+ modelAndView.addObject("status", "success");
|
|
| 310 |
+ modelAndView.addObject("result", successCd);
|
|
| 311 |
+ |
|
| 312 |
+ }catch(Exception e) {
|
|
| 313 |
+ e.printStackTrace(); |
|
| 314 |
+ modelAndView.addObject("status", "fail");
|
|
| 315 |
+ return modelAndView; |
|
| 316 |
+ } |
|
| 317 |
+ |
|
| 318 |
+ return modelAndView; |
|
| 319 |
+ } |
|
| 320 |
+ |
|
| 321 |
+ |
|
| 322 |
+ |
|
| 323 |
+ /** |
|
| 324 |
+ * 주소록 사용자 화면 껍데기 |
|
| 325 |
+ * @param addrVO |
|
| 326 |
+ * @param model |
|
| 327 |
+ * @return |
|
| 328 |
+ * @throws Exception |
|
| 329 |
+ */ |
|
| 330 |
+ @RequestMapping("/web/mjon/addr/selectAddrList.do")
|
|
| 331 |
+ public String selectAddrWebList(@ModelAttribute("searchVO") AddrVO addrVO
|
|
| 332 |
+ ,AddrGroupVO addrGroupVO, ModelMap model, RedirectAttributes redirectAttributes) throws Exception {
|
|
| 333 |
+ |
|
| 334 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 335 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 336 |
+ |
|
| 337 |
+ if(userId == "") {
|
|
| 338 |
+ /*redirectAttributes.addFlashAttribute("fail", true);*/
|
|
| 339 |
+ //redirectAttributes.addFlashAttribute("message", "문자온 서비스는 로그인 후 이용 가능합니다.");
|
|
| 340 |
+ return "redirect:/web/user/login/login.do"; |
|
| 341 |
+ } |
|
| 342 |
+ |
|
| 343 |
+ return "/web/addr/AddrList"; |
|
| 344 |
+ } |
|
| 345 |
+ |
|
| 346 |
+ |
|
| 347 |
+ |
|
| 348 |
+ /** |
|
| 349 |
+ * 사용자 주소록 리스트 Ajax |
|
| 350 |
+ * @param request |
|
| 351 |
+ * @param model |
|
| 352 |
+ * @param addrVO |
|
| 353 |
+ * @param redirectAttributes |
|
| 354 |
+ * @return |
|
| 355 |
+ * @throws Exception |
|
| 356 |
+ */ |
|
| 357 |
+ @RequestMapping("/web/mjon/addr/selectAddrAjax.do")
|
|
| 358 |
+ public String selectAddrAjax(HttpServletRequest request, ModelMap model, |
|
| 359 |
+ @ModelAttribute("searchVO") AddrVO addrVO) throws Exception {
|
|
| 360 |
+ |
|
| 361 |
+ //로그인 권한정보 불러오기 |
|
| 362 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 363 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 364 |
+ |
|
| 365 |
+ if(userId != "") {
|
|
| 366 |
+ addrVO.setMberId(userId); |
|
| 367 |
+ } else {
|
|
| 368 |
+ return "/web/addr/AddrListAjax"; |
|
| 369 |
+ } |
|
| 370 |
+ |
|
| 371 |
+ if(addrVO.getPageUnit() != 10) {
|
|
| 372 |
+ addrVO.setPageUnit(addrVO.getPageUnit()); |
|
| 373 |
+ } |
|
| 374 |
+ |
|
| 375 |
+ /** pageing */ |
|
| 376 |
+ PaginationInfo paginationInfo = new PaginationInfo(); |
|
| 377 |
+ paginationInfo.setCurrentPageNo(addrVO.getPageIndex()); |
|
| 378 |
+ paginationInfo.setRecordCountPerPage(addrVO.getPageUnit()); |
|
| 379 |
+ paginationInfo.setPageSize(addrVO.getPageSize()); |
|
| 380 |
+ |
|
| 381 |
+ addrVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); |
|
| 382 |
+ addrVO.setLastIndex(paginationInfo.getLastRecordIndex()); |
|
| 383 |
+ addrVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); |
|
| 384 |
+ |
|
| 385 |
+ if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
|
| 386 |
+ addrVO.setSearchSortCnd("addrId");
|
|
| 387 |
+ addrVO.setSearchSortOrd("asc");
|
|
| 388 |
+ } |
|
| 389 |
+ |
|
| 390 |
+ List<AddrVO> addrList = addrService.selectAddrList(addrVO); |
|
| 391 |
+ |
|
| 392 |
+ int totCnt = 0; |
|
| 393 |
+ if(addrList.size() > 0) {
|
|
| 394 |
+ totCnt = addrList.get(0).getTotcnt(); |
|
| 395 |
+ } |
|
| 396 |
+ |
|
| 397 |
+ paginationInfo.setTotalRecordCount(totCnt); |
|
| 398 |
+ |
|
| 399 |
+ model.addAttribute("paginationInfo", paginationInfo);
|
|
| 400 |
+ model.addAttribute("addrList", addrList);
|
|
| 401 |
+ model.addAttribute("startKeyword",addrVO.getStartKeyword());
|
|
| 402 |
+ model.addAttribute("userId", userId);
|
|
| 403 |
+ |
|
| 404 |
+ return "/web/addr/AddrListAjax"; |
|
| 405 |
+ } |
|
| 406 |
+ |
|
| 407 |
+ |
|
| 408 |
+ |
|
| 409 |
+ @RequestMapping("/web/mjon/addr/addrListforExcelAjax.do")
|
|
| 410 |
+ public String AddrListforExcel(HttpServletRequest request, ModelMap model, |
|
| 411 |
+ @ModelAttribute("searchVO") AddrVO addrVO) throws Exception {
|
|
| 412 |
+ |
|
| 413 |
+ return "/web/addr/addrListforExcel"; |
|
| 414 |
+ } |
|
| 415 |
+ /** |
|
| 416 |
+ * 사용자 주소록 중복 리스트 Ajax |
|
| 417 |
+ * @param request |
|
| 418 |
+ * @param model |
|
| 419 |
+ * @param addrVO |
|
| 420 |
+ * @param redirectAttributes |
|
| 421 |
+ * @return |
|
| 422 |
+ * @throws Exception |
|
| 423 |
+ */ |
|
| 424 |
+ @RequestMapping("/web/mjon/addr/selectAddrDupliAjax.do")
|
|
| 425 |
+ public String selectAddrDupliAjax(HttpServletRequest request, ModelMap model, |
|
| 426 |
+ @ModelAttribute("searchVO") AddrVO addrVO) throws Exception {
|
|
| 427 |
+ |
|
| 428 |
+ //로그인 권한정보 불러오기 |
|
| 429 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 430 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 431 |
+ |
|
| 432 |
+ if(userId != "") {
|
|
| 433 |
+ addrVO.setMberId(userId); |
|
| 434 |
+ } |
|
| 435 |
+ |
|
| 436 |
+ if(addrVO.getPageUnit() != 10) {
|
|
| 437 |
+ addrVO.setPageUnit(addrVO.getPageUnit()); |
|
| 438 |
+ } |
|
| 439 |
+ |
|
| 440 |
+ /** pageing */ |
|
| 441 |
+ PaginationInfo paginationInfo = new PaginationInfo(); |
|
| 442 |
+ paginationInfo.setCurrentPageNo(addrVO.getPageIndex()); |
|
| 443 |
+ paginationInfo.setRecordCountPerPage(addrVO.getPageUnit()); |
|
| 444 |
+ paginationInfo.setPageSize(addrVO.getPageSize()); |
|
| 445 |
+ |
|
| 446 |
+ addrVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); |
|
| 447 |
+ addrVO.setLastIndex(paginationInfo.getLastRecordIndex()); |
|
| 448 |
+ addrVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); |
|
| 449 |
+ |
|
| 450 |
+ if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
|
| 451 |
+ addrVO.setSearchSortCnd("addrId");
|
|
| 452 |
+ addrVO.setSearchSortOrd("asc");
|
|
| 453 |
+ } |
|
| 454 |
+ |
|
| 455 |
+ List<AddrVO> addrDupliList = addrService.selectAddrDupliListByAll(addrVO); |
|
| 456 |
+ |
|
| 457 |
+ int totCnt = 0; |
|
| 458 |
+ if(addrDupliList.size() > 0) {
|
|
| 459 |
+ totCnt = addrDupliList.get(0).getTotcnt(); |
|
| 460 |
+ } |
|
| 461 |
+ |
|
| 462 |
+ paginationInfo.setTotalRecordCount(totCnt); |
|
| 463 |
+ |
|
| 464 |
+ model.addAttribute("paginationInfo2", paginationInfo);
|
|
| 465 |
+ model.addAttribute("addrDupliList", addrDupliList);
|
|
| 466 |
+ |
|
| 467 |
+ return "/web/addr/AddrListDupliAjax"; |
|
| 468 |
+ } |
|
| 469 |
+ |
|
| 470 |
+ @RequestMapping("/web/mjon/addr/selectAddrPrint.do")
|
|
| 471 |
+ public String selectAddrPrint(@RequestParam("cellCheck2") String[] cellCheck,
|
|
| 472 |
+ AddrVO addrVO, |
|
| 473 |
+ HttpServletRequest request, |
|
| 474 |
+ HttpServletResponse response , |
|
| 475 |
+ ModelMap model) throws Exception {
|
|
| 476 |
+ |
|
| 477 |
+ //로그인 권한정보 불러오기 |
|
| 478 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 479 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 480 |
+ |
|
| 481 |
+ if(userId != "") {
|
|
| 482 |
+ addrVO.setMberId(userId); |
|
| 483 |
+ } |
|
| 484 |
+ |
|
| 485 |
+ addrVO.setRecordCountPerPage(100000); |
|
| 486 |
+ addrVO.setFirstIndex(0); |
|
| 487 |
+ |
|
| 488 |
+ List<AddrVO> addrList = addrService.selectAddrList(addrVO); |
|
| 489 |
+ |
|
| 490 |
+ String chk = ""; |
|
| 491 |
+ |
|
| 492 |
+ for(int i=0; i<cellCheck.length; i++ ) {
|
|
| 493 |
+ chk += cellCheck[i] + ","; |
|
| 494 |
+ } |
|
| 495 |
+ |
|
| 496 |
+ |
|
| 497 |
+ model.addAttribute("chk", chk);
|
|
| 498 |
+ model.addAttribute("addrList", addrList);
|
|
| 499 |
+ |
|
| 500 |
+ return "/web/addr/AddrListPrint"; |
|
| 501 |
+ } |
|
| 502 |
+ |
|
| 503 |
+ /** |
|
| 504 |
+ * 주소록 상세정보 ajax |
|
| 505 |
+ * @param addrCheck |
|
| 506 |
+ * @param request |
|
| 507 |
+ * @param addrVO |
|
| 508 |
+ * @param model |
|
| 509 |
+ * @param redirectAttributes |
|
| 510 |
+ * @return |
|
| 511 |
+ * @throws Exception |
|
| 512 |
+ */ |
|
| 513 |
+ @RequestMapping("/web/mjon/addr/selectAddrDetailAjax.do")
|
|
| 514 |
+ public ModelAndView selectAddrDetailAjax(HttpServletRequest request, |
|
| 515 |
+ AddrVO addrVO, Model model) throws Exception {
|
|
| 516 |
+ |
|
| 517 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 518 |
+ modelAndView.setViewName("jsonView");
|
|
| 519 |
+ |
|
| 520 |
+ boolean isSuccess = true; |
|
| 521 |
+ String msg = ""; |
|
| 522 |
+ AddrVO addrInfo = null; |
|
| 523 |
+ |
|
| 524 |
+ try {
|
|
| 525 |
+ |
|
| 526 |
+ addrInfo = addrService.selectAddrDetail(addrVO); |
|
| 527 |
+ |
|
| 528 |
+ } catch (Exception e) {
|
|
| 529 |
+ isSuccess = false; |
|
| 530 |
+ msg = e.getMessage(); |
|
| 531 |
+ } |
|
| 532 |
+ |
|
| 533 |
+ modelAndView.addObject("isSuccess", isSuccess);
|
|
| 534 |
+ modelAndView.addObject("msg", msg);
|
|
| 535 |
+ modelAndView.addObject("addrInfo", addrInfo);
|
|
| 536 |
+ |
|
| 537 |
+ return modelAndView; |
|
| 538 |
+ |
|
| 539 |
+ } |
|
| 540 |
+ |
|
| 541 |
+ |
|
| 542 |
+ /** |
|
| 543 |
+ * 주소록 그룹 삭제 로직 ajax |
|
| 544 |
+ * |
|
| 545 |
+ * @param request |
|
| 546 |
+ * @param addrGroupVO |
|
| 547 |
+ * @param redirectAttributes |
|
| 548 |
+ * @param model |
|
| 549 |
+ * @return |
|
| 550 |
+ * @throws Exception |
|
| 551 |
+ */ |
|
| 552 |
+ @RequestMapping("/web/mjon/addr/deleteAddrAjax.do")
|
|
| 553 |
+ public ModelAndView deleteAddrAjax(@RequestParam(value="addrCheck", defaultValue="0") String[] addrCheck, HttpServletRequest request, |
|
| 554 |
+ AddrVO addrVO, Model model |
|
| 555 |
+ ,RedirectAttributes redirectAttributes |
|
| 556 |
+ ) throws Exception {
|
|
| 557 |
+ |
|
| 558 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 559 |
+ modelAndView.setViewName("jsonView");
|
|
| 560 |
+ |
|
| 561 |
+ LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 562 |
+ addrVO.setLastUpdusrId(user.getId()); |
|
| 563 |
+ addrVO.setMberId(user.getId()); |
|
| 564 |
+ |
|
| 565 |
+ //단일삭제 |
|
| 566 |
+ if(!"".equals(addrVO.getAddrId())) {
|
|
| 567 |
+ addrCheck[0] = addrVO.getAddrId(); |
|
| 568 |
+ } |
|
| 569 |
+ |
|
| 570 |
+ for(String id:addrCheck) {
|
|
| 571 |
+ try {
|
|
| 572 |
+ addrVO.setAddrId(id); |
|
| 573 |
+ addrService.deleteAddr(addrVO); |
|
| 574 |
+ |
|
| 575 |
+ modelAndView.addObject("result", "success");
|
|
| 576 |
+ } catch (Exception e) {
|
|
| 577 |
+ e.printStackTrace(); |
|
| 578 |
+ modelAndView.addObject("result", "fail");
|
|
| 579 |
+ return modelAndView; |
|
| 580 |
+ } |
|
| 581 |
+ } |
|
| 582 |
+ |
|
| 583 |
+ return modelAndView; |
|
| 584 |
+ |
|
| 585 |
+ } |
|
| 586 |
+ |
|
| 587 |
+ |
|
| 588 |
+ |
|
| 589 |
+ /** |
|
| 590 |
+ * 주소록 등록 로직 (ajax) |
|
| 591 |
+ * @param addrVO |
|
| 592 |
+ * @param request |
|
| 593 |
+ * @return |
|
| 594 |
+ * @throws Exception |
|
| 595 |
+ */ |
|
| 596 |
+ @RequestMapping("/web/mjon/addr/insertAddrAjax.do")
|
|
| 597 |
+ public ModelAndView insertAddrAjax(HttpServletRequest request, ModelMap model, |
|
| 598 |
+ AddrVO addrVO |
|
| 599 |
+ ) throws Exception {
|
|
| 600 |
+ ModelAndView mv = new ModelAndView(); |
|
| 601 |
+ mv.setViewName("jsonView");
|
|
| 602 |
+ |
|
| 603 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 604 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 605 |
+ |
|
| 606 |
+ addrVO.setMberId(userId); |
|
| 607 |
+ |
|
| 608 |
+ if("bookmark".equals(addrVO.getAddrGrpId())) {
|
|
| 609 |
+ addrVO.setBookmark("Y");
|
|
| 610 |
+ addrVO.setAddrGrpId("0");
|
|
| 611 |
+ } |
|
| 612 |
+ |
|
| 613 |
+ int usedCnt = addrService.selectDuplAddrCnt(addrVO); |
|
| 614 |
+ if(usedCnt > 0) {
|
|
| 615 |
+ mv.addObject("result","dupl");
|
|
| 616 |
+ }else {
|
|
| 617 |
+ if(userId != "") {
|
|
| 618 |
+ try {
|
|
| 619 |
+ addrService.insertAddr(addrVO); |
|
| 620 |
+ mv.addObject("result","success");
|
|
| 621 |
+ } catch (Exception e) {
|
|
| 622 |
+ e.printStackTrace(); |
|
| 623 |
+ mv.addObject("result","fail");
|
|
| 624 |
+ } |
|
| 625 |
+ |
|
| 626 |
+ } else {
|
|
| 627 |
+ mv.addObject("result","fail");
|
|
| 628 |
+ } |
|
| 629 |
+ } |
|
| 630 |
+ return mv; |
|
| 631 |
+ } |
|
| 632 |
+ |
|
| 633 |
+ |
|
| 634 |
+ /** |
|
| 635 |
+ * 주소록 다중수정 ajax |
|
| 636 |
+ * @param addrCheck |
|
| 637 |
+ * @param request |
|
| 638 |
+ * @param addrVO |
|
| 639 |
+ * @param model |
|
| 640 |
+ * @param redirectAttributes |
|
| 641 |
+ * @return |
|
| 642 |
+ * @throws Exception |
|
| 643 |
+ */ |
|
| 644 |
+ @RequestMapping("/web/mjon/addr/updateAddrListAjax.do")
|
|
| 645 |
+ public ModelAndView updateAddrListAjax(HttpServletRequest request, |
|
| 646 |
+ AddrVO addrVO, Model model |
|
| 647 |
+ ,RedirectAttributes redirectAttributes |
|
| 648 |
+ ) throws Exception {
|
|
| 649 |
+ |
|
| 650 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 651 |
+ modelAndView.setViewName("jsonView");
|
|
| 652 |
+ |
|
| 653 |
+ LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 654 |
+ addrVO.setLastUpdusrId(user.getId()); |
|
| 655 |
+ addrVO.setMberId(user.getId()); |
|
| 656 |
+ |
|
| 657 |
+ int listSize = addrVO.getAddrIds().length; |
|
| 658 |
+ |
|
| 659 |
+ for(int i=0; i<listSize; i++) {
|
|
| 660 |
+ try {
|
|
| 661 |
+ // JSP 2023.04.07 => 주소록그룹 수정 추가 |
|
| 662 |
+ if (addrVO.getAddrGrpIds()[i].equals("bookmark")) {
|
|
| 663 |
+ // 자주보내는 번호 |
|
| 664 |
+ addrVO.setAddrGrpId("0");
|
|
| 665 |
+ addrVO.setBookmark("Y");
|
|
| 666 |
+ } |
|
| 667 |
+ else {
|
|
| 668 |
+ addrVO.setAddrGrpId(addrVO.getAddrGrpIds()[i]); |
|
| 669 |
+ addrVO.setBookmark("N");
|
|
| 670 |
+ } |
|
| 671 |
+ |
|
| 672 |
+ addrVO.setAddrId(addrVO.getAddrIds()[i]); |
|
| 673 |
+ |
|
| 674 |
+ if(addrVO.getAddrPhones().length > 0) {
|
|
| 675 |
+ addrVO.setAddrPhoneNo(addrVO.getAddrPhones()[i]); |
|
| 676 |
+ } |
|
| 677 |
+ else {
|
|
| 678 |
+ addrVO.setAddrPhoneNo(null); |
|
| 679 |
+ } |
|
| 680 |
+ |
|
| 681 |
+ if(addrVO.getAddrNms().length > 0) {
|
|
| 682 |
+ addrVO.setAddrNm(addrVO.getAddrNms()[i]); |
|
| 683 |
+ } |
|
| 684 |
+ else {
|
|
| 685 |
+ addrVO.setAddrNm(null); |
|
| 686 |
+ } |
|
| 687 |
+ |
|
| 688 |
+ if(!addrVO.getAddrInfo1s()[i].equals(null) || !"".equals(addrVO.getAddrInfo1s()[i])) {
|
|
| 689 |
+ addrVO.setAddrInfo1(addrVO.getAddrInfo1s()[i]); |
|
| 690 |
+ }else {
|
|
| 691 |
+ addrVO.setAddrInfo1("");
|
|
| 692 |
+ } |
|
| 693 |
+ |
|
| 694 |
+ if(!addrVO.getAddrInfo2s()[i].equals(null) || !"".equals(addrVO.getAddrInfo2s()[i])) {
|
|
| 695 |
+ addrVO.setAddrInfo2(addrVO.getAddrInfo2s()[i]); |
|
| 696 |
+ }else {
|
|
| 697 |
+ addrVO.setAddrInfo2("");
|
|
| 698 |
+ } |
|
| 699 |
+ |
|
| 700 |
+ if(!addrVO.getAddrInfo3s()[i].equals(null) || !"".equals(addrVO.getAddrInfo3s()[i])) {
|
|
| 701 |
+ addrVO.setAddrInfo3(addrVO.getAddrInfo3s()[i]); |
|
| 702 |
+ }else {
|
|
| 703 |
+ addrVO.setAddrInfo3("");
|
|
| 704 |
+ } |
|
| 705 |
+ |
|
| 706 |
+ if(!addrVO.getAddrInfo4s()[i].equals(null) || !"".equals(addrVO.getAddrInfo4s()[i])) {
|
|
| 707 |
+ addrVO.setAddrInfo4(addrVO.getAddrInfo4s()[i]); |
|
| 708 |
+ }else {
|
|
| 709 |
+ addrVO.setAddrInfo4("");
|
|
| 710 |
+ } |
|
| 711 |
+ |
|
| 712 |
+ addrService.updateAddr(addrVO); |
|
| 713 |
+ |
|
| 714 |
+ modelAndView.addObject("result", "success");
|
|
| 715 |
+ } catch (Exception e) {
|
|
| 716 |
+ e.printStackTrace(); |
|
| 717 |
+ modelAndView.addObject("result", "fail");
|
|
| 718 |
+ return modelAndView; |
|
| 719 |
+ } |
|
| 720 |
+ } |
|
| 721 |
+ return modelAndView; |
|
| 722 |
+ } |
|
| 723 |
+ |
|
| 724 |
+ |
|
| 725 |
+ /** |
|
| 726 |
+ * 주소록 다중수정 ajax |
|
| 727 |
+ * @param addrCheck |
|
| 728 |
+ * @param request |
|
| 729 |
+ * @param addrVO |
|
| 730 |
+ * @param model |
|
| 731 |
+ * @param redirectAttributes |
|
| 732 |
+ * @return |
|
| 733 |
+ * @throws Exception |
|
| 734 |
+ */ |
|
| 735 |
+ @RequestMapping("/web/mjon/addr/updateAddrAjax.do")
|
|
| 736 |
+ public ModelAndView updateAddrAjax(@RequestParam("addrCheck") String[] addrCheck, HttpServletRequest request,
|
|
| 737 |
+ AddrVO addrVO, Model model |
|
| 738 |
+ ,RedirectAttributes redirectAttributes |
|
| 739 |
+ ) throws Exception {
|
|
| 740 |
+ |
|
| 741 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 742 |
+ modelAndView.setViewName("jsonView");
|
|
| 743 |
+ |
|
| 744 |
+ LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 745 |
+ addrVO.setLastUpdusrId(user.getId()); |
|
| 746 |
+ addrVO.setMberId(user.getId()); |
|
| 747 |
+ |
|
| 748 |
+ for(String id:addrCheck) {
|
|
| 749 |
+ try {
|
|
| 750 |
+ |
|
| 751 |
+ if("0".equals (addrVO.getAddrGrpId())) {
|
|
| 752 |
+ addrVO.setBookmark("Y");
|
|
| 753 |
+ } else if(addrVO.getAddrGrpId() != null && !"".equals(addrVO.getAddrGrpId())) {
|
|
| 754 |
+ addrVO.setBookmark("N");
|
|
| 755 |
+ } |
|
| 756 |
+ |
|
| 757 |
+ addrVO.setAddrId(id); |
|
| 758 |
+ addrService.updateMemoAddr(addrVO); |
|
| 759 |
+ |
|
| 760 |
+ modelAndView.addObject("result", "success");
|
|
| 761 |
+ } catch (Exception e) {
|
|
| 762 |
+ e.printStackTrace(); |
|
| 763 |
+ modelAndView.addObject("result", "fail");
|
|
| 764 |
+ return modelAndView; |
|
| 765 |
+ } |
|
| 766 |
+ } |
|
| 767 |
+ |
|
| 768 |
+ return modelAndView; |
|
| 769 |
+ |
|
| 770 |
+ } |
|
| 771 |
+ |
|
| 772 |
+ |
|
| 773 |
+ /** |
|
| 774 |
+ * 주소록 그룹이동 ajax |
|
| 775 |
+ * @param addrCheck |
|
| 776 |
+ * @param request |
|
| 777 |
+ * @param addrVO |
|
| 778 |
+ * @param model |
|
| 779 |
+ * @param redirectAttributes |
|
| 780 |
+ * @return |
|
| 781 |
+ * @throws Exception |
|
| 782 |
+ */ |
|
| 783 |
+ @RequestMapping("/web/mjon/addr/updateAddrMoveGrpAjax.do")
|
|
| 784 |
+ public ModelAndView updateAddrMoveGrpAjax(@RequestParam("addrCheck") String[] addrCheck,
|
|
| 785 |
+ @RequestParam("addrPhoneNos") String[] addrPhoneNos,
|
|
| 786 |
+ HttpServletRequest request, |
|
| 787 |
+ AddrVO addrVO, Model model, |
|
| 788 |
+ RedirectAttributes redirectAttributes |
|
| 789 |
+ ) throws Exception {
|
|
| 790 |
+ |
|
| 791 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 792 |
+ modelAndView.setViewName("jsonView");
|
|
| 793 |
+ |
|
| 794 |
+ LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 795 |
+ addrVO.setLastUpdusrId(user.getId()); |
|
| 796 |
+ addrVO.setMberId(user.getId()); |
|
| 797 |
+ |
|
| 798 |
+ // 그룹미지정, 자주보내는 번호 구분처리 |
|
| 799 |
+ if("0".equals (addrVO.getAddrGrpId())) {
|
|
| 800 |
+ // 그룹미지정 |
|
| 801 |
+ addrVO.setBookmark("N");
|
|
| 802 |
+ } |
|
| 803 |
+ else if("bookmark".equals (addrVO.getAddrGrpId())) {
|
|
| 804 |
+ // 자주보내는 번호 |
|
| 805 |
+ addrVO.setBookmark("Y");
|
|
| 806 |
+ addrVO.setAddrGrpId("0");
|
|
| 807 |
+ } |
|
| 808 |
+ else if(addrVO.getAddrGrpId() != null && !"".equals(addrVO.getAddrGrpId())) {
|
|
| 809 |
+ addrVO.setBookmark("N");
|
|
| 810 |
+ } |
|
| 811 |
+ |
|
| 812 |
+ /** |
|
| 813 |
+ * 보내려는 그룹에 등록되어있는 전화번호를 변수에 담아둠 |
|
| 814 |
+ */ |
|
| 815 |
+ List<?> addrPhoneList = addrService.selectPhoneNumInAddrGroup(addrVO); |
|
| 816 |
+ |
|
| 817 |
+ String phoneNos = ""; |
|
| 818 |
+ for(int i=0; i<addrPhoneList.size(); i++) {
|
|
| 819 |
+ if(i == 0) {
|
|
| 820 |
+ phoneNos = ((AddrVO)addrPhoneList.get(i)).getAddrPhoneNo(); |
|
| 821 |
+ } else {
|
|
| 822 |
+ phoneNos = phoneNos + "," + ((AddrVO)addrPhoneList.get(i)).getAddrPhoneNo(); |
|
| 823 |
+ } |
|
| 824 |
+ } |
|
| 825 |
+ |
|
| 826 |
+ /** |
|
| 827 |
+ * 2. 넘어온 주소록 id를 db조회하여 리스트로 받아옴 |
|
| 828 |
+ */ |
|
| 829 |
+ String duplYn = "N"; |
|
| 830 |
+ for(String phoneNo:addrPhoneNos) {
|
|
| 831 |
+ if(phoneNos != null && phoneNos.contains(phoneNo)) {
|
|
| 832 |
+ modelAndView.addObject("result","dupl");
|
|
| 833 |
+ duplYn = "Y"; |
|
| 834 |
+ break; |
|
| 835 |
+ } |
|
| 836 |
+ } |
|
| 837 |
+ |
|
| 838 |
+ if(duplYn == "N") {
|
|
| 839 |
+ for(String id:addrCheck) {
|
|
| 840 |
+ |
|
| 841 |
+ try {
|
|
| 842 |
+ addrVO.setAddrId(id); |
|
| 843 |
+ addrService.updateAddrGrp(addrVO); |
|
| 844 |
+ |
|
| 845 |
+ modelAndView.addObject("result", "success");
|
|
| 846 |
+ } catch (Exception e) {
|
|
| 847 |
+ e.printStackTrace(); |
|
| 848 |
+ modelAndView.addObject("result", "fail");
|
|
| 849 |
+ return modelAndView; |
|
| 850 |
+ } |
|
| 851 |
+ } |
|
| 852 |
+ } |
|
| 853 |
+ |
|
| 854 |
+ return modelAndView; |
|
| 855 |
+ |
|
| 856 |
+ } |
|
| 857 |
+ |
|
| 858 |
+ |
|
| 859 |
+ /** |
|
| 860 |
+ * 주소록 복사 ajax |
|
| 861 |
+ * @param addrCheck |
|
| 862 |
+ * @param request |
|
| 863 |
+ * @param addrVO |
|
| 864 |
+ * @param model |
|
| 865 |
+ * @param redirectAttributes |
|
| 866 |
+ * @return |
|
| 867 |
+ * @throws Exception |
|
| 868 |
+ */ |
|
| 869 |
+ @RequestMapping("/web/mjon/addr/insertCopyAddrAjax.do")
|
|
| 870 |
+ public ModelAndView insertCopyAddrAjax(@RequestParam("addrCheck") String[] addrCheck,
|
|
| 871 |
+ @RequestParam("addrPhoneNos") String[] addrPhoneNos,
|
|
| 872 |
+ HttpServletRequest request, |
|
| 873 |
+ AddrVO addrVO, Model model, |
|
| 874 |
+ RedirectAttributes redirectAttributes |
|
| 875 |
+ ) throws Exception {
|
|
| 876 |
+ |
|
| 877 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 878 |
+ modelAndView.setViewName("jsonView");
|
|
| 879 |
+ |
|
| 880 |
+ LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 881 |
+ addrVO.setMberId(user.getId()); |
|
| 882 |
+ |
|
| 883 |
+ // 그룹미지정, 자주보내는 번호 구분처리 |
|
| 884 |
+ if("0".equals (addrVO.getAddrGrpId())) {
|
|
| 885 |
+ // 그룹미지정 |
|
| 886 |
+ addrVO.setBookmark("N");
|
|
| 887 |
+ } |
|
| 888 |
+ else if("bookmark".equals (addrVO.getAddrGrpId())) {
|
|
| 889 |
+ // 자주보내는 번호 |
|
| 890 |
+ addrVO.setBookmark("Y");
|
|
| 891 |
+ addrVO.setAddrGrpId("0");
|
|
| 892 |
+ } |
|
| 893 |
+ else if(addrVO.getAddrGrpId() != null && !"".equals(addrVO.getAddrGrpId())) {
|
|
| 894 |
+ addrVO.setBookmark("N");
|
|
| 895 |
+ } |
|
| 896 |
+ |
|
| 897 |
+ /** |
|
| 898 |
+ * 복사하려는 그룹에 등록되어있는 전화번호를 변수에 담아둠 |
|
| 899 |
+ */ |
|
| 900 |
+ List<?> addrPhoneList = addrService.selectPhoneNumInAddrGroup(addrVO); |
|
| 901 |
+ |
|
| 902 |
+ String phoneNos = ""; |
|
| 903 |
+ for(int i=0; i<addrPhoneList.size(); i++) {
|
|
| 904 |
+ if(i == 0) {
|
|
| 905 |
+ phoneNos = ((AddrVO)addrPhoneList.get(i)).getAddrPhoneNo(); |
|
| 906 |
+ } else {
|
|
| 907 |
+ phoneNos = phoneNos + "," + ((AddrVO)addrPhoneList.get(i)).getAddrPhoneNo(); |
|
| 908 |
+ } |
|
| 909 |
+ } |
|
| 910 |
+ |
|
| 911 |
+ /** |
|
| 912 |
+ * 2. 넘어온 주소록 id를 db조회하여 리스트로 받아옴 |
|
| 913 |
+ */ |
|
| 914 |
+ String duplYn = "N"; |
|
| 915 |
+ for(String phoneNo:addrPhoneNos) {
|
|
| 916 |
+ if(phoneNos != null && phoneNos.contains(phoneNo)) {
|
|
| 917 |
+ modelAndView.addObject("result","dupl");
|
|
| 918 |
+ duplYn = "Y"; |
|
| 919 |
+ break; |
|
| 920 |
+ } |
|
| 921 |
+ } |
|
| 922 |
+ |
|
| 923 |
+ if(duplYn == "N") {
|
|
| 924 |
+ for(String id:addrCheck) {
|
|
| 925 |
+ try {
|
|
| 926 |
+ addrVO.setAddrId(id); |
|
| 927 |
+ addrService.insertCopyAddr(addrVO); |
|
| 928 |
+ |
|
| 929 |
+ modelAndView.addObject("result", "success");
|
|
| 930 |
+ } catch (Exception e) {
|
|
| 931 |
+ e.printStackTrace(); |
|
| 932 |
+ modelAndView.addObject("result", "fail");
|
|
| 933 |
+ return modelAndView; |
|
| 934 |
+ } |
|
| 935 |
+ } |
|
| 936 |
+ } |
|
| 937 |
+ return modelAndView; |
|
| 938 |
+ |
|
| 939 |
+ } |
|
| 940 |
+ |
|
| 941 |
+ |
|
| 942 |
+ /** |
|
| 943 |
+ * 주소록 그룹 내 휴대폰번호 중복체크 |
|
| 944 |
+ * |
|
| 945 |
+ * @param addrVO |
|
| 946 |
+ * @return |
|
| 947 |
+ * @throws Exception |
|
| 948 |
+ */ |
|
| 949 |
+ @RequestMapping("/uss/ion/addr/selectDuplAddrAjax.do")
|
|
| 950 |
+ public ModelAndView selectDuplAddrAjax(AddrVO addrVO) throws Exception {
|
|
| 951 |
+ ModelAndView mv = new ModelAndView(); |
|
| 952 |
+ mv.setViewName("jsonView");
|
|
| 953 |
+ |
|
| 954 |
+ int usedCnt = addrService.selectDuplAddrCnt(addrVO); |
|
| 955 |
+ |
|
| 956 |
+ mv.addObject("usedCnt", usedCnt);
|
|
| 957 |
+ |
|
| 958 |
+ return mv; |
|
| 959 |
+ } |
|
| 960 |
+ |
|
| 961 |
+ |
|
| 962 |
+ /** |
|
| 963 |
+ * 주소록 폰주소록 가이드 이동 |
|
| 964 |
+ * |
|
| 965 |
+ * @param addrVO |
|
| 966 |
+ * @param model |
|
| 967 |
+ * @return |
|
| 968 |
+ * @throws Exception |
|
| 969 |
+ */ |
|
| 970 |
+ @RequestMapping("/web/mjon/addr/addrMobGuide.do")
|
|
| 971 |
+ public String addrMobGuide(ModelMap model) throws Exception {
|
|
| 972 |
+ |
|
| 973 |
+ return "/web/addr/AddrMobGuide"; |
|
| 974 |
+ } |
|
| 975 |
+ |
|
| 976 |
+ |
|
| 977 |
+ |
|
| 978 |
+ /** |
|
| 979 |
+ * 선택한 주소록을 문자전송 화면으로 보내기 |
|
| 980 |
+ * @param addrVO |
|
| 981 |
+ * @param req |
|
| 982 |
+ * @param model |
|
| 983 |
+ * @return |
|
| 984 |
+ * @throws Exception |
|
| 985 |
+ */ |
|
| 986 |
+ @RequestMapping(value= {"/web/mjon/addr/selectAddrDataListAjax.do"})
|
|
| 987 |
+ public ModelAndView selectAddrDataListAjax( |
|
| 988 |
+ AddrVO addrVO, |
|
| 989 |
+ HttpServletRequest req, |
|
| 990 |
+ ModelMap model) throws Exception {
|
|
| 991 |
+ |
|
| 992 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 993 |
+ modelAndView.setViewName("jsonView");
|
|
| 994 |
+ |
|
| 995 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 996 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 997 |
+ |
|
| 998 |
+ if(userId.equals("")) {
|
|
| 999 |
+ |
|
| 1000 |
+ modelAndView.addObject("status", "loginFail");
|
|
| 1001 |
+ modelAndView.addObject("message", "로그인이 필요합니다.");
|
|
| 1002 |
+ return modelAndView; |
|
| 1003 |
+ |
|
| 1004 |
+ }else {
|
|
| 1005 |
+ |
|
| 1006 |
+ addrVO.setMberId(userId); |
|
| 1007 |
+ |
|
| 1008 |
+ } |
|
| 1009 |
+ |
|
| 1010 |
+ |
|
| 1011 |
+ List<String> addrIdList = addrVO.getAddrIdList(); |
|
| 1012 |
+ List<String> tempList = new ArrayList<String>(); |
|
| 1013 |
+ |
|
| 1014 |
+ for(String seqStr : addrIdList) {
|
|
| 1015 |
+ |
|
| 1016 |
+ String seqId = seqStr.replace("[", "");
|
|
| 1017 |
+ seqId = seqId.replace("]", "");
|
|
| 1018 |
+ |
|
| 1019 |
+ tempList.add(seqId); |
|
| 1020 |
+ } |
|
| 1021 |
+ |
|
| 1022 |
+ addrVO.setAddrIdList(tempList); |
|
| 1023 |
+ |
|
| 1024 |
+ List<AddrVO> resultList = addrService.selectAddrDataList(addrVO); |
|
| 1025 |
+ |
|
| 1026 |
+ |
|
| 1027 |
+ if(resultList == null) {
|
|
| 1028 |
+ modelAndView.addObject("status", "emptyList");
|
|
| 1029 |
+ modelAndView.addObject("message", "가져온 주소록 목록이 없습니다.");
|
|
| 1030 |
+ |
|
| 1031 |
+ }else {
|
|
| 1032 |
+ |
|
| 1033 |
+ modelAndView.addObject("status", "success");
|
|
| 1034 |
+ modelAndView.addObject("resultList", resultList);
|
|
| 1035 |
+ modelAndView.addObject("resultListCnt", resultList.size());
|
|
| 1036 |
+ |
|
| 1037 |
+ } |
|
| 1038 |
+ |
|
| 1039 |
+ return modelAndView; |
|
| 1040 |
+ } |
|
| 1041 |
+ |
|
| 1042 |
+ |
|
| 1043 |
+ |
|
| 1044 |
+ |
|
| 1045 |
+ //주소록 엑셀 다운로드 |
|
| 1046 |
+ @RequestMapping("/web/mjon/addr/addrExcelDownload.do")
|
|
| 1047 |
+ public void addrExcelDownload(@RequestParam("cellCheck") String[] cellCheck,
|
|
| 1048 |
+ AddrVO addrVO, |
|
| 1049 |
+ HttpServletRequest request, |
|
| 1050 |
+ HttpServletResponse response , |
|
| 1051 |
+ ModelMap model) throws Exception {
|
|
| 1052 |
+ |
|
| 1053 |
+ addrVO.setRecordCountPerPage(100000); |
|
| 1054 |
+ addrVO.setFirstIndex(0); |
|
| 1055 |
+ |
|
| 1056 |
+ if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
|
| 1057 |
+ addrVO.setSearchSortCnd("addrId");
|
|
| 1058 |
+ addrVO.setSearchSortOrd("asc");
|
|
| 1059 |
+ } |
|
| 1060 |
+ |
|
| 1061 |
+ LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 1062 |
+ |
|
| 1063 |
+ // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. |
|
| 1064 |
+ SXSSFWorkbook wb = new SXSSFWorkbook(100); |
|
| 1065 |
+ CellStyle styleHeader = wb.createCellStyle(); |
|
| 1066 |
+ styleHeader.setBorderBottom(CellStyle.BORDER_THIN); //테두리 두껍게 |
|
| 1067 |
+ styleHeader.setBorderLeft(CellStyle.BORDER_THIN); |
|
| 1068 |
+ styleHeader.setBorderRight(CellStyle.BORDER_THIN); |
|
| 1069 |
+ styleHeader.setBorderTop(CellStyle.BORDER_THIN); |
|
| 1070 |
+ |
|
| 1071 |
+ CellStyle styleList = wb.createCellStyle(); |
|
| 1072 |
+ |
|
| 1073 |
+ Font font = wb.createFont(); |
|
| 1074 |
+ font.setBoldweight(Font.BOLDWEIGHT_BOLD); //글씨 bold |
|
| 1075 |
+ |
|
| 1076 |
+ Cell cell = null; |
|
| 1077 |
+ Row row = null; |
|
| 1078 |
+ |
|
| 1079 |
+ String fileName ="주소록"; |
|
| 1080 |
+ |
|
| 1081 |
+ String sheetTitle = ""; |
|
| 1082 |
+ try{
|
|
| 1083 |
+ if("".equals(addrVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
|
| 1084 |
+ addrVO.setSearchSortOrd("desc");
|
|
| 1085 |
+ } |
|
| 1086 |
+ addrVO.setMberId(loginVO.getId()); |
|
| 1087 |
+ List<AddrVO> addrList = addrService.selectAddrList(addrVO); |
|
| 1088 |
+ {
|
|
| 1089 |
+ // row, cell 개수 순서대로 증가용 필드 |
|
| 1090 |
+ int rowNumber = 0; |
|
| 1091 |
+ int celNumber = 0; |
|
| 1092 |
+ //화면 리스트 |
|
| 1093 |
+ sheetTitle = "주소록" ; //제목 |
|
| 1094 |
+ Sheet sheet = wb.createSheet(sheetTitle); |
|
| 1095 |
+ row = sheet.createRow(rowNumber++); |
|
| 1096 |
+ row = sheet.createRow(rowNumber++); //줄추가 |
|
| 1097 |
+ |
|
| 1098 |
+ //cell = row.createCell(celNumber++); |
|
| 1099 |
+ //cell.setCellValue("번호");
|
|
| 1100 |
+ //cell.setCellStyle(style); |
|
| 1101 |
+ |
|
| 1102 |
+ int y = 0; |
|
| 1103 |
+ for(String field : cellCheck) {
|
|
| 1104 |
+ //셀 칼럼 크기 설정 |
|
| 1105 |
+ sheet.setColumnWidth(y, 4000); |
|
| 1106 |
+ |
|
| 1107 |
+ cell = row.createCell(celNumber++); |
|
| 1108 |
+ cell.setCellValue(addrVO.getHeaderName(field)); |
|
| 1109 |
+ cell.setCellStyle(styleHeader); |
|
| 1110 |
+ |
|
| 1111 |
+ y++; |
|
| 1112 |
+ } |
|
| 1113 |
+ |
|
| 1114 |
+ for(int i=0; i < addrList.size(); i++){
|
|
| 1115 |
+ row = sheet.createRow(rowNumber++); //줄추가 |
|
| 1116 |
+ celNumber = 0; |
|
| 1117 |
+ //cell = row.createCell(celNumber++); |
|
| 1118 |
+ //cell.setCellStyle(style); |
|
| 1119 |
+ //cell.setCellValue(i+1); //번호 |
|
| 1120 |
+ |
|
| 1121 |
+ for(String field : cellCheck) {
|
|
| 1122 |
+ cell = row.createCell(celNumber++); |
|
| 1123 |
+ cell.setCellStyle(styleList); |
|
| 1124 |
+ cell.setCellValue(((AddrVO)addrList.get(i)).getFieldValue(field)); |
|
| 1125 |
+ } |
|
| 1126 |
+ } |
|
| 1127 |
+ } |
|
| 1128 |
+ |
|
| 1129 |
+ response.setHeader("Set-Cookie", "fileDownload=true; path=/");
|
|
| 1130 |
+ SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "yyyy_MM_dd_HH_mm_ss", Locale.KOREA ); |
|
| 1131 |
+ Date currentTime = new Date (); |
|
| 1132 |
+ String mTime = mSimpleDateFormat.format ( currentTime ); |
|
| 1133 |
+ fileName = fileName+"("+mTime+")";
|
|
| 1134 |
+ |
|
| 1135 |
+ response.setHeader("Content-Disposition", String.format("attachment; filename=\""+new String((fileName).getBytes("KSC5601"),"8859_1")+".xlsx"));
|
|
| 1136 |
+ wb.write(response.getOutputStream()); |
|
| 1137 |
+ |
|
| 1138 |
+ }catch(Exception e) {
|
|
| 1139 |
+ response.setHeader("Set-Cookie", "fileDownload=false; path=/");
|
|
| 1140 |
+ response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
|
|
| 1141 |
+ response.setHeader("Content-Type","text/html; charset=utf-8");
|
|
| 1142 |
+ OutputStream out = null; |
|
| 1143 |
+ try {
|
|
| 1144 |
+ out = response.getOutputStream(); |
|
| 1145 |
+ byte[] data = new String("fail..").getBytes();
|
|
| 1146 |
+ out.write(data, 0, data.length); |
|
| 1147 |
+ } catch(Exception ignore) {
|
|
| 1148 |
+ ignore.printStackTrace(); |
|
| 1149 |
+ } finally {
|
|
| 1150 |
+ if(out != null) try { out.close(); } catch(Exception ignore) {}
|
|
| 1151 |
+ } |
|
| 1152 |
+ }finally {
|
|
| 1153 |
+ // 디스크 적었던 임시파일을 제거합니다. |
|
| 1154 |
+ wb.dispose(); |
|
| 1155 |
+ try { wb.close(); } catch(Exception ignore) {}
|
|
| 1156 |
+ } |
|
| 1157 |
+ } |
|
| 1158 |
+ |
|
| 1159 |
+ |
|
| 1160 |
+ /** |
|
| 1161 |
+ * 주소록 대량등록 - 엑셀파일 불러오기 |
|
| 1162 |
+ * @param body |
|
| 1163 |
+ * @param uploadFile |
|
| 1164 |
+ * @param search |
|
| 1165 |
+ * @param result |
|
| 1166 |
+ * @param model |
|
| 1167 |
+ * @param request |
|
| 1168 |
+ * @return |
|
| 1169 |
+ * @throws Exception |
|
| 1170 |
+ */ |
|
| 1171 |
+ @RequestMapping(value = "/web/mjon/addr/sendExelFilePhoneNumAjax.do") |
|
| 1172 |
+ @ResponseBody |
|
| 1173 |
+ public Object sendExelFilePhoneNumAjax(final MultipartHttpServletRequest multiRequest) throws Exception {
|
|
| 1174 |
+ |
|
| 1175 |
+ JsonResult jr = new JsonResult(); |
|
| 1176 |
+ jr.setSuccess(false); |
|
| 1177 |
+ jr.setMessage("엑셀 파일만 업로드할 수 있습니다.");
|
|
| 1178 |
+ |
|
| 1179 |
+ //final Map<String, MultipartFile> files = multiRequest.getFileMap(); |
|
| 1180 |
+ List<MultipartFile> files = (List<MultipartFile>) multiRequest.getFiles("file0");
|
|
| 1181 |
+ |
|
| 1182 |
+ // 파일명에 .이 있을경우 오류 => Ex) 테스트6.20.xlsx |
|
| 1183 |
+ int fileNameSplitCnt = 0; |
|
| 1184 |
+ |
|
| 1185 |
+ if(!files.isEmpty()) {
|
|
| 1186 |
+ fileNameSplitCnt = files.get(0).getOriginalFilename().split("[.]").length;
|
|
| 1187 |
+ //System.out.println("fileNameSplitCnt : " + fileNameSplitCnt);
|
|
| 1188 |
+ |
|
| 1189 |
+ if (files.get(0).getSize() > 0 |
|
| 1190 |
+ && (files.get(0).getContentType().indexOf("spreadsheetml") > -1)
|
|
| 1191 |
+ || files.get(0).getContentType().indexOf("ms-excel") > -1
|
|
| 1192 |
+ || files.get(0).getOriginalFilename().split("[.]")[fileNameSplitCnt-1].indexOf("xlsx") > -1
|
|
| 1193 |
+ || files.get(0).getOriginalFilename().split("[.]")[fileNameSplitCnt-1].indexOf("xls") > -1) {
|
|
| 1194 |
+ |
|
| 1195 |
+ // 엑셀 파일 용량 3MB이상 시 10만건 이상으로 서버가 다운되는 증상 발생 |
|
| 1196 |
+ long fileSize = multiRequest.getFile("file0").getSize();
|
|
| 1197 |
+ |
|
| 1198 |
+ if(fileSize > 3374653) {
|
|
| 1199 |
+ jr.setMessage("엑셀 파일은 3MB를 넘을수 없습니다.");
|
|
| 1200 |
+ return jr; |
|
| 1201 |
+ } |
|
| 1202 |
+ |
|
| 1203 |
+ String Ext = files.get(0).getOriginalFilename().split("[.]")[1];
|
|
| 1204 |
+ String errMessage = ""; |
|
| 1205 |
+ String cellValue = ""; |
|
| 1206 |
+ |
|
| 1207 |
+ //String phoneRegExp = "^01(?:0|1|[6-9])[.-]?(\\d{3}|\\d{4})[.-]?(\\d{4})$";
|
|
| 1208 |
+ String phoneRegExp = "^(050[2345678]{1}|01[016789]{1})-?[0-9]{3,4}-?[0-9]{4}$";
|
|
| 1209 |
+ |
|
| 1210 |
+ int errPhoneCnt = 0; |
|
| 1211 |
+ int errNameCnt = 0; |
|
| 1212 |
+ int errRep1Cnt = 0; |
|
| 1213 |
+ int errRep2Cnt = 0; |
|
| 1214 |
+ int errRep3Cnt = 0; |
|
| 1215 |
+ int errRep4Cnt = 0; |
|
| 1216 |
+ int errMemoCnt = 0; |
|
| 1217 |
+ |
|
| 1218 |
+ |
|
| 1219 |
+ //엑셀 확장자에 따른 처리 로직 분리 |
|
| 1220 |
+ if(Ext.equals("xls")) {
|
|
| 1221 |
+ |
|
| 1222 |
+ HSSFWorkbook workbook = new HSSFWorkbook(files.get(0).getInputStream()); |
|
| 1223 |
+ HSSFSheet sheet = workbook.getSheetAt(0); |
|
| 1224 |
+ |
|
| 1225 |
+ if(sheet.getLastRowNum() > 20000) { //
|
|
| 1226 |
+ errMessage = "2만줄 이상의 업로드는 데이터 부하로 업로드 할수 없습니다."; |
|
| 1227 |
+ jr.setSuccess(false); |
|
| 1228 |
+ jr.setMessage(errMessage); |
|
| 1229 |
+ return jr; |
|
| 1230 |
+ } |
|
| 1231 |
+ |
|
| 1232 |
+ List<HashMap<String, String>> json = new ArrayList<HashMap<String, String>>(); |
|
| 1233 |
+ PhoneVO pVO = new PhoneVO(); |
|
| 1234 |
+ for(int i=2; i< sheet.getLastRowNum() + 2; i++){ //먼저 밸리데이션 체크(1줄은 생략)
|
|
| 1235 |
+ HSSFRow row = sheet.getRow(i); //열읽기 |
|
| 1236 |
+ if(null == row) {
|
|
| 1237 |
+ continue; |
|
| 1238 |
+ } |
|
| 1239 |
+ |
|
| 1240 |
+ HashMap<String, String> jm = new HashMap<>(); |
|
| 1241 |
+ // 행의 두번째 열(이름부터 받아오기) |
|
| 1242 |
+ HSSFCell cell = null; |
|
| 1243 |
+ boolean errSts = true; |
|
| 1244 |
+ for(int j = 0 ; j < 7; j++){ //행읽기(6행까지나 2행까지만 필요)
|
|
| 1245 |
+ cellValue = ""; |
|
| 1246 |
+ cell = row.getCell(j); //이름/핸드폰/info1/info2/info3/info4/메모 |
|
| 1247 |
+ if(null == cell || "".equals(cell.toString().trim())) { //셀에 값이 없으면
|
|
| 1248 |
+ if(j == 1) {
|
|
| 1249 |
+ if (sheet.getLastRowNum() == i) {
|
|
| 1250 |
+ continue; |
|
| 1251 |
+ } |
|
| 1252 |
+ |
|
| 1253 |
+ //errPhoneCnt++; |
|
| 1254 |
+ //errSts = false; |
|
| 1255 |
+ break; |
|
| 1256 |
+ } |
|
| 1257 |
+ } |
|
| 1258 |
+ if(null != cell){
|
|
| 1259 |
+ switch(cell.getCellType()){ //숫자타임을 문자로 변환
|
|
| 1260 |
+ case Cell.CELL_TYPE_NUMERIC: |
|
| 1261 |
+ cell.setCellType(Cell.CELL_TYPE_STRING); |
|
| 1262 |
+ } |
|
| 1263 |
+ cellValue = StringUtil.getString(cell.getStringCellValue().trim()) ; |
|
| 1264 |
+ } |
|
| 1265 |
+ |
|
| 1266 |
+ if(j == 0) {
|
|
| 1267 |
+ //이름 |
|
| 1268 |
+ boolean nmChk = getNameRepLenChk("name", cellValue);
|
|
| 1269 |
+ |
|
| 1270 |
+ if(nmChk && errSts) {
|
|
| 1271 |
+ jm.put("name", cellValue);
|
|
| 1272 |
+ }else {
|
|
| 1273 |
+ errNameCnt++; |
|
| 1274 |
+ errSts = false; |
|
| 1275 |
+ break; |
|
| 1276 |
+ } |
|
| 1277 |
+ } |
|
| 1278 |
+ if(j == 1) {
|
|
| 1279 |
+ // 문자열에서 숫자만 추출 |
|
| 1280 |
+ cellValue = getOnlyNumber(cellValue); |
|
| 1281 |
+ |
|
| 1282 |
+ //전화번호 |
|
| 1283 |
+ if(cellValue.matches(phoneRegExp) && errSts) {
|
|
| 1284 |
+ jm.put("phone", cellValue);
|
|
| 1285 |
+ }else {
|
|
| 1286 |
+ errPhoneCnt++; |
|
| 1287 |
+ errSts = false; |
|
| 1288 |
+ break; |
|
| 1289 |
+ } |
|
| 1290 |
+ } |
|
| 1291 |
+ if(j == 2) {
|
|
| 1292 |
+ //치환1 |
|
| 1293 |
+ boolean repChk = getNameRepLenChk("rep", cellValue);
|
|
| 1294 |
+ |
|
| 1295 |
+ if(repChk && errSts) {
|
|
| 1296 |
+ jm.put("info1", cellValue);
|
|
| 1297 |
+ }else {
|
|
| 1298 |
+ errRep1Cnt++; |
|
| 1299 |
+ errSts = false; |
|
| 1300 |
+ break; |
|
| 1301 |
+ } |
|
| 1302 |
+ } |
|
| 1303 |
+ if(j == 3) {
|
|
| 1304 |
+ //치환2 |
|
| 1305 |
+ boolean repChk = getNameRepLenChk("rep", cellValue);
|
|
| 1306 |
+ |
|
| 1307 |
+ if(repChk && errSts) {
|
|
| 1308 |
+ jm.put("info2", cellValue);
|
|
| 1309 |
+ }else {
|
|
| 1310 |
+ errRep2Cnt++; |
|
| 1311 |
+ errSts = false; |
|
| 1312 |
+ break; |
|
| 1313 |
+ } |
|
| 1314 |
+ } |
|
| 1315 |
+ if(j == 4) {
|
|
| 1316 |
+ //치환3 |
|
| 1317 |
+ boolean repChk = getNameRepLenChk("rep", cellValue);
|
|
| 1318 |
+ |
|
| 1319 |
+ if(repChk && errSts) {
|
|
| 1320 |
+ jm.put("info3", cellValue);
|
|
| 1321 |
+ }else {
|
|
| 1322 |
+ errRep3Cnt++; |
|
| 1323 |
+ errSts = false; |
|
| 1324 |
+ break; |
|
| 1325 |
+ } |
|
| 1326 |
+ } |
|
| 1327 |
+ if(j == 5) {
|
|
| 1328 |
+ //치환4 |
|
| 1329 |
+ boolean repChk = getNameRepLenChk("rep", cellValue);
|
|
| 1330 |
+ |
|
| 1331 |
+ if(repChk && errSts) {
|
|
| 1332 |
+ jm.put("info4", cellValue);
|
|
| 1333 |
+ }else {
|
|
| 1334 |
+ errRep4Cnt++; |
|
| 1335 |
+ errSts = false; |
|
| 1336 |
+ break; |
|
| 1337 |
+ } |
|
| 1338 |
+ } |
|
| 1339 |
+ if(j == 6) {
|
|
| 1340 |
+ //메모 |
|
| 1341 |
+ boolean repChk = getNameRepLenChk("memo", cellValue);
|
|
| 1342 |
+ |
|
| 1343 |
+ if(repChk && errSts) {
|
|
| 1344 |
+ jm.put("memo", cellValue);
|
|
| 1345 |
+ }else {
|
|
| 1346 |
+ errMemoCnt++; |
|
| 1347 |
+ errSts = false; |
|
| 1348 |
+ break; |
|
| 1349 |
+ } |
|
| 1350 |
+ } |
|
| 1351 |
+ } |
|
| 1352 |
+ if(null != jm.get("phone")) {
|
|
| 1353 |
+ json.add(jm); |
|
| 1354 |
+ } |
|
| 1355 |
+ |
|
| 1356 |
+ } |
|
| 1357 |
+ |
|
| 1358 |
+ int resultErrCnt = errPhoneCnt + errNameCnt + errRep1Cnt + errRep2Cnt + errRep3Cnt + errRep4Cnt + errMemoCnt; |
|
| 1359 |
+ |
|
| 1360 |
+ jr.setData(json); |
|
| 1361 |
+ jr.setSuccess(true); |
|
| 1362 |
+ |
|
| 1363 |
+ if(resultErrCnt > 0) {
|
|
| 1364 |
+ jr.setMessage("올바르지 않은 휴대폰 번호가 "+ resultErrCnt +" 건 있습니다.");
|
|
| 1365 |
+ }else {
|
|
| 1366 |
+ jr.setMessage("");
|
|
| 1367 |
+ } |
|
| 1368 |
+ |
|
| 1369 |
+ }else { //확장자가 xlsx
|
|
| 1370 |
+ |
|
| 1371 |
+ OPCPackage opcPackage = OPCPackage.open(files.get(0).getInputStream()); |
|
| 1372 |
+ XSSFWorkbook workbook = new XSSFWorkbook(opcPackage); |
|
| 1373 |
+ XSSFSheet sheet = workbook.getSheetAt(0); // 첫번째 시트 불러오기 |
|
| 1374 |
+ opcPackage.close(); |
|
| 1375 |
+ |
|
| 1376 |
+ int totRowDataCnt = 0; |
|
| 1377 |
+ for(int r=1; r<sheet.getPhysicalNumberOfRows(); r++) {
|
|
| 1378 |
+ |
|
| 1379 |
+ XSSFRow tmpRow = sheet.getRow(r); |
|
| 1380 |
+ //System.out.println("=================r:"+r);
|
|
| 1381 |
+ XSSFCell cell = null; |
|
| 1382 |
+ if(tmpRow.getCell(1) != null) {
|
|
| 1383 |
+ |
|
| 1384 |
+ cell = tmpRow.getCell(1); //이름/핸드폰/변환1/변환2/변환3/변환4/변환5 |
|
| 1385 |
+ if(cell != null && !cell.toString().trim().equals("")) {
|
|
| 1386 |
+ //System.out.println("value-" + r + ":" +cell.getStringCellValue());
|
|
| 1387 |
+ totRowDataCnt++; |
|
| 1388 |
+ //System.out.println("tmpRowCnt:"+totRowDataCnt);
|
|
| 1389 |
+ } |
|
| 1390 |
+ } |
|
| 1391 |
+ } |
|
| 1392 |
+ System.out.println("+++++++++++++++++ totRowDataCnt ::: "+totRowDataCnt);
|
|
| 1393 |
+ |
|
| 1394 |
+ //if(sheet.getLastRowNum() > 20000) { //
|
|
| 1395 |
+ if(totRowDataCnt > 20001) {
|
|
| 1396 |
+ System.out.println("totRowDataCnt : " + totRowDataCnt);
|
|
| 1397 |
+ errMessage = "2만줄 이상의 업로드는 데이터 부하로 업로드 할수 없습니다."; |
|
| 1398 |
+ jr.setSuccess(false); |
|
| 1399 |
+ jr.setMessage(errMessage); |
|
| 1400 |
+ return jr; |
|
| 1401 |
+ } |
|
| 1402 |
+ |
|
| 1403 |
+ List<HashMap<String, String>> json = new ArrayList<HashMap<String, String>>(); |
|
| 1404 |
+ PhoneVO pVO = new PhoneVO(); |
|
| 1405 |
+ System.out.println("sheet.getLastRowNum() : " + sheet.getLastRowNum());
|
|
| 1406 |
+ for(int i=2; i< sheet.getLastRowNum() + 2; i++){ //먼저 밸리데이션 체크(1줄은 생략)
|
|
| 1407 |
+ XSSFRow row = sheet.getRow(i); //열읽기 |
|
| 1408 |
+ if(null == row) {
|
|
| 1409 |
+ continue; |
|
| 1410 |
+ } |
|
| 1411 |
+ |
|
| 1412 |
+ HashMap<String, String> jm = new HashMap<>(); |
|
| 1413 |
+ // 행의 두번째 열(핸드폰부터 받아오기) |
|
| 1414 |
+ XSSFCell cell = null; |
|
| 1415 |
+ boolean errSts = true; |
|
| 1416 |
+ |
|
| 1417 |
+ for(int j = 0 ; j < 7; j++){ //행읽기(6행까지나 2행까지만 필요)
|
|
| 1418 |
+ cellValue = ""; |
|
| 1419 |
+ cell = row.getCell(j); //이름/핸드폰/변환1/변환2/변환3/변환4/변환5/메모 |
|
| 1420 |
+ if(null == cell || "".equals(cell.toString().trim())) { //셀에 값이 없으면
|
|
| 1421 |
+ if(j == 1) {
|
|
| 1422 |
+ if (sheet.getLastRowNum() == i) {
|
|
| 1423 |
+ continue; |
|
| 1424 |
+ } |
|
| 1425 |
+ |
|
| 1426 |
+ //errPhoneCnt++; |
|
| 1427 |
+ //errSts = false; |
|
| 1428 |
+ break; |
|
| 1429 |
+ } |
|
| 1430 |
+ } |
|
| 1431 |
+ if(null != cell){
|
|
| 1432 |
+ switch(cell.getCellType()){ //숫자타임을 문자로 변환
|
|
| 1433 |
+ case Cell.CELL_TYPE_NUMERIC: |
|
| 1434 |
+ cell.setCellType(Cell.CELL_TYPE_STRING); |
|
| 1435 |
+ } |
|
| 1436 |
+ cellValue = StringUtil.getString(cell.getStringCellValue().trim()) ; |
|
| 1437 |
+ } |
|
| 1438 |
+ |
|
| 1439 |
+ if(j == 0) {
|
|
| 1440 |
+ //이름 |
|
| 1441 |
+ boolean nmChk = getNameRepLenChk("name", cellValue);
|
|
| 1442 |
+ |
|
| 1443 |
+ if(nmChk && errSts) {
|
|
| 1444 |
+ jm.put("name", cellValue);
|
|
| 1445 |
+ }else {
|
|
| 1446 |
+ errNameCnt++; |
|
| 1447 |
+ errSts = false; |
|
| 1448 |
+ break; |
|
| 1449 |
+ } |
|
| 1450 |
+ } |
|
| 1451 |
+ if(j == 1) {
|
|
| 1452 |
+ // 문자열에서 숫자만 추출 |
|
| 1453 |
+ cellValue = getOnlyNumber(cellValue); |
|
| 1454 |
+ |
|
| 1455 |
+ //전화번호 |
|
| 1456 |
+ if(cellValue.matches(phoneRegExp) && errSts) {
|
|
| 1457 |
+ jm.put("phone", cellValue);
|
|
| 1458 |
+ }else {
|
|
| 1459 |
+ errPhoneCnt++; |
|
| 1460 |
+ errSts = false; |
|
| 1461 |
+ break; |
|
| 1462 |
+ } |
|
| 1463 |
+ } |
|
| 1464 |
+ if(j == 2) {
|
|
| 1465 |
+ //치환1 |
|
| 1466 |
+ boolean repChk = getNameRepLenChk("rep", cellValue);
|
|
| 1467 |
+ |
|
| 1468 |
+ if(repChk && errSts) {
|
|
| 1469 |
+ jm.put("info1", cellValue);
|
|
| 1470 |
+ }else {
|
|
| 1471 |
+ errRep1Cnt++; |
|
| 1472 |
+ errSts = false; |
|
| 1473 |
+ break; |
|
| 1474 |
+ } |
|
| 1475 |
+ } |
|
| 1476 |
+ if(j == 3) {
|
|
| 1477 |
+ //치환2 |
|
| 1478 |
+ boolean repChk = getNameRepLenChk("rep", cellValue);
|
|
| 1479 |
+ |
|
| 1480 |
+ if(repChk && errSts) {
|
|
| 1481 |
+ jm.put("info2", cellValue);
|
|
| 1482 |
+ }else {
|
|
| 1483 |
+ errRep2Cnt++; |
|
| 1484 |
+ errSts = false; |
|
| 1485 |
+ break; |
|
| 1486 |
+ } |
|
| 1487 |
+ } |
|
| 1488 |
+ if(j == 4) {
|
|
| 1489 |
+ //치환3 |
|
| 1490 |
+ boolean repChk = getNameRepLenChk("rep", cellValue);
|
|
| 1491 |
+ |
|
| 1492 |
+ if(repChk && errSts) {
|
|
| 1493 |
+ jm.put("info3", cellValue);
|
|
| 1494 |
+ }else {
|
|
| 1495 |
+ errRep3Cnt++; |
|
| 1496 |
+ errSts = false; |
|
| 1497 |
+ break; |
|
| 1498 |
+ } |
|
| 1499 |
+ } |
|
| 1500 |
+ if(j == 5) {
|
|
| 1501 |
+ //치환4 |
|
| 1502 |
+ boolean repChk = getNameRepLenChk("rep", cellValue);
|
|
| 1503 |
+ |
|
| 1504 |
+ if(repChk && errSts) {
|
|
| 1505 |
+ jm.put("info4", cellValue);
|
|
| 1506 |
+ }else {
|
|
| 1507 |
+ errRep4Cnt++; |
|
| 1508 |
+ errSts = false; |
|
| 1509 |
+ break; |
|
| 1510 |
+ } |
|
| 1511 |
+ } |
|
| 1512 |
+ if(j == 6) {
|
|
| 1513 |
+ //메모 |
|
| 1514 |
+ boolean repChk = getNameRepLenChk("memo", cellValue);
|
|
| 1515 |
+ |
|
| 1516 |
+ if(repChk && errSts) {
|
|
| 1517 |
+ jm.put("memo", cellValue);
|
|
| 1518 |
+ }else {
|
|
| 1519 |
+ errMemoCnt++; |
|
| 1520 |
+ errSts = false; |
|
| 1521 |
+ break; |
|
| 1522 |
+ } |
|
| 1523 |
+ } |
|
| 1524 |
+ |
|
| 1525 |
+ } |
|
| 1526 |
+ if(null != jm.get("phone") && errSts) {
|
|
| 1527 |
+ json.add(jm); |
|
| 1528 |
+ } |
|
| 1529 |
+ |
|
| 1530 |
+ } |
|
| 1531 |
+ |
|
| 1532 |
+ int resultErrCnt = errPhoneCnt + errNameCnt + errRep1Cnt + errRep2Cnt + errRep3Cnt + errRep4Cnt; |
|
| 1533 |
+ |
|
| 1534 |
+ jr.setData(json); |
|
| 1535 |
+ jr.setSuccess(true); |
|
| 1536 |
+ |
|
| 1537 |
+ if(resultErrCnt > 0) {
|
|
| 1538 |
+ jr.setMessage("올바르지 않은 휴대폰 번호가 "+ resultErrCnt +" 건 있습니다.");
|
|
| 1539 |
+ }else {
|
|
| 1540 |
+ jr.setMessage("");
|
|
| 1541 |
+ } |
|
| 1542 |
+ } //xlsx 처리 끝 |
|
| 1543 |
+ |
|
| 1544 |
+ } |
|
| 1545 |
+ else {
|
|
| 1546 |
+ |
|
| 1547 |
+ String ttt = files.get(0).getSize() + "_" + |
|
| 1548 |
+ files.get(0).getContentType() + "_" + |
|
| 1549 |
+ files.get(0).getOriginalFilename().split("[.]")[fileNameSplitCnt-1];
|
|
| 1550 |
+ |
|
| 1551 |
+ jr.setSuccess(false); |
|
| 1552 |
+ jr.setMessage("엑셀파일 인식오류.");
|
|
| 1553 |
+ //jr.setMessage("엑셀파일 인식오류" + ttt);
|
|
| 1554 |
+ } |
|
| 1555 |
+ } |
|
| 1556 |
+ else {
|
|
| 1557 |
+ jr.setSuccess(false); |
|
| 1558 |
+ jr.setMessage("엑셀파일 인식오류.");
|
|
| 1559 |
+ } |
|
| 1560 |
+ |
|
| 1561 |
+ return jr; |
|
| 1562 |
+ } |
|
| 1563 |
+ |
|
| 1564 |
+ |
|
| 1565 |
+ /** |
|
| 1566 |
+ * 주소록 대량등록 - TXT파일 불러오기 |
|
| 1567 |
+ * @param body |
|
| 1568 |
+ * @param uploadFile |
|
| 1569 |
+ * @param search |
|
| 1570 |
+ * @param result |
|
| 1571 |
+ * @param model |
|
| 1572 |
+ * @param request |
|
| 1573 |
+ * @return |
|
| 1574 |
+ * @throws Exception |
|
| 1575 |
+ */ |
|
| 1576 |
+ @RequestMapping(value = "/web/mjon/addr/sendTxtFilePhoneNumAjax.do") |
|
| 1577 |
+ @ResponseBody |
|
| 1578 |
+ public Object sendTxtFilePhoneNumAjax(final MultipartHttpServletRequest multiRequest) throws Exception {
|
|
| 1579 |
+ |
|
| 1580 |
+ JsonResult jr = new JsonResult(); |
|
| 1581 |
+ jr.setSuccess(false); |
|
| 1582 |
+ jr.setMessage("TXT 파일만 업로드할 수 있습니다.");
|
|
| 1583 |
+ |
|
| 1584 |
+ List<MultipartFile> files = (List<MultipartFile>) multiRequest.getFiles("file0");
|
|
| 1585 |
+ |
|
| 1586 |
+ if(!files.isEmpty()) {
|
|
| 1587 |
+ |
|
| 1588 |
+ if (files.get(0).getSize() > 0 |
|
| 1589 |
+ || files.get(0).getOriginalFilename().split("[.]")[1].indexOf("txt") > -1) {
|
|
| 1590 |
+ |
|
| 1591 |
+ // txt 파일 용량 3MB이상 시 10만건 이상으로 서버가 다운되는 증상 발생 |
|
| 1592 |
+ long fileSize = multiRequest.getFile("file0").getSize();
|
|
| 1593 |
+ |
|
| 1594 |
+ if(fileSize > 3374653) {
|
|
| 1595 |
+ jr.setMessage("txt 파일은 3MB를 넘을수 없습니다.");
|
|
| 1596 |
+ return jr; |
|
| 1597 |
+ } |
|
| 1598 |
+ |
|
| 1599 |
+ BufferedReader reader = new BufferedReader(new InputStreamReader(multiRequest.getFile("file0").getInputStream()));
|
|
| 1600 |
+ |
|
| 1601 |
+ String line = null; |
|
| 1602 |
+ String[] splitedStr = null; |
|
| 1603 |
+ String[] tempStr = null; |
|
| 1604 |
+ int errPhoneCnt = 0; |
|
| 1605 |
+ int totRowNum = 0; |
|
| 1606 |
+ |
|
| 1607 |
+ //String phoneRegExp = "^01(?:0|1|[6-9])[.-]?(\\d{3}|\\d{4})[.-]?(\\d{4})$";
|
|
| 1608 |
+ String phoneRegExp = "^(050[2345678]{1}|01[016789]{1})-?[0-9]{3,4}-?[0-9]{4}$";
|
|
| 1609 |
+ |
|
| 1610 |
+ List<HashMap<String, String>> json = new ArrayList<HashMap<String, String>>(); |
|
| 1611 |
+ |
|
| 1612 |
+ //파일 읽어서 탭으로 구분해주기 |
|
| 1613 |
+ while ((line = reader.readLine()) != null) {
|
|
| 1614 |
+ |
|
| 1615 |
+ HashMap<String, String> jm = new HashMap<>(); |
|
| 1616 |
+ splitedStr = null; |
|
| 1617 |
+ tempStr = null; |
|
| 1618 |
+ |
|
| 1619 |
+ //txt 파일의 데이터가 탭 혹은 콤마로 구분되어 있는지 구분처리 |
|
| 1620 |
+ tempStr = line.split("\\,");
|
|
| 1621 |
+ if(tempStr.length > 1) {
|
|
| 1622 |
+ splitedStr = line.split("\\,");
|
|
| 1623 |
+ }else {
|
|
| 1624 |
+ splitedStr = line.split("\t");;
|
|
| 1625 |
+ } |
|
| 1626 |
+ |
|
| 1627 |
+ for (int i = 0; i < splitedStr.length; i++) {
|
|
| 1628 |
+ splitedStr[i] = splitedStr[i].trim(); |
|
| 1629 |
+ if(i == 0) {
|
|
| 1630 |
+ //이름 |
|
| 1631 |
+ jm.put("name", splitedStr[i]);
|
|
| 1632 |
+ } |
|
| 1633 |
+ if(i == 1) {
|
|
| 1634 |
+ // 문자열에서 숫자만 추출 |
|
| 1635 |
+ splitedStr[i] = getOnlyNumber(splitedStr[i]); |
|
| 1636 |
+ |
|
| 1637 |
+ if(splitedStr[i].matches(phoneRegExp)) {
|
|
| 1638 |
+ //휴대폰 번호 |
|
| 1639 |
+ jm.put("phone", splitedStr[i]);
|
|
| 1640 |
+ }else {
|
|
| 1641 |
+ errPhoneCnt++; |
|
| 1642 |
+ } |
|
| 1643 |
+ } |
|
| 1644 |
+ if(i == 2) {
|
|
| 1645 |
+ //info1 |
|
| 1646 |
+ jm.put("info1", splitedStr[i]);
|
|
| 1647 |
+ } |
|
| 1648 |
+ if(i == 3) {
|
|
| 1649 |
+ //info2 |
|
| 1650 |
+ jm.put("info2", splitedStr[i]);
|
|
| 1651 |
+ } |
|
| 1652 |
+ if(i == 4) {
|
|
| 1653 |
+ //info3 |
|
| 1654 |
+ jm.put("info3", splitedStr[i]);
|
|
| 1655 |
+ } |
|
| 1656 |
+ if(i == 5) {
|
|
| 1657 |
+ //info4 |
|
| 1658 |
+ jm.put("info4", splitedStr[i]);
|
|
| 1659 |
+ } |
|
| 1660 |
+ if(i == 6) {
|
|
| 1661 |
+ //메모 |
|
| 1662 |
+ jm.put("memo", splitedStr[i]);
|
|
| 1663 |
+ } |
|
| 1664 |
+ } |
|
| 1665 |
+ |
|
| 1666 |
+ if(jm.get("phone") != null) {
|
|
| 1667 |
+ json.add(jm); |
|
| 1668 |
+ } |
|
| 1669 |
+ |
|
| 1670 |
+ totRowNum++; |
|
| 1671 |
+ } // end while |
|
| 1672 |
+ jr.setData(json); |
|
| 1673 |
+ jr.setSuccess(true); |
|
| 1674 |
+ |
|
| 1675 |
+ if (totRowNum > 20000) {
|
|
| 1676 |
+ jr.setMessage("20000");
|
|
| 1677 |
+ } |
|
| 1678 |
+ else {
|
|
| 1679 |
+ if(errPhoneCnt > 0) {
|
|
| 1680 |
+ jr.setMessage("올바르지 않은 휴대폰 번호가 "+ errPhoneCnt +" 건 있습니다.");
|
|
| 1681 |
+ }else {
|
|
| 1682 |
+ jr.setMessage("");
|
|
| 1683 |
+ } |
|
| 1684 |
+ } |
|
| 1685 |
+ } |
|
| 1686 |
+ |
|
| 1687 |
+ } |
|
| 1688 |
+ |
|
| 1689 |
+ return jr; |
|
| 1690 |
+ } |
|
| 1691 |
+ |
|
| 1692 |
+ |
|
| 1693 |
+ /** |
|
| 1694 |
+ * 주소록 대량등록 저장 |
|
| 1695 |
+ * @param searchVO |
|
| 1696 |
+ * @param model |
|
| 1697 |
+ * @return "/web/mjon/addr/addrMassInsertByTempAjax.do" |
|
| 1698 |
+ * @throws Exception |
|
| 1699 |
+ */ |
|
| 1700 |
+ @RequestMapping(value= {"/web/mjon/addr/addrMassInsertByTempAjax.do"})
|
|
| 1701 |
+ public ModelAndView addrMassInsertByTempAjax(@ModelAttribute("searchVO") AddrVO addrVO,
|
|
| 1702 |
+ RedirectAttributes redirectAttributes, |
|
| 1703 |
+ ModelMap model) throws Exception{
|
|
| 1704 |
+ |
|
| 1705 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 1706 |
+ modelAndView.setViewName("jsonView");
|
|
| 1707 |
+ |
|
| 1708 |
+ //String phoneRegExp = "^01(?:0|1|[6-9])[.-]?(\\d{3}|\\d{4})[.-]?(\\d{4})$";
|
|
| 1709 |
+ String phoneRegExp = "^(050[2345678]{1}|01[016789]{1})-?[0-9]{3,4}-?[0-9]{4}$";
|
|
| 1710 |
+ |
|
| 1711 |
+ String charset = "euc-kr"; |
|
| 1712 |
+ boolean isSuccess = true; |
|
| 1713 |
+ String msg = ""; |
|
| 1714 |
+ int resultCnt = 0; |
|
| 1715 |
+ int dupliCnt = 0; // 중복 데이터 수 |
|
| 1716 |
+ int errPhoneCnt = 0; |
|
| 1717 |
+ List<AddrVO> addrMassDupliList = new ArrayList<AddrVO>(); // 중복 휴대폰번호 |
|
| 1718 |
+ |
|
| 1719 |
+ try {
|
|
| 1720 |
+ |
|
| 1721 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 1722 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 1723 |
+ |
|
| 1724 |
+ if(userId.equals("")) {
|
|
| 1725 |
+ isSuccess = false; |
|
| 1726 |
+ modelAndView.addObject("isSuccess", isSuccess);
|
|
| 1727 |
+ modelAndView.addObject("msg", "로그인 후 이용이 가능합니다.");
|
|
| 1728 |
+ return modelAndView; |
|
| 1729 |
+ } |
|
| 1730 |
+ else {
|
|
| 1731 |
+ addrVO.setMberId(userId); |
|
| 1732 |
+ } |
|
| 1733 |
+ |
|
| 1734 |
+ //회원별 주소록 전체 갯수 조회 |
|
| 1735 |
+ int addrBefAfterCnt = 0; |
|
| 1736 |
+ int addrBefCnt = addrService.selectAddrTotalCount(addrVO); |
|
| 1737 |
+ int addrNewCnt = addrVO.getPhoneList().length; //신규 추가할 주소록 갯수 |
|
| 1738 |
+ int sumAddrCnt = addrBefCnt + addrNewCnt; //기존 + 신규 주소록 합산 |
|
| 1739 |
+ |
|
| 1740 |
+ // 신규 주소록 여부 체크 |
|
| 1741 |
+ if (addrVO.getAddrGrpId().equals("NEW")) {
|
|
| 1742 |
+ |
|
| 1743 |
+ AddrGroupVO addrGroupVO = new AddrGroupVO(); |
|
| 1744 |
+ addrGroupVO.setMberId(userId); |
|
| 1745 |
+ addrGroupVO.setAddrGrpNm(addrVO.getAddrGrpNm()); |
|
| 1746 |
+ // 정렬순서 |
|
| 1747 |
+ int nextOrderNumber = addrGroupService.selectMaxOrderNumber(addrGroupVO); |
|
| 1748 |
+ addrGroupVO.setGrpOrder(nextOrderNumber); |
|
| 1749 |
+ |
|
| 1750 |
+ addrGroupService.insertAddrGroup(addrGroupVO); |
|
| 1751 |
+ |
|
| 1752 |
+ // 신규 추가한 그룹아이디 |
|
| 1753 |
+ addrVO.setAddrGrpId(addrGroupVO.getAddrGrpId()); |
|
| 1754 |
+ } |
|
| 1755 |
+ |
|
| 1756 |
+ // 그룹미지정, 자주보내는 번호 구분처리 |
|
| 1757 |
+ if("bookmark".equals (addrVO.getAddrGrpId())) {
|
|
| 1758 |
+ // 자주보내는 번호 |
|
| 1759 |
+ addrVO.setBookmark("Y");
|
|
| 1760 |
+ addrVO.setAddrGrpId("0");
|
|
| 1761 |
+ } |
|
| 1762 |
+ else {
|
|
| 1763 |
+ addrVO.setBookmark("N");
|
|
| 1764 |
+ } |
|
| 1765 |
+ |
|
| 1766 |
+ // 2024.01.24 10만건 -> 50만건으로 증설 요청으로 인한 증설 |
|
| 1767 |
+ List<AddrVO> addrDataInfo = new ArrayList<AddrVO>(); |
|
| 1768 |
+ if(addrBefCnt < 500000) { // 기존 등록된 주소록이 10만건 미만이면
|
|
| 1769 |
+ |
|
| 1770 |
+ //받는사람 리스트 건수 체크해주기 |
|
| 1771 |
+ if(sumAddrCnt > 500000) {
|
|
| 1772 |
+ isSuccess = false; |
|
| 1773 |
+ msg = "주소록은 총 50만개까지만 등록이 가능합니다."; |
|
| 1774 |
+ } |
|
| 1775 |
+ else {
|
|
| 1776 |
+ for(int i=0; i < addrNewCnt; i++) {
|
|
| 1777 |
+ AddrVO tempAddrVO = new AddrVO(); |
|
| 1778 |
+ |
|
| 1779 |
+ if(addrVO.getNameList().length > 0) {
|
|
| 1780 |
+ if(addrVO.getNameList()[i].equals("-")) {
|
|
| 1781 |
+ tempAddrVO.setAddrNm(null); |
|
| 1782 |
+ }else {
|
|
| 1783 |
+ String tmpNm = addrVO.getNameList()[i].trim().replaceAll("§", ",");
|
|
| 1784 |
+ int nmLen = tmpNm.getBytes(charset).length; |
|
| 1785 |
+ |
|
| 1786 |
+ if(nmLen >= 20) {
|
|
| 1787 |
+ //isSuccess = false; |
|
| 1788 |
+ //msg = "이름 항목의 내용(\" " + tmpNm + " \")이 길이를 초과하여 입력되었습니다. 12글자 이하로 입력해 주세요."; |
|
| 1789 |
+ //break; |
|
| 1790 |
+ |
|
| 1791 |
+ tempAddrVO.setAddrNm(subStringBytes(addrVO.getNameList()[i].replaceAll("§", ","), 20, 2));
|
|
| 1792 |
+ }else {
|
|
| 1793 |
+ tempAddrVO.setAddrNm(addrVO.getNameList()[i].trim().replaceAll("§", ","));
|
|
| 1794 |
+ } |
|
| 1795 |
+ |
|
| 1796 |
+ } |
|
| 1797 |
+ } |
|
| 1798 |
+ else {
|
|
| 1799 |
+ tempAddrVO.setAddrNm(null); |
|
| 1800 |
+ } |
|
| 1801 |
+ |
|
| 1802 |
+ if(addrVO.getPhoneList().length > 0) {
|
|
| 1803 |
+ if(addrVO.getPhoneList()[i].equals("-")) {
|
|
| 1804 |
+ tempAddrVO.setAddrPhoneNo(null); |
|
| 1805 |
+ }else {
|
|
| 1806 |
+ tempAddrVO.setAddrPhoneNo(addrVO.getPhoneList()[i].trim().replaceAll("§", ","));
|
|
| 1807 |
+ } |
|
| 1808 |
+ } |
|
| 1809 |
+ else {
|
|
| 1810 |
+ tempAddrVO.setAddrPhoneNo(null); |
|
| 1811 |
+ } |
|
| 1812 |
+ |
|
| 1813 |
+ if(addrVO.getInfo1List().length > 0) {
|
|
| 1814 |
+ if(addrVO.getInfo1List()[i].equals("-")) {
|
|
| 1815 |
+ tempAddrVO.setAddrInfo1(null); |
|
| 1816 |
+ }else {
|
|
| 1817 |
+ |
|
| 1818 |
+ String tmpInfo1 = addrVO.getInfo1List()[i].replaceAll("§", ",");
|
|
| 1819 |
+ int info1Len = tmpInfo1.getBytes(charset).length; |
|
| 1820 |
+ |
|
| 1821 |
+ if(info1Len >= 40) {
|
|
| 1822 |
+ //isSuccess = false; |
|
| 1823 |
+ //msg = "[*1*] 항목의 내용(\" " + tmpInfo1 + " \")이 길이를 초과하여 입력되었습니다. 20글자 이하로 입력해 주세요."; |
|
| 1824 |
+ //break; |
|
| 1825 |
+ tempAddrVO.setAddrInfo1(subStringBytes(addrVO.getInfo1List()[i].replaceAll("§", ","), 40, 2));
|
|
| 1826 |
+ }else {
|
|
| 1827 |
+ tempAddrVO.setAddrInfo1(addrVO.getInfo1List()[i].replaceAll("§", ","));
|
|
| 1828 |
+ } |
|
| 1829 |
+ } |
|
| 1830 |
+ } |
|
| 1831 |
+ else {
|
|
| 1832 |
+ tempAddrVO.setAddrInfo1(null); |
|
| 1833 |
+ } |
|
| 1834 |
+ |
|
| 1835 |
+ if(addrVO.getInfo2List().length > 0) {
|
|
| 1836 |
+ if(addrVO.getInfo2List()[i].equals("-")) {
|
|
| 1837 |
+ tempAddrVO.setAddrInfo2(null); |
|
| 1838 |
+ }else {
|
|
| 1839 |
+ String tmpInfo2 = addrVO.getInfo2List()[i].replaceAll("§", ",");
|
|
| 1840 |
+ int info2Len = tmpInfo2.getBytes(charset).length; |
|
| 1841 |
+ |
|
| 1842 |
+ if(info2Len >= 40) {
|
|
| 1843 |
+ //isSuccess = false; |
|
| 1844 |
+ //msg = "[*2*] 항목의 내용(\" " + tmpInfo2 + " \")이 길이를 초과하여 입력되었습니다. 20글자 이하로 입력해 주세요."; |
|
| 1845 |
+ //break; |
|
| 1846 |
+ |
|
| 1847 |
+ tempAddrVO.setAddrInfo2(subStringBytes(addrVO.getInfo2List()[i].replaceAll("§", ","), 40, 2));
|
|
| 1848 |
+ }else {
|
|
| 1849 |
+ tempAddrVO.setAddrInfo2(addrVO.getInfo2List()[i].replaceAll("§", ","));
|
|
| 1850 |
+ } |
|
| 1851 |
+ |
|
| 1852 |
+ } |
|
| 1853 |
+ } |
|
| 1854 |
+ else {
|
|
| 1855 |
+ tempAddrVO.setAddrInfo2(null); |
|
| 1856 |
+ } |
|
| 1857 |
+ |
|
| 1858 |
+ if(addrVO.getInfo3List().length > 0) {
|
|
| 1859 |
+ if(addrVO.getInfo3List()[i].equals("-")) {
|
|
| 1860 |
+ tempAddrVO.setAddrInfo3(null); |
|
| 1861 |
+ }else {
|
|
| 1862 |
+ String tmpInfo3 = addrVO.getInfo3List()[i].replaceAll("§", ",");
|
|
| 1863 |
+ int info3Len = tmpInfo3.getBytes(charset).length; |
|
| 1864 |
+ |
|
| 1865 |
+ if(info3Len >= 40) {
|
|
| 1866 |
+ //isSuccess = false; |
|
| 1867 |
+ //msg = "[*3*] 항목의 내용(\" " + tmpInfo3 + " \")이 길이를 초과하여 입력되었습니다. 20글자 이하로 입력해 주세요."; |
|
| 1868 |
+ //break; |
|
| 1869 |
+ |
|
| 1870 |
+ tempAddrVO.setAddrInfo3(subStringBytes(addrVO.getInfo3List()[i].replaceAll("§", ","), 40, 2));
|
|
| 1871 |
+ }else {
|
|
| 1872 |
+ tempAddrVO.setAddrInfo3(addrVO.getInfo3List()[i].replaceAll("§", ","));
|
|
| 1873 |
+ } |
|
| 1874 |
+ } |
|
| 1875 |
+ } |
|
| 1876 |
+ else {
|
|
| 1877 |
+ tempAddrVO.setAddrInfo3(null); |
|
| 1878 |
+ } |
|
| 1879 |
+ |
|
| 1880 |
+ if(addrVO.getInfo4List().length > 0) {
|
|
| 1881 |
+ if(addrVO.getInfo4List()[i].equals("-")) {
|
|
| 1882 |
+ tempAddrVO.setAddrInfo4(null); |
|
| 1883 |
+ }else {
|
|
| 1884 |
+ String tmpInfo4 = addrVO.getInfo4List()[i].replaceAll("§", ",");
|
|
| 1885 |
+ int info4Len = tmpInfo4.getBytes(charset).length; |
|
| 1886 |
+ |
|
| 1887 |
+ if(info4Len >= 40) {
|
|
| 1888 |
+ //isSuccess = false; |
|
| 1889 |
+ //msg = "[*4*] 항목의 내용(\" " + tmpInfo4 + " \")이 길이를 초과하여 입력되었습니다. 20글자 이하로 입력해 주세요."; |
|
| 1890 |
+ //break; |
|
| 1891 |
+ |
|
| 1892 |
+ tempAddrVO.setAddrInfo4(subStringBytes(addrVO.getInfo4List()[i].replaceAll("§", ","), 40, 2));
|
|
| 1893 |
+ }else {
|
|
| 1894 |
+ tempAddrVO.setAddrInfo4(addrVO.getInfo4List()[i].replaceAll("§", ","));
|
|
| 1895 |
+ } |
|
| 1896 |
+ } |
|
| 1897 |
+ } |
|
| 1898 |
+ else {
|
|
| 1899 |
+ tempAddrVO.setAddrInfo4(null); |
|
| 1900 |
+ } |
|
| 1901 |
+ |
|
| 1902 |
+ if(addrVO.getMemoList().length > 0) {
|
|
| 1903 |
+ if(addrVO.getMemoList()[i].equals("-")) {
|
|
| 1904 |
+ tempAddrVO.setAddrComment(null); |
|
| 1905 |
+ }else {
|
|
| 1906 |
+ String tmpComment = addrVO.getMemoList()[i].replaceAll("§", ",");
|
|
| 1907 |
+ int commLen = tmpComment.getBytes(charset).length; |
|
| 1908 |
+ |
|
| 1909 |
+ if(commLen >= 200) {
|
|
| 1910 |
+ //isSuccess = false; |
|
| 1911 |
+ //msg = "메모 항목의 내용(\" " + tmpComment + " \")이 길이를 초과하여 입력되었습니다. 100글자 이하로 입력해 주세요."; |
|
| 1912 |
+ //break; |
|
| 1913 |
+ |
|
| 1914 |
+ tempAddrVO.setAddrComment(subStringBytes(addrVO.getMemoList()[i].replaceAll("§", ","), 200, 2));
|
|
| 1915 |
+ }else {
|
|
| 1916 |
+ tempAddrVO.setAddrComment(addrVO.getMemoList()[i].replaceAll("§", ","));
|
|
| 1917 |
+ } |
|
| 1918 |
+ } |
|
| 1919 |
+ } |
|
| 1920 |
+ else {
|
|
| 1921 |
+ tempAddrVO.setAddrComment(null); |
|
| 1922 |
+ } |
|
| 1923 |
+ |
|
| 1924 |
+ tempAddrVO.setMberId(userId); |
|
| 1925 |
+ tempAddrVO.setFrstRegisterId(userId); |
|
| 1926 |
+ tempAddrVO.setAddrGrpId(addrVO.getAddrGrpId()); // 그룹 지정 |
|
| 1927 |
+ |
|
| 1928 |
+ // 그룹미지정, 자주보내는 번호 구분처리 |
|
| 1929 |
+ if("Y".equals (addrVO.getBookmark())) {
|
|
| 1930 |
+ // 자주보내는 번호 |
|
| 1931 |
+ tempAddrVO.setBookmark("Y");
|
|
| 1932 |
+ tempAddrVO.setAddrGrpId("0");
|
|
| 1933 |
+ } |
|
| 1934 |
+ else {
|
|
| 1935 |
+ tempAddrVO.setBookmark("N");
|
|
| 1936 |
+ } |
|
| 1937 |
+ |
|
| 1938 |
+ AddrVO addrVO2 = new AddrVO(); |
|
| 1939 |
+ addrVO2.setMberId(userId); |
|
| 1940 |
+ addrVO2.setAddrGrpId(addrVO.getAddrGrpId()); // 그룹 지정 |
|
| 1941 |
+ addrVO2.setAddrPhoneNo(addrVO.getPhoneList()[i]); // 연락처 |
|
| 1942 |
+ |
|
| 1943 |
+ // 휴대폰 유효성 검사 |
|
| 1944 |
+ boolean isPhoneNoErr = true; |
|
| 1945 |
+ if(addrVO.getPhoneList()[i].matches(phoneRegExp)) {
|
|
| 1946 |
+ isPhoneNoErr = false; // 유효성 통과 |
|
| 1947 |
+ }else {
|
|
| 1948 |
+ errPhoneCnt++; |
|
| 1949 |
+ } |
|
| 1950 |
+ |
|
| 1951 |
+ //int usedCnt = addrService.selectDuplAddrCnt(addrVO2); |
|
| 1952 |
+ if(isPhoneNoErr == false) {
|
|
| 1953 |
+ //주소록 리스트에 데이터 추가해 주기 |
|
| 1954 |
+ addrDataInfo.add(tempAddrVO); |
|
| 1955 |
+ } |
|
| 1956 |
+ } |
|
| 1957 |
+ |
|
| 1958 |
+ System.out.println("======================================================");
|
|
| 1959 |
+ System.out.println("+++++++++++++++++++++++++ isSuccess ::: "+isSuccess);
|
|
| 1960 |
+ System.out.println("======================================================");
|
|
| 1961 |
+ |
|
| 1962 |
+ //주소록에 데이터 추가해 주기 |
|
| 1963 |
+ if (isSuccess == true && addrDataInfo.size() > 0) {
|
|
| 1964 |
+ // 주소록 대량등록 By Temp 주소록 All |
|
| 1965 |
+ resultCnt = addrService.insertAddrByTempAddrAll(addrDataInfo, addrVO); |
|
| 1966 |
+ |
|
| 1967 |
+ addrBefAfterCnt = addrService.selectAddrTotalCount(addrVO); |
|
| 1968 |
+ |
|
| 1969 |
+ addrMassDupliList = addrService.selectTempAddrDupliList(addrVO); |
|
| 1970 |
+ |
|
| 1971 |
+ resultCnt = addrBefAfterCnt - addrBefCnt; |
|
| 1972 |
+ dupliCnt = addrNewCnt - resultCnt; |
|
| 1973 |
+ } |
|
| 1974 |
+ } |
|
| 1975 |
+ } |
|
| 1976 |
+ else {
|
|
| 1977 |
+ isSuccess = false; |
|
| 1978 |
+ msg = "주소록은 총 50만개까지만 등록이 가능합니다."; |
|
| 1979 |
+ } |
|
| 1980 |
+ } |
|
| 1981 |
+ catch(Exception e) {
|
|
| 1982 |
+ |
|
| 1983 |
+ isSuccess = false; |
|
| 1984 |
+ msg = "주소록 저장에 오류가 발생하였습니다. 시스템 관리자에게 문의 바랍니다."; |
|
| 1985 |
+ System.out.println("==============================================");
|
|
| 1986 |
+ System.out.println("+++++++++++++++++++ addrMassInsertByTempAjax Error ::: "+e.getMessage());
|
|
| 1987 |
+ System.out.println("==============================================");
|
|
| 1988 |
+ |
|
| 1989 |
+ } |
|
| 1990 |
+ |
|
| 1991 |
+ modelAndView.addObject("isSuccess", isSuccess);
|
|
| 1992 |
+ modelAndView.addObject("msg", msg);
|
|
| 1993 |
+ modelAndView.addObject("resultCnt", resultCnt);
|
|
| 1994 |
+ modelAndView.addObject("dupliCnt", dupliCnt);
|
|
| 1995 |
+ modelAndView.addObject("errPhoneCnt", errPhoneCnt);
|
|
| 1996 |
+ modelAndView.addObject("addrMassDupliList", addrMassDupliList);
|
|
| 1997 |
+ |
|
| 1998 |
+ return modelAndView; |
|
| 1999 |
+ } |
|
| 2000 |
+ |
|
| 2001 |
+ /* 바이트 자르기 |
|
| 2002 |
+ UTF-8일 경우 |
|
| 2003 |
+ subStringBytes("블라블라블라라", 10, 3);
|
|
| 2004 |
+ EUC-KR일 경우 |
|
| 2005 |
+ subStringBytes("블라블라블라라", 10, 2);
|
|
| 2006 |
+ */ |
|
| 2007 |
+ public String subStringBytes(String str, int byteLength, int sizePerLetter) {
|
|
| 2008 |
+ int retLength = 0; |
|
| 2009 |
+ int tempSize = 0; |
|
| 2010 |
+ int asc; |
|
| 2011 |
+ if (str == null || "".equals(str) || "null".equals(str)) {
|
|
| 2012 |
+ str = ""; |
|
| 2013 |
+ } |
|
| 2014 |
+ |
|
| 2015 |
+ int length = str.length(); |
|
| 2016 |
+ |
|
| 2017 |
+ for (int i = 1; i <= length; i++) {
|
|
| 2018 |
+ asc = (int) str.charAt(i - 1); |
|
| 2019 |
+ if (asc > 127) {
|
|
| 2020 |
+ if (byteLength >= tempSize + sizePerLetter) {
|
|
| 2021 |
+ tempSize += sizePerLetter; |
|
| 2022 |
+ retLength++; |
|
| 2023 |
+ } |
|
| 2024 |
+ } else {
|
|
| 2025 |
+ if (byteLength > tempSize) {
|
|
| 2026 |
+ tempSize++; |
|
| 2027 |
+ retLength++; |
|
| 2028 |
+ } |
|
| 2029 |
+ } |
|
| 2030 |
+ } |
|
| 2031 |
+ |
|
| 2032 |
+ return str.substring(0, retLength); |
|
| 2033 |
+ } |
|
| 2034 |
+ |
|
| 2035 |
+ |
|
| 2036 |
+ |
|
| 2037 |
+ /** |
|
| 2038 |
+ * 주소록 그룹 목록 |
|
| 2039 |
+ * @param searchVO |
|
| 2040 |
+ * @param model |
|
| 2041 |
+ * @return "/web/mjon/addr/addrGroupListAjax.do" |
|
| 2042 |
+ * @throws Exception |
|
| 2043 |
+ */ |
|
| 2044 |
+ @RequestMapping(value= {"/web/mjon/addr/addrGroupListAjax.do"})
|
|
| 2045 |
+ public ModelAndView addrGroupListAjax(@ModelAttribute("searchVO") AddrGroupVO addrGroupVO,
|
|
| 2046 |
+ RedirectAttributes redirectAttributes, |
|
| 2047 |
+ ModelMap model) throws Exception{
|
|
| 2048 |
+ |
|
| 2049 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 2050 |
+ modelAndView.setViewName("jsonView");
|
|
| 2051 |
+ |
|
| 2052 |
+ boolean isSuccess = true; |
|
| 2053 |
+ String msg = ""; |
|
| 2054 |
+ |
|
| 2055 |
+ List<AddrGroupVO> addrGroupList = null; |
|
| 2056 |
+ |
|
| 2057 |
+ try {
|
|
| 2058 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 2059 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 2060 |
+ |
|
| 2061 |
+ if(userId != "") {
|
|
| 2062 |
+ addrGroupVO.setMberId(userId); |
|
| 2063 |
+ |
|
| 2064 |
+ if(addrGroupVO.getPageUnit() != 10) {
|
|
| 2065 |
+ addrGroupVO.setPageUnit(addrGroupVO.getPageUnit()); |
|
| 2066 |
+ } |
|
| 2067 |
+ |
|
| 2068 |
+ if("".equals(addrGroupVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
|
| 2069 |
+ addrGroupVO.setSearchSortCnd("grpOrder");
|
|
| 2070 |
+ addrGroupVO.setSearchSortOrd("desc");
|
|
| 2071 |
+ } |
|
| 2072 |
+ |
|
| 2073 |
+ addrGroupVO.setSiteId("web");
|
|
| 2074 |
+ addrGroupList = addrGroupService.selectAddrGroupList(addrGroupVO); |
|
| 2075 |
+ } |
|
| 2076 |
+ } |
|
| 2077 |
+ catch(Exception e) {
|
|
| 2078 |
+ isSuccess = false; |
|
| 2079 |
+ msg = e.getMessage(); |
|
| 2080 |
+ } |
|
| 2081 |
+ |
|
| 2082 |
+ modelAndView.addObject("isSuccess", isSuccess);
|
|
| 2083 |
+ modelAndView.addObject("msg", msg);
|
|
| 2084 |
+ model.addAttribute("addrGroupList", addrGroupList);
|
|
| 2085 |
+ |
|
| 2086 |
+ return modelAndView; |
|
| 2087 |
+ } |
|
| 2088 |
+ |
|
| 2089 |
+ /** |
|
| 2090 |
+ * 주소록 그룹별 중복 연락처 목록 |
|
| 2091 |
+ * @param searchVO |
|
| 2092 |
+ * @param model |
|
| 2093 |
+ * @return "/web/mjon/addr/addrDupliListAjax.do" |
|
| 2094 |
+ * @throws Exception |
|
| 2095 |
+ */ |
|
| 2096 |
+ @RequestMapping(value= {"/web/mjon/addr/addrDupliListAjax.do"})
|
|
| 2097 |
+ public ModelAndView addrDupliListAjax(@ModelAttribute("searchVO") AddrVO addrVO,
|
|
| 2098 |
+ RedirectAttributes redirectAttributes, |
|
| 2099 |
+ ModelMap model) throws Exception{
|
|
| 2100 |
+ |
|
| 2101 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 2102 |
+ modelAndView.setViewName("jsonView");
|
|
| 2103 |
+ |
|
| 2104 |
+ boolean isSuccess = true; |
|
| 2105 |
+ String msg = ""; |
|
| 2106 |
+ |
|
| 2107 |
+ List<AddrVO> addrDupliList = null; |
|
| 2108 |
+ |
|
| 2109 |
+ try {
|
|
| 2110 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 2111 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 2112 |
+ |
|
| 2113 |
+ if(userId != "") {
|
|
| 2114 |
+ addrVO.setMberId(userId); |
|
| 2115 |
+ |
|
| 2116 |
+ // 주소록 그룹별 중복 연락처 목록 |
|
| 2117 |
+ addrDupliList = addrService.selectAddrDupliList(addrVO); |
|
| 2118 |
+ } |
|
| 2119 |
+ } |
|
| 2120 |
+ catch(Exception e) {
|
|
| 2121 |
+ isSuccess = false; |
|
| 2122 |
+ msg = e.getMessage(); |
|
| 2123 |
+ } |
|
| 2124 |
+ |
|
| 2125 |
+ modelAndView.addObject("isSuccess", isSuccess);
|
|
| 2126 |
+ modelAndView.addObject("msg", msg);
|
|
| 2127 |
+ model.addAttribute("addrDupliList", addrDupliList);
|
|
| 2128 |
+ |
|
| 2129 |
+ return modelAndView; |
|
| 2130 |
+ } |
|
| 2131 |
+ |
|
| 2132 |
+ /** |
|
| 2133 |
+ * 주소록 그룹별 중복 연락처 삭제 |
|
| 2134 |
+ * @param searchVO |
|
| 2135 |
+ * @param model |
|
| 2136 |
+ * @return "/web/mjon/addr/deleteAddrDupliList.do" |
|
| 2137 |
+ * @throws Exception |
|
| 2138 |
+ */ |
|
| 2139 |
+ @RequestMapping(value= {"/web/mjon/addr/deleteAddrDupliListAjax.do"})
|
|
| 2140 |
+ public ModelAndView deleteAddrDupliListAjax(@ModelAttribute("searchVO") AddrVO addrVO,
|
|
| 2141 |
+ RedirectAttributes redirectAttributes, |
|
| 2142 |
+ ModelMap model) throws Exception{
|
|
| 2143 |
+ |
|
| 2144 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 2145 |
+ modelAndView.setViewName("jsonView");
|
|
| 2146 |
+ |
|
| 2147 |
+ boolean isSuccess = true; |
|
| 2148 |
+ String msg = ""; |
|
| 2149 |
+ |
|
| 2150 |
+ try {
|
|
| 2151 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 2152 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 2153 |
+ |
|
| 2154 |
+ if(userId != "") {
|
|
| 2155 |
+ addrVO.setMberId(userId); |
|
| 2156 |
+ |
|
| 2157 |
+ // 주소록 그룹별 중복 연락처 삭제 |
|
| 2158 |
+ addrService.deleteAddrDupliList(addrVO); |
|
| 2159 |
+ } |
|
| 2160 |
+ else {
|
|
| 2161 |
+ isSuccess = false; |
|
| 2162 |
+ msg = "로그인후 이용하세요."; |
|
| 2163 |
+ } |
|
| 2164 |
+ } |
|
| 2165 |
+ catch(Exception e) {
|
|
| 2166 |
+ isSuccess = false; |
|
| 2167 |
+ msg = e.getMessage(); |
|
| 2168 |
+ } |
|
| 2169 |
+ |
|
| 2170 |
+ modelAndView.addObject("isSuccess", isSuccess);
|
|
| 2171 |
+ modelAndView.addObject("msg", msg);
|
|
| 2172 |
+ |
|
| 2173 |
+ return modelAndView; |
|
| 2174 |
+ } |
|
| 2175 |
+ |
|
| 2176 |
+ |
|
| 2177 |
+ /** |
|
| 2178 |
+ * 주소록 그룹별 중복 연락처 삭제 |
|
| 2179 |
+ * @param searchVO |
|
| 2180 |
+ * @param model |
|
| 2181 |
+ * @return "/web/mjon/addr/deleteAddrByAllDupliListAjax.do" |
|
| 2182 |
+ * @throws Exception |
|
| 2183 |
+ */ |
|
| 2184 |
+ @RequestMapping(value= {"/web/mjon/addr/deleteAddrByAllDupliListAjax.do"})
|
|
| 2185 |
+ public ModelAndView deleteAddrByAllDupliListAjax(@ModelAttribute("searchVO") AddrVO addrVO,
|
|
| 2186 |
+ RedirectAttributes redirectAttributes, |
|
| 2187 |
+ ModelMap model) throws Exception{
|
|
| 2188 |
+ |
|
| 2189 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 2190 |
+ modelAndView.setViewName("jsonView");
|
|
| 2191 |
+ |
|
| 2192 |
+ boolean isSuccess = true; |
|
| 2193 |
+ String msg = ""; |
|
| 2194 |
+ |
|
| 2195 |
+ try {
|
|
| 2196 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 2197 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 2198 |
+ |
|
| 2199 |
+ if(userId != "") {
|
|
| 2200 |
+ addrVO.setMberId(userId); |
|
| 2201 |
+ |
|
| 2202 |
+ // 주소록 그룹별 중복 연락처 삭제 |
|
| 2203 |
+ addrService.deleteAddrDupliListByAll(addrVO); |
|
| 2204 |
+ } |
|
| 2205 |
+ else {
|
|
| 2206 |
+ isSuccess = false; |
|
| 2207 |
+ msg = "로그인후 이용하세요."; |
|
| 2208 |
+ } |
|
| 2209 |
+ } |
|
| 2210 |
+ catch(Exception e) {
|
|
| 2211 |
+ isSuccess = false; |
|
| 2212 |
+ msg = e.getMessage(); |
|
| 2213 |
+ } |
|
| 2214 |
+ |
|
| 2215 |
+ modelAndView.addObject("isSuccess", isSuccess);
|
|
| 2216 |
+ modelAndView.addObject("msg", msg);
|
|
| 2217 |
+ |
|
| 2218 |
+ return modelAndView; |
|
| 2219 |
+ } |
|
| 2220 |
+ |
|
| 2221 |
+ |
|
| 2222 |
+ |
|
| 2223 |
+ public boolean getNameRepLenChk(String type, String value) {
|
|
| 2224 |
+ |
|
| 2225 |
+ boolean rtnValue = true; |
|
| 2226 |
+ |
|
| 2227 |
+ // JSPark 2023.02.17 : 글자길이체크 주석처리 => 저장시 절삭하기 때문 |
|
| 2228 |
+ /* |
|
| 2229 |
+ if(type.equals("name")) {
|
|
| 2230 |
+ |
|
| 2231 |
+ String tmpNm = value; |
|
| 2232 |
+ int nmLen = tmpNm.length(); |
|
| 2233 |
+ |
|
| 2234 |
+ if(nmLen > 12) {
|
|
| 2235 |
+ |
|
| 2236 |
+ rtnValue = false; |
|
| 2237 |
+ |
|
| 2238 |
+ } |
|
| 2239 |
+ |
|
| 2240 |
+ }else if(type.equals("rep")) {
|
|
| 2241 |
+ |
|
| 2242 |
+ String tmpRep = value; |
|
| 2243 |
+ int repLen = tmpRep.length(); |
|
| 2244 |
+ |
|
| 2245 |
+ if(repLen > 20) {
|
|
| 2246 |
+ |
|
| 2247 |
+ rtnValue = false; |
|
| 2248 |
+ |
|
| 2249 |
+ } |
|
| 2250 |
+ |
|
| 2251 |
+ }else if(type.equals("memo")) {
|
|
| 2252 |
+ |
|
| 2253 |
+ String tmpRep = value; |
|
| 2254 |
+ int repLen = tmpRep.length(); |
|
| 2255 |
+ |
|
| 2256 |
+ if(repLen > 120) {
|
|
| 2257 |
+ |
|
| 2258 |
+ rtnValue = false; |
|
| 2259 |
+ |
|
| 2260 |
+ } |
|
| 2261 |
+ |
|
| 2262 |
+ } |
|
| 2263 |
+ */ |
|
| 2264 |
+ |
|
| 2265 |
+ return rtnValue; |
|
| 2266 |
+ } |
|
| 2267 |
+ |
|
| 2268 |
+ // 문자열에서 숫자만 추출 |
|
| 2269 |
+ public String getOnlyNumber(String str) {
|
|
| 2270 |
+ //String str = "aaa1234, ^&*2233pp"; |
|
| 2271 |
+ |
|
| 2272 |
+ String intStr = str.replaceAll("[^\\d]", "");
|
|
| 2273 |
+ |
|
| 2274 |
+ return intStr; |
|
| 2275 |
+ } |
|
| 2277 | 2276 |
}(No newline at end of file) |
--- src/main/java/itn/let/mjo/addr/web/AddrGroupController.java
+++ src/main/java/itn/let/mjo/addr/web/AddrGroupController.java
... | ... | @@ -1,1229 +1,1252 @@ |
| 1 |
-package itn.let.mjo.addr.web; |
|
| 2 |
- |
|
| 3 |
-import java.util.List; |
|
| 4 |
-import java.util.Map; |
|
| 5 |
-import java.util.regex.Matcher; |
|
| 6 |
-import java.util.regex.Pattern; |
|
| 7 |
- |
|
| 8 |
-import javax.annotation.Resource; |
|
| 9 |
-import javax.servlet.http.HttpServletRequest; |
|
| 10 |
-import javax.servlet.http.HttpServletResponse; |
|
| 11 |
- |
|
| 12 |
-import org.springframework.stereotype.Controller; |
|
| 13 |
-import org.springframework.ui.Model; |
|
| 14 |
-import org.springframework.ui.ModelMap; |
|
| 15 |
-import org.springframework.web.bind.annotation.ModelAttribute; |
|
| 16 |
-import org.springframework.web.bind.annotation.RequestMapping; |
|
| 17 |
-import org.springframework.web.bind.annotation.RequestParam; |
|
| 18 |
-import org.springframework.web.bind.annotation.ResponseBody; |
|
| 19 |
-import org.springframework.web.servlet.ModelAndView; |
|
| 20 |
-import org.springframework.web.servlet.mvc.support.RedirectAttributes; |
|
| 21 |
- |
|
| 22 |
-import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; |
|
| 23 |
-import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; |
|
| 24 |
-import itn.com.cmm.EgovMessageSource; |
|
| 25 |
-import itn.com.cmm.LoginVO; |
|
| 26 |
-import itn.com.cmm.util.RedirectUrlMaker; |
|
| 27 |
-import itn.com.utl.fcc.service.EgovStringUtil; |
|
| 28 |
-import itn.let.mjo.addr.service.AddrGroupService; |
|
| 29 |
-import itn.let.mjo.addr.service.AddrGroupVO; |
|
| 30 |
-import itn.let.mjo.addr.service.AddrService; |
|
| 31 |
-import itn.let.mjo.addr.service.AddrVO; |
|
| 32 |
-import itn.let.mjo.msgsent.service.MjonMsgSentService; |
|
| 33 |
-import itn.let.mjo.msgsent.service.MjonMsgSentVO; |
|
| 34 |
-import itn.let.mjo.pay.service.KmcVO; |
|
| 35 |
-import itn.let.uat.uia.service.AuthCertVO; |
|
| 36 |
-import itn.let.uat.uia.web.KmcCertChecker; |
|
| 37 |
-import itn.let.uss.umt.service.EgovMberManageService; |
|
| 38 |
-import itn.let.uss.umt.service.MberManageVO; |
|
| 39 |
- |
|
| 40 |
-/** |
|
| 41 |
- * 주소록 그룹에 관한 controller 클래스를 정의한다. |
|
| 42 |
- * @author ITN |
|
| 43 |
- * @since 2021.05.21 |
|
| 44 |
- * @version 1.0 |
|
| 45 |
- * @see |
|
| 46 |
- * |
|
| 47 |
- * <pre> |
|
| 48 |
- * << 개정이력(Modification Information) >> |
|
| 49 |
- * |
|
| 50 |
- * 수정일 수정자 수정내용 |
|
| 51 |
- * ------- -------- --------------------------- |
|
| 52 |
- * 2021.04.08 ITN 최초 생성 |
|
| 53 |
- * |
|
| 54 |
- * </pre> |
|
| 55 |
- */ |
|
| 56 |
-@Controller |
|
| 57 |
-public class AddrGroupController {
|
|
| 58 |
- @Resource(name = "MjonMsgSentService") |
|
| 59 |
- private MjonMsgSentService mjonMsgSentService; |
|
| 60 |
- |
|
| 61 |
- @Resource (name = "AddrGroupService") |
|
| 62 |
- private AddrGroupService addrGroupService; |
|
| 63 |
- |
|
| 64 |
- @Resource (name = "AddrService") |
|
| 65 |
- private AddrService addrService; |
|
| 66 |
- |
|
| 67 |
- /** EgovMessageSource */ |
|
| 68 |
- @Resource(name="egovMessageSource") |
|
| 69 |
- EgovMessageSource egovMessageSource; |
|
| 70 |
- |
|
| 71 |
- /** mberManageService */ |
|
| 72 |
- @Resource(name = "mberManageService") |
|
| 73 |
- private EgovMberManageService mberManageService; |
|
| 74 |
- |
|
| 75 |
- /** |
|
| 76 |
- * 주소록 그룹 리스트 |
|
| 77 |
- * @param addrGroupVO |
|
| 78 |
- * @param model |
|
| 79 |
- * @return |
|
| 80 |
- * @throws Exception |
|
| 81 |
- */ |
|
| 82 |
- @RequestMapping("/uss/ion/addr/selectAddrGroupList.do")
|
|
| 83 |
- public String selectAddrGroupList(@ModelAttribute("searchVO") AddrGroupVO addrGroupVO
|
|
| 84 |
- ,ModelMap model) throws Exception {
|
|
| 85 |
- |
|
| 86 |
- if(addrGroupVO.getPageUnit() != 10) {
|
|
| 87 |
- addrGroupVO.setPageUnit(addrGroupVO.getPageUnit()); |
|
| 88 |
- } |
|
| 89 |
- |
|
| 90 |
- /** pageing */ |
|
| 91 |
- PaginationInfo paginationInfo = new PaginationInfo(); |
|
| 92 |
- paginationInfo.setCurrentPageNo(addrGroupVO.getPageIndex()); |
|
| 93 |
- paginationInfo.setRecordCountPerPage(addrGroupVO.getPageUnit()); |
|
| 94 |
- paginationInfo.setPageSize(addrGroupVO.getPageSize()); |
|
| 95 |
- |
|
| 96 |
- addrGroupVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); |
|
| 97 |
- addrGroupVO.setLastIndex(paginationInfo.getLastRecordIndex()); |
|
| 98 |
- addrGroupVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); |
|
| 99 |
- |
|
| 100 |
- if("".equals(addrGroupVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
|
| 101 |
- addrGroupVO.setSearchSortCnd("addrGrpId");
|
|
| 102 |
- addrGroupVO.setSearchSortOrd("desc");
|
|
| 103 |
- } |
|
| 104 |
- |
|
| 105 |
- addrGroupVO.setSiteId("admin");
|
|
| 106 |
- List<AddrGroupVO> addrGroupList = addrGroupService.selectAddrGroupList(addrGroupVO); |
|
| 107 |
- |
|
| 108 |
- int totCnt = 0; |
|
| 109 |
- if(addrGroupList.size() > 0) {
|
|
| 110 |
- totCnt = addrGroupList.get(0).getTotcnt(); |
|
| 111 |
- } |
|
| 112 |
- |
|
| 113 |
- paginationInfo.setTotalRecordCount(totCnt); |
|
| 114 |
- model.addAttribute("addrGroupList", addrGroupList);
|
|
| 115 |
- model.addAttribute("paginationInfo", paginationInfo);
|
|
| 116 |
- |
|
| 117 |
- |
|
| 118 |
- return "/uss/ion/addr/AddrGroupList"; |
|
| 119 |
- |
|
| 120 |
- } |
|
| 121 |
- |
|
| 122 |
- |
|
| 123 |
- /** |
|
| 124 |
- * 주소록 그룹 리스트 |
|
| 125 |
- * @param addrGroupVO |
|
| 126 |
- * @param model |
|
| 127 |
- * @return |
|
| 128 |
- * @throws Exception |
|
| 129 |
- */ |
|
| 130 |
- @RequestMapping("/uss/ion/addr/selectAddrGroupListAjax.do")
|
|
| 131 |
- public ModelAndView selectAddrGroupListAdminAjax(@ModelAttribute("searchVO") AddrGroupVO addrGroupVO, AddrVO addrVO
|
|
| 132 |
- ,ModelMap model, RedirectAttributes redirectAttributes) throws Exception {
|
|
| 133 |
- |
|
| 134 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 135 |
- modelAndView.setViewName("jsonView");
|
|
| 136 |
- |
|
| 137 |
- if("".equals(addrGroupVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
|
| 138 |
- addrGroupVO.setSearchSortCnd("grpOrder");
|
|
| 139 |
- addrGroupVO.setSearchSortOrd("desc");
|
|
| 140 |
- } |
|
| 141 |
- |
|
| 142 |
- List<AddrGroupVO> addrGroupList = addrGroupService.selectAddrGroupList(addrGroupVO); |
|
| 143 |
- |
|
| 144 |
- modelAndView.addObject("addrGroupList", addrGroupList);
|
|
| 145 |
- modelAndView.addObject("addrGroupListCnt", addrGroupList.size());
|
|
| 146 |
- return modelAndView; |
|
| 147 |
- |
|
| 148 |
- } |
|
| 149 |
- |
|
| 150 |
- |
|
| 151 |
- |
|
| 152 |
- /** |
|
| 153 |
- * 주소록 그룹 리스트 |
|
| 154 |
- * @param addrGroupVO |
|
| 155 |
- * @param model |
|
| 156 |
- * @return |
|
| 157 |
- * @throws Exception |
|
| 158 |
- */ |
|
| 159 |
- @RequestMapping("/web/addr/selectAddrGroupListAjax.do")
|
|
| 160 |
- public String selectAddrGroupListAjax(@ModelAttribute("searchVO") AddrGroupVO addrGroupVO, AddrVO addrVO
|
|
| 161 |
- ,ModelMap model, RedirectAttributes redirectAttributes) throws Exception {
|
|
| 162 |
- |
|
| 163 |
- //로그인 권한정보 불러오기 |
|
| 164 |
- LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 165 |
- String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 166 |
- |
|
| 167 |
- if(userId != "") {
|
|
| 168 |
- addrGroupVO.setMberId(userId); |
|
| 169 |
- addrVO.setMberId(userId); |
|
| 170 |
- } else {
|
|
| 171 |
- redirectAttributes.addFlashAttribute("fail", true);
|
|
| 172 |
- return "redirect:/web/user/login/login.do"; |
|
| 173 |
- } |
|
| 174 |
- |
|
| 175 |
- |
|
| 176 |
- if(addrGroupVO.getPageUnit() != 10) {
|
|
| 177 |
- addrGroupVO.setPageUnit(addrGroupVO.getPageUnit()); |
|
| 178 |
- } |
|
| 179 |
- |
|
| 180 |
- if("".equals(addrGroupVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
|
| 181 |
- addrGroupVO.setSearchSortCnd("grpOrder");
|
|
| 182 |
- addrGroupVO.setSearchSortOrd("desc");
|
|
| 183 |
- } |
|
| 184 |
- |
|
| 185 |
- addrGroupVO.setSiteId("web");
|
|
| 186 |
- List<AddrGroupVO> addrGroupList = addrGroupService.selectAddrGroupList(addrGroupVO); |
|
| 187 |
- |
|
| 188 |
- /* |
|
| 189 |
- * JSPark 2023.08.30 => Ajax 로 변경 |
|
| 190 |
- //회원별 주소록 전체 갯수 조회 |
|
| 191 |
- int addrTotalCount = addrService.selectAddrTotalCount(addrVO); |
|
| 192 |
- |
|
| 193 |
- addrVO.setType("bookmark");
|
|
| 194 |
- List<AddrVO> addrBookmarkList = addrService.selectAddrBasicGrpList(addrVO); |
|
| 195 |
- |
|
| 196 |
- addrVO.setType("noGrp");
|
|
| 197 |
- List<AddrVO> addrNoGrpList = addrService.selectAddrBasicGrpList(addrVO); |
|
| 198 |
- |
|
| 199 |
- model.addAttribute("addrTotalCount", addrTotalCount);
|
|
| 200 |
- model.addAttribute("addrBookmarkList", addrBookmarkList);
|
|
| 201 |
- model.addAttribute("addrNoGrpList", addrNoGrpList);
|
|
| 202 |
- */ |
|
| 203 |
- |
|
| 204 |
- model.addAttribute("addrGroupList", addrGroupList);
|
|
| 205 |
- model.addAttribute("userId", userId);
|
|
| 206 |
- |
|
| 207 |
- return "/web/addr/AddrGroupListAjax"; |
|
| 208 |
- |
|
| 209 |
- } |
|
| 210 |
- |
|
| 211 |
- |
|
| 212 |
- /** |
|
| 213 |
- * 주소록 합치기 팝업 리스트 |
|
| 214 |
- * @param addrGroupVO |
|
| 215 |
- * @param model |
|
| 216 |
- * @return |
|
| 217 |
- * @throws Exception |
|
| 218 |
- */ |
|
| 219 |
- @RequestMapping("/web/addr/selectAddrGroupMergetAjax.do")
|
|
| 220 |
- public ModelAndView selectAddrGroupMergetAjax(@ModelAttribute("searchVO") AddrGroupVO addrGroupVO, AddrVO addrVO
|
|
| 221 |
- , ModelMap model) throws Exception {
|
|
| 222 |
- |
|
| 223 |
- |
|
| 224 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 225 |
- modelAndView.setViewName("jsonView");
|
|
| 226 |
- |
|
| 227 |
- //로그인 권한정보 불러오기 |
|
| 228 |
- LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 229 |
- String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 230 |
- |
|
| 231 |
- if(userId != "") {
|
|
| 232 |
- addrGroupVO.setMberId(userId); |
|
| 233 |
- addrVO.setMberId(userId); |
|
| 234 |
- } |
|
| 235 |
- |
|
| 236 |
- if(addrGroupVO.getPageUnit() != 10) {
|
|
| 237 |
- addrGroupVO.setPageUnit(addrGroupVO.getPageUnit()); |
|
| 238 |
- } |
|
| 239 |
- |
|
| 240 |
- if("".equals(addrGroupVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
|
| 241 |
- addrGroupVO.setSearchSortCnd("addrGrpId");
|
|
| 242 |
- addrGroupVO.setSearchSortOrd("desc");
|
|
| 243 |
- } |
|
| 244 |
- |
|
| 245 |
- addrGroupVO.setSiteId("web");
|
|
| 246 |
- List<AddrGroupVO> addrGroupList = addrGroupService.selectAddrGroupList(addrGroupVO); |
|
| 247 |
- |
|
| 248 |
- model.addAttribute("addrGroupList", addrGroupList);
|
|
| 249 |
- modelAndView.addObject("status", "success");
|
|
| 250 |
- |
|
| 251 |
- return modelAndView; |
|
| 252 |
- |
|
| 253 |
- } |
|
| 254 |
- |
|
| 255 |
- |
|
| 256 |
- |
|
| 257 |
- /** |
|
| 258 |
- * 주소록 그룹 등록 페이지 이동 |
|
| 259 |
- * @param addrGroupVO |
|
| 260 |
- * @param model |
|
| 261 |
- * @return |
|
| 262 |
- * @throws Exception |
|
| 263 |
- */ |
|
| 264 |
- @RequestMapping("/uss/ion/addr/registAddrGroup.do")
|
|
| 265 |
- public String registAddrGroup(AddrGroupVO addrGroupVO, ModelMap model) throws Exception {
|
|
| 266 |
- |
|
| 267 |
- model.addAttribute("addrGroupVO", addrGroupVO);
|
|
| 268 |
- return "/uss/ion/addr/AddrGroupRegist"; |
|
| 269 |
- } |
|
| 270 |
- |
|
| 271 |
- |
|
| 272 |
- |
|
| 273 |
- /** |
|
| 274 |
- * 주소록 그룹 등록 로직 |
|
| 275 |
- * @param addrGroupVO |
|
| 276 |
- * @param redirectAttributes |
|
| 277 |
- * @param request |
|
| 278 |
- * @return |
|
| 279 |
- * @throws Exception |
|
| 280 |
- */ |
|
| 281 |
- @RequestMapping("/uss/ion/addr/insertAddrGroup.do")
|
|
| 282 |
- public String insertAddrGroup(AddrGroupVO addrGroupVO |
|
| 283 |
- ,RedirectAttributes redirectAttributes |
|
| 284 |
- ,HttpServletRequest request) throws Exception {
|
|
| 285 |
- |
|
| 286 |
- try {
|
|
| 287 |
- LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 288 |
- |
|
| 289 |
- if( addrGroupVO.getMberId() == null || "".equals(addrGroupVO.getMberId()) ) {
|
|
| 290 |
- addrGroupVO.setMberId(user.getId()); |
|
| 291 |
- } |
|
| 292 |
- |
|
| 293 |
- //주소록 그룹 이름 불러오기(중복체크 용) |
|
| 294 |
- MjonMsgSentVO mjonMsgSentVO = new MjonMsgSentVO(); |
|
| 295 |
- mjonMsgSentVO.setUserId(addrGroupVO.getMberId()); |
|
| 296 |
- mjonMsgSentVO.setAddrGrpNm(addrGroupVO.getAddrGrpNm()); |
|
| 297 |
- List<AddrGroupVO> resultAddrGrpList = mjonMsgSentService.selectAddrGrpNmList(mjonMsgSentVO); |
|
| 298 |
- if(resultAddrGrpList.size() > 0) { //기존 같은 이름의 그룹이 있으면 해당 그룹에 연락처를 추가해줌
|
|
| 299 |
- redirectAttributes.addFlashAttribute("message", "같은 이름의 그룹명이 있습니다.");
|
|
| 300 |
- } |
|
| 301 |
- else {
|
|
| 302 |
- addrGroupService.insertAddrGroup(addrGroupVO); |
|
| 303 |
- redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.insert"));
|
|
| 304 |
- } |
|
| 305 |
- }catch (Exception e) {
|
|
| 306 |
- redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.insert"));
|
|
| 307 |
- } |
|
| 308 |
- |
|
| 309 |
- RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/addr/selectAddrGroupList.do");
|
|
| 310 |
- return redirectUrlMaker.getRedirectUrl(); |
|
| 311 |
- } |
|
| 312 |
- |
|
| 313 |
- |
|
| 314 |
- /** |
|
| 315 |
- * 주소록 그룹 등록 로직 (ajax) |
|
| 316 |
- * @param addrGroupVO |
|
| 317 |
- * @param request |
|
| 318 |
- * @return |
|
| 319 |
- * @throws Exception |
|
| 320 |
- */ |
|
| 321 |
- @RequestMapping("/web/addr/insertAddrGroupAjax.do")
|
|
| 322 |
- public ModelAndView insertAddrGroup(HttpServletRequest request, ModelMap model, |
|
| 323 |
- AddrGroupVO addrGroupVO |
|
| 324 |
- ) throws Exception {
|
|
| 325 |
- ModelAndView mv = new ModelAndView(); |
|
| 326 |
- mv.setViewName("jsonView");
|
|
| 327 |
- |
|
| 328 |
- LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 329 |
- String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 330 |
- |
|
| 331 |
- addrGroupVO.setMberId(userId); |
|
| 332 |
- |
|
| 333 |
- int usedCnt = addrGroupService.selectDuplAddrGroupCnt(addrGroupVO); |
|
| 334 |
- if(usedCnt > 0) {
|
|
| 335 |
- mv.addObject("result","dupl");
|
|
| 336 |
- }else {
|
|
| 337 |
- if(userId != "") {
|
|
| 338 |
- try {
|
|
| 339 |
- addrGroupService.insertAddrGroup(addrGroupVO); |
|
| 340 |
- mv.addObject("result","success");
|
|
| 341 |
- } catch (Exception e) {
|
|
| 342 |
- e.printStackTrace(); |
|
| 343 |
- mv.addObject("result","fail");
|
|
| 344 |
- } |
|
| 345 |
- } else {
|
|
| 346 |
- mv.addObject("result","fail");
|
|
| 347 |
- } |
|
| 348 |
- } |
|
| 349 |
- return mv; |
|
| 350 |
- } |
|
| 351 |
- |
|
| 352 |
- /** |
|
| 353 |
- * 주소록 그룹 중복체크 로직 (ajax) |
|
| 354 |
- * @param addrGroupVO |
|
| 355 |
- * @param request |
|
| 356 |
- * @return |
|
| 357 |
- * @throws Exception |
|
| 358 |
- */ |
|
| 359 |
- @RequestMapping("/web/addr/getAddrGroupDuplCheckAjax.do")
|
|
| 360 |
- public ModelAndView getAddrGroupDuplCheckAjax(HttpServletRequest request, ModelMap model, |
|
| 361 |
- AddrGroupVO addrGroupVO |
|
| 362 |
- ) throws Exception {
|
|
| 363 |
- System.out.println(" :: /web/addr/getAddrGroupDuplCheckAjax.do :: ");
|
|
| 364 |
- System.out.println(" :: /web/addr/getAddrGroupDuplCheckAjax.do :: ");
|
|
| 365 |
- System.out.println(" :: /web/addr/getAddrGroupDuplCheckAjax.do :: ");
|
|
| 366 |
- System.out.println(" :: addrGrpNm :: "+ addrGroupVO.getAddrGrpNm());
|
|
| 367 |
- |
|
| 368 |
- ModelAndView mv = new ModelAndView(); |
|
| 369 |
- mv.setViewName("jsonView");
|
|
| 370 |
- |
|
| 371 |
- boolean isSuccess = true; |
|
| 372 |
- boolean isDupl = false; |
|
| 373 |
- String msg = ""; |
|
| 374 |
- |
|
| 375 |
- LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 376 |
- String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 377 |
- |
|
| 378 |
- try {
|
|
| 379 |
- addrGroupVO.setMberId(userId); |
|
| 380 |
- |
|
| 381 |
- int usedCnt = addrGroupService.selectDuplAddrGroupCnt(addrGroupVO); |
|
| 382 |
- if(usedCnt > 0) {
|
|
| 383 |
- isDupl = true; |
|
| 384 |
- } |
|
| 385 |
- } |
|
| 386 |
- catch(Exception e) {
|
|
| 387 |
- isSuccess = false; |
|
| 388 |
- msg = e.getMessage(); |
|
| 389 |
- } |
|
| 390 |
- |
|
| 391 |
- mv.addObject("isSuccess", isSuccess);
|
|
| 392 |
- mv.addObject("isDupl", isDupl);
|
|
| 393 |
- mv.addObject("msg", msg);
|
|
| 394 |
- |
|
| 395 |
- return mv; |
|
| 396 |
- } |
|
| 397 |
- |
|
| 398 |
- |
|
| 399 |
- /** |
|
| 400 |
- * 주소록 등록 페이지(ajax) |
|
| 401 |
- * @param addrGroupVO |
|
| 402 |
- * @param redirectAttributes |
|
| 403 |
- * @param request |
|
| 404 |
- * @return |
|
| 405 |
- * @throws Exception |
|
| 406 |
- */ |
|
| 407 |
- @RequestMapping("/web/addr/selectAddrGroupAjax.do")
|
|
| 408 |
- public String selectAddrGroupAjax(HttpServletRequest request, ModelMap model, |
|
| 409 |
- AddrGroupVO addrGroupVO, AddrVO addrVO, RedirectAttributes redirectAttributes |
|
| 410 |
- ) throws Exception {
|
|
| 411 |
- |
|
| 412 |
- //로그인 권한정보 불러오기 |
|
| 413 |
- LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 414 |
- String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 415 |
- |
|
| 416 |
- if(userId != "") {
|
|
| 417 |
- addrGroupVO.setMberId(userId); |
|
| 418 |
- addrVO.setMberId(userId); |
|
| 419 |
- } else {
|
|
| 420 |
- redirectAttributes.addFlashAttribute("fail", true);
|
|
| 421 |
- return "redirect:/web/user/login/login.do"; |
|
| 422 |
- } |
|
| 423 |
- |
|
| 424 |
- if(addrGroupVO.getPageUnit() != 10) {
|
|
| 425 |
- addrGroupVO.setPageUnit(addrGroupVO.getPageUnit()); |
|
| 426 |
- } |
|
| 427 |
- |
|
| 428 |
- addrGroupVO.setSiteId("web");
|
|
| 429 |
- List<AddrGroupVO> addrGroupList = addrGroupService.selectAddrGroupList(addrGroupVO); |
|
| 430 |
- |
|
| 431 |
- model.addAttribute("addrGroupList", addrGroupList);
|
|
| 432 |
- |
|
| 433 |
- |
|
| 434 |
- return "/web/addr/AddrGroupSelectAjax"; |
|
| 435 |
- } |
|
| 436 |
- |
|
| 437 |
- // 주소록 그룹 카운트 조회(전체) Ajax |
|
| 438 |
- @RequestMapping("/web/addr/selectAddrGroupTotCntAjax.do")
|
|
| 439 |
- public ModelAndView selectAddrGroupTotCntAjax(HttpServletRequest request, |
|
| 440 |
- @ModelAttribute("searchVO") AddrGroupVO addrGroupVO
|
|
| 441 |
- , Model model) throws Exception {
|
|
| 442 |
- |
|
| 443 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 444 |
- modelAndView.setViewName("jsonView");
|
|
| 445 |
- |
|
| 446 |
- boolean isSuccess = true; |
|
| 447 |
- String msg = ""; |
|
| 448 |
- int addrTotCnt = 0; |
|
| 449 |
- |
|
| 450 |
- try{
|
|
| 451 |
- LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 452 |
- addrGroupVO.setMberId(user.getId()); |
|
| 453 |
- |
|
| 454 |
- addrGroupVO = addrGroupService.selectAddrGroupTotCnt(addrGroupVO); |
|
| 455 |
- if (addrGroupVO != null) {
|
|
| 456 |
- addrTotCnt = addrGroupVO.getAddrTotCnt(); |
|
| 457 |
- } |
|
| 458 |
- } |
|
| 459 |
- catch(Exception e) {
|
|
| 460 |
- isSuccess = false; |
|
| 461 |
- msg = e.getMessage(); |
|
| 462 |
- } |
|
| 463 |
- |
|
| 464 |
- modelAndView.addObject("isSuccess", isSuccess);
|
|
| 465 |
- modelAndView.addObject("msg", msg);
|
|
| 466 |
- modelAndView.addObject("addrTotCnt", addrTotCnt);
|
|
| 467 |
- |
|
| 468 |
- return modelAndView; |
|
| 469 |
- } |
|
| 470 |
- |
|
| 471 |
- // 주소록 그룹 카운트 조회(전체) Ajax |
|
| 472 |
- @RequestMapping("/web/addr/selectAddrGroupNogrpCntAjax.do")
|
|
| 473 |
- public ModelAndView selectAddrGroupNogrpCntAjax(HttpServletRequest request, |
|
| 474 |
- @ModelAttribute("searchVO") AddrGroupVO addrGroupVO
|
|
| 475 |
- , Model model) throws Exception {
|
|
| 476 |
- |
|
| 477 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 478 |
- modelAndView.setViewName("jsonView");
|
|
| 479 |
- |
|
| 480 |
- boolean isSuccess = true; |
|
| 481 |
- String msg = ""; |
|
| 482 |
- int nogrpCnt = 0; |
|
| 483 |
- |
|
| 484 |
- try{
|
|
| 485 |
- LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 486 |
- addrGroupVO.setMberId(user.getId()); |
|
| 487 |
- |
|
| 488 |
- addrGroupVO = addrGroupService.selectAddrGroupNogrpCnt(addrGroupVO); |
|
| 489 |
- if (addrGroupVO != null) {
|
|
| 490 |
- nogrpCnt = addrGroupVO.getNogrpCnt(); |
|
| 491 |
- } |
|
| 492 |
- } |
|
| 493 |
- catch(Exception e) {
|
|
| 494 |
- isSuccess = false; |
|
| 495 |
- msg = e.getMessage(); |
|
| 496 |
- } |
|
| 497 |
- |
|
| 498 |
- modelAndView.addObject("isSuccess", isSuccess);
|
|
| 499 |
- modelAndView.addObject("msg", msg);
|
|
| 500 |
- modelAndView.addObject("nogrpCnt", nogrpCnt);
|
|
| 501 |
- |
|
| 502 |
- return modelAndView; |
|
| 503 |
- } |
|
| 504 |
- |
|
| 505 |
- // 주소록 그룹 카운트 조회(전체) Ajax |
|
| 506 |
- @RequestMapping("/web/addr/selectAddrGroupBookmarkCntAjax.do")
|
|
| 507 |
- public ModelAndView selectAddrGroupBookmarkCntAjax(HttpServletRequest request, |
|
| 508 |
- @ModelAttribute("searchVO") AddrGroupVO addrGroupVO
|
|
| 509 |
- , Model model) throws Exception {
|
|
| 510 |
- |
|
| 511 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 512 |
- modelAndView.setViewName("jsonView");
|
|
| 513 |
- |
|
| 514 |
- boolean isSuccess = true; |
|
| 515 |
- String msg = ""; |
|
| 516 |
- int bookmarkCnt = 0; |
|
| 517 |
- |
|
| 518 |
- try{
|
|
| 519 |
- LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 520 |
- addrGroupVO.setMberId(user.getId()); |
|
| 521 |
- |
|
| 522 |
- addrGroupVO = addrGroupService.selectAddrGroupBookmarkCnt(addrGroupVO); |
|
| 523 |
- if (addrGroupVO != null) {
|
|
| 524 |
- bookmarkCnt = addrGroupVO.getBookmarkCnt(); |
|
| 525 |
- } |
|
| 526 |
- } |
|
| 527 |
- catch(Exception e) {
|
|
| 528 |
- isSuccess = false; |
|
| 529 |
- msg = e.getMessage(); |
|
| 530 |
- } |
|
| 531 |
- |
|
| 532 |
- modelAndView.addObject("isSuccess", isSuccess);
|
|
| 533 |
- modelAndView.addObject("msg", msg);
|
|
| 534 |
- modelAndView.addObject("bookmarkCnt", bookmarkCnt);
|
|
| 535 |
- |
|
| 536 |
- return modelAndView; |
|
| 537 |
- } |
|
| 538 |
- |
|
| 539 |
- /** |
|
| 540 |
- * 주소록 그룹 수정 로직 |
|
| 541 |
- * |
|
| 542 |
- * @param addrGroupVO |
|
| 543 |
- * @param redirectAttributes |
|
| 544 |
- * @param request |
|
| 545 |
- * @return |
|
| 546 |
- * @throws Exception |
|
| 547 |
- */ |
|
| 548 |
- @RequestMapping("/uss/ion/addr/updateAddrGroupAjax.do")
|
|
| 549 |
- public ModelAndView updateAddrGroupAjax(AddrGroupVO addrGroupVO |
|
| 550 |
- ,RedirectAttributes redirectAttributes |
|
| 551 |
- ,HttpServletRequest request |
|
| 552 |
- ,HttpServletResponse response |
|
| 553 |
- ) throws Exception{
|
|
| 554 |
- |
|
| 555 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 556 |
- modelAndView.setViewName("jsonView");
|
|
| 557 |
- |
|
| 558 |
- boolean isSuccess = true; |
|
| 559 |
- String msg = ""; |
|
| 560 |
- |
|
| 561 |
- try {
|
|
| 562 |
- //주소록 그룹 이름 불러오기(중복체크 용) |
|
| 563 |
- MjonMsgSentVO mjonMsgSentVO = new MjonMsgSentVO(); |
|
| 564 |
- mjonMsgSentVO.setUserId(addrGroupVO.getMberId()); |
|
| 565 |
- mjonMsgSentVO.setAddrGrpNm(addrGroupVO.getAddrGrpNm()); |
|
| 566 |
- List<AddrGroupVO> resultAddrGrpList = mjonMsgSentService.selectAddrGrpNmList(mjonMsgSentVO); |
|
| 567 |
- if(resultAddrGrpList.size() > 0) { //기존 같은 이름의 그룹이 있으면 해당 그룹에 연락처를 추가해줌
|
|
| 568 |
- isSuccess = false; |
|
| 569 |
- msg = "같은 이름의 그룹명이 있습니다."; |
|
| 570 |
- } |
|
| 571 |
- else {
|
|
| 572 |
- addrGroupService.updateAddrGroup(addrGroupVO); |
|
| 573 |
- } |
|
| 574 |
- } |
|
| 575 |
- catch(Exception e) {
|
|
| 576 |
- isSuccess = false; |
|
| 577 |
- msg = "에러메시지 : " + e.getMessage(); |
|
| 578 |
- e.printStackTrace(); |
|
| 579 |
- } |
|
| 580 |
- |
|
| 581 |
- modelAndView.addObject("isSuccess", isSuccess);
|
|
| 582 |
- modelAndView.addObject("msg", msg);
|
|
| 583 |
- |
|
| 584 |
- return modelAndView; |
|
| 585 |
- |
|
| 586 |
- } |
|
| 587 |
- |
|
| 588 |
- |
|
| 589 |
- /** |
|
| 590 |
- * 주소록 그룹 수정 로직 Ajax |
|
| 591 |
- * |
|
| 592 |
- * @param request |
|
| 593 |
- * @param addrGroupVO |
|
| 594 |
- * @param redirectAttributes |
|
| 595 |
- * @param model |
|
| 596 |
- * @return |
|
| 597 |
- * @throws Exception |
|
| 598 |
- */ |
|
| 599 |
- @RequestMapping("/web/addr/updateAddrGroupAjax.do")
|
|
| 600 |
- public ModelAndView updateAddrGroupAjax(@RequestParam("addrGrpNms") String[] addrGrpNms,
|
|
| 601 |
- @RequestParam("addrGrpIds") String[] addrGrpIds,
|
|
| 602 |
- HttpServletRequest request, |
|
| 603 |
- @ModelAttribute("searchVO") AddrGroupVO addrGroupVO, Model model
|
|
| 604 |
- ,RedirectAttributes redirectAttributes |
|
| 605 |
- ) throws Exception {
|
|
| 606 |
- |
|
| 607 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 608 |
- modelAndView.setViewName("jsonView");
|
|
| 609 |
- |
|
| 610 |
- LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 611 |
- addrGroupVO.setLastUpdusrId(user.getId()); |
|
| 612 |
- addrGroupVO.setMberId(user.getId()); |
|
| 613 |
- |
|
| 614 |
- boolean dupl = false; |
|
| 615 |
- for (int i=0; i<addrGrpNms.length; i++) {
|
|
| 616 |
- String str1 = addrGrpNms[i]; |
|
| 617 |
- for (int j=0; j<addrGrpNms.length; j++) {
|
|
| 618 |
- if (i == j) continue; |
|
| 619 |
- String str2 = addrGrpNms[j]; |
|
| 620 |
- if (str1.equals(str2)) {
|
|
| 621 |
- dupl = true; |
|
| 622 |
- break; |
|
| 623 |
- } |
|
| 624 |
- } |
|
| 625 |
- } |
|
| 626 |
- |
|
| 627 |
- if(dupl) {
|
|
| 628 |
- modelAndView.addObject("result", "dupl");
|
|
| 629 |
- } else {
|
|
| 630 |
- for(int i=0; i<addrGrpIds.length; i++) {
|
|
| 631 |
- try {
|
|
| 632 |
- addrGroupVO.setAddrGrpNm(addrGrpNms[i]); |
|
| 633 |
- addrGroupVO.setAddrGrpId(addrGrpIds[i]); |
|
| 634 |
- addrGroupVO.setGrpOrder(i+1); |
|
| 635 |
- addrGroupService.updateAddrGroup(addrGroupVO); |
|
| 636 |
- |
|
| 637 |
- |
|
| 638 |
- } catch (Exception e) {
|
|
| 639 |
- e.printStackTrace(); |
|
| 640 |
- modelAndView.addObject("result", "fail");
|
|
| 641 |
- return modelAndView; |
|
| 642 |
- } |
|
| 643 |
- } |
|
| 644 |
- } |
|
| 645 |
- return modelAndView; |
|
| 646 |
- |
|
| 647 |
- } |
|
| 648 |
- |
|
| 649 |
- |
|
| 650 |
- |
|
| 651 |
- /** |
|
| 652 |
- * 주소록 그룹 수정 페이지 이동 |
|
| 653 |
- * |
|
| 654 |
- * @param addrGroupVO |
|
| 655 |
- * @param model |
|
| 656 |
- * @return |
|
| 657 |
- * @throws Exception |
|
| 658 |
- */ |
|
| 659 |
- @RequestMapping("/uss/ion/addr/editAddrGroup.do")
|
|
| 660 |
- public String editAddrGroup(AddrGroupVO addrGroupVO |
|
| 661 |
- , ModelMap model ) throws Exception {
|
|
| 662 |
- |
|
| 663 |
- model.addAttribute("searchVO", addrGroupVO);
|
|
| 664 |
- model.addAttribute("addrGrpInfo", addrGroupService.selectAddrGroupDetail(addrGroupVO));
|
|
| 665 |
- |
|
| 666 |
- return "/uss/ion/addr/AddrGroupEdit"; |
|
| 667 |
- } |
|
| 668 |
- |
|
| 669 |
- |
|
| 670 |
- /** |
|
| 671 |
- * 주소록 그룹 삭제 로직 |
|
| 672 |
- * |
|
| 673 |
- * @param request |
|
| 674 |
- * @param addrGroupVO |
|
| 675 |
- * @param redirectAttributes |
|
| 676 |
- * @param model |
|
| 677 |
- * @return |
|
| 678 |
- * @throws Exception |
|
| 679 |
- */ |
|
| 680 |
- @RequestMapping("/uss/ion/addr/deleteAddrGroup.do")
|
|
| 681 |
- public String deleteAddrGroup(HttpServletRequest request, @ModelAttribute("searchVO") AddrGroupVO addrGroupVO
|
|
| 682 |
- ,RedirectAttributes redirectAttributes |
|
| 683 |
- ,ModelMap model) throws Exception {
|
|
| 684 |
- |
|
| 685 |
- LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 686 |
- |
|
| 687 |
- addrGroupVO.setLastUpdusrId(user.getUniqId()); |
|
| 688 |
- |
|
| 689 |
- // 1. 그룹 삭제 |
|
| 690 |
- // 2. 그룹에 소속된 주소록 삭제 |
|
| 691 |
- int result = addrGroupService.deleteAddrGroupByAdminAll(addrGroupVO); |
|
| 692 |
- |
|
| 693 |
- if (result > 0) {
|
|
| 694 |
- redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete"));
|
|
| 695 |
- } else {
|
|
| 696 |
- redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.delete"));
|
|
| 697 |
- } |
|
| 698 |
- redirectAttributes.addAttribute("pageIndex", addrGroupVO.getPageIndex());
|
|
| 699 |
- redirectAttributes.addAttribute("searchCondition", addrGroupVO.getSearchCondition());
|
|
| 700 |
- redirectAttributes.addAttribute("searchKeyword", addrGroupVO.getSearchKeyword());
|
|
| 701 |
- |
|
| 702 |
- return "redirect:/uss/ion/addr/selectAddrGroupList.do"; |
|
| 703 |
- } |
|
| 704 |
- |
|
| 705 |
- |
|
| 706 |
- /** |
|
| 707 |
- * 주소록 그룹 삭제 로직 Ajax |
|
| 708 |
- * |
|
| 709 |
- * @param request |
|
| 710 |
- * @param addrGroupVO |
|
| 711 |
- * @param redirectAttributes |
|
| 712 |
- * @param model |
|
| 713 |
- * @return |
|
| 714 |
- * @throws Exception |
|
| 715 |
- */ |
|
| 716 |
- @RequestMapping("/web/addr/deleteAddrGroupAjax.do")
|
|
| 717 |
- public ModelAndView deleteAddrGroupAjax(@RequestParam("grpCheck") String[] grpCheck, HttpServletRequest request,
|
|
| 718 |
- @ModelAttribute("searchVO") AddrGroupVO addrGroupVO, Model model
|
|
| 719 |
- ,RedirectAttributes redirectAttributes |
|
| 720 |
- ) throws Exception {
|
|
| 721 |
- |
|
| 722 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 723 |
- modelAndView.setViewName("jsonView");
|
|
| 724 |
- |
|
| 725 |
- LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 726 |
- addrGroupVO.setLastUpdusrId(user.getId()); |
|
| 727 |
- addrGroupVO.setMberId(user.getId()); |
|
| 728 |
- |
|
| 729 |
- for(String id:grpCheck) {
|
|
| 730 |
- try {
|
|
| 731 |
- |
|
| 732 |
-// id = "13026"; |
|
| 733 |
- addrGroupVO.setAddrGrpId(id); |
|
| 734 |
- addrGroupVO.setMberId(user.getId()); |
|
| 735 |
- int tot = addrService.getAddrCount(addrGroupVO); |
|
| 736 |
- addrGroupVO.setTotCnt(tot); |
|
| 737 |
- |
|
| 738 |
- addrService.deleteAddr_advc(addrGroupVO); |
|
| 739 |
- |
|
| 740 |
- |
|
| 741 |
-/* addrGroupVO.setAddrGrpId(id); |
|
| 742 |
- addrGroupService.deleteAddrGroup(addrGroupVO); |
|
| 743 |
- |
|
| 744 |
- addrVO.setAddrGrpId(id); |
|
| 745 |
- addrVO.setGrpDelete("Y");
|
|
| 746 |
- addrVO.setMberId(user.getId()); |
|
| 747 |
- addrVO.setLastUpdusrId(user.getId()); |
|
| 748 |
- addrService.deleteAddr(addrVO); |
|
| 749 |
-*/ |
|
| 750 |
- modelAndView.addObject("result", "success");
|
|
| 751 |
- } catch (Exception e) {
|
|
| 752 |
- e.printStackTrace(); |
|
| 753 |
- modelAndView.addObject("result", "fail");
|
|
| 754 |
- return modelAndView; |
|
| 755 |
- } |
|
| 756 |
- } |
|
| 757 |
- |
|
| 758 |
- return modelAndView; |
|
| 759 |
- |
|
| 760 |
- } |
|
| 761 |
- |
|
| 762 |
- /** |
|
| 763 |
- * 주소록 그룹명 중복체크 |
|
| 764 |
- * |
|
| 765 |
- * @param addrGroupVO |
|
| 766 |
- * @return |
|
| 767 |
- * @throws Exception |
|
| 768 |
- */ |
|
| 769 |
- @RequestMapping(value= {"/uss/ion/addr/duplAddrGroupAjax.do","/web/addr/selectDuplAddrGroupNameAjax.do"})
|
|
| 770 |
- @ResponseBody |
|
| 771 |
- public ModelAndView selectDuplAddrGroupAjax(AddrGroupVO addrGroupVO |
|
| 772 |
- ,HttpServletRequest request |
|
| 773 |
- ,ModelMap model |
|
| 774 |
- ) throws Exception {
|
|
| 775 |
- |
|
| 776 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 777 |
- modelAndView.setViewName("jsonView");
|
|
| 778 |
- |
|
| 779 |
- int usedCnt = addrGroupService.selectDuplAddrGroupCnt(addrGroupVO); |
|
| 780 |
- |
|
| 781 |
- if(usedCnt > 0) {
|
|
| 782 |
- modelAndView.addObject("result1", "dupl");
|
|
| 783 |
- } else {
|
|
| 784 |
- modelAndView.addObject("result1", "success");
|
|
| 785 |
- } |
|
| 786 |
- modelAndView.addObject("status1", "success");
|
|
| 787 |
- |
|
| 788 |
- return modelAndView; |
|
| 789 |
- } |
|
| 790 |
- |
|
| 791 |
- /** |
|
| 792 |
- * 주소록 합치기 |
|
| 793 |
- * @param addrGrpNewNm |
|
| 794 |
- * @param request |
|
| 795 |
- * @param addrGroupVO |
|
| 796 |
- * @param addrVO |
|
| 797 |
- * @param model |
|
| 798 |
- * @param redirectAttributes |
|
| 799 |
- * @return |
|
| 800 |
- * @throws Exception |
|
| 801 |
- */ |
|
| 802 |
- |
|
| 803 |
- @RequestMapping("/web/addr/mergeAddrGroupAjax.do")
|
|
| 804 |
- public ModelAndView mergeAddrGroupAjax(@RequestParam("addrGrpNewNm") String addrGrpNewNm
|
|
| 805 |
- ,HttpServletRequest request |
|
| 806 |
- ,@ModelAttribute("searchVO") AddrGroupVO addrGroupVO
|
|
| 807 |
- ,AddrVO addrVO |
|
| 808 |
- ,Model model |
|
| 809 |
- ,RedirectAttributes redirectAttributes |
|
| 810 |
- ) throws Exception {
|
|
| 811 |
- |
|
| 812 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 813 |
- modelAndView.setViewName("jsonView");
|
|
| 814 |
- |
|
| 815 |
- LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 816 |
- addrGroupVO.setLastUpdusrId(user.getId()); |
|
| 817 |
- addrGroupVO.setMberId(user.getId()); |
|
| 818 |
- addrGroupVO.setFrstRegisterId(user.getId()); |
|
| 819 |
- addrGroupVO.setAddrGrpNm(addrGrpNewNm); |
|
| 820 |
- |
|
| 821 |
- int usedCnt = addrGroupService.selectDuplAddrGroupCnt(addrGroupVO); |
|
| 822 |
- |
|
| 823 |
- if(usedCnt > 0) {
|
|
| 824 |
- modelAndView.addObject("result", "dupl");
|
|
| 825 |
- }else {
|
|
| 826 |
- addrVO.setMberId(user.getId()); |
|
| 827 |
- addrVO.setLastUpdusrId(user.getId()); |
|
| 828 |
- |
|
| 829 |
- try {
|
|
| 830 |
- addrGroupService.mergeAddrGroupAjax(addrGroupVO, addrVO); |
|
| 831 |
- |
|
| 832 |
- modelAndView.addObject("result", "success");
|
|
| 833 |
- } catch (Exception e) {
|
|
| 834 |
- e.printStackTrace(); |
|
| 835 |
- modelAndView.addObject("result", "fail");
|
|
| 836 |
- return modelAndView; |
|
| 837 |
- } |
|
| 838 |
- } |
|
| 839 |
- |
|
| 840 |
- |
|
| 841 |
- return modelAndView; |
|
| 842 |
- |
|
| 843 |
- } |
|
| 844 |
- |
|
| 845 |
- |
|
| 846 |
- |
|
| 847 |
- |
|
| 848 |
- /** |
|
| 849 |
- * 주소록 그룹 복사하기 |
|
| 850 |
- * @param addrGrpNewNm |
|
| 851 |
- * @param request |
|
| 852 |
- * @param addrGroupVO |
|
| 853 |
- * @param addrVO |
|
| 854 |
- * @param model |
|
| 855 |
- * @param redirectAttributes |
|
| 856 |
- * @return |
|
| 857 |
- * @throws Exception |
|
| 858 |
- */ |
|
| 859 |
- |
|
| 860 |
- @RequestMapping("/web/addr/copyAddrGroupAjax.do")
|
|
| 861 |
- public ModelAndView copyAddrGroupAjax(@RequestParam("addrGrpNewNm") String addrGrpNewNm
|
|
| 862 |
- ,HttpServletRequest request |
|
| 863 |
- ,@ModelAttribute("searchVO") AddrGroupVO addrGroupVO
|
|
| 864 |
- ,AddrVO addrVO |
|
| 865 |
- ,Model model |
|
| 866 |
- ,RedirectAttributes redirectAttributes |
|
| 867 |
- ) throws Exception {
|
|
| 868 |
- |
|
| 869 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 870 |
- modelAndView.setViewName("jsonView");
|
|
| 871 |
- |
|
| 872 |
- LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 873 |
- addrGroupVO.setLastUpdusrId(user.getId()); |
|
| 874 |
- addrGroupVO.setMberId(user.getId()); |
|
| 875 |
- addrGroupVO.setFrstRegisterId(user.getId()); |
|
| 876 |
- addrGroupVO.setAddrGrpNm(addrGrpNewNm); |
|
| 877 |
- |
|
| 878 |
- int usedCnt = addrGroupService.selectDuplAddrGroupCnt(addrGroupVO); |
|
| 879 |
- |
|
| 880 |
- if(usedCnt > 0) {
|
|
| 881 |
- modelAndView.addObject("result", "dupl");
|
|
| 882 |
- }else {
|
|
| 883 |
- addrVO.setMberId(user.getId()); |
|
| 884 |
- addrVO.setLastUpdusrId(user.getId()); |
|
| 885 |
- |
|
| 886 |
- try {
|
|
| 887 |
- addrGroupService.copyAddrGroupAjax(addrGroupVO, addrVO); |
|
| 888 |
- |
|
| 889 |
- modelAndView.addObject("result", "success");
|
|
| 890 |
- } catch (Exception e) {
|
|
| 891 |
- e.printStackTrace(); |
|
| 892 |
- modelAndView.addObject("result", "fail");
|
|
| 893 |
- return modelAndView; |
|
| 894 |
- } |
|
| 895 |
- } |
|
| 896 |
- |
|
| 897 |
- |
|
| 898 |
- return modelAndView; |
|
| 899 |
- |
|
| 900 |
- } |
|
| 901 |
- |
|
| 902 |
- |
|
| 903 |
- // 주소록 내보내기 kmc본인인증 |
|
| 904 |
- @RequestMapping(value = "/web/addr/kmcPopupAddrSubmitPramAjax.do") |
|
| 905 |
- public ModelAndView kmcPopupIdPwPramAjax(@ModelAttribute("mberManageVO") MberManageVO mberManageVO,
|
|
| 906 |
- HttpServletRequest request) throws Exception {
|
|
| 907 |
- |
|
| 908 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 909 |
- modelAndView.setViewName("jsonView");
|
|
| 910 |
- |
|
| 911 |
- try {
|
|
| 912 |
- KmcCertChecker kmcCertCheck = new KmcCertChecker(); |
|
| 913 |
- |
|
| 914 |
- // mberId null일경우 ""로 |
|
| 915 |
- mberManageVO.setMberId(EgovStringUtil.isNullToString(mberManageVO.getMberId())); |
|
| 916 |
- |
|
| 917 |
- // kmc 본인인증 실/개발 서버 구분 |
|
| 918 |
- String serverNm = ""; |
|
| 919 |
- if (request.getServerName().contains("219.240.88.15") || request.getServerName().contains("localhost")) {
|
|
| 920 |
- serverNm = request.getScheme() + "://219.240.88.15:8095"; |
|
| 921 |
- } else {
|
|
| 922 |
- serverNm = request.getScheme() + "://www.munjaon.co.kr"; |
|
| 923 |
- } |
|
| 924 |
- |
|
| 925 |
- AuthCertVO certVO = kmcCertCheck.authCertCheckEight(serverNm + "/web/cop/kmc/authRequestAddrSubmitAjax.do", |
|
| 926 |
- mberManageVO.getMberId()); |
|
| 927 |
- |
|
| 928 |
- modelAndView.addObject("tr_cert", certVO.getTr_cert());
|
|
| 929 |
- modelAndView.addObject("tr_url", certVO.getTr_url());
|
|
| 930 |
- modelAndView.addObject("tr_add", certVO.getTr_add());
|
|
| 931 |
- |
|
| 932 |
- modelAndView.addObject("result", "success");
|
|
| 933 |
- |
|
| 934 |
- } catch (Exception e) {
|
|
| 935 |
- modelAndView.addObject("result", "fail");
|
|
| 936 |
- modelAndView.addObject("message", "기타 시스템 오류 : " + e.getMessage());
|
|
| 937 |
- } |
|
| 938 |
- |
|
| 939 |
- return modelAndView; |
|
| 940 |
- } |
|
| 941 |
- |
|
| 942 |
- /** |
|
| 943 |
- * 아이디 비밀번호 찾기 kmc 본인인증(PG사 전송화면) |
|
| 944 |
- * |
|
| 945 |
- * @param |
|
| 946 |
- * @return |
|
| 947 |
- * @throws Exception |
|
| 948 |
- */ |
|
| 949 |
- |
|
| 950 |
- @RequestMapping("/web/cop/kmc/authRequestAddrSubmitAjax.do")
|
|
| 951 |
- public String authRequestFindIdPwAjax(HttpServletRequest request, ModelMap model, |
|
| 952 |
- @RequestParam Map<String, Object> commandMap, @ModelAttribute("searchVO") KmcVO kmcVO,
|
|
| 953 |
- RedirectAttributes redirectAttributes) throws Exception {
|
|
| 954 |
- |
|
| 955 |
- String errMessage = ""; // 에러메세지 |
|
| 956 |
- |
|
| 957 |
- String rec_cert = ""; // 결과값(암호화) |
|
| 958 |
- String certNum = ""; // certNum |
|
| 959 |
- |
|
| 960 |
- rec_cert = request.getParameter("rec_cert").trim();
|
|
| 961 |
- certNum = request.getParameter("certNum").trim();
|
|
| 962 |
- |
|
| 963 |
- kmcVO.setRecCert(rec_cert); |
|
| 964 |
- kmcVO.setCertNum(certNum); |
|
| 965 |
- // 파라미터 유효성 검증 |
|
| 966 |
- if (rec_cert.length() == 0 || certNum.length() == 0) {
|
|
| 967 |
- errMessage = "비정상"; |
|
| 968 |
- return returnPage(model, errMessage, kmcVO); |
|
| 969 |
- } |
|
| 970 |
- |
|
| 971 |
- // 변수선언 |
|
| 972 |
- // -------------------------------------------------------------------------------------------------------- |
|
| 973 |
- String k_certNum = ""; // 파라미터로 수신한 요청번호 |
|
| 974 |
- k_certNum = certNum; |
|
| 975 |
- String date = ""; // 요청일시 |
|
| 976 |
- String CI = ""; // 연계정보(CI) |
|
| 977 |
- String DI = ""; // 중복가입확인정보(DI) |
|
| 978 |
- String phoneNo = ""; // 휴대폰번호 |
|
| 979 |
- String phoneCorp = ""; // 이동통신사 |
|
| 980 |
- String birthDay = ""; // 생년월일 |
|
| 981 |
- String gender = ""; // 성별 |
|
| 982 |
- String nation = ""; // 내국인 |
|
| 983 |
- String name = ""; // 성명 |
|
| 984 |
- String M_name = ""; // 미성년자 성명 |
|
| 985 |
- String M_birthDay = ""; // 미성년자 생년월일 |
|
| 986 |
- String M_Gender = ""; // 미성년자 성별 |
|
| 987 |
- String M_nation = ""; // 미성년자 내외국인 |
|
| 988 |
- String result = ""; // 결과값 |
|
| 989 |
- |
|
| 990 |
- String certMet = ""; // 인증방법 |
|
| 991 |
- String ip = ""; // ip주소 |
|
| 992 |
- String plusInfo = ""; |
|
| 993 |
- |
|
| 994 |
- String encPara = ""; |
|
| 995 |
- String encMsg1 = ""; |
|
| 996 |
- String encMsg2 = ""; |
|
| 997 |
- String msgChk = ""; |
|
| 998 |
- |
|
| 999 |
- com.icert.comm.secu.IcertSecuManager seed = new com.icert.comm.secu.IcertSecuManager(); |
|
| 1000 |
- |
|
| 1001 |
- // 02. 1차 복호화 |
|
| 1002 |
- // 수신된 certNum를 이용하여 복호화 |
|
| 1003 |
- rec_cert = seed.getDec(rec_cert, k_certNum); |
|
| 1004 |
- |
|
| 1005 |
- // 03. 1차 파싱 |
|
| 1006 |
- int inf1 = rec_cert.indexOf("/", 0);
|
|
| 1007 |
- int inf2 = rec_cert.indexOf("/", inf1 + 1);
|
|
| 1008 |
- |
|
| 1009 |
- encPara = rec_cert.substring(0, inf1); // 암호화된 통합 파라미터 |
|
| 1010 |
- encMsg1 = rec_cert.substring(inf1 + 1, inf2); // 암호화된 통합 파라미터의 Hash값 |
|
| 1011 |
- |
|
| 1012 |
- // 04. 위변조 검증 |
|
| 1013 |
- encMsg2 = seed.getMsg(encPara); |
|
| 1014 |
- kmcVO.setEncMsg2(encMsg2); |
|
| 1015 |
- if (encMsg2.equals(encMsg1)) {
|
|
| 1016 |
- msgChk = "Y"; |
|
| 1017 |
- } |
|
| 1018 |
- |
|
| 1019 |
- if (!"Y".equals(msgChk)) {
|
|
| 1020 |
- errMessage = "비정상접근입니다."; |
|
| 1021 |
- return returnPage(model, errMessage, kmcVO); |
|
| 1022 |
- } |
|
| 1023 |
- |
|
| 1024 |
- // 05. 2차 복호화 |
|
| 1025 |
- rec_cert = seed.getDec(encPara, k_certNum); |
|
| 1026 |
- kmcVO.setRecCert(rec_cert); |
|
| 1027 |
- // 06. 2차 파싱 |
|
| 1028 |
- int info1 = rec_cert.indexOf("/", 0);
|
|
| 1029 |
- int info2 = rec_cert.indexOf("/", info1 + 1);
|
|
| 1030 |
- int info3 = rec_cert.indexOf("/", info2 + 1);
|
|
| 1031 |
- int info4 = rec_cert.indexOf("/", info3 + 1);
|
|
| 1032 |
- int info5 = rec_cert.indexOf("/", info4 + 1);
|
|
| 1033 |
- int info6 = rec_cert.indexOf("/", info5 + 1);
|
|
| 1034 |
- int info7 = rec_cert.indexOf("/", info6 + 1);
|
|
| 1035 |
- int info8 = rec_cert.indexOf("/", info7 + 1);
|
|
| 1036 |
- int info9 = rec_cert.indexOf("/", info8 + 1);
|
|
| 1037 |
- int info10 = rec_cert.indexOf("/", info9 + 1);
|
|
| 1038 |
- int info11 = rec_cert.indexOf("/", info10 + 1);
|
|
| 1039 |
- int info12 = rec_cert.indexOf("/", info11 + 1);
|
|
| 1040 |
- int info13 = rec_cert.indexOf("/", info12 + 1);
|
|
| 1041 |
- int info14 = rec_cert.indexOf("/", info13 + 1);
|
|
| 1042 |
- int info15 = rec_cert.indexOf("/", info14 + 1);
|
|
| 1043 |
- int info16 = rec_cert.indexOf("/", info15 + 1);
|
|
| 1044 |
- int info17 = rec_cert.indexOf("/", info16 + 1);
|
|
| 1045 |
- int info18 = rec_cert.indexOf("/", info17 + 1);
|
|
| 1046 |
- |
|
| 1047 |
- certNum = rec_cert.substring(0, info1); |
|
| 1048 |
- kmcVO.setCertNum(certNum); |
|
| 1049 |
- date = rec_cert.substring(info1 + 1, info2); |
|
| 1050 |
- kmcVO.setDate(date); |
|
| 1051 |
- CI = rec_cert.substring(info2 + 1, info3); |
|
| 1052 |
- kmcVO.setCI(CI); |
|
| 1053 |
- phoneNo = rec_cert.substring(info3 + 1, info4); |
|
| 1054 |
- kmcVO.setPhoneNo(phoneNo); |
|
| 1055 |
- phoneCorp = rec_cert.substring(info4 + 1, info5); |
|
| 1056 |
- kmcVO.setPhoneCorp(phoneCorp); |
|
| 1057 |
- birthDay = rec_cert.substring(info5 + 1, info6); |
|
| 1058 |
- kmcVO.setBirthDay(birthDay); |
|
| 1059 |
- gender = rec_cert.substring(info6 + 1, info7); |
|
| 1060 |
- kmcVO.setGender(gender); |
|
| 1061 |
- nation = rec_cert.substring(info7 + 1, info8); |
|
| 1062 |
- kmcVO.setNation(nation); |
|
| 1063 |
- name = rec_cert.substring(info8 + 1, info9); |
|
| 1064 |
- kmcVO.setName(name); |
|
| 1065 |
- result = rec_cert.substring(info9 + 1, info10); |
|
| 1066 |
- kmcVO.setResult(result); |
|
| 1067 |
- certMet = rec_cert.substring(info10 + 1, info11); |
|
| 1068 |
- kmcVO.setCertMet(certMet); |
|
| 1069 |
- ip = rec_cert.substring(info11 + 1, info12); |
|
| 1070 |
- kmcVO.setIp(ip); |
|
| 1071 |
- M_name = rec_cert.substring(info12 + 1, info13); |
|
| 1072 |
- kmcVO.setMName(M_name); |
|
| 1073 |
- M_birthDay = rec_cert.substring(info13 + 1, info14); |
|
| 1074 |
- kmcVO.setMBirthDay(M_birthDay); |
|
| 1075 |
- M_Gender = rec_cert.substring(info14 + 1, info15); |
|
| 1076 |
- kmcVO.setMGender(M_Gender); |
|
| 1077 |
- M_nation = rec_cert.substring(info15 + 1, info16); |
|
| 1078 |
- kmcVO.setMNation(M_nation); |
|
| 1079 |
- plusInfo = rec_cert.substring(info16 + 1, info17); |
|
| 1080 |
- kmcVO.setPlusInfo(plusInfo); |
|
| 1081 |
- DI = rec_cert.substring(info17 + 1, info18); |
|
| 1082 |
- kmcVO.setDI(DI); |
|
| 1083 |
- |
|
| 1084 |
- // 07. CI, DI 복호화 |
|
| 1085 |
- CI = seed.getDec(CI, k_certNum); |
|
| 1086 |
- kmcVO.setCI(CI); |
|
| 1087 |
- DI = seed.getDec(DI, k_certNum); |
|
| 1088 |
- kmcVO.setDI(DI); |
|
| 1089 |
- |
|
| 1090 |
- if ("Y".equals(result)) {
|
|
| 1091 |
- |
|
| 1092 |
- } |
|
| 1093 |
- |
|
| 1094 |
- // -------------------------------------------------------------- |
|
| 1095 |
- String regex = ""; |
|
| 1096 |
- if (certNum.length() == 0 || certNum.length() > 40) {
|
|
| 1097 |
- errMessage = "요청번호 비정상."; |
|
| 1098 |
- return returnPage(model, errMessage, kmcVO); |
|
| 1099 |
- } |
|
| 1100 |
- |
|
| 1101 |
- regex = "[0-9]*"; |
|
| 1102 |
- if (date.length() != 14 || !paramChk(regex, date)) {
|
|
| 1103 |
- errMessage = "요청일시"; |
|
| 1104 |
- return returnPage(model, errMessage, kmcVO); |
|
| 1105 |
- } |
|
| 1106 |
- |
|
| 1107 |
- regex = "[A-Z]*"; |
|
| 1108 |
- if (certMet.length() != 1 || !paramChk(regex, certMet)) {
|
|
| 1109 |
- errMessage = "본인인증방법 비정상" + certMet; |
|
| 1110 |
- return returnPage(model, errMessage, kmcVO); |
|
| 1111 |
- } |
|
| 1112 |
- |
|
| 1113 |
- regex = "[0-9]*"; |
|
| 1114 |
- if ((phoneNo.length() != 10 && phoneNo.length() != 11) || !paramChk(regex, phoneNo)) {
|
|
| 1115 |
- errMessage = "휴대폰번호 비정상"; |
|
| 1116 |
- return returnPage(model, errMessage, kmcVO); |
|
| 1117 |
- } |
|
| 1118 |
- |
|
| 1119 |
- regex = "[A-Z]*"; |
|
| 1120 |
- if (phoneCorp.length() != 3 || !paramChk(regex, phoneCorp)) {
|
|
| 1121 |
- errMessage = "이동통신사 비정상"; |
|
| 1122 |
- return returnPage(model, errMessage, kmcVO); |
|
| 1123 |
- } |
|
| 1124 |
- |
|
| 1125 |
- regex = "[0-9]*"; |
|
| 1126 |
- if (birthDay.length() != 8 || !paramChk(regex, birthDay)) {
|
|
| 1127 |
- errMessage = "생년월일 비정상"; |
|
| 1128 |
- return returnPage(model, errMessage, kmcVO); |
|
| 1129 |
- } |
|
| 1130 |
- |
|
| 1131 |
- regex = "[0-9]*"; |
|
| 1132 |
- if (gender.length() != 1 || !paramChk(regex, gender)) {
|
|
| 1133 |
- errMessage = "성별 비정상"; |
|
| 1134 |
- return returnPage(model, errMessage, kmcVO); |
|
| 1135 |
- } |
|
| 1136 |
- |
|
| 1137 |
- regex = "[0-9]*"; |
|
| 1138 |
- if (nation.length() != 1 || !paramChk(regex, nation)) {
|
|
| 1139 |
- errMessage = "내/외국인 비정상"; |
|
| 1140 |
- return returnPage(model, errMessage, kmcVO); |
|
| 1141 |
- } |
|
| 1142 |
- |
|
| 1143 |
- regex = "[\\sA-Za-z가-�R.,-]*"; |
|
| 1144 |
- if (name.length() > 60 || !paramChk(regex, name)) {
|
|
| 1145 |
- errMessage = "성명 비정상"; |
|
| 1146 |
- return returnPage(model, errMessage, kmcVO); |
|
| 1147 |
- } |
|
| 1148 |
- |
|
| 1149 |
- regex = "[A-Z]*"; |
|
| 1150 |
- if (result.length() != 1 || !paramChk(regex, result)) {
|
|
| 1151 |
- errMessage = "결과값 비정상"; |
|
| 1152 |
- return returnPage(model, errMessage, kmcVO); |
|
| 1153 |
- } |
|
| 1154 |
- |
|
| 1155 |
- regex = "[\\sA-Za-z가-?.,-]*"; |
|
| 1156 |
- if (M_name.length() != 0) {
|
|
| 1157 |
- if (M_name.length() > 60 || !paramChk(regex, M_name)) {
|
|
| 1158 |
- errMessage = "미성년자 성명 비정상"; |
|
| 1159 |
- return returnPage(model, errMessage, kmcVO); |
|
| 1160 |
- } |
|
| 1161 |
- } |
|
| 1162 |
- |
|
| 1163 |
- regex = "[0-9]*"; |
|
| 1164 |
- if (M_birthDay.length() != 0) {
|
|
| 1165 |
- if (M_birthDay.length() != 8 || !paramChk(regex, M_birthDay)) {
|
|
| 1166 |
- errMessage = "미성년자 생년월일 비정상"; |
|
| 1167 |
- return returnPage(model, errMessage, kmcVO); |
|
| 1168 |
- } |
|
| 1169 |
- } |
|
| 1170 |
- |
|
| 1171 |
- regex = "[0-9]*"; |
|
| 1172 |
- if (M_Gender.length() != 0) {
|
|
| 1173 |
- if (M_Gender.length() != 1 || !paramChk(regex, M_Gender)) {
|
|
| 1174 |
- errMessage = "미성년자 성별 비정상"; |
|
| 1175 |
- return returnPage(model, errMessage, kmcVO); |
|
| 1176 |
- } |
|
| 1177 |
- } |
|
| 1178 |
- |
|
| 1179 |
- regex = "[0-9]*"; |
|
| 1180 |
- if (M_nation.length() != 0) {
|
|
| 1181 |
- if (M_nation.length() != 1 || !paramChk(regex, M_nation)) {
|
|
| 1182 |
- errMessage = "미성년자 내/외국인 비정상"; |
|
| 1183 |
- return returnPage(model, errMessage, kmcVO); |
|
| 1184 |
- } |
|
| 1185 |
- } |
|
| 1186 |
- |
|
| 1187 |
- // KMC 본인인증 로그 |
|
| 1188 |
- AuthCertVO certVO = new AuthCertVO(); |
|
| 1189 |
- |
|
| 1190 |
- certVO.setMberId(kmcVO.getPlusInfo()); |
|
| 1191 |
- certVO.setCertNum(kmcVO.getCertNum()); |
|
| 1192 |
- certVO.setCertDate(kmcVO.getDate()); |
|
| 1193 |
- certVO.setCertDi(kmcVO.getDI()); |
|
| 1194 |
- certVO.setCertPhone(kmcVO.getPhoneNo()); |
|
| 1195 |
- certVO.setCertNation(kmcVO.getNation()); |
|
| 1196 |
- certVO.setCertName(kmcVO.getName()); |
|
| 1197 |
- certVO.setCertResult(kmcVO.getResult()); |
|
| 1198 |
- certVO.setCertType("KMC_주소록내보내기");
|
|
| 1199 |
- certVO.setCertIpaddr(kmcVO.getIp()); |
|
| 1200 |
- certVO.setBirthDay(kmcVO.getBirthDay()); |
|
| 1201 |
- certVO.setSexdstnCode(kmcVO.getGender()); |
|
| 1202 |
- |
|
| 1203 |
- // 디비 테이블에 저장하기 |
|
| 1204 |
- mberManageService.insertCertInfoLog(certVO); |
|
| 1205 |
- |
|
| 1206 |
- model.addAttribute("kmcVO", kmcVO);
|
|
| 1207 |
- return "web/addr/AddrSubmitKmcReqPage"; |
|
| 1208 |
- } |
|
| 1209 |
- |
|
| 1210 |
- |
|
| 1211 |
- |
|
| 1212 |
- |
|
| 1213 |
- // 파라미터 유효성 검증 -------------------------------------------- |
|
| 1214 |
- public Boolean paramChk(String patn, String param) {
|
|
| 1215 |
- Pattern pattern = Pattern.compile(patn); |
|
| 1216 |
- Matcher matcher = pattern.matcher(param); |
|
| 1217 |
- boolean b = matcher.matches(); |
|
| 1218 |
- return b; |
|
| 1219 |
- } |
|
| 1220 |
- |
|
| 1221 |
- // 파라미터 유효성 검증 -------------------------------------------- |
|
| 1222 |
- public String returnPage(ModelMap model, String errMessage, KmcVO kmcVO) {
|
|
| 1223 |
- kmcVO.setErrMessage(errMessage); |
|
| 1224 |
- model.addAttribute("kmcVO", kmcVO);
|
|
| 1225 |
- return "web/cop/nicepay/payRequestAjax"; |
|
| 1226 |
- } |
|
| 1227 |
- |
|
| 1228 |
- |
|
| 1229 |
-} |
|
| 1 |
+package itn.let.mjo.addr.web; |
|
| 2 |
+ |
|
| 3 |
+import java.util.List; |
|
| 4 |
+import java.util.Map; |
|
| 5 |
+import java.util.regex.Matcher; |
|
| 6 |
+import java.util.regex.Pattern; |
|
| 7 |
+ |
|
| 8 |
+import javax.annotation.Resource; |
|
| 9 |
+import javax.servlet.http.HttpServletRequest; |
|
| 10 |
+import javax.servlet.http.HttpServletResponse; |
|
| 11 |
+ |
|
| 12 |
+import org.springframework.stereotype.Controller; |
|
| 13 |
+import org.springframework.ui.Model; |
|
| 14 |
+import org.springframework.ui.ModelMap; |
|
| 15 |
+import org.springframework.web.bind.annotation.ModelAttribute; |
|
| 16 |
+import org.springframework.web.bind.annotation.RequestMapping; |
|
| 17 |
+import org.springframework.web.bind.annotation.RequestParam; |
|
| 18 |
+import org.springframework.web.bind.annotation.ResponseBody; |
|
| 19 |
+import org.springframework.web.servlet.ModelAndView; |
|
| 20 |
+import org.springframework.web.servlet.mvc.support.RedirectAttributes; |
|
| 21 |
+ |
|
| 22 |
+import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; |
|
| 23 |
+import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; |
|
| 24 |
+import itn.com.cmm.EgovMessageSource; |
|
| 25 |
+import itn.com.cmm.LoginVO; |
|
| 26 |
+import itn.com.cmm.util.RedirectUrlMaker; |
|
| 27 |
+import itn.com.utl.fcc.service.EgovStringUtil; |
|
| 28 |
+import itn.let.mjo.addr.service.AddrGroupService; |
|
| 29 |
+import itn.let.mjo.addr.service.AddrGroupVO; |
|
| 30 |
+import itn.let.mjo.addr.service.AddrService; |
|
| 31 |
+import itn.let.mjo.addr.service.AddrVO; |
|
| 32 |
+import itn.let.mjo.msgsent.service.MjonMsgSentService; |
|
| 33 |
+import itn.let.mjo.msgsent.service.MjonMsgSentVO; |
|
| 34 |
+import itn.let.mjo.pay.service.KmcVO; |
|
| 35 |
+import itn.let.uat.uia.service.AuthCertVO; |
|
| 36 |
+import itn.let.uat.uia.web.KmcCertChecker; |
|
| 37 |
+import itn.let.uss.umt.service.EgovMberManageService; |
|
| 38 |
+import itn.let.uss.umt.service.MberManageVO; |
|
| 39 |
+ |
|
| 40 |
+/** |
|
| 41 |
+ * 주소록 그룹에 관한 controller 클래스를 정의한다. |
|
| 42 |
+ * @author ITN |
|
| 43 |
+ * @since 2021.05.21 |
|
| 44 |
+ * @version 1.0 |
|
| 45 |
+ * @see |
|
| 46 |
+ * |
|
| 47 |
+ * <pre> |
|
| 48 |
+ * << 개정이력(Modification Information) >> |
|
| 49 |
+ * |
|
| 50 |
+ * 수정일 수정자 수정내용 |
|
| 51 |
+ * ------- -------- --------------------------- |
|
| 52 |
+ * 2021.04.08 ITN 최초 생성 |
|
| 53 |
+ * |
|
| 54 |
+ * </pre> |
|
| 55 |
+ */ |
|
| 56 |
+@Controller |
|
| 57 |
+public class AddrGroupController {
|
|
| 58 |
+ @Resource(name = "MjonMsgSentService") |
|
| 59 |
+ private MjonMsgSentService mjonMsgSentService; |
|
| 60 |
+ |
|
| 61 |
+ @Resource (name = "AddrGroupService") |
|
| 62 |
+ private AddrGroupService addrGroupService; |
|
| 63 |
+ |
|
| 64 |
+ @Resource (name = "AddrService") |
|
| 65 |
+ private AddrService addrService; |
|
| 66 |
+ |
|
| 67 |
+ /** EgovMessageSource */ |
|
| 68 |
+ @Resource(name="egovMessageSource") |
|
| 69 |
+ EgovMessageSource egovMessageSource; |
|
| 70 |
+ |
|
| 71 |
+ /** mberManageService */ |
|
| 72 |
+ @Resource(name = "mberManageService") |
|
| 73 |
+ private EgovMberManageService mberManageService; |
|
| 74 |
+ |
|
| 75 |
+ /** |
|
| 76 |
+ * 주소록 그룹 리스트 |
|
| 77 |
+ * @param addrGroupVO |
|
| 78 |
+ * @param model |
|
| 79 |
+ * @return |
|
| 80 |
+ * @throws Exception |
|
| 81 |
+ */ |
|
| 82 |
+ @RequestMapping("/uss/ion/addr/selectAddrGroupList.do")
|
|
| 83 |
+ public String selectAddrGroupList(@ModelAttribute("searchVO") AddrGroupVO addrGroupVO
|
|
| 84 |
+ ,ModelMap model) throws Exception {
|
|
| 85 |
+ |
|
| 86 |
+ if(addrGroupVO.getPageUnit() != 10) {
|
|
| 87 |
+ addrGroupVO.setPageUnit(addrGroupVO.getPageUnit()); |
|
| 88 |
+ } |
|
| 89 |
+ |
|
| 90 |
+ /** pageing */ |
|
| 91 |
+ PaginationInfo paginationInfo = new PaginationInfo(); |
|
| 92 |
+ paginationInfo.setCurrentPageNo(addrGroupVO.getPageIndex()); |
|
| 93 |
+ paginationInfo.setRecordCountPerPage(addrGroupVO.getPageUnit()); |
|
| 94 |
+ paginationInfo.setPageSize(addrGroupVO.getPageSize()); |
|
| 95 |
+ |
|
| 96 |
+ addrGroupVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); |
|
| 97 |
+ addrGroupVO.setLastIndex(paginationInfo.getLastRecordIndex()); |
|
| 98 |
+ addrGroupVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); |
|
| 99 |
+ |
|
| 100 |
+ if("".equals(addrGroupVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
|
| 101 |
+ addrGroupVO.setSearchSortCnd("addrGrpId");
|
|
| 102 |
+ addrGroupVO.setSearchSortOrd("desc");
|
|
| 103 |
+ } |
|
| 104 |
+ |
|
| 105 |
+ addrGroupVO.setSiteId("admin");
|
|
| 106 |
+ List<AddrGroupVO> addrGroupList = addrGroupService.selectAddrGroupList(addrGroupVO); |
|
| 107 |
+ |
|
| 108 |
+ int totCnt = 0; |
|
| 109 |
+ if(addrGroupList.size() > 0) {
|
|
| 110 |
+ totCnt = addrGroupList.get(0).getTotcnt(); |
|
| 111 |
+ } |
|
| 112 |
+ |
|
| 113 |
+ paginationInfo.setTotalRecordCount(totCnt); |
|
| 114 |
+ model.addAttribute("addrGroupList", addrGroupList);
|
|
| 115 |
+ model.addAttribute("paginationInfo", paginationInfo);
|
|
| 116 |
+ |
|
| 117 |
+ |
|
| 118 |
+ return "/uss/ion/addr/AddrGroupList"; |
|
| 119 |
+ |
|
| 120 |
+ } |
|
| 121 |
+ |
|
| 122 |
+ |
|
| 123 |
+ /** |
|
| 124 |
+ * 주소록 그룹 리스트 |
|
| 125 |
+ * @param addrGroupVO |
|
| 126 |
+ * @param model |
|
| 127 |
+ * @return |
|
| 128 |
+ * @throws Exception |
|
| 129 |
+ */ |
|
| 130 |
+ @RequestMapping("/uss/ion/addr/selectAddrGroupListAjax.do")
|
|
| 131 |
+ public ModelAndView selectAddrGroupListAdminAjax(@ModelAttribute("searchVO") AddrGroupVO addrGroupVO, AddrVO addrVO
|
|
| 132 |
+ ,ModelMap model, RedirectAttributes redirectAttributes) throws Exception {
|
|
| 133 |
+ |
|
| 134 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 135 |
+ modelAndView.setViewName("jsonView");
|
|
| 136 |
+ |
|
| 137 |
+ if("".equals(addrGroupVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
|
| 138 |
+ addrGroupVO.setSearchSortCnd("grpOrder");
|
|
| 139 |
+ addrGroupVO.setSearchSortOrd("desc");
|
|
| 140 |
+ } |
|
| 141 |
+ |
|
| 142 |
+ List<AddrGroupVO> addrGroupList = addrGroupService.selectAddrGroupList(addrGroupVO); |
|
| 143 |
+ |
|
| 144 |
+ modelAndView.addObject("addrGroupList", addrGroupList);
|
|
| 145 |
+ modelAndView.addObject("addrGroupListCnt", addrGroupList.size());
|
|
| 146 |
+ return modelAndView; |
|
| 147 |
+ |
|
| 148 |
+ } |
|
| 149 |
+ |
|
| 150 |
+ |
|
| 151 |
+ |
|
| 152 |
+ /** |
|
| 153 |
+ * 주소록 그룹 리스트 |
|
| 154 |
+ * @param addrGroupVO |
|
| 155 |
+ * @param model |
|
| 156 |
+ * @return |
|
| 157 |
+ * @throws Exception |
|
| 158 |
+ */ |
|
| 159 |
+ @RequestMapping("/web/addr/selectAddrGroupListAjax.do")
|
|
| 160 |
+ public String selectAddrGroupListAjax(@ModelAttribute("searchVO") AddrGroupVO addrGroupVO, AddrVO addrVO
|
|
| 161 |
+ ,ModelMap model, RedirectAttributes redirectAttributes) throws Exception {
|
|
| 162 |
+ |
|
| 163 |
+ //로그인 권한정보 불러오기 |
|
| 164 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 165 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 166 |
+ |
|
| 167 |
+ if(userId != "") {
|
|
| 168 |
+ addrGroupVO.setMberId(userId); |
|
| 169 |
+ addrVO.setMberId(userId); |
|
| 170 |
+ } else {
|
|
| 171 |
+ redirectAttributes.addFlashAttribute("fail", true);
|
|
| 172 |
+ return "redirect:/web/user/login/login.do"; |
|
| 173 |
+ } |
|
| 174 |
+ |
|
| 175 |
+ |
|
| 176 |
+ if(addrGroupVO.getPageUnit() != 10) {
|
|
| 177 |
+ addrGroupVO.setPageUnit(addrGroupVO.getPageUnit()); |
|
| 178 |
+ } |
|
| 179 |
+ |
|
| 180 |
+ if("".equals(addrGroupVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
|
| 181 |
+ addrGroupVO.setSearchSortCnd("grpOrder");
|
|
| 182 |
+ addrGroupVO.setSearchSortOrd("desc");
|
|
| 183 |
+ } |
|
| 184 |
+ |
|
| 185 |
+ addrGroupVO.setSiteId("web");
|
|
| 186 |
+ List<AddrGroupVO> addrGroupList = addrGroupService.selectAddrGroupList(addrGroupVO); |
|
| 187 |
+ |
|
| 188 |
+ |
|
| 189 |
+// * JSPark 2023.08.30 => Ajax 로 변경 |
|
| 190 |
+ //회원별 주소록 전체 갯수 조회 |
|
| 191 |
+// int addrTotalCount = addrService.selectAddrTotalCount(addrVO); |
|
| 192 |
+ addrVO.setType("bookmark");
|
|
| 193 |
+ List<AddrVO> addrBookmarkList = addrService.selectAddrBasicGrpList(addrVO); |
|
| 194 |
+ |
|
| 195 |
+ addrVO.setType("noGrp");
|
|
| 196 |
+ List<AddrVO> addrNoGrpList = addrService.selectAddrBasicGrpList(addrVO); |
|
| 197 |
+ |
|
| 198 |
+ int totalGrpCount = addrGroupList.stream() |
|
| 199 |
+ .mapToInt(group -> {
|
|
| 200 |
+ String grpCountStr = group.getGrpCount(); |
|
| 201 |
+ if (grpCountStr != null && !grpCountStr.isEmpty()) {
|
|
| 202 |
+ try {
|
|
| 203 |
+ return Integer.parseInt(grpCountStr); |
|
| 204 |
+ } catch (NumberFormatException e) {
|
|
| 205 |
+ // 파싱에 실패한 경우 0을 반환하거나 예외 처리를 합니다. |
|
| 206 |
+ return 0; |
|
| 207 |
+ } |
|
| 208 |
+ } else {
|
|
| 209 |
+ return 0; |
|
| 210 |
+ } |
|
| 211 |
+ }) |
|
| 212 |
+ .sum(); |
|
| 213 |
+ |
|
| 214 |
+ // 결과 출력 |
|
| 215 |
+ |
|
| 216 |
+ System.out.println("totalGrpCount :: "+ totalGrpCount);
|
|
| 217 |
+ |
|
| 218 |
+ int addrTotalCount = (addrNoGrpList.size() >0 ? addrNoGrpList.get(0).getTotcnt() : 0) |
|
| 219 |
+ + (addrBookmarkList.size() >0 ? addrBookmarkList.get(0).getTotcnt() : 0) |
|
| 220 |
+ + totalGrpCount |
|
| 221 |
+ ; |
|
| 222 |
+ |
|
| 223 |
+ model.addAttribute("addrTotalCount", addrTotalCount);
|
|
| 224 |
+ model.addAttribute("addrBookmarkCnt", addrBookmarkList.size() >0 ? addrBookmarkList.get(0).getTotcnt() : 0);
|
|
| 225 |
+ model.addAttribute("addrNoGrpCnt", addrNoGrpList.size() >0 ? addrNoGrpList.get(0).getTotcnt() : 0);
|
|
| 226 |
+ |
|
| 227 |
+ model.addAttribute("addrGroupList", addrGroupList);
|
|
| 228 |
+ model.addAttribute("userId", userId);
|
|
| 229 |
+ |
|
| 230 |
+ return "/web/addr/AddrGroupListAjax"; |
|
| 231 |
+ |
|
| 232 |
+ } |
|
| 233 |
+ |
|
| 234 |
+ |
|
| 235 |
+ /** |
|
| 236 |
+ * 주소록 합치기 팝업 리스트 |
|
| 237 |
+ * @param addrGroupVO |
|
| 238 |
+ * @param model |
|
| 239 |
+ * @return |
|
| 240 |
+ * @throws Exception |
|
| 241 |
+ */ |
|
| 242 |
+ @RequestMapping("/web/addr/selectAddrGroupMergetAjax.do")
|
|
| 243 |
+ public ModelAndView selectAddrGroupMergetAjax(@ModelAttribute("searchVO") AddrGroupVO addrGroupVO, AddrVO addrVO
|
|
| 244 |
+ , ModelMap model) throws Exception {
|
|
| 245 |
+ |
|
| 246 |
+ |
|
| 247 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 248 |
+ modelAndView.setViewName("jsonView");
|
|
| 249 |
+ |
|
| 250 |
+ //로그인 권한정보 불러오기 |
|
| 251 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 252 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 253 |
+ |
|
| 254 |
+ if(userId != "") {
|
|
| 255 |
+ addrGroupVO.setMberId(userId); |
|
| 256 |
+ addrVO.setMberId(userId); |
|
| 257 |
+ } |
|
| 258 |
+ |
|
| 259 |
+ if(addrGroupVO.getPageUnit() != 10) {
|
|
| 260 |
+ addrGroupVO.setPageUnit(addrGroupVO.getPageUnit()); |
|
| 261 |
+ } |
|
| 262 |
+ |
|
| 263 |
+ if("".equals(addrGroupVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
|
| 264 |
+ addrGroupVO.setSearchSortCnd("addrGrpId");
|
|
| 265 |
+ addrGroupVO.setSearchSortOrd("desc");
|
|
| 266 |
+ } |
|
| 267 |
+ |
|
| 268 |
+ addrGroupVO.setSiteId("web");
|
|
| 269 |
+ List<AddrGroupVO> addrGroupList = addrGroupService.selectAddrGroupList(addrGroupVO); |
|
| 270 |
+ |
|
| 271 |
+ model.addAttribute("addrGroupList", addrGroupList);
|
|
| 272 |
+ modelAndView.addObject("status", "success");
|
|
| 273 |
+ |
|
| 274 |
+ return modelAndView; |
|
| 275 |
+ |
|
| 276 |
+ } |
|
| 277 |
+ |
|
| 278 |
+ |
|
| 279 |
+ |
|
| 280 |
+ /** |
|
| 281 |
+ * 주소록 그룹 등록 페이지 이동 |
|
| 282 |
+ * @param addrGroupVO |
|
| 283 |
+ * @param model |
|
| 284 |
+ * @return |
|
| 285 |
+ * @throws Exception |
|
| 286 |
+ */ |
|
| 287 |
+ @RequestMapping("/uss/ion/addr/registAddrGroup.do")
|
|
| 288 |
+ public String registAddrGroup(AddrGroupVO addrGroupVO, ModelMap model) throws Exception {
|
|
| 289 |
+ |
|
| 290 |
+ model.addAttribute("addrGroupVO", addrGroupVO);
|
|
| 291 |
+ return "/uss/ion/addr/AddrGroupRegist"; |
|
| 292 |
+ } |
|
| 293 |
+ |
|
| 294 |
+ |
|
| 295 |
+ |
|
| 296 |
+ /** |
|
| 297 |
+ * 주소록 그룹 등록 로직 |
|
| 298 |
+ * @param addrGroupVO |
|
| 299 |
+ * @param redirectAttributes |
|
| 300 |
+ * @param request |
|
| 301 |
+ * @return |
|
| 302 |
+ * @throws Exception |
|
| 303 |
+ */ |
|
| 304 |
+ @RequestMapping("/uss/ion/addr/insertAddrGroup.do")
|
|
| 305 |
+ public String insertAddrGroup(AddrGroupVO addrGroupVO |
|
| 306 |
+ ,RedirectAttributes redirectAttributes |
|
| 307 |
+ ,HttpServletRequest request) throws Exception {
|
|
| 308 |
+ |
|
| 309 |
+ try {
|
|
| 310 |
+ LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 311 |
+ |
|
| 312 |
+ if( addrGroupVO.getMberId() == null || "".equals(addrGroupVO.getMberId()) ) {
|
|
| 313 |
+ addrGroupVO.setMberId(user.getId()); |
|
| 314 |
+ } |
|
| 315 |
+ |
|
| 316 |
+ //주소록 그룹 이름 불러오기(중복체크 용) |
|
| 317 |
+ MjonMsgSentVO mjonMsgSentVO = new MjonMsgSentVO(); |
|
| 318 |
+ mjonMsgSentVO.setUserId(addrGroupVO.getMberId()); |
|
| 319 |
+ mjonMsgSentVO.setAddrGrpNm(addrGroupVO.getAddrGrpNm()); |
|
| 320 |
+ List<AddrGroupVO> resultAddrGrpList = mjonMsgSentService.selectAddrGrpNmList(mjonMsgSentVO); |
|
| 321 |
+ if(resultAddrGrpList.size() > 0) { //기존 같은 이름의 그룹이 있으면 해당 그룹에 연락처를 추가해줌
|
|
| 322 |
+ redirectAttributes.addFlashAttribute("message", "같은 이름의 그룹명이 있습니다.");
|
|
| 323 |
+ } |
|
| 324 |
+ else {
|
|
| 325 |
+ addrGroupService.insertAddrGroup(addrGroupVO); |
|
| 326 |
+ redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.insert"));
|
|
| 327 |
+ } |
|
| 328 |
+ }catch (Exception e) {
|
|
| 329 |
+ redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.insert"));
|
|
| 330 |
+ } |
|
| 331 |
+ |
|
| 332 |
+ RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/addr/selectAddrGroupList.do");
|
|
| 333 |
+ return redirectUrlMaker.getRedirectUrl(); |
|
| 334 |
+ } |
|
| 335 |
+ |
|
| 336 |
+ |
|
| 337 |
+ /** |
|
| 338 |
+ * 주소록 그룹 등록 로직 (ajax) |
|
| 339 |
+ * @param addrGroupVO |
|
| 340 |
+ * @param request |
|
| 341 |
+ * @return |
|
| 342 |
+ * @throws Exception |
|
| 343 |
+ */ |
|
| 344 |
+ @RequestMapping("/web/addr/insertAddrGroupAjax.do")
|
|
| 345 |
+ public ModelAndView insertAddrGroup(HttpServletRequest request, ModelMap model, |
|
| 346 |
+ AddrGroupVO addrGroupVO |
|
| 347 |
+ ) throws Exception {
|
|
| 348 |
+ ModelAndView mv = new ModelAndView(); |
|
| 349 |
+ mv.setViewName("jsonView");
|
|
| 350 |
+ |
|
| 351 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 352 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 353 |
+ |
|
| 354 |
+ addrGroupVO.setMberId(userId); |
|
| 355 |
+ |
|
| 356 |
+ int usedCnt = addrGroupService.selectDuplAddrGroupCnt(addrGroupVO); |
|
| 357 |
+ if(usedCnt > 0) {
|
|
| 358 |
+ mv.addObject("result","dupl");
|
|
| 359 |
+ }else {
|
|
| 360 |
+ if(userId != "") {
|
|
| 361 |
+ try {
|
|
| 362 |
+ addrGroupService.insertAddrGroup(addrGroupVO); |
|
| 363 |
+ mv.addObject("result","success");
|
|
| 364 |
+ } catch (Exception e) {
|
|
| 365 |
+ e.printStackTrace(); |
|
| 366 |
+ mv.addObject("result","fail");
|
|
| 367 |
+ } |
|
| 368 |
+ } else {
|
|
| 369 |
+ mv.addObject("result","fail");
|
|
| 370 |
+ } |
|
| 371 |
+ } |
|
| 372 |
+ return mv; |
|
| 373 |
+ } |
|
| 374 |
+ |
|
| 375 |
+ /** |
|
| 376 |
+ * 주소록 그룹 중복체크 로직 (ajax) |
|
| 377 |
+ * @param addrGroupVO |
|
| 378 |
+ * @param request |
|
| 379 |
+ * @return |
|
| 380 |
+ * @throws Exception |
|
| 381 |
+ */ |
|
| 382 |
+ @RequestMapping("/web/addr/getAddrGroupDuplCheckAjax.do")
|
|
| 383 |
+ public ModelAndView getAddrGroupDuplCheckAjax(HttpServletRequest request, ModelMap model, |
|
| 384 |
+ AddrGroupVO addrGroupVO |
|
| 385 |
+ ) throws Exception {
|
|
| 386 |
+ System.out.println(" :: /web/addr/getAddrGroupDuplCheckAjax.do :: ");
|
|
| 387 |
+ System.out.println(" :: /web/addr/getAddrGroupDuplCheckAjax.do :: ");
|
|
| 388 |
+ System.out.println(" :: /web/addr/getAddrGroupDuplCheckAjax.do :: ");
|
|
| 389 |
+ System.out.println(" :: addrGrpNm :: "+ addrGroupVO.getAddrGrpNm());
|
|
| 390 |
+ |
|
| 391 |
+ ModelAndView mv = new ModelAndView(); |
|
| 392 |
+ mv.setViewName("jsonView");
|
|
| 393 |
+ |
|
| 394 |
+ boolean isSuccess = true; |
|
| 395 |
+ boolean isDupl = false; |
|
| 396 |
+ String msg = ""; |
|
| 397 |
+ |
|
| 398 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 399 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 400 |
+ |
|
| 401 |
+ try {
|
|
| 402 |
+ addrGroupVO.setMberId(userId); |
|
| 403 |
+ |
|
| 404 |
+ int usedCnt = addrGroupService.selectDuplAddrGroupCnt(addrGroupVO); |
|
| 405 |
+ if(usedCnt > 0) {
|
|
| 406 |
+ isDupl = true; |
|
| 407 |
+ } |
|
| 408 |
+ } |
|
| 409 |
+ catch(Exception e) {
|
|
| 410 |
+ isSuccess = false; |
|
| 411 |
+ msg = e.getMessage(); |
|
| 412 |
+ } |
|
| 413 |
+ |
|
| 414 |
+ mv.addObject("isSuccess", isSuccess);
|
|
| 415 |
+ mv.addObject("isDupl", isDupl);
|
|
| 416 |
+ mv.addObject("msg", msg);
|
|
| 417 |
+ |
|
| 418 |
+ return mv; |
|
| 419 |
+ } |
|
| 420 |
+ |
|
| 421 |
+ |
|
| 422 |
+ /** |
|
| 423 |
+ * 주소록 등록 페이지(ajax) |
|
| 424 |
+ * @param addrGroupVO |
|
| 425 |
+ * @param redirectAttributes |
|
| 426 |
+ * @param request |
|
| 427 |
+ * @return |
|
| 428 |
+ * @throws Exception |
|
| 429 |
+ */ |
|
| 430 |
+ @RequestMapping("/web/addr/selectAddrGroupAjax.do")
|
|
| 431 |
+ public String selectAddrGroupAjax(HttpServletRequest request, ModelMap model, |
|
| 432 |
+ AddrGroupVO addrGroupVO, AddrVO addrVO, RedirectAttributes redirectAttributes |
|
| 433 |
+ ) throws Exception {
|
|
| 434 |
+ |
|
| 435 |
+ //로그인 권한정보 불러오기 |
|
| 436 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 437 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 438 |
+ |
|
| 439 |
+ if(userId != "") {
|
|
| 440 |
+ addrGroupVO.setMberId(userId); |
|
| 441 |
+ addrVO.setMberId(userId); |
|
| 442 |
+ } else {
|
|
| 443 |
+ redirectAttributes.addFlashAttribute("fail", true);
|
|
| 444 |
+ return "redirect:/web/user/login/login.do"; |
|
| 445 |
+ } |
|
| 446 |
+ |
|
| 447 |
+ if(addrGroupVO.getPageUnit() != 10) {
|
|
| 448 |
+ addrGroupVO.setPageUnit(addrGroupVO.getPageUnit()); |
|
| 449 |
+ } |
|
| 450 |
+ |
|
| 451 |
+ addrGroupVO.setSiteId("web");
|
|
| 452 |
+ List<AddrGroupVO> addrGroupList = addrGroupService.selectAddrGroupList(addrGroupVO); |
|
| 453 |
+ |
|
| 454 |
+ model.addAttribute("addrGroupList", addrGroupList);
|
|
| 455 |
+ |
|
| 456 |
+ |
|
| 457 |
+ return "/web/addr/AddrGroupSelectAjax"; |
|
| 458 |
+ } |
|
| 459 |
+ |
|
| 460 |
+ // 주소록 그룹 카운트 조회(전체) Ajax |
|
| 461 |
+ @RequestMapping("/web/addr/selectAddrGroupTotCntAjax.do")
|
|
| 462 |
+ public ModelAndView selectAddrGroupTotCntAjax(HttpServletRequest request, |
|
| 463 |
+ @ModelAttribute("searchVO") AddrGroupVO addrGroupVO
|
|
| 464 |
+ , Model model) throws Exception {
|
|
| 465 |
+ |
|
| 466 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 467 |
+ modelAndView.setViewName("jsonView");
|
|
| 468 |
+ |
|
| 469 |
+ boolean isSuccess = true; |
|
| 470 |
+ String msg = ""; |
|
| 471 |
+ int addrTotCnt = 0; |
|
| 472 |
+ |
|
| 473 |
+ try{
|
|
| 474 |
+ LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 475 |
+ addrGroupVO.setMberId(user.getId()); |
|
| 476 |
+ |
|
| 477 |
+ addrGroupVO = addrGroupService.selectAddrGroupTotCnt(addrGroupVO); |
|
| 478 |
+ if (addrGroupVO != null) {
|
|
| 479 |
+ addrTotCnt = addrGroupVO.getAddrTotCnt(); |
|
| 480 |
+ } |
|
| 481 |
+ } |
|
| 482 |
+ catch(Exception e) {
|
|
| 483 |
+ isSuccess = false; |
|
| 484 |
+ msg = e.getMessage(); |
|
| 485 |
+ } |
|
| 486 |
+ |
|
| 487 |
+ modelAndView.addObject("isSuccess", isSuccess);
|
|
| 488 |
+ modelAndView.addObject("msg", msg);
|
|
| 489 |
+ modelAndView.addObject("addrTotCnt", addrTotCnt);
|
|
| 490 |
+ |
|
| 491 |
+ return modelAndView; |
|
| 492 |
+ } |
|
| 493 |
+ |
|
| 494 |
+ // 주소록 그룹 카운트 조회(전체) Ajax |
|
| 495 |
+ @RequestMapping("/web/addr/selectAddrGroupNogrpCntAjax.do")
|
|
| 496 |
+ public ModelAndView selectAddrGroupNogrpCntAjax(HttpServletRequest request, |
|
| 497 |
+ @ModelAttribute("searchVO") AddrGroupVO addrGroupVO
|
|
| 498 |
+ , Model model) throws Exception {
|
|
| 499 |
+ |
|
| 500 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 501 |
+ modelAndView.setViewName("jsonView");
|
|
| 502 |
+ |
|
| 503 |
+ boolean isSuccess = true; |
|
| 504 |
+ String msg = ""; |
|
| 505 |
+ int nogrpCnt = 0; |
|
| 506 |
+ |
|
| 507 |
+ try{
|
|
| 508 |
+ LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 509 |
+ addrGroupVO.setMberId(user.getId()); |
|
| 510 |
+ |
|
| 511 |
+ addrGroupVO = addrGroupService.selectAddrGroupNogrpCnt(addrGroupVO); |
|
| 512 |
+ if (addrGroupVO != null) {
|
|
| 513 |
+ nogrpCnt = addrGroupVO.getNogrpCnt(); |
|
| 514 |
+ } |
|
| 515 |
+ } |
|
| 516 |
+ catch(Exception e) {
|
|
| 517 |
+ isSuccess = false; |
|
| 518 |
+ msg = e.getMessage(); |
|
| 519 |
+ } |
|
| 520 |
+ |
|
| 521 |
+ modelAndView.addObject("isSuccess", isSuccess);
|
|
| 522 |
+ modelAndView.addObject("msg", msg);
|
|
| 523 |
+ modelAndView.addObject("nogrpCnt", nogrpCnt);
|
|
| 524 |
+ |
|
| 525 |
+ return modelAndView; |
|
| 526 |
+ } |
|
| 527 |
+ |
|
| 528 |
+ // 주소록 그룹 카운트 조회(전체) Ajax |
|
| 529 |
+ @RequestMapping("/web/addr/selectAddrGroupBookmarkCntAjax.do")
|
|
| 530 |
+ public ModelAndView selectAddrGroupBookmarkCntAjax(HttpServletRequest request, |
|
| 531 |
+ @ModelAttribute("searchVO") AddrGroupVO addrGroupVO
|
|
| 532 |
+ , Model model) throws Exception {
|
|
| 533 |
+ |
|
| 534 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 535 |
+ modelAndView.setViewName("jsonView");
|
|
| 536 |
+ |
|
| 537 |
+ boolean isSuccess = true; |
|
| 538 |
+ String msg = ""; |
|
| 539 |
+ int bookmarkCnt = 0; |
|
| 540 |
+ |
|
| 541 |
+ try{
|
|
| 542 |
+ LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 543 |
+ addrGroupVO.setMberId(user.getId()); |
|
| 544 |
+ |
|
| 545 |
+ addrGroupVO = addrGroupService.selectAddrGroupBookmarkCnt(addrGroupVO); |
|
| 546 |
+ if (addrGroupVO != null) {
|
|
| 547 |
+ bookmarkCnt = addrGroupVO.getBookmarkCnt(); |
|
| 548 |
+ } |
|
| 549 |
+ } |
|
| 550 |
+ catch(Exception e) {
|
|
| 551 |
+ isSuccess = false; |
|
| 552 |
+ msg = e.getMessage(); |
|
| 553 |
+ } |
|
| 554 |
+ |
|
| 555 |
+ modelAndView.addObject("isSuccess", isSuccess);
|
|
| 556 |
+ modelAndView.addObject("msg", msg);
|
|
| 557 |
+ modelAndView.addObject("bookmarkCnt", bookmarkCnt);
|
|
| 558 |
+ |
|
| 559 |
+ return modelAndView; |
|
| 560 |
+ } |
|
| 561 |
+ |
|
| 562 |
+ /** |
|
| 563 |
+ * 주소록 그룹 수정 로직 |
|
| 564 |
+ * |
|
| 565 |
+ * @param addrGroupVO |
|
| 566 |
+ * @param redirectAttributes |
|
| 567 |
+ * @param request |
|
| 568 |
+ * @return |
|
| 569 |
+ * @throws Exception |
|
| 570 |
+ */ |
|
| 571 |
+ @RequestMapping("/uss/ion/addr/updateAddrGroupAjax.do")
|
|
| 572 |
+ public ModelAndView updateAddrGroupAjax(AddrGroupVO addrGroupVO |
|
| 573 |
+ ,RedirectAttributes redirectAttributes |
|
| 574 |
+ ,HttpServletRequest request |
|
| 575 |
+ ,HttpServletResponse response |
|
| 576 |
+ ) throws Exception{
|
|
| 577 |
+ |
|
| 578 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 579 |
+ modelAndView.setViewName("jsonView");
|
|
| 580 |
+ |
|
| 581 |
+ boolean isSuccess = true; |
|
| 582 |
+ String msg = ""; |
|
| 583 |
+ |
|
| 584 |
+ try {
|
|
| 585 |
+ //주소록 그룹 이름 불러오기(중복체크 용) |
|
| 586 |
+ MjonMsgSentVO mjonMsgSentVO = new MjonMsgSentVO(); |
|
| 587 |
+ mjonMsgSentVO.setUserId(addrGroupVO.getMberId()); |
|
| 588 |
+ mjonMsgSentVO.setAddrGrpNm(addrGroupVO.getAddrGrpNm()); |
|
| 589 |
+ List<AddrGroupVO> resultAddrGrpList = mjonMsgSentService.selectAddrGrpNmList(mjonMsgSentVO); |
|
| 590 |
+ if(resultAddrGrpList.size() > 0) { //기존 같은 이름의 그룹이 있으면 해당 그룹에 연락처를 추가해줌
|
|
| 591 |
+ isSuccess = false; |
|
| 592 |
+ msg = "같은 이름의 그룹명이 있습니다."; |
|
| 593 |
+ } |
|
| 594 |
+ else {
|
|
| 595 |
+ addrGroupService.updateAddrGroup(addrGroupVO); |
|
| 596 |
+ } |
|
| 597 |
+ } |
|
| 598 |
+ catch(Exception e) {
|
|
| 599 |
+ isSuccess = false; |
|
| 600 |
+ msg = "에러메시지 : " + e.getMessage(); |
|
| 601 |
+ e.printStackTrace(); |
|
| 602 |
+ } |
|
| 603 |
+ |
|
| 604 |
+ modelAndView.addObject("isSuccess", isSuccess);
|
|
| 605 |
+ modelAndView.addObject("msg", msg);
|
|
| 606 |
+ |
|
| 607 |
+ return modelAndView; |
|
| 608 |
+ |
|
| 609 |
+ } |
|
| 610 |
+ |
|
| 611 |
+ |
|
| 612 |
+ /** |
|
| 613 |
+ * 주소록 그룹 수정 로직 Ajax |
|
| 614 |
+ * |
|
| 615 |
+ * @param request |
|
| 616 |
+ * @param addrGroupVO |
|
| 617 |
+ * @param redirectAttributes |
|
| 618 |
+ * @param model |
|
| 619 |
+ * @return |
|
| 620 |
+ * @throws Exception |
|
| 621 |
+ */ |
|
| 622 |
+ @RequestMapping("/web/addr/updateAddrGroupAjax.do")
|
|
| 623 |
+ public ModelAndView updateAddrGroupAjax(@RequestParam("addrGrpNms") String[] addrGrpNms,
|
|
| 624 |
+ @RequestParam("addrGrpIds") String[] addrGrpIds,
|
|
| 625 |
+ HttpServletRequest request, |
|
| 626 |
+ @ModelAttribute("searchVO") AddrGroupVO addrGroupVO, Model model
|
|
| 627 |
+ ,RedirectAttributes redirectAttributes |
|
| 628 |
+ ) throws Exception {
|
|
| 629 |
+ |
|
| 630 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 631 |
+ modelAndView.setViewName("jsonView");
|
|
| 632 |
+ |
|
| 633 |
+ LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 634 |
+ addrGroupVO.setLastUpdusrId(user.getId()); |
|
| 635 |
+ addrGroupVO.setMberId(user.getId()); |
|
| 636 |
+ |
|
| 637 |
+ boolean dupl = false; |
|
| 638 |
+ for (int i=0; i<addrGrpNms.length; i++) {
|
|
| 639 |
+ String str1 = addrGrpNms[i]; |
|
| 640 |
+ for (int j=0; j<addrGrpNms.length; j++) {
|
|
| 641 |
+ if (i == j) continue; |
|
| 642 |
+ String str2 = addrGrpNms[j]; |
|
| 643 |
+ if (str1.equals(str2)) {
|
|
| 644 |
+ dupl = true; |
|
| 645 |
+ break; |
|
| 646 |
+ } |
|
| 647 |
+ } |
|
| 648 |
+ } |
|
| 649 |
+ |
|
| 650 |
+ if(dupl) {
|
|
| 651 |
+ modelAndView.addObject("result", "dupl");
|
|
| 652 |
+ } else {
|
|
| 653 |
+ for(int i=0; i<addrGrpIds.length; i++) {
|
|
| 654 |
+ try {
|
|
| 655 |
+ addrGroupVO.setAddrGrpNm(addrGrpNms[i]); |
|
| 656 |
+ addrGroupVO.setAddrGrpId(addrGrpIds[i]); |
|
| 657 |
+ addrGroupVO.setGrpOrder(i+1); |
|
| 658 |
+ addrGroupService.updateAddrGroup(addrGroupVO); |
|
| 659 |
+ |
|
| 660 |
+ |
|
| 661 |
+ } catch (Exception e) {
|
|
| 662 |
+ e.printStackTrace(); |
|
| 663 |
+ modelAndView.addObject("result", "fail");
|
|
| 664 |
+ return modelAndView; |
|
| 665 |
+ } |
|
| 666 |
+ } |
|
| 667 |
+ } |
|
| 668 |
+ return modelAndView; |
|
| 669 |
+ |
|
| 670 |
+ } |
|
| 671 |
+ |
|
| 672 |
+ |
|
| 673 |
+ |
|
| 674 |
+ /** |
|
| 675 |
+ * 주소록 그룹 수정 페이지 이동 |
|
| 676 |
+ * |
|
| 677 |
+ * @param addrGroupVO |
|
| 678 |
+ * @param model |
|
| 679 |
+ * @return |
|
| 680 |
+ * @throws Exception |
|
| 681 |
+ */ |
|
| 682 |
+ @RequestMapping("/uss/ion/addr/editAddrGroup.do")
|
|
| 683 |
+ public String editAddrGroup(AddrGroupVO addrGroupVO |
|
| 684 |
+ , ModelMap model ) throws Exception {
|
|
| 685 |
+ |
|
| 686 |
+ model.addAttribute("searchVO", addrGroupVO);
|
|
| 687 |
+ model.addAttribute("addrGrpInfo", addrGroupService.selectAddrGroupDetail(addrGroupVO));
|
|
| 688 |
+ |
|
| 689 |
+ return "/uss/ion/addr/AddrGroupEdit"; |
|
| 690 |
+ } |
|
| 691 |
+ |
|
| 692 |
+ |
|
| 693 |
+ /** |
|
| 694 |
+ * 주소록 그룹 삭제 로직 |
|
| 695 |
+ * |
|
| 696 |
+ * @param request |
|
| 697 |
+ * @param addrGroupVO |
|
| 698 |
+ * @param redirectAttributes |
|
| 699 |
+ * @param model |
|
| 700 |
+ * @return |
|
| 701 |
+ * @throws Exception |
|
| 702 |
+ */ |
|
| 703 |
+ @RequestMapping("/uss/ion/addr/deleteAddrGroup.do")
|
|
| 704 |
+ public String deleteAddrGroup(HttpServletRequest request, @ModelAttribute("searchVO") AddrGroupVO addrGroupVO
|
|
| 705 |
+ ,RedirectAttributes redirectAttributes |
|
| 706 |
+ ,ModelMap model) throws Exception {
|
|
| 707 |
+ |
|
| 708 |
+ LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 709 |
+ |
|
| 710 |
+ addrGroupVO.setLastUpdusrId(user.getUniqId()); |
|
| 711 |
+ |
|
| 712 |
+ // 1. 그룹 삭제 |
|
| 713 |
+ // 2. 그룹에 소속된 주소록 삭제 |
|
| 714 |
+ int result = addrGroupService.deleteAddrGroupByAdminAll(addrGroupVO); |
|
| 715 |
+ |
|
| 716 |
+ if (result > 0) {
|
|
| 717 |
+ redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete"));
|
|
| 718 |
+ } else {
|
|
| 719 |
+ redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.delete"));
|
|
| 720 |
+ } |
|
| 721 |
+ redirectAttributes.addAttribute("pageIndex", addrGroupVO.getPageIndex());
|
|
| 722 |
+ redirectAttributes.addAttribute("searchCondition", addrGroupVO.getSearchCondition());
|
|
| 723 |
+ redirectAttributes.addAttribute("searchKeyword", addrGroupVO.getSearchKeyword());
|
|
| 724 |
+ |
|
| 725 |
+ return "redirect:/uss/ion/addr/selectAddrGroupList.do"; |
|
| 726 |
+ } |
|
| 727 |
+ |
|
| 728 |
+ |
|
| 729 |
+ /** |
|
| 730 |
+ * 주소록 그룹 삭제 로직 Ajax |
|
| 731 |
+ * |
|
| 732 |
+ * @param request |
|
| 733 |
+ * @param addrGroupVO |
|
| 734 |
+ * @param redirectAttributes |
|
| 735 |
+ * @param model |
|
| 736 |
+ * @return |
|
| 737 |
+ * @throws Exception |
|
| 738 |
+ */ |
|
| 739 |
+ @RequestMapping("/web/addr/deleteAddrGroupAjax.do")
|
|
| 740 |
+ public ModelAndView deleteAddrGroupAjax(@RequestParam("grpCheck") String[] grpCheck, HttpServletRequest request,
|
|
| 741 |
+ @ModelAttribute("searchVO") AddrGroupVO addrGroupVO, Model model
|
|
| 742 |
+ ,RedirectAttributes redirectAttributes |
|
| 743 |
+ ) throws Exception {
|
|
| 744 |
+ |
|
| 745 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 746 |
+ modelAndView.setViewName("jsonView");
|
|
| 747 |
+ |
|
| 748 |
+ LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 749 |
+ addrGroupVO.setLastUpdusrId(user.getId()); |
|
| 750 |
+ addrGroupVO.setMberId(user.getId()); |
|
| 751 |
+ |
|
| 752 |
+ for(String id:grpCheck) {
|
|
| 753 |
+ try {
|
|
| 754 |
+ |
|
| 755 |
+ addrGroupVO.setAddrGrpId(id); |
|
| 756 |
+ addrGroupVO.setMberId(user.getId()); |
|
| 757 |
+ addrGroupVO.setLastUpdusrId(user.getId()); |
|
| 758 |
+// int tot = addrService.getAddrCount(addrGroupVO); |
|
| 759 |
+// addrGroupVO.setTotCnt(tot); |
|
| 760 |
+ |
|
| 761 |
+ addrService.deleteAddr_advc(addrGroupVO); |
|
| 762 |
+ |
|
| 763 |
+ |
|
| 764 |
+/* addrGroupVO.setAddrGrpId(id); |
|
| 765 |
+ addrGroupService.deleteAddrGroup(addrGroupVO); |
|
| 766 |
+ |
|
| 767 |
+ addrVO.setAddrGrpId(id); |
|
| 768 |
+ addrVO.setGrpDelete("Y");
|
|
| 769 |
+ addrVO.setMberId(user.getId()); |
|
| 770 |
+ addrVO.setLastUpdusrId(user.getId()); |
|
| 771 |
+ addrService.deleteAddr(addrVO); |
|
| 772 |
+*/ |
|
| 773 |
+ modelAndView.addObject("result", "success");
|
|
| 774 |
+ } catch (Exception e) {
|
|
| 775 |
+ e.printStackTrace(); |
|
| 776 |
+ modelAndView.addObject("result", "fail");
|
|
| 777 |
+ return modelAndView; |
|
| 778 |
+ } |
|
| 779 |
+ } |
|
| 780 |
+ |
|
| 781 |
+ return modelAndView; |
|
| 782 |
+ |
|
| 783 |
+ } |
|
| 784 |
+ |
|
| 785 |
+ /** |
|
| 786 |
+ * 주소록 그룹명 중복체크 |
|
| 787 |
+ * |
|
| 788 |
+ * @param addrGroupVO |
|
| 789 |
+ * @return |
|
| 790 |
+ * @throws Exception |
|
| 791 |
+ */ |
|
| 792 |
+ @RequestMapping(value= {"/uss/ion/addr/duplAddrGroupAjax.do","/web/addr/selectDuplAddrGroupNameAjax.do"})
|
|
| 793 |
+ @ResponseBody |
|
| 794 |
+ public ModelAndView selectDuplAddrGroupAjax(AddrGroupVO addrGroupVO |
|
| 795 |
+ ,HttpServletRequest request |
|
| 796 |
+ ,ModelMap model |
|
| 797 |
+ ) throws Exception {
|
|
| 798 |
+ |
|
| 799 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 800 |
+ modelAndView.setViewName("jsonView");
|
|
| 801 |
+ |
|
| 802 |
+ int usedCnt = addrGroupService.selectDuplAddrGroupCnt(addrGroupVO); |
|
| 803 |
+ |
|
| 804 |
+ if(usedCnt > 0) {
|
|
| 805 |
+ modelAndView.addObject("result1", "dupl");
|
|
| 806 |
+ } else {
|
|
| 807 |
+ modelAndView.addObject("result1", "success");
|
|
| 808 |
+ } |
|
| 809 |
+ modelAndView.addObject("status1", "success");
|
|
| 810 |
+ |
|
| 811 |
+ return modelAndView; |
|
| 812 |
+ } |
|
| 813 |
+ |
|
| 814 |
+ /** |
|
| 815 |
+ * 주소록 합치기 |
|
| 816 |
+ * @param addrGrpNewNm |
|
| 817 |
+ * @param request |
|
| 818 |
+ * @param addrGroupVO |
|
| 819 |
+ * @param addrVO |
|
| 820 |
+ * @param model |
|
| 821 |
+ * @param redirectAttributes |
|
| 822 |
+ * @return |
|
| 823 |
+ * @throws Exception |
|
| 824 |
+ */ |
|
| 825 |
+ |
|
| 826 |
+ @RequestMapping("/web/addr/mergeAddrGroupAjax.do")
|
|
| 827 |
+ public ModelAndView mergeAddrGroupAjax(@RequestParam("addrGrpNewNm") String addrGrpNewNm
|
|
| 828 |
+ ,HttpServletRequest request |
|
| 829 |
+ ,@ModelAttribute("searchVO") AddrGroupVO addrGroupVO
|
|
| 830 |
+ ,AddrVO addrVO |
|
| 831 |
+ ,Model model |
|
| 832 |
+ ,RedirectAttributes redirectAttributes |
|
| 833 |
+ ) throws Exception {
|
|
| 834 |
+ |
|
| 835 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 836 |
+ modelAndView.setViewName("jsonView");
|
|
| 837 |
+ |
|
| 838 |
+ LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 839 |
+ addrGroupVO.setLastUpdusrId(user.getId()); |
|
| 840 |
+ addrGroupVO.setMberId(user.getId()); |
|
| 841 |
+ addrGroupVO.setFrstRegisterId(user.getId()); |
|
| 842 |
+ addrGroupVO.setAddrGrpNm(addrGrpNewNm); |
|
| 843 |
+ |
|
| 844 |
+ int usedCnt = addrGroupService.selectDuplAddrGroupCnt(addrGroupVO); |
|
| 845 |
+ |
|
| 846 |
+ if(usedCnt > 0) {
|
|
| 847 |
+ modelAndView.addObject("result", "dupl");
|
|
| 848 |
+ }else {
|
|
| 849 |
+ addrVO.setMberId(user.getId()); |
|
| 850 |
+ addrVO.setLastUpdusrId(user.getId()); |
|
| 851 |
+ |
|
| 852 |
+ try {
|
|
| 853 |
+ addrGroupService.mergeAddrGroupAjax(addrGroupVO, addrVO); |
|
| 854 |
+ |
|
| 855 |
+ modelAndView.addObject("result", "success");
|
|
| 856 |
+ } catch (Exception e) {
|
|
| 857 |
+ e.printStackTrace(); |
|
| 858 |
+ modelAndView.addObject("result", "fail");
|
|
| 859 |
+ return modelAndView; |
|
| 860 |
+ } |
|
| 861 |
+ } |
|
| 862 |
+ |
|
| 863 |
+ |
|
| 864 |
+ return modelAndView; |
|
| 865 |
+ |
|
| 866 |
+ } |
|
| 867 |
+ |
|
| 868 |
+ |
|
| 869 |
+ |
|
| 870 |
+ |
|
| 871 |
+ /** |
|
| 872 |
+ * 주소록 그룹 복사하기 |
|
| 873 |
+ * @param addrGrpNewNm |
|
| 874 |
+ * @param request |
|
| 875 |
+ * @param addrGroupVO |
|
| 876 |
+ * @param addrVO |
|
| 877 |
+ * @param model |
|
| 878 |
+ * @param redirectAttributes |
|
| 879 |
+ * @return |
|
| 880 |
+ * @throws Exception |
|
| 881 |
+ */ |
|
| 882 |
+ |
|
| 883 |
+ @RequestMapping("/web/addr/copyAddrGroupAjax.do")
|
|
| 884 |
+ public ModelAndView copyAddrGroupAjax(@RequestParam("addrGrpNewNm") String addrGrpNewNm
|
|
| 885 |
+ ,HttpServletRequest request |
|
| 886 |
+ ,@ModelAttribute("searchVO") AddrGroupVO addrGroupVO
|
|
| 887 |
+ ,AddrVO addrVO |
|
| 888 |
+ ,Model model |
|
| 889 |
+ ,RedirectAttributes redirectAttributes |
|
| 890 |
+ ) throws Exception {
|
|
| 891 |
+ |
|
| 892 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 893 |
+ modelAndView.setViewName("jsonView");
|
|
| 894 |
+ |
|
| 895 |
+ LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 896 |
+ addrGroupVO.setLastUpdusrId(user.getId()); |
|
| 897 |
+ addrGroupVO.setMberId(user.getId()); |
|
| 898 |
+ addrGroupVO.setFrstRegisterId(user.getId()); |
|
| 899 |
+ addrGroupVO.setAddrGrpNm(addrGrpNewNm); |
|
| 900 |
+ |
|
| 901 |
+ int usedCnt = addrGroupService.selectDuplAddrGroupCnt(addrGroupVO); |
|
| 902 |
+ |
|
| 903 |
+ if(usedCnt > 0) {
|
|
| 904 |
+ modelAndView.addObject("result", "dupl");
|
|
| 905 |
+ }else {
|
|
| 906 |
+ addrVO.setMberId(user.getId()); |
|
| 907 |
+ addrVO.setLastUpdusrId(user.getId()); |
|
| 908 |
+ |
|
| 909 |
+ try {
|
|
| 910 |
+ addrGroupService.copyAddrGroupAjax(addrGroupVO, addrVO); |
|
| 911 |
+ |
|
| 912 |
+ modelAndView.addObject("result", "success");
|
|
| 913 |
+ } catch (Exception e) {
|
|
| 914 |
+ e.printStackTrace(); |
|
| 915 |
+ modelAndView.addObject("result", "fail");
|
|
| 916 |
+ return modelAndView; |
|
| 917 |
+ } |
|
| 918 |
+ } |
|
| 919 |
+ |
|
| 920 |
+ |
|
| 921 |
+ return modelAndView; |
|
| 922 |
+ |
|
| 923 |
+ } |
|
| 924 |
+ |
|
| 925 |
+ |
|
| 926 |
+ // 주소록 내보내기 kmc본인인증 |
|
| 927 |
+ @RequestMapping(value = "/web/addr/kmcPopupAddrSubmitPramAjax.do") |
|
| 928 |
+ public ModelAndView kmcPopupIdPwPramAjax(@ModelAttribute("mberManageVO") MberManageVO mberManageVO,
|
|
| 929 |
+ HttpServletRequest request) throws Exception {
|
|
| 930 |
+ |
|
| 931 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 932 |
+ modelAndView.setViewName("jsonView");
|
|
| 933 |
+ |
|
| 934 |
+ try {
|
|
| 935 |
+ KmcCertChecker kmcCertCheck = new KmcCertChecker(); |
|
| 936 |
+ |
|
| 937 |
+ // mberId null일경우 ""로 |
|
| 938 |
+ mberManageVO.setMberId(EgovStringUtil.isNullToString(mberManageVO.getMberId())); |
|
| 939 |
+ |
|
| 940 |
+ // kmc 본인인증 실/개발 서버 구분 |
|
| 941 |
+ String serverNm = ""; |
|
| 942 |
+ if (request.getServerName().contains("219.240.88.15") || request.getServerName().contains("localhost")) {
|
|
| 943 |
+ serverNm = request.getScheme() + "://219.240.88.15:8095"; |
|
| 944 |
+ } else {
|
|
| 945 |
+ serverNm = request.getScheme() + "://www.munjaon.co.kr"; |
|
| 946 |
+ } |
|
| 947 |
+ |
|
| 948 |
+ AuthCertVO certVO = kmcCertCheck.authCertCheckEight(serverNm + "/web/cop/kmc/authRequestAddrSubmitAjax.do", |
|
| 949 |
+ mberManageVO.getMberId()); |
|
| 950 |
+ |
|
| 951 |
+ modelAndView.addObject("tr_cert", certVO.getTr_cert());
|
|
| 952 |
+ modelAndView.addObject("tr_url", certVO.getTr_url());
|
|
| 953 |
+ modelAndView.addObject("tr_add", certVO.getTr_add());
|
|
| 954 |
+ |
|
| 955 |
+ modelAndView.addObject("result", "success");
|
|
| 956 |
+ |
|
| 957 |
+ } catch (Exception e) {
|
|
| 958 |
+ modelAndView.addObject("result", "fail");
|
|
| 959 |
+ modelAndView.addObject("message", "기타 시스템 오류 : " + e.getMessage());
|
|
| 960 |
+ } |
|
| 961 |
+ |
|
| 962 |
+ return modelAndView; |
|
| 963 |
+ } |
|
| 964 |
+ |
|
| 965 |
+ /** |
|
| 966 |
+ * 아이디 비밀번호 찾기 kmc 본인인증(PG사 전송화면) |
|
| 967 |
+ * |
|
| 968 |
+ * @param |
|
| 969 |
+ * @return |
|
| 970 |
+ * @throws Exception |
|
| 971 |
+ */ |
|
| 972 |
+ |
|
| 973 |
+ @RequestMapping("/web/cop/kmc/authRequestAddrSubmitAjax.do")
|
|
| 974 |
+ public String authRequestFindIdPwAjax(HttpServletRequest request, ModelMap model, |
|
| 975 |
+ @RequestParam Map<String, Object> commandMap, @ModelAttribute("searchVO") KmcVO kmcVO,
|
|
| 976 |
+ RedirectAttributes redirectAttributes) throws Exception {
|
|
| 977 |
+ |
|
| 978 |
+ String errMessage = ""; // 에러메세지 |
|
| 979 |
+ |
|
| 980 |
+ String rec_cert = ""; // 결과값(암호화) |
|
| 981 |
+ String certNum = ""; // certNum |
|
| 982 |
+ |
|
| 983 |
+ rec_cert = request.getParameter("rec_cert").trim();
|
|
| 984 |
+ certNum = request.getParameter("certNum").trim();
|
|
| 985 |
+ |
|
| 986 |
+ kmcVO.setRecCert(rec_cert); |
|
| 987 |
+ kmcVO.setCertNum(certNum); |
|
| 988 |
+ // 파라미터 유효성 검증 |
|
| 989 |
+ if (rec_cert.length() == 0 || certNum.length() == 0) {
|
|
| 990 |
+ errMessage = "비정상"; |
|
| 991 |
+ return returnPage(model, errMessage, kmcVO); |
|
| 992 |
+ } |
|
| 993 |
+ |
|
| 994 |
+ // 변수선언 |
|
| 995 |
+ // -------------------------------------------------------------------------------------------------------- |
|
| 996 |
+ String k_certNum = ""; // 파라미터로 수신한 요청번호 |
|
| 997 |
+ k_certNum = certNum; |
|
| 998 |
+ String date = ""; // 요청일시 |
|
| 999 |
+ String CI = ""; // 연계정보(CI) |
|
| 1000 |
+ String DI = ""; // 중복가입확인정보(DI) |
|
| 1001 |
+ String phoneNo = ""; // 휴대폰번호 |
|
| 1002 |
+ String phoneCorp = ""; // 이동통신사 |
|
| 1003 |
+ String birthDay = ""; // 생년월일 |
|
| 1004 |
+ String gender = ""; // 성별 |
|
| 1005 |
+ String nation = ""; // 내국인 |
|
| 1006 |
+ String name = ""; // 성명 |
|
| 1007 |
+ String M_name = ""; // 미성년자 성명 |
|
| 1008 |
+ String M_birthDay = ""; // 미성년자 생년월일 |
|
| 1009 |
+ String M_Gender = ""; // 미성년자 성별 |
|
| 1010 |
+ String M_nation = ""; // 미성년자 내외국인 |
|
| 1011 |
+ String result = ""; // 결과값 |
|
| 1012 |
+ |
|
| 1013 |
+ String certMet = ""; // 인증방법 |
|
| 1014 |
+ String ip = ""; // ip주소 |
|
| 1015 |
+ String plusInfo = ""; |
|
| 1016 |
+ |
|
| 1017 |
+ String encPara = ""; |
|
| 1018 |
+ String encMsg1 = ""; |
|
| 1019 |
+ String encMsg2 = ""; |
|
| 1020 |
+ String msgChk = ""; |
|
| 1021 |
+ |
|
| 1022 |
+ com.icert.comm.secu.IcertSecuManager seed = new com.icert.comm.secu.IcertSecuManager(); |
|
| 1023 |
+ |
|
| 1024 |
+ // 02. 1차 복호화 |
|
| 1025 |
+ // 수신된 certNum를 이용하여 복호화 |
|
| 1026 |
+ rec_cert = seed.getDec(rec_cert, k_certNum); |
|
| 1027 |
+ |
|
| 1028 |
+ // 03. 1차 파싱 |
|
| 1029 |
+ int inf1 = rec_cert.indexOf("/", 0);
|
|
| 1030 |
+ int inf2 = rec_cert.indexOf("/", inf1 + 1);
|
|
| 1031 |
+ |
|
| 1032 |
+ encPara = rec_cert.substring(0, inf1); // 암호화된 통합 파라미터 |
|
| 1033 |
+ encMsg1 = rec_cert.substring(inf1 + 1, inf2); // 암호화된 통합 파라미터의 Hash값 |
|
| 1034 |
+ |
|
| 1035 |
+ // 04. 위변조 검증 |
|
| 1036 |
+ encMsg2 = seed.getMsg(encPara); |
|
| 1037 |
+ kmcVO.setEncMsg2(encMsg2); |
|
| 1038 |
+ if (encMsg2.equals(encMsg1)) {
|
|
| 1039 |
+ msgChk = "Y"; |
|
| 1040 |
+ } |
|
| 1041 |
+ |
|
| 1042 |
+ if (!"Y".equals(msgChk)) {
|
|
| 1043 |
+ errMessage = "비정상접근입니다."; |
|
| 1044 |
+ return returnPage(model, errMessage, kmcVO); |
|
| 1045 |
+ } |
|
| 1046 |
+ |
|
| 1047 |
+ // 05. 2차 복호화 |
|
| 1048 |
+ rec_cert = seed.getDec(encPara, k_certNum); |
|
| 1049 |
+ kmcVO.setRecCert(rec_cert); |
|
| 1050 |
+ // 06. 2차 파싱 |
|
| 1051 |
+ int info1 = rec_cert.indexOf("/", 0);
|
|
| 1052 |
+ int info2 = rec_cert.indexOf("/", info1 + 1);
|
|
| 1053 |
+ int info3 = rec_cert.indexOf("/", info2 + 1);
|
|
| 1054 |
+ int info4 = rec_cert.indexOf("/", info3 + 1);
|
|
| 1055 |
+ int info5 = rec_cert.indexOf("/", info4 + 1);
|
|
| 1056 |
+ int info6 = rec_cert.indexOf("/", info5 + 1);
|
|
| 1057 |
+ int info7 = rec_cert.indexOf("/", info6 + 1);
|
|
| 1058 |
+ int info8 = rec_cert.indexOf("/", info7 + 1);
|
|
| 1059 |
+ int info9 = rec_cert.indexOf("/", info8 + 1);
|
|
| 1060 |
+ int info10 = rec_cert.indexOf("/", info9 + 1);
|
|
| 1061 |
+ int info11 = rec_cert.indexOf("/", info10 + 1);
|
|
| 1062 |
+ int info12 = rec_cert.indexOf("/", info11 + 1);
|
|
| 1063 |
+ int info13 = rec_cert.indexOf("/", info12 + 1);
|
|
| 1064 |
+ int info14 = rec_cert.indexOf("/", info13 + 1);
|
|
| 1065 |
+ int info15 = rec_cert.indexOf("/", info14 + 1);
|
|
| 1066 |
+ int info16 = rec_cert.indexOf("/", info15 + 1);
|
|
| 1067 |
+ int info17 = rec_cert.indexOf("/", info16 + 1);
|
|
| 1068 |
+ int info18 = rec_cert.indexOf("/", info17 + 1);
|
|
| 1069 |
+ |
|
| 1070 |
+ certNum = rec_cert.substring(0, info1); |
|
| 1071 |
+ kmcVO.setCertNum(certNum); |
|
| 1072 |
+ date = rec_cert.substring(info1 + 1, info2); |
|
| 1073 |
+ kmcVO.setDate(date); |
|
| 1074 |
+ CI = rec_cert.substring(info2 + 1, info3); |
|
| 1075 |
+ kmcVO.setCI(CI); |
|
| 1076 |
+ phoneNo = rec_cert.substring(info3 + 1, info4); |
|
| 1077 |
+ kmcVO.setPhoneNo(phoneNo); |
|
| 1078 |
+ phoneCorp = rec_cert.substring(info4 + 1, info5); |
|
| 1079 |
+ kmcVO.setPhoneCorp(phoneCorp); |
|
| 1080 |
+ birthDay = rec_cert.substring(info5 + 1, info6); |
|
| 1081 |
+ kmcVO.setBirthDay(birthDay); |
|
| 1082 |
+ gender = rec_cert.substring(info6 + 1, info7); |
|
| 1083 |
+ kmcVO.setGender(gender); |
|
| 1084 |
+ nation = rec_cert.substring(info7 + 1, info8); |
|
| 1085 |
+ kmcVO.setNation(nation); |
|
| 1086 |
+ name = rec_cert.substring(info8 + 1, info9); |
|
| 1087 |
+ kmcVO.setName(name); |
|
| 1088 |
+ result = rec_cert.substring(info9 + 1, info10); |
|
| 1089 |
+ kmcVO.setResult(result); |
|
| 1090 |
+ certMet = rec_cert.substring(info10 + 1, info11); |
|
| 1091 |
+ kmcVO.setCertMet(certMet); |
|
| 1092 |
+ ip = rec_cert.substring(info11 + 1, info12); |
|
| 1093 |
+ kmcVO.setIp(ip); |
|
| 1094 |
+ M_name = rec_cert.substring(info12 + 1, info13); |
|
| 1095 |
+ kmcVO.setMName(M_name); |
|
| 1096 |
+ M_birthDay = rec_cert.substring(info13 + 1, info14); |
|
| 1097 |
+ kmcVO.setMBirthDay(M_birthDay); |
|
| 1098 |
+ M_Gender = rec_cert.substring(info14 + 1, info15); |
|
| 1099 |
+ kmcVO.setMGender(M_Gender); |
|
| 1100 |
+ M_nation = rec_cert.substring(info15 + 1, info16); |
|
| 1101 |
+ kmcVO.setMNation(M_nation); |
|
| 1102 |
+ plusInfo = rec_cert.substring(info16 + 1, info17); |
|
| 1103 |
+ kmcVO.setPlusInfo(plusInfo); |
|
| 1104 |
+ DI = rec_cert.substring(info17 + 1, info18); |
|
| 1105 |
+ kmcVO.setDI(DI); |
|
| 1106 |
+ |
|
| 1107 |
+ // 07. CI, DI 복호화 |
|
| 1108 |
+ CI = seed.getDec(CI, k_certNum); |
|
| 1109 |
+ kmcVO.setCI(CI); |
|
| 1110 |
+ DI = seed.getDec(DI, k_certNum); |
|
| 1111 |
+ kmcVO.setDI(DI); |
|
| 1112 |
+ |
|
| 1113 |
+ if ("Y".equals(result)) {
|
|
| 1114 |
+ |
|
| 1115 |
+ } |
|
| 1116 |
+ |
|
| 1117 |
+ // -------------------------------------------------------------- |
|
| 1118 |
+ String regex = ""; |
|
| 1119 |
+ if (certNum.length() == 0 || certNum.length() > 40) {
|
|
| 1120 |
+ errMessage = "요청번호 비정상."; |
|
| 1121 |
+ return returnPage(model, errMessage, kmcVO); |
|
| 1122 |
+ } |
|
| 1123 |
+ |
|
| 1124 |
+ regex = "[0-9]*"; |
|
| 1125 |
+ if (date.length() != 14 || !paramChk(regex, date)) {
|
|
| 1126 |
+ errMessage = "요청일시"; |
|
| 1127 |
+ return returnPage(model, errMessage, kmcVO); |
|
| 1128 |
+ } |
|
| 1129 |
+ |
|
| 1130 |
+ regex = "[A-Z]*"; |
|
| 1131 |
+ if (certMet.length() != 1 || !paramChk(regex, certMet)) {
|
|
| 1132 |
+ errMessage = "본인인증방법 비정상" + certMet; |
|
| 1133 |
+ return returnPage(model, errMessage, kmcVO); |
|
| 1134 |
+ } |
|
| 1135 |
+ |
|
| 1136 |
+ regex = "[0-9]*"; |
|
| 1137 |
+ if ((phoneNo.length() != 10 && phoneNo.length() != 11) || !paramChk(regex, phoneNo)) {
|
|
| 1138 |
+ errMessage = "휴대폰번호 비정상"; |
|
| 1139 |
+ return returnPage(model, errMessage, kmcVO); |
|
| 1140 |
+ } |
|
| 1141 |
+ |
|
| 1142 |
+ regex = "[A-Z]*"; |
|
| 1143 |
+ if (phoneCorp.length() != 3 || !paramChk(regex, phoneCorp)) {
|
|
| 1144 |
+ errMessage = "이동통신사 비정상"; |
|
| 1145 |
+ return returnPage(model, errMessage, kmcVO); |
|
| 1146 |
+ } |
|
| 1147 |
+ |
|
| 1148 |
+ regex = "[0-9]*"; |
|
| 1149 |
+ if (birthDay.length() != 8 || !paramChk(regex, birthDay)) {
|
|
| 1150 |
+ errMessage = "생년월일 비정상"; |
|
| 1151 |
+ return returnPage(model, errMessage, kmcVO); |
|
| 1152 |
+ } |
|
| 1153 |
+ |
|
| 1154 |
+ regex = "[0-9]*"; |
|
| 1155 |
+ if (gender.length() != 1 || !paramChk(regex, gender)) {
|
|
| 1156 |
+ errMessage = "성별 비정상"; |
|
| 1157 |
+ return returnPage(model, errMessage, kmcVO); |
|
| 1158 |
+ } |
|
| 1159 |
+ |
|
| 1160 |
+ regex = "[0-9]*"; |
|
| 1161 |
+ if (nation.length() != 1 || !paramChk(regex, nation)) {
|
|
| 1162 |
+ errMessage = "내/외국인 비정상"; |
|
| 1163 |
+ return returnPage(model, errMessage, kmcVO); |
|
| 1164 |
+ } |
|
| 1165 |
+ |
|
| 1166 |
+ regex = "[\\sA-Za-z가-�R.,-]*"; |
|
| 1167 |
+ if (name.length() > 60 || !paramChk(regex, name)) {
|
|
| 1168 |
+ errMessage = "성명 비정상"; |
|
| 1169 |
+ return returnPage(model, errMessage, kmcVO); |
|
| 1170 |
+ } |
|
| 1171 |
+ |
|
| 1172 |
+ regex = "[A-Z]*"; |
|
| 1173 |
+ if (result.length() != 1 || !paramChk(regex, result)) {
|
|
| 1174 |
+ errMessage = "결과값 비정상"; |
|
| 1175 |
+ return returnPage(model, errMessage, kmcVO); |
|
| 1176 |
+ } |
|
| 1177 |
+ |
|
| 1178 |
+ regex = "[\\sA-Za-z가-?.,-]*"; |
|
| 1179 |
+ if (M_name.length() != 0) {
|
|
| 1180 |
+ if (M_name.length() > 60 || !paramChk(regex, M_name)) {
|
|
| 1181 |
+ errMessage = "미성년자 성명 비정상"; |
|
| 1182 |
+ return returnPage(model, errMessage, kmcVO); |
|
| 1183 |
+ } |
|
| 1184 |
+ } |
|
| 1185 |
+ |
|
| 1186 |
+ regex = "[0-9]*"; |
|
| 1187 |
+ if (M_birthDay.length() != 0) {
|
|
| 1188 |
+ if (M_birthDay.length() != 8 || !paramChk(regex, M_birthDay)) {
|
|
| 1189 |
+ errMessage = "미성년자 생년월일 비정상"; |
|
| 1190 |
+ return returnPage(model, errMessage, kmcVO); |
|
| 1191 |
+ } |
|
| 1192 |
+ } |
|
| 1193 |
+ |
|
| 1194 |
+ regex = "[0-9]*"; |
|
| 1195 |
+ if (M_Gender.length() != 0) {
|
|
| 1196 |
+ if (M_Gender.length() != 1 || !paramChk(regex, M_Gender)) {
|
|
| 1197 |
+ errMessage = "미성년자 성별 비정상"; |
|
| 1198 |
+ return returnPage(model, errMessage, kmcVO); |
|
| 1199 |
+ } |
|
| 1200 |
+ } |
|
| 1201 |
+ |
|
| 1202 |
+ regex = "[0-9]*"; |
|
| 1203 |
+ if (M_nation.length() != 0) {
|
|
| 1204 |
+ if (M_nation.length() != 1 || !paramChk(regex, M_nation)) {
|
|
| 1205 |
+ errMessage = "미성년자 내/외국인 비정상"; |
|
| 1206 |
+ return returnPage(model, errMessage, kmcVO); |
|
| 1207 |
+ } |
|
| 1208 |
+ } |
|
| 1209 |
+ |
|
| 1210 |
+ // KMC 본인인증 로그 |
|
| 1211 |
+ AuthCertVO certVO = new AuthCertVO(); |
|
| 1212 |
+ |
|
| 1213 |
+ certVO.setMberId(kmcVO.getPlusInfo()); |
|
| 1214 |
+ certVO.setCertNum(kmcVO.getCertNum()); |
|
| 1215 |
+ certVO.setCertDate(kmcVO.getDate()); |
|
| 1216 |
+ certVO.setCertDi(kmcVO.getDI()); |
|
| 1217 |
+ certVO.setCertPhone(kmcVO.getPhoneNo()); |
|
| 1218 |
+ certVO.setCertNation(kmcVO.getNation()); |
|
| 1219 |
+ certVO.setCertName(kmcVO.getName()); |
|
| 1220 |
+ certVO.setCertResult(kmcVO.getResult()); |
|
| 1221 |
+ certVO.setCertType("KMC_주소록내보내기");
|
|
| 1222 |
+ certVO.setCertIpaddr(kmcVO.getIp()); |
|
| 1223 |
+ certVO.setBirthDay(kmcVO.getBirthDay()); |
|
| 1224 |
+ certVO.setSexdstnCode(kmcVO.getGender()); |
|
| 1225 |
+ |
|
| 1226 |
+ // 디비 테이블에 저장하기 |
|
| 1227 |
+ mberManageService.insertCertInfoLog(certVO); |
|
| 1228 |
+ |
|
| 1229 |
+ model.addAttribute("kmcVO", kmcVO);
|
|
| 1230 |
+ return "web/addr/AddrSubmitKmcReqPage"; |
|
| 1231 |
+ } |
|
| 1232 |
+ |
|
| 1233 |
+ |
|
| 1234 |
+ |
|
| 1235 |
+ |
|
| 1236 |
+ // 파라미터 유효성 검증 -------------------------------------------- |
|
| 1237 |
+ public Boolean paramChk(String patn, String param) {
|
|
| 1238 |
+ Pattern pattern = Pattern.compile(patn); |
|
| 1239 |
+ Matcher matcher = pattern.matcher(param); |
|
| 1240 |
+ boolean b = matcher.matches(); |
|
| 1241 |
+ return b; |
|
| 1242 |
+ } |
|
| 1243 |
+ |
|
| 1244 |
+ // 파라미터 유효성 검증 -------------------------------------------- |
|
| 1245 |
+ public String returnPage(ModelMap model, String errMessage, KmcVO kmcVO) {
|
|
| 1246 |
+ kmcVO.setErrMessage(errMessage); |
|
| 1247 |
+ model.addAttribute("kmcVO", kmcVO);
|
|
| 1248 |
+ return "web/cop/nicepay/payRequestAjax"; |
|
| 1249 |
+ } |
|
| 1250 |
+ |
|
| 1251 |
+ |
|
| 1252 |
+} |
--- src/main/resources/egovframework/sqlmap/let/mjo/addr/AddrGroup_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/mjo/addr/AddrGroup_SQL_Mysql.xml
... | ... | @@ -1,183 +1,204 @@ |
| 1 |
-<?xml version="1.0" encoding="UTF-8"?> |
|
| 2 |
-<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"> |
|
| 3 |
-<sqlMap namespace="AddrGroup"> |
|
| 4 |
- <typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/> |
|
| 5 |
- <typeAlias alias="addrGroupVO" type="itn.let.mjo.addr.service.AddrGroupVO"/> |
|
| 6 |
- |
|
| 7 |
- <!-- 주소록 그룹 목록 조회 --> |
|
| 8 |
- <select id="AddrGroupDAO.selectAddrGroupList" parameterClass="addrGroupVO" resultClass="addrGroupVO"> |
|
| 9 |
- SELECT |
|
| 10 |
- COUNT(1) OVER() AS totCnt |
|
| 11 |
- ,A.ADDR_GRP_ID AS addrGrpId |
|
| 12 |
- ,A.MBER_ID AS mberId |
|
| 13 |
- ,A.ADDR_GRP_NM AS addrGrpNm |
|
| 14 |
- ,A.FRST_REGIST_PNTTM AS frstRegistPnttm |
|
| 15 |
- ,A.DELETE_YN AS deleteYn |
|
| 16 |
- ,IFNULL(a.GRP_ORDER, '0') AS grpOrder |
|
| 17 |
- ,(SELECT COUNT(1) FROM MJ_ADDR WHERE ADDR_GRP_ID = A.ADDR_GRP_ID) AS grpCount |
|
| 18 |
- FROM |
|
| 19 |
- MJ_ADDR_GRP A |
|
| 20 |
- LEFT OUTER JOIN |
|
| 21 |
- MJ_ADDR_TRANS_HIST B |
|
| 22 |
- ON |
|
| 23 |
- A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 24 |
- WHERE |
|
| 25 |
- (B.RECV_STATUS = 'Y' OR B.RECV_STATUS IS NULL) |
|
| 26 |
- <isNotEmpty property="mberId"> |
|
| 27 |
- AND A.MBER_ID = #mberId# |
|
| 28 |
- </isNotEmpty> |
|
| 29 |
- <isNotEmpty property="searchKeyword"> |
|
| 30 |
- <isEqual property="searchCondition" compareValue=""> |
|
| 31 |
- AND ( A.MBER_ID LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 32 |
- OR A.ADDR_GRP_NM LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 33 |
- ) |
|
| 34 |
- </isEqual> |
|
| 35 |
- <isEqual property="searchCondition" compareValue="1"> |
|
| 36 |
- AND A.MBER_ID LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 37 |
- </isEqual> |
|
| 38 |
- <isEqual property="searchCondition" compareValue="2"> |
|
| 39 |
- AND A.ADDR_GRP_NM LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 40 |
- </isEqual> |
|
| 41 |
- </isNotEmpty> |
|
| 42 |
- GROUP BY A.ADDR_GRP_ID |
|
| 43 |
- <isNotEqual property="siteId" compareValue="admin"> |
|
| 44 |
- ORDER BY A.GRP_ORDER |
|
| 45 |
- <isNotEmpty property="searchSortCnd"> |
|
| 46 |
- ,$searchSortCnd$ |
|
| 47 |
- </isNotEmpty> |
|
| 48 |
- </isNotEqual> |
|
| 49 |
- <isEqual property="siteId" compareValue="admin"> |
|
| 50 |
- ORDER BY A.ADDR_GRP_ID DESC |
|
| 51 |
- <isNotEmpty property="searchSortCnd"> |
|
| 52 |
- ,$searchSortCnd$ |
|
| 53 |
- </isNotEmpty> |
|
| 54 |
- </isEqual> |
|
| 55 |
- |
|
| 56 |
- <isEqual property="siteId" compareValue="admin"> |
|
| 57 |
- LIMIT #recordCountPerPage# OFFSET #firstIndex# |
|
| 58 |
- </isEqual> |
|
| 59 |
- </select> |
|
| 60 |
- |
|
| 61 |
- <!-- 주소록 그룹 상세 조회 --> |
|
| 62 |
- <select id="AddrGroupDAO.selectAddrGroupDetail" parameterClass="addrGroupVO" resultClass="addrGroupVO"> |
|
| 63 |
- SELECT |
|
| 64 |
- a.ADDR_GRP_ID AS addrGrpId |
|
| 65 |
- ,a.MBER_ID AS mberId |
|
| 66 |
- ,a.ADDR_GRP_NM AS addrGrpNm |
|
| 67 |
- FROM |
|
| 68 |
- MJ_ADDR_GRP a |
|
| 69 |
- WHERE 1=1 |
|
| 70 |
- AND a.ADDR_GRP_ID = #addrGrpId# |
|
| 71 |
- </select> |
|
| 72 |
- |
|
| 73 |
- <select id="AddrGroupDAO.selectAddrGroupTotCnt" parameterClass="addrGroupVO" resultClass="addrGroupVO"> |
|
| 74 |
- /* AddrGroupDAO.selectAddrGroupTotCnt */ |
|
| 75 |
- SELECT |
|
| 76 |
- COUNT(0) AS addrTotCnt |
|
| 77 |
- FROM MJ_ADDR A |
|
| 78 |
- WHERE A.MBER_ID = #mberId# |
|
| 79 |
- AND (A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL) |
|
| 80 |
- AND A.DELETE_YN = 'N' |
|
| 81 |
- </select> |
|
| 82 |
- |
|
| 83 |
- <!-- 주소록 그룹 카운트 조회(그룹미지정) --> |
|
| 84 |
- <select id="AddrGroupDAO.selectAddrGroupNogrpCnt" parameterClass="addrGroupVO" resultClass="addrGroupVO"> |
|
| 85 |
- SELECT |
|
| 86 |
- COUNT(0) AS nogrpCnt |
|
| 87 |
- FROM MJ_ADDR A |
|
| 88 |
- WHERE A.MBER_ID = #mberId# |
|
| 89 |
- AND A.ADDR_GRP_ID = '0' |
|
| 90 |
- AND A.BOOKMARK = 'N' |
|
| 91 |
- AND A.DELETE_YN = 'N' |
|
| 92 |
- </select> |
|
| 93 |
- |
|
| 94 |
- <!-- 주소록 그룹 카운트 조회(그룹미지정) --> |
|
| 95 |
- <select id="AddrGroupDAO.selectAddrGroupBookmarkCnt" parameterClass="addrGroupVO" resultClass="addrGroupVO"> |
|
| 96 |
- SELECT |
|
| 97 |
- COUNT(0) AS bookmarkCnt |
|
| 98 |
- FROM MJ_ADDR A |
|
| 99 |
- WHERE A.MBER_ID = #mberId# |
|
| 100 |
- AND A.BOOKMARK = 'Y' |
|
| 101 |
- AND A.DELETE_YN = 'N' |
|
| 102 |
- </select> |
|
| 103 |
- |
|
| 104 |
- <!-- 주소록 그룹 등록 --> |
|
| 105 |
- <insert id="AddrGroupDAO.insertAddrGroup" parameterClass="addrGroupVO"> |
|
| 106 |
- INSERT INTO MJ_ADDR_GRP ( |
|
| 107 |
- MBER_ID |
|
| 108 |
- ,ADDR_GRP_NM |
|
| 109 |
- ,GRP_ORDER |
|
| 110 |
- ,FRST_REGIST_PNTTM |
|
| 111 |
- ,FRST_REGISTER_ID |
|
| 112 |
- )VALUES( |
|
| 113 |
- #mberId# |
|
| 114 |
- ,#addrGrpNm# |
|
| 115 |
- ,#grpOrder# |
|
| 116 |
- ,NOW() |
|
| 117 |
- ,#frstRegisterId# |
|
| 118 |
- ) |
|
| 119 |
- <selectKey keyProperty="addrGrpId" resultClass="String"> |
|
| 120 |
- SELECT LAST_INSERT_ID() |
|
| 121 |
- </selectKey> |
|
| 122 |
- </insert> |
|
| 123 |
- |
|
| 124 |
- <!-- 주소록 그룹수정 --> |
|
| 125 |
- <update id="AddrGroupDAO.updateAddrGroup" parameterClass="addrGroupVO"> |
|
| 126 |
- UPDATE |
|
| 127 |
- MJ_ADDR_GRP |
|
| 128 |
- SET |
|
| 129 |
- ADDR_GRP_NM = #addrGrpNm# |
|
| 130 |
- ,GRP_ORDER = #grpOrder# |
|
| 131 |
- ,LAST_UPDT_PNTTM = NOW() |
|
| 132 |
- ,LAST_UPDUSR_ID = #lastUpdusrId# |
|
| 133 |
- WHERE |
|
| 134 |
- MBER_ID = #mberId# |
|
| 135 |
- AND |
|
| 136 |
- ADDR_GRP_ID = #addrGrpId# |
|
| 137 |
- </update> |
|
| 138 |
- |
|
| 139 |
- <!-- 주소록 그룹삭제 --> |
|
| 140 |
- <delete id="AddrGroupDAO.deleteAddrGroup" parameterClass="addrGroupVO"> |
|
| 141 |
- DELETE FROM |
|
| 142 |
- MJ_ADDR_GRP |
|
| 143 |
- WHERE |
|
| 144 |
- MBER_ID = #mberId# |
|
| 145 |
- <isEmpty property="mergeGrps"> |
|
| 146 |
- AND |
|
| 147 |
- ADDR_GRP_ID = #addrGrpId# |
|
| 148 |
- </isEmpty> |
|
| 149 |
- <isNotEmpty property="mergeGrps"> |
|
| 150 |
- AND |
|
| 151 |
- ADDR_GRP_ID in (#mergeGrps#) |
|
| 152 |
- </isNotEmpty> |
|
| 153 |
- </delete> |
|
| 154 |
- |
|
| 155 |
- <!-- 주소록 그룹삭제 By Admin --> |
|
| 156 |
- <delete id="AddrGroupDAO.deleteAddrGroupByAdmin" parameterClass="addrGroupVO"> |
|
| 157 |
- DELETE FROM |
|
| 158 |
- MJ_ADDR_GRP |
|
| 159 |
- WHERE ADDR_GRP_ID = #addrGrpId# |
|
| 160 |
- </delete> |
|
| 161 |
- |
|
| 162 |
- <!-- 주소록 그룹명 중복확인 --> |
|
| 163 |
- <select id="AddrGroupDAO.selectDuplAddrGroupCnt" parameterClass="addrGroupVO" resultClass="int"> |
|
| 164 |
- SELECT |
|
| 165 |
- COUNT(1) usedCnt |
|
| 166 |
- FROM |
|
| 167 |
- MJ_ADDR_GRP |
|
| 168 |
- WHERE |
|
| 169 |
- ADDR_GRP_NM = #addrGrpNm# |
|
| 170 |
- AND |
|
| 171 |
- MBER_ID = #mberId# |
|
| 172 |
- </select> |
|
| 173 |
- |
|
| 174 |
- <!-- 주소록 그룹 다음 순서번호 확인 --> |
|
| 175 |
- <select id="AddrGroupDAO.selectMaxOrderNumber" parameterClass="addrGroupVO" resultClass="int"> |
|
| 176 |
- SELECT |
|
| 177 |
- IFNULL(MAX(GRP_ORDER),0)+1 nextOrderNumber |
|
| 178 |
- FROM |
|
| 179 |
- MJ_ADDR_GRP |
|
| 180 |
- WHERE |
|
| 181 |
- MBER_ID = #mberId# |
|
| 182 |
- </select> |
|
| 183 |
-</sqlMap> |
|
| 1 |
+<?xml version="1.0" encoding="UTF-8"?> |
|
| 2 |
+<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"> |
|
| 3 |
+<sqlMap namespace="AddrGroup"> |
|
| 4 |
+ <typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/> |
|
| 5 |
+ <typeAlias alias="addrGroupVO" type="itn.let.mjo.addr.service.AddrGroupVO"/> |
|
| 6 |
+ |
|
| 7 |
+ <!-- 주소록 그룹 목록 조회 --> |
|
| 8 |
+ <select id="AddrGroupDAO.selectAddrGroupList" parameterClass="addrGroupVO" resultClass="addrGroupVO"> |
|
| 9 |
+ /* AddrGroupDAO.selectAddrGroupList */ |
|
| 10 |
+ SELECT |
|
| 11 |
+ COUNT(1) OVER() AS totCnt |
|
| 12 |
+ ,A.ADDR_GRP_ID AS addrGrpId |
|
| 13 |
+ ,A.MBER_ID AS mberId |
|
| 14 |
+ ,A.ADDR_GRP_NM AS addrGrpNm |
|
| 15 |
+ ,A.FRST_REGIST_PNTTM AS frstRegistPnttm |
|
| 16 |
+ ,A.DELETE_YN AS deleteYn |
|
| 17 |
+ ,IFNULL(a.GRP_ORDER, '0') AS grpOrder |
|
| 18 |
+ ,(SELECT COUNT(1) FROM MJ_ADDR WHERE ADDR_GRP_ID = A.ADDR_GRP_ID) AS grpCount |
|
| 19 |
+ FROM |
|
| 20 |
+ MJ_ADDR_GRP A |
|
| 21 |
+ LEFT OUTER JOIN |
|
| 22 |
+ MJ_ADDR_TRANS_HIST B |
|
| 23 |
+ ON |
|
| 24 |
+ A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 25 |
+ WHERE |
|
| 26 |
+ (B.RECV_STATUS = 'Y' OR B.RECV_STATUS IS NULL) |
|
| 27 |
+ <isNotEmpty property="mberId"> |
|
| 28 |
+ AND A.MBER_ID = #mberId# |
|
| 29 |
+ </isNotEmpty> |
|
| 30 |
+ AND A.DELETE_YN = 'N' |
|
| 31 |
+ <isNotEmpty property="searchKeyword"> |
|
| 32 |
+ <isEqual property="searchCondition" compareValue=""> |
|
| 33 |
+ AND ( A.MBER_ID LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 34 |
+ OR A.ADDR_GRP_NM LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 35 |
+ ) |
|
| 36 |
+ </isEqual> |
|
| 37 |
+ <isEqual property="searchCondition" compareValue="1"> |
|
| 38 |
+ AND A.MBER_ID LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 39 |
+ </isEqual> |
|
| 40 |
+ <isEqual property="searchCondition" compareValue="2"> |
|
| 41 |
+ AND A.ADDR_GRP_NM LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 42 |
+ </isEqual> |
|
| 43 |
+ </isNotEmpty> |
|
| 44 |
+ GROUP BY A.ADDR_GRP_ID |
|
| 45 |
+ <isNotEqual property="siteId" compareValue="admin"> |
|
| 46 |
+ ORDER BY A.GRP_ORDER |
|
| 47 |
+ <isNotEmpty property="searchSortCnd"> |
|
| 48 |
+ ,$searchSortCnd$ |
|
| 49 |
+ </isNotEmpty> |
|
| 50 |
+ </isNotEqual> |
|
| 51 |
+ <isEqual property="siteId" compareValue="admin"> |
|
| 52 |
+ ORDER BY A.ADDR_GRP_ID DESC |
|
| 53 |
+ <isNotEmpty property="searchSortCnd"> |
|
| 54 |
+ ,$searchSortCnd$ |
|
| 55 |
+ </isNotEmpty> |
|
| 56 |
+ </isEqual> |
|
| 57 |
+ |
|
| 58 |
+ <isEqual property="siteId" compareValue="admin"> |
|
| 59 |
+ LIMIT #recordCountPerPage# OFFSET #firstIndex# |
|
| 60 |
+ </isEqual> |
|
| 61 |
+ </select> |
|
| 62 |
+ |
|
| 63 |
+ <!-- 주소록 그룹 상세 조회 --> |
|
| 64 |
+ <select id="AddrGroupDAO.selectAddrGroupDetail" parameterClass="addrGroupVO" resultClass="addrGroupVO"> |
|
| 65 |
+ SELECT |
|
| 66 |
+ a.ADDR_GRP_ID AS addrGrpId |
|
| 67 |
+ ,a.MBER_ID AS mberId |
|
| 68 |
+ ,a.ADDR_GRP_NM AS addrGrpNm |
|
| 69 |
+ FROM |
|
| 70 |
+ MJ_ADDR_GRP a |
|
| 71 |
+ WHERE 1=1 |
|
| 72 |
+ AND a.ADDR_GRP_ID = #addrGrpId# |
|
| 73 |
+ </select> |
|
| 74 |
+ |
|
| 75 |
+ <select id="AddrGroupDAO.selectAddrGroupTotCnt" parameterClass="addrGroupVO" resultClass="addrGroupVO"> |
|
| 76 |
+ /* AddrGroupDAO.selectAddrGroupTotCnt */ |
|
| 77 |
+ SELECT |
|
| 78 |
+ COUNT(0) AS addrTotCnt |
|
| 79 |
+ FROM MJ_ADDR A |
|
| 80 |
+ WHERE A.MBER_ID = #mberId# |
|
| 81 |
+ AND (A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL) |
|
| 82 |
+ AND A.DELETE_YN = 'N' |
|
| 83 |
+ </select> |
|
| 84 |
+ |
|
| 85 |
+ <!-- 주소록 그룹 카운트 조회(그룹미지정) --> |
|
| 86 |
+ <select id="AddrGroupDAO.selectAddrGroupNogrpCnt" parameterClass="addrGroupVO" resultClass="addrGroupVO"> |
|
| 87 |
+ /* AddrGroupDAO.selectAddrGroupNogrpCnt */ |
|
| 88 |
+ SELECT |
|
| 89 |
+ COUNT(0) AS nogrpCnt |
|
| 90 |
+ FROM MJ_ADDR A |
|
| 91 |
+ WHERE A.MBER_ID = #mberId# |
|
| 92 |
+ AND A.ADDR_GRP_ID = '0' |
|
| 93 |
+ AND A.BOOKMARK = 'N' |
|
| 94 |
+ AND A.DELETE_YN = 'N' |
|
| 95 |
+ </select> |
|
| 96 |
+ |
|
| 97 |
+ <!-- 주소록 그룹 카운트 조회(그룹미지정) --> |
|
| 98 |
+ <select id="AddrGroupDAO.selectAddrGroupBookmarkCnt" parameterClass="addrGroupVO" resultClass="addrGroupVO"> |
|
| 99 |
+ SELECT |
|
| 100 |
+ COUNT(0) AS bookmarkCnt |
|
| 101 |
+ FROM MJ_ADDR A |
|
| 102 |
+ WHERE A.MBER_ID = #mberId# |
|
| 103 |
+ AND A.BOOKMARK = 'Y' |
|
| 104 |
+ AND A.DELETE_YN = 'N' |
|
| 105 |
+ </select> |
|
| 106 |
+ |
|
| 107 |
+ <!-- 주소록 그룹 등록 --> |
|
| 108 |
+ <insert id="AddrGroupDAO.insertAddrGroup" parameterClass="addrGroupVO"> |
|
| 109 |
+ INSERT INTO MJ_ADDR_GRP ( |
|
| 110 |
+ MBER_ID |
|
| 111 |
+ ,ADDR_GRP_NM |
|
| 112 |
+ ,GRP_ORDER |
|
| 113 |
+ ,FRST_REGIST_PNTTM |
|
| 114 |
+ ,FRST_REGISTER_ID |
|
| 115 |
+ )VALUES( |
|
| 116 |
+ #mberId# |
|
| 117 |
+ ,#addrGrpNm# |
|
| 118 |
+ ,#grpOrder# |
|
| 119 |
+ ,NOW() |
|
| 120 |
+ ,#frstRegisterId# |
|
| 121 |
+ ) |
|
| 122 |
+ <selectKey keyProperty="addrGrpId" resultClass="String"> |
|
| 123 |
+ SELECT LAST_INSERT_ID() |
|
| 124 |
+ </selectKey> |
|
| 125 |
+ </insert> |
|
| 126 |
+ |
|
| 127 |
+ <!-- 주소록 그룹수정 --> |
|
| 128 |
+ <update id="AddrGroupDAO.updateAddrGroup" parameterClass="addrGroupVO"> |
|
| 129 |
+ UPDATE |
|
| 130 |
+ MJ_ADDR_GRP |
|
| 131 |
+ SET |
|
| 132 |
+ ADDR_GRP_NM = #addrGrpNm# |
|
| 133 |
+ ,GRP_ORDER = #grpOrder# |
|
| 134 |
+ ,LAST_UPDT_PNTTM = NOW() |
|
| 135 |
+ ,LAST_UPDUSR_ID = #lastUpdusrId# |
|
| 136 |
+ WHERE |
|
| 137 |
+ MBER_ID = #mberId# |
|
| 138 |
+ AND |
|
| 139 |
+ ADDR_GRP_ID = #addrGrpId# |
|
| 140 |
+ </update> |
|
| 141 |
+ |
|
| 142 |
+ <!-- 주소록 그룹삭제 --> |
|
| 143 |
+ <delete id="AddrGroupDAO.deleteAddrGroup" parameterClass="addrGroupVO"> |
|
| 144 |
+ DELETE FROM |
|
| 145 |
+ MJ_ADDR_GRP |
|
| 146 |
+ WHERE |
|
| 147 |
+ MBER_ID = #mberId# |
|
| 148 |
+ <isEmpty property="mergeGrps"> |
|
| 149 |
+ AND |
|
| 150 |
+ ADDR_GRP_ID = #addrGrpId# |
|
| 151 |
+ </isEmpty> |
|
| 152 |
+ <isNotEmpty property="mergeGrps"> |
|
| 153 |
+ AND |
|
| 154 |
+ ADDR_GRP_ID in (#mergeGrps#) |
|
| 155 |
+ </isNotEmpty> |
|
| 156 |
+ </delete> |
|
| 157 |
+ |
|
| 158 |
+ <!-- 주소록 그룹삭제 --> |
|
| 159 |
+ <delete id="AddrGroupDAO.deleteAddrGroup_advc" parameterClass="addrGroupVO"> |
|
| 160 |
+ /* AddrGroupDAO.deleteAddrGroup_advc*/ |
|
| 161 |
+ |
|
| 162 |
+ |
|
| 163 |
+ UPDATE |
|
| 164 |
+ MJ_ADDR_GRP |
|
| 165 |
+ SET |
|
| 166 |
+ DELETE_YN = 'Y' |
|
| 167 |
+ ,LAST_UPDT_PNTTM = NOW() |
|
| 168 |
+ ,LAST_UPDUSR_ID = #lastUpdusrId# |
|
| 169 |
+ WHERE |
|
| 170 |
+ MBER_ID = #mberId# |
|
| 171 |
+ AND |
|
| 172 |
+ ADDR_GRP_ID = #addrGrpId# |
|
| 173 |
+ |
|
| 174 |
+ </delete> |
|
| 175 |
+ |
|
| 176 |
+ <!-- 주소록 그룹삭제 By Admin --> |
|
| 177 |
+ <delete id="AddrGroupDAO.deleteAddrGroupByAdmin" parameterClass="addrGroupVO"> |
|
| 178 |
+ DELETE FROM |
|
| 179 |
+ MJ_ADDR_GRP |
|
| 180 |
+ WHERE ADDR_GRP_ID = #addrGrpId# |
|
| 181 |
+ </delete> |
|
| 182 |
+ |
|
| 183 |
+ <!-- 주소록 그룹명 중복확인 --> |
|
| 184 |
+ <select id="AddrGroupDAO.selectDuplAddrGroupCnt" parameterClass="addrGroupVO" resultClass="int"> |
|
| 185 |
+ SELECT |
|
| 186 |
+ COUNT(1) usedCnt |
|
| 187 |
+ FROM |
|
| 188 |
+ MJ_ADDR_GRP |
|
| 189 |
+ WHERE |
|
| 190 |
+ ADDR_GRP_NM = #addrGrpNm# |
|
| 191 |
+ AND |
|
| 192 |
+ MBER_ID = #mberId# |
|
| 193 |
+ </select> |
|
| 194 |
+ |
|
| 195 |
+ <!-- 주소록 그룹 다음 순서번호 확인 --> |
|
| 196 |
+ <select id="AddrGroupDAO.selectMaxOrderNumber" parameterClass="addrGroupVO" resultClass="int"> |
|
| 197 |
+ SELECT |
|
| 198 |
+ IFNULL(MAX(GRP_ORDER),0)+1 nextOrderNumber |
|
| 199 |
+ FROM |
|
| 200 |
+ MJ_ADDR_GRP |
|
| 201 |
+ WHERE |
|
| 202 |
+ MBER_ID = #mberId# |
|
| 203 |
+ </select> |
|
| 204 |
+</sqlMap> |
--- src/main/resources/egovframework/sqlmap/let/mjo/addr/Addr_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/mjo/addr/Addr_SQL_Mysql.xml
... | ... | @@ -1,1361 +1,1366 @@ |
| 1 |
-<?xml version="1.0" encoding="UTF-8"?> |
|
| 2 |
-<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"> |
|
| 3 |
-<sqlMap namespace="Addr"> |
|
| 4 |
- <typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/> |
|
| 5 |
- <typeAlias alias="addrVO" type="itn.let.mjo.addr.service.AddrVO"/> |
|
| 6 |
- <typeAlias alias="addrTransHistVO" type="itn.let.mjo.addr.service.AddrTransHistVO"/> |
|
| 7 |
- |
|
| 8 |
- <!-- 주소록 목록 조회 --> |
|
| 9 |
- <select id="AddrDAO.selectAddrList" parameterClass="addrVO" resultClass="addrVO"> |
|
| 10 |
- /* AddrDAO.selectAddrList */ |
|
| 11 |
- SELECT |
|
| 12 |
- /* |
|
| 13 |
- 1 AS totCnt |
|
| 14 |
- */ |
|
| 15 |
- COUNT(1) OVER() AS totCnt |
|
| 16 |
- ,A.ADDR_ID AS addrId |
|
| 17 |
- ,A.ADDR_GRP_ID AS addrGrpId |
|
| 18 |
- ,A.MBER_ID AS mberId |
|
| 19 |
- ,A.ADDR_NM AS addrNm |
|
| 20 |
- ,A.ADDR_PHONE_NO AS addrPhoneNo |
|
| 21 |
- ,A.ADDR_INFO1 AS addrInfo1 |
|
| 22 |
- ,A.ADDR_INFO2 AS addrInfo2 |
|
| 23 |
- ,A.ADDR_INFO3 AS addrInfo3 |
|
| 24 |
- ,A.ADDR_INFO4 AS addrInfo4 |
|
| 25 |
- ,A.ADDR_COMMENT AS addrComment |
|
| 26 |
- ,A.FRST_REGIST_PNTTM AS frstRegistPnttm |
|
| 27 |
- ,A.FRST_REGISTER_ID AS frstRegisterId |
|
| 28 |
- ,A.LAST_UPDT_PNTTM AS lastUpdtPnttm |
|
| 29 |
- ,A.LAST_UPDUSR_ID AS lastUpdusrId |
|
| 30 |
- ,A.DELETE_YN AS deleteYn |
|
| 31 |
- ,A.BOOKMARK AS bookmark |
|
| 32 |
- ,CASE |
|
| 33 |
- WHEN A.ADDR_GRP_ID = 0 AND A.BOOKMARK = 'N' |
|
| 34 |
- THEN '그룹미지정' |
|
| 35 |
- WHEN A.ADDR_GRP_ID = 0 AND A.BOOKMARK = 'Y' |
|
| 36 |
- THEN '자주보내는 번호' |
|
| 37 |
- ELSE B.ADDR_GRP_NM |
|
| 38 |
- END AS addrGrpNm |
|
| 39 |
- FROM |
|
| 40 |
- MJ_ADDR A |
|
| 41 |
- LEFT OUTER JOIN |
|
| 42 |
- MJ_ADDR_GRP B |
|
| 43 |
- ON |
|
| 44 |
- A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 45 |
- LEFT OUTER JOIN |
|
| 46 |
- MJ_ADDR_TRANS_HIST C |
|
| 47 |
- ON |
|
| 48 |
- B.ADDR_GRP_ID = C.ADDR_GRP_ID |
|
| 49 |
- WHERE 1=1 |
|
| 50 |
- <isNotEmpty property="mberId"> |
|
| 51 |
- AND A.MBER_ID = #mberId# |
|
| 52 |
- </isNotEmpty> |
|
| 53 |
- |
|
| 54 |
- AND (C.RECV_STATUS = 'Y' OR C.RECV_STATUS IS NULL) |
|
| 55 |
- |
|
| 56 |
- <isNotEmpty property="addrIdList"> |
|
| 57 |
- <iterate prepend="AND A.ADDR_ID IN " open="(" close=")" conjunction="," property="addrIdList">
|
|
| 58 |
- #addrIdList[]# |
|
| 59 |
- </iterate> |
|
| 60 |
- </isNotEmpty> |
|
| 61 |
- |
|
| 62 |
- AND A.ADDR_GRP_ID in ( |
|
| 63 |
- select addr_grp_id |
|
| 64 |
- from mj_addr_grp |
|
| 65 |
- where 1=1 |
|
| 66 |
- <isNotEmpty property="mberId"> |
|
| 67 |
- AND MBER_ID = #mberId# |
|
| 68 |
- </isNotEmpty> |
|
| 69 |
- AND ADDR_GRP_ID = #searchAddrGrpId# |
|
| 70 |
- ) |
|
| 71 |
- |
|
| 72 |
- <isNotEmpty property="searchKeyword"> |
|
| 73 |
- <isEqual property="searchCondition" compareValue=""> |
|
| 74 |
- AND ( A.ADDR_PHONE_NO LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 75 |
- OR A.ADDR_NM LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 76 |
- ) |
|
| 77 |
- </isEqual> |
|
| 78 |
- <isEqual property="searchCondition" compareValue="1"> |
|
| 79 |
- AND A.ADDR_PHONE_NO LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 80 |
- </isEqual> |
|
| 81 |
- <isEqual property="searchCondition" compareValue="2"> |
|
| 82 |
- AND A.ADDR_NM LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 83 |
- </isEqual> |
|
| 84 |
- <isEqual property="searchCondition" compareValue="3"> |
|
| 85 |
- AND A.MBER_ID LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 86 |
- </isEqual> |
|
| 87 |
- </isNotEmpty> |
|
| 88 |
- <isNotEmpty property="searchAddrGrpId"> |
|
| 89 |
- <isEqual property="searchAddrGrpId" compareValue="bookmark"> |
|
| 90 |
- AND A.BOOKMARK = 'Y' |
|
| 91 |
- </isEqual> |
|
| 92 |
- <isNotEqual property="searchAddrGrpId" compareValue="bookmark"> |
|
| 93 |
- <isEqual property="searchAddrGrpId" compareValue="noGrp"> |
|
| 94 |
- AND A.ADDR_GRP_ID = '0' AND A.BOOKMARK = 'N' |
|
| 95 |
- </isEqual> |
|
| 96 |
- <isNotEqual property="searchAddrGrpId" compareValue="noGrp"> |
|
| 97 |
- AND A.ADDR_GRP_ID = #searchAddrGrpId# |
|
| 98 |
- </isNotEqual> |
|
| 99 |
- </isNotEqual> |
|
| 100 |
- </isNotEmpty> |
|
| 101 |
- <isEqual property="startKeyword" compareValue="1"> |
|
| 102 |
- AND (A.ADDR_NM RLIKE '^(ㄱ|ㄲ)' OR (A.ADDR_NM <![CDATA[>=]]> '가' AND A.ADDR_NM <![CDATA[<]]> '나')) |
|
| 103 |
- </isEqual> |
|
| 104 |
- <isEqual property="startKeyword" compareValue="2"> |
|
| 105 |
- AND (A.ADDR_NM RLIKE '^(ㄴ)' OR (A.ADDR_NM <![CDATA[>=]]> '나' AND A.ADDR_NM <![CDATA[<]]> '다')) |
|
| 106 |
- </isEqual> |
|
| 107 |
- <isEqual property="startKeyword" compareValue="3"> |
|
| 108 |
- AND (A.ADDR_NM RLIKE '^(ㄷ|ㄸ)' OR (A.ADDR_NM <![CDATA[>=]]> '다' AND A.ADDR_NM <![CDATA[<]]> '라')) |
|
| 109 |
- </isEqual> |
|
| 110 |
- <isEqual property="startKeyword" compareValue="4"> |
|
| 111 |
- AND (A.ADDR_NM RLIKE '^(ㄹ)' OR (A.ADDR_NM <![CDATA[>=]]> '라' AND A.ADDR_NM <![CDATA[<]]> '마')) |
|
| 112 |
- </isEqual> |
|
| 113 |
- <isEqual property="startKeyword" compareValue="5"> |
|
| 114 |
- AND (A.ADDR_NM RLIKE '^(ㅁ)' OR (A.ADDR_NM <![CDATA[>=]]> '마' AND A.ADDR_NM <![CDATA[<]]> '바')) |
|
| 115 |
- </isEqual> |
|
| 116 |
- <isEqual property="startKeyword" compareValue="6"> |
|
| 117 |
- AND (A.ADDR_NM RLIKE '^(ㅂ|ㅃ)' OR (A.ADDR_NM <![CDATA[>=]]> '바' AND A.ADDR_NM <![CDATA[<]]> '사')) |
|
| 118 |
- </isEqual> |
|
| 119 |
- <isEqual property="startKeyword" compareValue="7"> |
|
| 120 |
- AND (A.ADDR_NM RLIKE '^(ㅅ|ㅆ)' OR (A.ADDR_NM <![CDATA[>=]]> '사' AND A.ADDR_NM <![CDATA[<]]> '아')) |
|
| 121 |
- </isEqual> |
|
| 122 |
- <isEqual property="startKeyword" compareValue="8"> |
|
| 123 |
- AND (A.ADDR_NM RLIKE '^(ㅇ)' OR (A.ADDR_NM <![CDATA[>=]]> '아' AND A.ADDR_NM <![CDATA[<]]> '자')) |
|
| 124 |
- </isEqual> |
|
| 125 |
- <isEqual property="startKeyword" compareValue="9"> |
|
| 126 |
- AND (A.ADDR_NM RLIKE '^(ㅈ|ㅉ)' OR (A.ADDR_NM <![CDATA[>=]]> '자' AND A.ADDR_NM <![CDATA[<]]> '차')) |
|
| 127 |
- </isEqual> |
|
| 128 |
- <isEqual property="startKeyword" compareValue="10"> |
|
| 129 |
- AND (A.ADDR_NM RLIKE '^(ㅊ)' OR (A.ADDR_NM <![CDATA[>=]]> '차' AND A.ADDR_NM <![CDATA[<]]> '카')) |
|
| 130 |
- </isEqual> |
|
| 131 |
- <isEqual property="startKeyword" compareValue="11"> |
|
| 132 |
- AND (A.ADDR_NM RLIKE '^(ㅋ)' OR (A.ADDR_NM <![CDATA[>=]]> '카' AND A.ADDR_NM <![CDATA[<]]> '타')) |
|
| 133 |
- </isEqual> |
|
| 134 |
- <isEqual property="startKeyword" compareValue="12"> |
|
| 135 |
- AND (A.ADDR_NM RLIKE '^(ㅌ)' OR (A.ADDR_NM <![CDATA[>=]]> '타' AND A.ADDR_NM <![CDATA[<]]> '파')) |
|
| 136 |
- </isEqual> |
|
| 137 |
- <isEqual property="startKeyword" compareValue="13"> |
|
| 138 |
- AND (A.ADDR_NM RLIKE '^(ㅍ)' OR (A.ADDR_NM <![CDATA[>=]]> '파' AND A.ADDR_NM <![CDATA[<]]> '하')) |
|
| 139 |
- </isEqual> |
|
| 140 |
- <isEqual property="startKeyword" compareValue="14"> |
|
| 141 |
- AND (A.ADDR_NM RLIKE '^(ㅎ)' OR (A.ADDR_NM <![CDATA[>=]]> '하' AND A.ADDR_NM <![CDATA[<=]]> '힣')) |
|
| 142 |
- </isEqual> |
|
| 143 |
- <isEqual property="startKeyword" compareValue="a"> |
|
| 144 |
- AND (A.ADDR_NM <![CDATA[>=]]> 'a' AND A.ADDR_NM <![CDATA[<=]]> 'z') |
|
| 145 |
- </isEqual> |
|
| 146 |
- <isEqual property="startKeyword" compareValue="0"> |
|
| 147 |
- AND (A.ADDR_NM <![CDATA[>=]]> '0' AND A.ADDR_NM <![CDATA[<=]]>'9') |
|
| 148 |
- </isEqual> |
|
| 149 |
- ORDER BY 1=1 |
|
| 150 |
- <isNotEmpty property="searchSortCnd"> |
|
| 151 |
- ,$searchSortCnd$ |
|
| 152 |
- </isNotEmpty> |
|
| 153 |
- <isNotEmpty property="searchSortOrd"> |
|
| 154 |
- $searchSortOrd$ |
|
| 155 |
- </isNotEmpty> |
|
| 156 |
- LIMIT #recordCountPerPage# OFFSET #firstIndex# |
|
| 157 |
- </select> |
|
| 158 |
- |
|
| 159 |
- <!-- 주소록 목록 조회 --> |
|
| 160 |
- <select id="AddrDAO.selectAddrListCount" parameterClass="addrVO" resultClass="int"> |
|
| 161 |
- /* AddrDAO.selectAddrListCount */ |
|
| 162 |
- SELECT |
|
| 163 |
- COUNT(1) AS totCnt |
|
| 164 |
- FROM |
|
| 165 |
- MJ_ADDR A |
|
| 166 |
- LEFT OUTER JOIN |
|
| 167 |
- MJ_ADDR_TRANS_HIST C |
|
| 168 |
- ON |
|
| 169 |
- A.ADDR_GRP_ID = C.ADDR_GRP_ID |
|
| 170 |
- WHERE 1=1 |
|
| 171 |
- <isNotEmpty property="mberId"> |
|
| 172 |
- AND A.MBER_ID = #mberId# |
|
| 173 |
- </isNotEmpty> |
|
| 174 |
- |
|
| 175 |
- AND (C.RECV_STATUS = 'Y' OR C.RECV_STATUS IS NULL) |
|
| 176 |
- |
|
| 177 |
- <isNotEmpty property="addrIdList"> |
|
| 178 |
- <iterate prepend="AND A.ADDR_ID IN " open="(" close=")" conjunction="," property="addrIdList">
|
|
| 179 |
- #addrIdList[]# |
|
| 180 |
- </iterate> |
|
| 181 |
- </isNotEmpty> |
|
| 182 |
- |
|
| 183 |
- AND A.ADDR_GRP_ID in ( |
|
| 184 |
- select addr_grp_id |
|
| 185 |
- from mj_addr_grp |
|
| 186 |
- where 1=1 |
|
| 187 |
- <isNotEmpty property="mberId"> |
|
| 188 |
- AND MBER_ID = #mberId# |
|
| 189 |
- </isNotEmpty> |
|
| 190 |
- <isNotEmpty property="addrGrpId"> |
|
| 191 |
- AND ADDR_GRP_ID = #addrGrpId# |
|
| 192 |
- </isNotEmpty> |
|
| 193 |
- ) |
|
| 194 |
- |
|
| 195 |
- <isNotEmpty property="searchKeyword"> |
|
| 196 |
- <isEqual property="searchCondition" compareValue=""> |
|
| 197 |
- AND ( A.ADDR_PHONE_NO LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 198 |
- OR A.ADDR_NM LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 199 |
- ) |
|
| 200 |
- </isEqual> |
|
| 201 |
- <isEqual property="searchCondition" compareValue="1"> |
|
| 202 |
- AND A.ADDR_PHONE_NO LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 203 |
- </isEqual> |
|
| 204 |
- <isEqual property="searchCondition" compareValue="2"> |
|
| 205 |
- AND A.ADDR_NM LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 206 |
- </isEqual> |
|
| 207 |
- <isEqual property="searchCondition" compareValue="3"> |
|
| 208 |
- AND A.MBER_ID LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 209 |
- </isEqual> |
|
| 210 |
- </isNotEmpty> |
|
| 211 |
- <isNotEmpty property="searchAddrGrpId"> |
|
| 212 |
- <isEqual property="searchAddrGrpId" compareValue="bookmark"> |
|
| 213 |
- AND A.BOOKMARK = 'Y' |
|
| 214 |
- </isEqual> |
|
| 215 |
- <isNotEqual property="searchAddrGrpId" compareValue="bookmark"> |
|
| 216 |
- <isEqual property="searchAddrGrpId" compareValue="noGrp"> |
|
| 217 |
- AND A.ADDR_GRP_ID = '0' AND A.BOOKMARK = 'N' |
|
| 218 |
- </isEqual> |
|
| 219 |
- <isNotEqual property="searchAddrGrpId" compareValue="noGrp"> |
|
| 220 |
- AND A.ADDR_GRP_ID = #searchAddrGrpId# |
|
| 221 |
- </isNotEqual> |
|
| 222 |
- </isNotEqual> |
|
| 223 |
- </isNotEmpty> |
|
| 224 |
- <isEqual property="startKeyword" compareValue="1"> |
|
| 225 |
- AND (A.ADDR_NM RLIKE '^(ㄱ|ㄲ)' OR (A.ADDR_NM <![CDATA[>=]]> '가' AND A.ADDR_NM <![CDATA[<]]> '나')) |
|
| 226 |
- </isEqual> |
|
| 227 |
- <isEqual property="startKeyword" compareValue="2"> |
|
| 228 |
- AND (A.ADDR_NM RLIKE '^(ㄴ)' OR (A.ADDR_NM <![CDATA[>=]]> '나' AND A.ADDR_NM <![CDATA[<]]> '다')) |
|
| 229 |
- </isEqual> |
|
| 230 |
- <isEqual property="startKeyword" compareValue="3"> |
|
| 231 |
- AND (A.ADDR_NM RLIKE '^(ㄷ|ㄸ)' OR (A.ADDR_NM <![CDATA[>=]]> '다' AND A.ADDR_NM <![CDATA[<]]> '라')) |
|
| 232 |
- </isEqual> |
|
| 233 |
- <isEqual property="startKeyword" compareValue="4"> |
|
| 234 |
- AND (A.ADDR_NM RLIKE '^(ㄹ)' OR (A.ADDR_NM <![CDATA[>=]]> '라' AND A.ADDR_NM <![CDATA[<]]> '마')) |
|
| 235 |
- </isEqual> |
|
| 236 |
- <isEqual property="startKeyword" compareValue="5"> |
|
| 237 |
- AND (A.ADDR_NM RLIKE '^(ㅁ)' OR (A.ADDR_NM <![CDATA[>=]]> '마' AND A.ADDR_NM <![CDATA[<]]> '바')) |
|
| 238 |
- </isEqual> |
|
| 239 |
- <isEqual property="startKeyword" compareValue="6"> |
|
| 240 |
- AND (A.ADDR_NM RLIKE '^(ㅂ|ㅃ)' OR (A.ADDR_NM <![CDATA[>=]]> '바' AND A.ADDR_NM <![CDATA[<]]> '사')) |
|
| 241 |
- </isEqual> |
|
| 242 |
- <isEqual property="startKeyword" compareValue="7"> |
|
| 243 |
- AND (A.ADDR_NM RLIKE '^(ㅅ|ㅆ)' OR (A.ADDR_NM <![CDATA[>=]]> '사' AND A.ADDR_NM <![CDATA[<]]> '아')) |
|
| 244 |
- </isEqual> |
|
| 245 |
- <isEqual property="startKeyword" compareValue="8"> |
|
| 246 |
- AND (A.ADDR_NM RLIKE '^(ㅇ)' OR (A.ADDR_NM <![CDATA[>=]]> '아' AND A.ADDR_NM <![CDATA[<]]> '자')) |
|
| 247 |
- </isEqual> |
|
| 248 |
- <isEqual property="startKeyword" compareValue="9"> |
|
| 249 |
- AND (A.ADDR_NM RLIKE '^(ㅈ|ㅉ)' OR (A.ADDR_NM <![CDATA[>=]]> '자' AND A.ADDR_NM <![CDATA[<]]> '차')) |
|
| 250 |
- </isEqual> |
|
| 251 |
- <isEqual property="startKeyword" compareValue="10"> |
|
| 252 |
- AND (A.ADDR_NM RLIKE '^(ㅊ)' OR (A.ADDR_NM <![CDATA[>=]]> '차' AND A.ADDR_NM <![CDATA[<]]> '카')) |
|
| 253 |
- </isEqual> |
|
| 254 |
- <isEqual property="startKeyword" compareValue="11"> |
|
| 255 |
- AND (A.ADDR_NM RLIKE '^(ㅋ)' OR (A.ADDR_NM <![CDATA[>=]]> '카' AND A.ADDR_NM <![CDATA[<]]> '타')) |
|
| 256 |
- </isEqual> |
|
| 257 |
- <isEqual property="startKeyword" compareValue="12"> |
|
| 258 |
- AND (A.ADDR_NM RLIKE '^(ㅌ)' OR (A.ADDR_NM <![CDATA[>=]]> '타' AND A.ADDR_NM <![CDATA[<]]> '파')) |
|
| 259 |
- </isEqual> |
|
| 260 |
- <isEqual property="startKeyword" compareValue="13"> |
|
| 261 |
- AND (A.ADDR_NM RLIKE '^(ㅍ)' OR (A.ADDR_NM <![CDATA[>=]]> '파' AND A.ADDR_NM <![CDATA[<]]> '하')) |
|
| 262 |
- </isEqual> |
|
| 263 |
- <isEqual property="startKeyword" compareValue="14"> |
|
| 264 |
- AND (A.ADDR_NM RLIKE '^(ㅎ)' OR (A.ADDR_NM <![CDATA[>=]]> '하' AND A.ADDR_NM <![CDATA[<=]]> '힣')) |
|
| 265 |
- </isEqual> |
|
| 266 |
- <isEqual property="startKeyword" compareValue="a"> |
|
| 267 |
- AND (A.ADDR_NM <![CDATA[>=]]> 'a' AND A.ADDR_NM <![CDATA[<=]]> 'z') |
|
| 268 |
- </isEqual> |
|
| 269 |
- <isEqual property="startKeyword" compareValue="0"> |
|
| 270 |
- AND (A.ADDR_NM <![CDATA[>=]]> '0' AND A.ADDR_NM <![CDATA[<=]]>'9') |
|
| 271 |
- </isEqual> |
|
| 272 |
- </select> |
|
| 273 |
- |
|
| 274 |
- <!-- 주소록 목록 조회(속도개선) --> |
|
| 275 |
- <select id="AddrDAO.selectAddrNewList" parameterClass="addrVO" resultClass="addrVO"> |
|
| 276 |
- SELECT |
|
| 277 |
- ( |
|
| 278 |
- SELECT COUNT(0) FROM mj_addr A |
|
| 279 |
- LEFT OUTER JOIN |
|
| 280 |
- MJ_ADDR_GRP B |
|
| 281 |
- ON |
|
| 282 |
- A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 283 |
- LEFT OUTER JOIN |
|
| 284 |
- MJ_ADDR_TRANS_HIST C |
|
| 285 |
- ON |
|
| 286 |
- B.ADDR_GRP_ID = C.ADDR_GRP_ID |
|
| 287 |
- WHERE 1=1 |
|
| 288 |
- AND (C.RECV_STATUS = 'Y' OR C.RECV_STATUS IS NULL) |
|
| 289 |
- <isNotEmpty property="mberId"> |
|
| 290 |
- AND A.MBER_ID = #mberId# |
|
| 291 |
- </isNotEmpty> |
|
| 292 |
- <isNotEmpty property="searchStartDate"> |
|
| 293 |
- <![CDATA[ |
|
| 294 |
- AND A.FRST_REGIST_PNTTM >= DATE_FORMAT(#searchStartDate#, '%Y-%m-%d') |
|
| 295 |
- ]]> |
|
| 296 |
- </isNotEmpty> |
|
| 297 |
- <isNotEmpty property="searchEndDate"> |
|
| 298 |
- <![CDATA[ |
|
| 299 |
- AND A.FRST_REGIST_PNTTM <= DATE_ADD(DATE_FORMAT(#searchEndDate#, '%Y-%m-%d') , INTERVAL 1 DAY) |
|
| 300 |
- ]]> |
|
| 301 |
- </isNotEmpty> |
|
| 302 |
- <isNotEmpty property="addrIdList"> |
|
| 303 |
- <iterate prepend="AND A.ADDR_ID IN " open="(" close=")" conjunction="," property="addrIdList">
|
|
| 304 |
- #addrIdList[]# |
|
| 305 |
- </iterate> |
|
| 306 |
- </isNotEmpty> |
|
| 307 |
- <isNotEmpty property="addrGrpId"> |
|
| 308 |
- AND A.ADDR_GRP_ID = #addrGrpId# |
|
| 309 |
- </isNotEmpty> |
|
| 310 |
- <isNotEmpty property="searchKeyword"> |
|
| 311 |
- <isEqual property="searchCondition" compareValue=""> |
|
| 312 |
- AND ( A.ADDR_PHONE_NO LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 313 |
- OR A.ADDR_NM LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 314 |
- ) |
|
| 315 |
- </isEqual> |
|
| 316 |
- <isEqual property="searchCondition" compareValue="1"> |
|
| 317 |
- AND A.ADDR_PHONE_NO LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 318 |
- </isEqual> |
|
| 319 |
- <isEqual property="searchCondition" compareValue="2"> |
|
| 320 |
- AND A.ADDR_NM LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 321 |
- </isEqual> |
|
| 322 |
- <isEqual property="searchCondition" compareValue="3"> |
|
| 323 |
- AND A.MBER_ID LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 324 |
- </isEqual> |
|
| 325 |
- </isNotEmpty> |
|
| 326 |
- <isNotEmpty property="searchAddrGrpId"> |
|
| 327 |
- <isEqual property="searchAddrGrpId" compareValue="bookmark"> |
|
| 328 |
- AND A.BOOKMARK = 'Y' |
|
| 329 |
- </isEqual> |
|
| 330 |
- <isNotEqual property="searchAddrGrpId" compareValue="bookmark"> |
|
| 331 |
- <isEqual property="searchAddrGrpId" compareValue="noGrp"> |
|
| 332 |
- AND A.ADDR_GRP_ID = '0' AND A.BOOKMARK = 'N' |
|
| 333 |
- </isEqual> |
|
| 334 |
- <isNotEqual property="searchAddrGrpId" compareValue="noGrp"> |
|
| 335 |
- AND A.ADDR_GRP_ID = #searchAddrGrpId# |
|
| 336 |
- </isNotEqual> |
|
| 337 |
- </isNotEqual> |
|
| 338 |
- </isNotEmpty> |
|
| 339 |
- <isEqual property="startKeyword" compareValue="1"> |
|
| 340 |
- AND (A.ADDR_NM RLIKE '^(ㄱ|ㄲ)' OR (A.ADDR_NM <![CDATA[>=]]> '가' AND A.ADDR_NM <![CDATA[<]]> '나')) |
|
| 341 |
- </isEqual> |
|
| 342 |
- <isEqual property="startKeyword" compareValue="2"> |
|
| 343 |
- AND (A.ADDR_NM RLIKE '^(ㄴ)' OR (A.ADDR_NM <![CDATA[>=]]> '나' AND A.ADDR_NM <![CDATA[<]]> '다')) |
|
| 344 |
- </isEqual> |
|
| 345 |
- <isEqual property="startKeyword" compareValue="3"> |
|
| 346 |
- AND (A.ADDR_NM RLIKE '^(ㄷ|ㄸ)' OR (A.ADDR_NM <![CDATA[>=]]> '다' AND A.ADDR_NM <![CDATA[<]]> '라')) |
|
| 347 |
- </isEqual> |
|
| 348 |
- <isEqual property="startKeyword" compareValue="4"> |
|
| 349 |
- AND (A.ADDR_NM RLIKE '^(ㄹ)' OR (A.ADDR_NM <![CDATA[>=]]> '라' AND A.ADDR_NM <![CDATA[<]]> '마')) |
|
| 350 |
- </isEqual> |
|
| 351 |
- <isEqual property="startKeyword" compareValue="5"> |
|
| 352 |
- AND (A.ADDR_NM RLIKE '^(ㅁ)' OR (A.ADDR_NM <![CDATA[>=]]> '마' AND A.ADDR_NM <![CDATA[<]]> '바')) |
|
| 353 |
- </isEqual> |
|
| 354 |
- <isEqual property="startKeyword" compareValue="6"> |
|
| 355 |
- AND (A.ADDR_NM RLIKE '^(ㅂ|ㅃ)' OR (A.ADDR_NM <![CDATA[>=]]> '바' AND A.ADDR_NM <![CDATA[<]]> '사')) |
|
| 356 |
- </isEqual> |
|
| 357 |
- <isEqual property="startKeyword" compareValue="7"> |
|
| 358 |
- AND (A.ADDR_NM RLIKE '^(ㅅ|ㅆ)' OR (A.ADDR_NM <![CDATA[>=]]> '사' AND A.ADDR_NM <![CDATA[<]]> '아')) |
|
| 359 |
- </isEqual> |
|
| 360 |
- <isEqual property="startKeyword" compareValue="8"> |
|
| 361 |
- AND (A.ADDR_NM RLIKE '^(ㅇ)' OR (A.ADDR_NM <![CDATA[>=]]> '아' AND A.ADDR_NM <![CDATA[<]]> '자')) |
|
| 362 |
- </isEqual> |
|
| 363 |
- <isEqual property="startKeyword" compareValue="9"> |
|
| 364 |
- AND (A.ADDR_NM RLIKE '^(ㅈ|ㅉ)' OR (A.ADDR_NM <![CDATA[>=]]> '자' AND A.ADDR_NM <![CDATA[<]]> '차')) |
|
| 365 |
- </isEqual> |
|
| 366 |
- <isEqual property="startKeyword" compareValue="10"> |
|
| 367 |
- AND (A.ADDR_NM RLIKE '^(ㅊ)' OR (A.ADDR_NM <![CDATA[>=]]> '차' AND A.ADDR_NM <![CDATA[<]]> '카')) |
|
| 368 |
- </isEqual> |
|
| 369 |
- <isEqual property="startKeyword" compareValue="11"> |
|
| 370 |
- AND (A.ADDR_NM RLIKE '^(ㅋ)' OR (A.ADDR_NM <![CDATA[>=]]> '카' AND A.ADDR_NM <![CDATA[<]]> '타')) |
|
| 371 |
- </isEqual> |
|
| 372 |
- <isEqual property="startKeyword" compareValue="12"> |
|
| 373 |
- AND (A.ADDR_NM RLIKE '^(ㅌ)' OR (A.ADDR_NM <![CDATA[>=]]> '타' AND A.ADDR_NM <![CDATA[<]]> '파')) |
|
| 374 |
- </isEqual> |
|
| 375 |
- <isEqual property="startKeyword" compareValue="13"> |
|
| 376 |
- AND (A.ADDR_NM RLIKE '^(ㅍ)' OR (A.ADDR_NM <![CDATA[>=]]> '파' AND A.ADDR_NM <![CDATA[<]]> '하')) |
|
| 377 |
- </isEqual> |
|
| 378 |
- <isEqual property="startKeyword" compareValue="14"> |
|
| 379 |
- AND (A.ADDR_NM RLIKE '^(ㅎ)' OR (A.ADDR_NM <![CDATA[>=]]> '하' AND A.ADDR_NM <![CDATA[<=]]> '힣')) |
|
| 380 |
- </isEqual> |
|
| 381 |
- <isEqual property="startKeyword" compareValue="a"> |
|
| 382 |
- AND (A.ADDR_NM <![CDATA[>=]]> 'a' AND A.ADDR_NM <![CDATA[<=]]> 'z') |
|
| 383 |
- </isEqual> |
|
| 384 |
- <isEqual property="startKeyword" compareValue="0"> |
|
| 385 |
- AND (A.ADDR_NM <![CDATA[>=]]> '0' AND A.ADDR_NM <![CDATA[<=]]>'9') |
|
| 386 |
- </isEqual> |
|
| 387 |
- ) totCnt |
|
| 388 |
- ,M.addrId |
|
| 389 |
- ,M.addrGrpId |
|
| 390 |
- ,M.mberId |
|
| 391 |
- ,M.addrNm |
|
| 392 |
- ,M.addrPhoneNo |
|
| 393 |
- ,M.addrInfo1 |
|
| 394 |
- ,M.addrInfo2 |
|
| 395 |
- ,M.addrInfo3 |
|
| 396 |
- ,M.addrInfo4 |
|
| 397 |
- ,M.addrComment |
|
| 398 |
- ,M.frstRegistPnttm |
|
| 399 |
- ,M.frstRegisterId |
|
| 400 |
- ,M.lastUpdtPnttm |
|
| 401 |
- ,M.lastUpdusrId |
|
| 402 |
- ,M.deleteYn |
|
| 403 |
- ,M.bookmark |
|
| 404 |
- ,M.addrGrpNm |
|
| 405 |
- FROM ( |
|
| 406 |
- SELECT |
|
| 407 |
- A.ADDR_ID AS addrId |
|
| 408 |
- ,A.ADDR_GRP_ID AS addrGrpId |
|
| 409 |
- ,A.MBER_ID AS mberId |
|
| 410 |
- ,A.ADDR_NM AS addrNm |
|
| 411 |
- ,A.ADDR_PHONE_NO AS addrPhoneNo |
|
| 412 |
- ,A.ADDR_INFO1 AS addrInfo1 |
|
| 413 |
- ,A.ADDR_INFO2 AS addrInfo2 |
|
| 414 |
- ,A.ADDR_INFO3 AS addrInfo3 |
|
| 415 |
- ,A.ADDR_INFO4 AS addrInfo4 |
|
| 416 |
- ,A.ADDR_COMMENT AS addrComment |
|
| 417 |
- ,A.FRST_REGIST_PNTTM AS frstRegistPnttm |
|
| 418 |
- ,A.FRST_REGISTER_ID AS frstRegisterId |
|
| 419 |
- ,A.LAST_UPDT_PNTTM AS lastUpdtPnttm |
|
| 420 |
- ,A.LAST_UPDUSR_ID AS lastUpdusrId |
|
| 421 |
- ,A.DELETE_YN AS deleteYn |
|
| 422 |
- ,A.BOOKMARK AS bookmark |
|
| 423 |
- ,CASE |
|
| 424 |
- WHEN A.ADDR_GRP_ID = 0 AND A.BOOKMARK = 'N' |
|
| 425 |
- THEN '그룹미지정' |
|
| 426 |
- WHEN A.ADDR_GRP_ID = 0 AND A.BOOKMARK = 'Y' |
|
| 427 |
- THEN '자주보내는 번호' |
|
| 428 |
- ELSE B.ADDR_GRP_NM |
|
| 429 |
- END AS addrGrpNm |
|
| 430 |
- FROM |
|
| 431 |
- MJ_ADDR A |
|
| 432 |
- LEFT OUTER JOIN |
|
| 433 |
- MJ_ADDR_GRP B |
|
| 434 |
- ON |
|
| 435 |
- A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 436 |
- LEFT OUTER JOIN |
|
| 437 |
- MJ_ADDR_TRANS_HIST C |
|
| 438 |
- ON |
|
| 439 |
- B.ADDR_GRP_ID = C.ADDR_GRP_ID |
|
| 440 |
- WHERE 1=1 |
|
| 441 |
- AND (C.RECV_STATUS = 'Y' OR C.RECV_STATUS IS NULL) |
|
| 442 |
- <isNotEmpty property="mberId"> |
|
| 443 |
- AND A.MBER_ID = #mberId# |
|
| 444 |
- </isNotEmpty> |
|
| 445 |
- <isNotEmpty prepend="AND" property="searchStartDate"> |
|
| 446 |
- <![CDATA[ |
|
| 447 |
- A.FRST_REGIST_PNTTM >= DATE_FORMAT(#searchStartDate#, '%Y-%m-%d') |
|
| 448 |
- ]]> |
|
| 449 |
- </isNotEmpty> |
|
| 450 |
- <isNotEmpty prepend="AND" property="searchEndDate"> |
|
| 451 |
- <![CDATA[ |
|
| 452 |
- DATE_FORMAT(A.FRST_REGIST_PNTTM, '%Y-%m-%d') <= DATE_ADD(DATE_FORMAT(#searchEndDate#, '%Y-%m-%d') , INTERVAL 1 DAY) |
|
| 453 |
- ]]> |
|
| 454 |
- </isNotEmpty> |
|
| 455 |
- <isNotEmpty property="addrIdList"> |
|
| 456 |
- <iterate prepend="AND A.ADDR_ID IN " open="(" close=")" conjunction="," property="addrIdList">
|
|
| 457 |
- #addrIdList[]# |
|
| 458 |
- </iterate> |
|
| 459 |
- </isNotEmpty> |
|
| 460 |
- <isNotEmpty property="addrGrpId"> |
|
| 461 |
- AND A.ADDR_GRP_ID = #addrGrpId# |
|
| 462 |
- </isNotEmpty> |
|
| 463 |
- <isNotEmpty property="searchKeyword"> |
|
| 464 |
- <isEqual property="searchCondition" compareValue=""> |
|
| 465 |
- AND ( A.ADDR_PHONE_NO LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 466 |
- OR A.ADDR_NM LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 467 |
- ) |
|
| 468 |
- </isEqual> |
|
| 469 |
- <isEqual property="searchCondition" compareValue="1"> |
|
| 470 |
- AND A.ADDR_PHONE_NO LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 471 |
- </isEqual> |
|
| 472 |
- <isEqual property="searchCondition" compareValue="2"> |
|
| 473 |
- AND A.ADDR_NM LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 474 |
- </isEqual> |
|
| 475 |
- <isEqual property="searchCondition" compareValue="3"> |
|
| 476 |
- AND A.MBER_ID LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 477 |
- </isEqual> |
|
| 478 |
- </isNotEmpty> |
|
| 479 |
- <isNotEmpty property="searchAddrGrpId"> |
|
| 480 |
- <isEqual property="searchAddrGrpId" compareValue="bookmark"> |
|
| 481 |
- AND A.BOOKMARK = 'Y' |
|
| 482 |
- </isEqual> |
|
| 483 |
- <isNotEqual property="searchAddrGrpId" compareValue="bookmark"> |
|
| 484 |
- <isEqual property="searchAddrGrpId" compareValue="noGrp"> |
|
| 485 |
- AND A.ADDR_GRP_ID = '0' AND A.BOOKMARK = 'N' |
|
| 486 |
- </isEqual> |
|
| 487 |
- <isNotEqual property="searchAddrGrpId" compareValue="noGrp"> |
|
| 488 |
- AND A.ADDR_GRP_ID = #searchAddrGrpId# |
|
| 489 |
- </isNotEqual> |
|
| 490 |
- </isNotEqual> |
|
| 491 |
- </isNotEmpty> |
|
| 492 |
- <isEqual property="startKeyword" compareValue="1"> |
|
| 493 |
- AND (A.ADDR_NM RLIKE '^(ㄱ|ㄲ)' OR (A.ADDR_NM <![CDATA[>=]]> '가' AND A.ADDR_NM <![CDATA[<]]> '나')) |
|
| 494 |
- </isEqual> |
|
| 495 |
- <isEqual property="startKeyword" compareValue="2"> |
|
| 496 |
- AND (A.ADDR_NM RLIKE '^(ㄴ)' OR (A.ADDR_NM <![CDATA[>=]]> '나' AND A.ADDR_NM <![CDATA[<]]> '다')) |
|
| 497 |
- </isEqual> |
|
| 498 |
- <isEqual property="startKeyword" compareValue="3"> |
|
| 499 |
- AND (A.ADDR_NM RLIKE '^(ㄷ|ㄸ)' OR (A.ADDR_NM <![CDATA[>=]]> '다' AND A.ADDR_NM <![CDATA[<]]> '라')) |
|
| 500 |
- </isEqual> |
|
| 501 |
- <isEqual property="startKeyword" compareValue="4"> |
|
| 502 |
- AND (A.ADDR_NM RLIKE '^(ㄹ)' OR (A.ADDR_NM <![CDATA[>=]]> '라' AND A.ADDR_NM <![CDATA[<]]> '마')) |
|
| 503 |
- </isEqual> |
|
| 504 |
- <isEqual property="startKeyword" compareValue="5"> |
|
| 505 |
- AND (A.ADDR_NM RLIKE '^(ㅁ)' OR (A.ADDR_NM <![CDATA[>=]]> '마' AND A.ADDR_NM <![CDATA[<]]> '바')) |
|
| 506 |
- </isEqual> |
|
| 507 |
- <isEqual property="startKeyword" compareValue="6"> |
|
| 508 |
- AND (A.ADDR_NM RLIKE '^(ㅂ|ㅃ)' OR (A.ADDR_NM <![CDATA[>=]]> '바' AND A.ADDR_NM <![CDATA[<]]> '사')) |
|
| 509 |
- </isEqual> |
|
| 510 |
- <isEqual property="startKeyword" compareValue="7"> |
|
| 511 |
- AND (A.ADDR_NM RLIKE '^(ㅅ|ㅆ)' OR (A.ADDR_NM <![CDATA[>=]]> '사' AND A.ADDR_NM <![CDATA[<]]> '아')) |
|
| 512 |
- </isEqual> |
|
| 513 |
- <isEqual property="startKeyword" compareValue="8"> |
|
| 514 |
- AND (A.ADDR_NM RLIKE '^(ㅇ)' OR (A.ADDR_NM <![CDATA[>=]]> '아' AND A.ADDR_NM <![CDATA[<]]> '자')) |
|
| 515 |
- </isEqual> |
|
| 516 |
- <isEqual property="startKeyword" compareValue="9"> |
|
| 517 |
- AND (A.ADDR_NM RLIKE '^(ㅈ|ㅉ)' OR (A.ADDR_NM <![CDATA[>=]]> '자' AND A.ADDR_NM <![CDATA[<]]> '차')) |
|
| 518 |
- </isEqual> |
|
| 519 |
- <isEqual property="startKeyword" compareValue="10"> |
|
| 520 |
- AND (A.ADDR_NM RLIKE '^(ㅊ)' OR (A.ADDR_NM <![CDATA[>=]]> '차' AND A.ADDR_NM <![CDATA[<]]> '카')) |
|
| 521 |
- </isEqual> |
|
| 522 |
- <isEqual property="startKeyword" compareValue="11"> |
|
| 523 |
- AND (A.ADDR_NM RLIKE '^(ㅋ)' OR (A.ADDR_NM <![CDATA[>=]]> '카' AND A.ADDR_NM <![CDATA[<]]> '타')) |
|
| 524 |
- </isEqual> |
|
| 525 |
- <isEqual property="startKeyword" compareValue="12"> |
|
| 526 |
- AND (A.ADDR_NM RLIKE '^(ㅌ)' OR (A.ADDR_NM <![CDATA[>=]]> '타' AND A.ADDR_NM <![CDATA[<]]> '파')) |
|
| 527 |
- </isEqual> |
|
| 528 |
- <isEqual property="startKeyword" compareValue="13"> |
|
| 529 |
- AND (A.ADDR_NM RLIKE '^(ㅍ)' OR (A.ADDR_NM <![CDATA[>=]]> '파' AND A.ADDR_NM <![CDATA[<]]> '하')) |
|
| 530 |
- </isEqual> |
|
| 531 |
- <isEqual property="startKeyword" compareValue="14"> |
|
| 532 |
- AND (A.ADDR_NM RLIKE '^(ㅎ)' OR (A.ADDR_NM <![CDATA[>=]]> '하' AND A.ADDR_NM <![CDATA[<=]]> '힣')) |
|
| 533 |
- </isEqual> |
|
| 534 |
- <isEqual property="startKeyword" compareValue="a"> |
|
| 535 |
- AND (A.ADDR_NM <![CDATA[>=]]> 'a' AND A.ADDR_NM <![CDATA[<=]]> 'z') |
|
| 536 |
- </isEqual> |
|
| 537 |
- <isEqual property="startKeyword" compareValue="0"> |
|
| 538 |
- AND (A.ADDR_NM <![CDATA[>=]]> '0' AND A.ADDR_NM <![CDATA[<=]]>'9') |
|
| 539 |
- </isEqual> |
|
| 540 |
- |
|
| 541 |
- ORDER BY 1=1 |
|
| 542 |
- <isNotEmpty property="searchSortCnd"> |
|
| 543 |
- ,$searchSortCnd$ |
|
| 544 |
- </isNotEmpty> |
|
| 545 |
- <isNotEmpty property="searchSortOrd"> |
|
| 546 |
- $searchSortOrd$ |
|
| 547 |
- </isNotEmpty> |
|
| 548 |
- LIMIT #recordCountPerPage# OFFSET #firstIndex# |
|
| 549 |
- ) M |
|
| 550 |
- </select> |
|
| 551 |
- |
|
| 552 |
- <!-- 회원별 주소록 전체 갯수 조회 --> |
|
| 553 |
- <select id="AddrDAO.selectAddrTotalCount" parameterClass="addrVO" resultClass="int"> |
|
| 554 |
- SELECT |
|
| 555 |
- COUNT(A.ADDR_ID) AS totCnt |
|
| 556 |
- FROM |
|
| 557 |
- MJ_ADDR A |
|
| 558 |
- WHERE |
|
| 559 |
- A.MBER_ID = #mberId# |
|
| 560 |
- AND (A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL) |
|
| 561 |
- AND A.DELETE_YN = 'N' |
|
| 562 |
- </select> |
|
| 563 |
- |
|
| 564 |
- <!-- 주소록 상세 조회 --> |
|
| 565 |
- <select id="AddrDAO.selectAddrDetail" parameterClass="addrVO" resultClass="addrVO"> |
|
| 566 |
- SELECT |
|
| 567 |
- A.ADDR_ID AS addrId |
|
| 568 |
- ,A.ADDR_GRP_ID AS addrGrpId |
|
| 569 |
- ,A.MBER_ID AS mberId |
|
| 570 |
- ,A.ADDR_NM AS addrNm |
|
| 571 |
- ,A.ADDR_PHONE_NO AS addrPhoneNo |
|
| 572 |
- ,A.ADDR_INFO1 AS addrInfo1 |
|
| 573 |
- ,A.ADDR_INFO2 AS addrInfo2 |
|
| 574 |
- ,A.ADDR_INFO3 AS addrInfo3 |
|
| 575 |
- ,A.ADDR_INFO4 AS addrInfo4 |
|
| 576 |
- ,A.ADDR_COMMENT AS addrComment |
|
| 577 |
- ,A.FRST_REGIST_PNTTM AS frstRegistPnttm |
|
| 578 |
- ,A.FRST_REGISTER_ID AS frstRegisterId |
|
| 579 |
- ,A.LAST_UPDT_PNTTM AS lastUpdtPnttm |
|
| 580 |
- ,A.LAST_UPDUSR_ID AS lastUpdusrId |
|
| 581 |
- ,A.DELETE_YN AS deleteYn |
|
| 582 |
- ,A.BOOKMARK AS bookmark |
|
| 583 |
- ,b.ADDR_GRP_NM AS addrGrpNm |
|
| 584 |
- FROM |
|
| 585 |
- MJ_ADDR a |
|
| 586 |
- LEFT OUTER JOIN |
|
| 587 |
- MJ_ADDR_GRP b |
|
| 588 |
- ON |
|
| 589 |
- a.ADDR_GRP_ID = b.ADDR_GRP_ID |
|
| 590 |
- WHERE |
|
| 591 |
- a.ADDR_ID = #addrId# |
|
| 592 |
- </select> |
|
| 593 |
- |
|
| 594 |
- |
|
| 595 |
- <!-- 주소록 등록 --> |
|
| 596 |
- <insert id="AddrDAO.insertAddr" parameterClass="addrVO"> |
|
| 597 |
- INSERT INTO MJ_ADDR ( |
|
| 598 |
- <isNotEmpty property="addrGrpId"> |
|
| 599 |
- ADDR_GRP_ID, |
|
| 600 |
- </isNotEmpty> |
|
| 601 |
- MBER_ID |
|
| 602 |
- ,ADDR_NM |
|
| 603 |
- ,ADDR_PHONE_NO |
|
| 604 |
- ,ADDR_INFO1 |
|
| 605 |
- ,ADDR_INFO2 |
|
| 606 |
- ,ADDR_INFO3 |
|
| 607 |
- ,ADDR_INFO4 |
|
| 608 |
- ,ADDR_COMMENT |
|
| 609 |
- ,FRST_REGIST_PNTTM |
|
| 610 |
- ,FRST_REGISTER_ID |
|
| 611 |
- <isNotEmpty property="bookmark"> |
|
| 612 |
- ,BOOKMARK |
|
| 613 |
- </isNotEmpty> |
|
| 614 |
- <isNotEmpty property="recvStatus"> |
|
| 615 |
- ,RECV_STATUS |
|
| 616 |
- </isNotEmpty> |
|
| 617 |
- )VALUES( |
|
| 618 |
- <isNotEmpty property="addrGrpId"> |
|
| 619 |
- #addrGrpId#, |
|
| 620 |
- </isNotEmpty> |
|
| 621 |
- #mberId# |
|
| 622 |
- ,#addrNm# |
|
| 623 |
- ,#addrPhoneNo# |
|
| 624 |
- ,#addrInfo1# |
|
| 625 |
- ,#addrInfo2# |
|
| 626 |
- ,#addrInfo3# |
|
| 627 |
- ,#addrInfo4# |
|
| 628 |
- ,#addrComment# |
|
| 629 |
- ,NOW() |
|
| 630 |
- ,#frstRegisterId# |
|
| 631 |
- <isNotEmpty property="bookmark"> |
|
| 632 |
- ,#bookmark# |
|
| 633 |
- </isNotEmpty> |
|
| 634 |
- <isNotEmpty property="recvStatus"> |
|
| 635 |
- ,#recvStatus# |
|
| 636 |
- </isNotEmpty> |
|
| 637 |
- ) |
|
| 638 |
- </insert> |
|
| 639 |
- |
|
| 640 |
- |
|
| 641 |
- <!-- 주소록 수정 --> |
|
| 642 |
- <update id="AddrDAO.updateAddr" parameterClass="addrVO"> |
|
| 643 |
- UPDATE |
|
| 644 |
- MJ_ADDR |
|
| 645 |
- SET |
|
| 646 |
- <isNotEmpty property="addrGrpId"> |
|
| 647 |
- ADDR_GRP_ID = #addrGrpId#, |
|
| 648 |
- </isNotEmpty> |
|
| 649 |
- <isNotEmpty property="addrPhoneNo"> |
|
| 650 |
- ADDR_PHONE_NO = #addrPhoneNo#, |
|
| 651 |
- </isNotEmpty> |
|
| 652 |
- ADDR_NM = #addrNm#, |
|
| 653 |
- ADDR_INFO1 = #addrInfo1#, |
|
| 654 |
- ADDR_INFO2 = #addrInfo2#, |
|
| 655 |
- ADDR_INFO3 = #addrInfo3#, |
|
| 656 |
- ADDR_INFO4 = #addrInfo4#, |
|
| 657 |
- <isNotEmpty property="addrComment"> |
|
| 658 |
- ADDR_COMMENT = #addrComment#, |
|
| 659 |
- </isNotEmpty> |
|
| 660 |
- <isNotEmpty property="bookmark"> |
|
| 661 |
- BOOKMARK = #bookmark#, |
|
| 662 |
- </isNotEmpty> |
|
| 663 |
- LAST_UPDT_PNTTM = NOW(), |
|
| 664 |
- LAST_UPDUSR_ID = #lastUpdusrId# |
|
| 665 |
- WHERE |
|
| 666 |
- MBER_ID = #mberId# |
|
| 667 |
- AND |
|
| 668 |
- ADDR_ID = #addrId# |
|
| 669 |
- </update> |
|
| 670 |
- |
|
| 671 |
- <!-- 주소록 그룹 수정 --> |
|
| 672 |
- <update id="AddrDAO.updateAddrGrp" parameterClass="addrVO"> |
|
| 673 |
- UPDATE |
|
| 674 |
- MJ_ADDR |
|
| 675 |
- SET |
|
| 676 |
- ADDR_GRP_ID = #addrGrpId#, |
|
| 677 |
- BOOKMARK = #bookmark#, |
|
| 678 |
- LAST_UPDT_PNTTM = NOW(), |
|
| 679 |
- LAST_UPDUSR_ID = #lastUpdusrId# |
|
| 680 |
- WHERE |
|
| 681 |
- MBER_ID = #mberId# |
|
| 682 |
- AND |
|
| 683 |
- ADDR_ID = #addrId# |
|
| 684 |
- </update> |
|
| 685 |
- |
|
| 686 |
- <!-- 주소록 메모 수정 --> |
|
| 687 |
- <update id="AddrDAO.updateMemoAddr" parameterClass="addrVO"> |
|
| 688 |
- UPDATE |
|
| 689 |
- MJ_ADDR |
|
| 690 |
- SET |
|
| 691 |
- ADDR_COMMENT = #addrComment# |
|
| 692 |
- WHERE |
|
| 693 |
- MBER_ID = #mberId# |
|
| 694 |
- AND |
|
| 695 |
- ADDR_ID = #addrId# |
|
| 696 |
- </update> |
|
| 697 |
- |
|
| 698 |
- |
|
| 699 |
- |
|
| 700 |
- <!-- 주소록 수정 By Admin --> |
|
| 701 |
- <update id="AddrDAO.updateAddrByAdmin" parameterClass="addrVO"> |
|
| 702 |
- UPDATE |
|
| 703 |
- MJ_ADDR |
|
| 704 |
- SET |
|
| 705 |
- <isNotEmpty property="addrGrpId"> |
|
| 706 |
- ADDR_GRP_ID = #addrGrpId#, |
|
| 707 |
- </isNotEmpty> |
|
| 708 |
- <isNotEmpty property="addrNm"> |
|
| 709 |
- ADDR_NM = #addrNm#, |
|
| 710 |
- </isNotEmpty> |
|
| 711 |
- <isNotEmpty property="addrPhoneNo"> |
|
| 712 |
- ADDR_PHONE_NO = #addrPhoneNo#, |
|
| 713 |
- </isNotEmpty> |
|
| 714 |
- <isNotEmpty property="addrInfo1"> |
|
| 715 |
- ADDR_INFO1 = #addrInfo1#, |
|
| 716 |
- </isNotEmpty> |
|
| 717 |
- <isNotEmpty property="addrInfo2"> |
|
| 718 |
- ADDR_INFO2 = #addrInfo2#, |
|
| 719 |
- </isNotEmpty> |
|
| 720 |
- <isNotEmpty property="addrInfo3"> |
|
| 721 |
- ADDR_INFO3 = #addrInfo3#, |
|
| 722 |
- </isNotEmpty> |
|
| 723 |
- <isNotEmpty property="addrInfo4"> |
|
| 724 |
- ADDR_INFO4 = #addrInfo4#, |
|
| 725 |
- </isNotEmpty> |
|
| 726 |
- <isNotEmpty property="addrComment"> |
|
| 727 |
- ADDR_COMMENT = #addrComment#, |
|
| 728 |
- </isNotEmpty> |
|
| 729 |
- <isNotEmpty property="bookmark"> |
|
| 730 |
- BOOKMARK = #bookmark#, |
|
| 731 |
- </isNotEmpty> |
|
| 732 |
- LAST_UPDT_PNTTM = NOW(), |
|
| 733 |
- LAST_UPDUSR_ID = #lastUpdusrId# |
|
| 734 |
- WHERE |
|
| 735 |
- ADDR_ID = #addrId# |
|
| 736 |
- </update> |
|
| 737 |
- |
|
| 738 |
- |
|
| 739 |
- <!-- 주소록 합치기, 이동 --> |
|
| 740 |
- <update id="AddrDAO.updateAddrsGrp" parameterClass="addrVO"> |
|
| 741 |
- UPDATE |
|
| 742 |
- MJ_ADDR |
|
| 743 |
- SET |
|
| 744 |
- ADDR_GRP_ID = #addrGrpId#, |
|
| 745 |
- LAST_UPDT_PNTTM = NOW(), |
|
| 746 |
- LAST_UPDUSR_ID = #lastUpdusrId# |
|
| 747 |
- WHERE |
|
| 748 |
- MBER_ID = #mberId# |
|
| 749 |
- AND |
|
| 750 |
- ADDR_GRP_ID |
|
| 751 |
- IN |
|
| 752 |
- <iterate property="mergeGrps" open="(" close=")" conjunction=",">
|
|
| 753 |
- #mergeGrps[]# |
|
| 754 |
- </iterate> |
|
| 755 |
- |
|
| 756 |
- </update> |
|
| 757 |
- |
|
| 758 |
- |
|
| 759 |
- |
|
| 760 |
- <!-- 주소록 삭제 --> |
|
| 761 |
- <delete id="AddrDAO.deleteAddr" parameterClass="addrVO"> |
|
| 762 |
- DELETE FROM |
|
| 763 |
- MJ_ADDR |
|
| 764 |
- WHERE |
|
| 765 |
- MBER_ID = #mberId# |
|
| 766 |
- <isEqual property="grpDelete" compareValue="Y"> |
|
| 767 |
- AND |
|
| 768 |
- ADDR_GRP_ID = #addrGrpId# |
|
| 769 |
- </isEqual> |
|
| 770 |
- <isNotEqual property="grpDelete" compareValue="Y"> |
|
| 771 |
- AND |
|
| 772 |
- ADDR_ID = #addrId# |
|
| 773 |
- </isNotEqual> |
|
| 774 |
- <isNotEmpty property="batchSize"> |
|
| 775 |
- LIMIT #batchSize# |
|
| 776 |
- </isNotEmpty> |
|
| 777 |
- </delete> |
|
| 778 |
- |
|
| 779 |
- <!-- 주소록 삭제 --> |
|
| 780 |
- <select id="AddrDAO.getAddrCount" parameterClass="addrVO" resultClass="int"> |
|
| 781 |
- |
|
| 782 |
- select |
|
| 783 |
- count(*) |
|
| 784 |
- FROM |
|
| 785 |
- MJ_ADDR |
|
| 786 |
- WHERE |
|
| 787 |
- MBER_ID = #mberId# |
|
| 788 |
- <isNotEmpty property="addrGrpId"> |
|
| 789 |
- AND |
|
| 790 |
- ADDR_GRP_ID = #addrGrpId# |
|
| 791 |
- </isNotEmpty> |
|
| 792 |
- </select> |
|
| 793 |
- |
|
| 794 |
- <!-- 주소록 삭제 By Admin --> |
|
| 795 |
- <delete id="AddrDAO.deleteAddrByAdmin" parameterClass="addrVO"> |
|
| 796 |
- DELETE FROM |
|
| 797 |
- MJ_ADDR |
|
| 798 |
- WHERE ADDR_ID = #addrId# |
|
| 799 |
- </delete> |
|
| 800 |
- |
|
| 801 |
- <!-- 주소록 삭제 By Admin By Grpid --> |
|
| 802 |
- <delete id="AddrDAO.deleteAddrByAdminByGrpid" parameterClass="addrVO"> |
|
| 803 |
- DELETE FROM |
|
| 804 |
- MJ_ADDR |
|
| 805 |
- WHERE ADDR_GRP_ID = #addrGrpId# |
|
| 806 |
- </delete> |
|
| 807 |
- |
|
| 808 |
- <!-- 주소록 기본 그룹 조회 (자주보내는번호, 그룹미지정)--> |
|
| 809 |
- <select id="AddrDAO.selectAddrBasicGrpList" parameterClass="addrVO" resultClass="addrVO"> |
|
| 810 |
- SELECT |
|
| 811 |
- COUNT(1) OVER() AS totCnt |
|
| 812 |
- ,A.ADDR_ID AS addrId |
|
| 813 |
- ,A.ADDR_GRP_ID AS addrGrpId |
|
| 814 |
- ,A.MBER_ID AS mberId |
|
| 815 |
- ,A.ADDR_NM AS addrNm |
|
| 816 |
- ,A.ADDR_PHONE_NO AS addrPhoneNo |
|
| 817 |
- ,A.ADDR_INFO1 AS addrInfo1 |
|
| 818 |
- ,A.ADDR_INFO2 AS addrInfo2 |
|
| 819 |
- ,A.ADDR_INFO3 AS addrInfo3 |
|
| 820 |
- ,A.ADDR_INFO4 AS addrInfo4 |
|
| 821 |
- ,A.ADDR_COMMENT AS addrComment |
|
| 822 |
- ,A.FRST_REGIST_PNTTM AS frstRegistPnttm |
|
| 823 |
- ,A.FRST_REGISTER_ID AS frstRegisterId |
|
| 824 |
- ,A.LAST_UPDT_PNTTM AS lastUpdtPnttm |
|
| 825 |
- ,A.LAST_UPDUSR_ID AS lastUpdusrId |
|
| 826 |
- ,A.DELETE_YN AS deleteYn |
|
| 827 |
- ,A.BOOKMARK AS bookmark |
|
| 828 |
- ,B.ADDR_GRP_NM AS addrGrpNm |
|
| 829 |
- FROM |
|
| 830 |
- MJ_ADDR A |
|
| 831 |
- LEFT OUTER JOIN |
|
| 832 |
- MJ_ADDR_GRP B |
|
| 833 |
- ON |
|
| 834 |
- A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 835 |
- WHERE |
|
| 836 |
- A.MBER_ID = #mberId# |
|
| 837 |
- <isEqual property="type" compareValue="bookmark"> |
|
| 838 |
- AND |
|
| 839 |
- A.BOOKMARK = 'Y' |
|
| 840 |
- </isEqual> |
|
| 841 |
- <isEqual property="type" compareValue="noGrp"> |
|
| 842 |
- AND |
|
| 843 |
- A.ADDR_GRP_ID = '0' |
|
| 844 |
- |
|
| 845 |
- AND |
|
| 846 |
- A.BOOKMARK = 'N' |
|
| 847 |
- </isEqual> |
|
| 848 |
- ORDER BY 1=1 |
|
| 849 |
- <isNotEmpty property="searchSortCnd"> |
|
| 850 |
- ,$searchSortCnd$ |
|
| 851 |
- </isNotEmpty> |
|
| 852 |
- <isNotEmpty property="searchSortOrd"> |
|
| 853 |
- $searchSortOrd$ |
|
| 854 |
- </isNotEmpty> |
|
| 855 |
- </select> |
|
| 856 |
- |
|
| 857 |
- |
|
| 858 |
- <update id="AddrDAO.insertCopyAddr" parameterClass="addrVO"> |
|
| 859 |
- INSERT INTO MJ_ADDR ( |
|
| 860 |
- ADDR_GRP_ID |
|
| 861 |
- ,MBER_ID |
|
| 862 |
- ,ADDR_NM |
|
| 863 |
- ,ADDR_PHONE_NO |
|
| 864 |
- ,ADDR_INFO1 |
|
| 865 |
- ,ADDR_INFO2 |
|
| 866 |
- ,ADDR_INFO3 |
|
| 867 |
- ,ADDR_INFO4 |
|
| 868 |
- ,ADDR_COMMENT |
|
| 869 |
- ,FRST_REGIST_PNTTM |
|
| 870 |
- ,FRST_REGISTER_ID |
|
| 871 |
- <isNotEmpty property="bookmark"> |
|
| 872 |
- ,BOOKMARK |
|
| 873 |
- </isNotEmpty> |
|
| 874 |
- ) |
|
| 875 |
- SELECT |
|
| 876 |
- #addrGrpId# AS ADDR_GRP_ID |
|
| 877 |
- ,MBER_ID |
|
| 878 |
- ,ADDR_NM |
|
| 879 |
- ,ADDR_PHONE_NO |
|
| 880 |
- ,ADDR_INFO1 |
|
| 881 |
- ,ADDR_INFO2 |
|
| 882 |
- ,ADDR_INFO3 |
|
| 883 |
- ,ADDR_INFO4 |
|
| 884 |
- ,ADDR_COMMENT |
|
| 885 |
- ,NOW() |
|
| 886 |
- ,MBER_ID |
|
| 887 |
- <isNotEmpty property="bookmark"> |
|
| 888 |
- ,#bookmark# |
|
| 889 |
- </isNotEmpty> |
|
| 890 |
- FROM MJ_ADDR |
|
| 891 |
- WHERE |
|
| 892 |
- MBER_ID = #mberId# |
|
| 893 |
- AND |
|
| 894 |
- ADDR_ID = #addrId# |
|
| 895 |
- </update> |
|
| 896 |
- |
|
| 897 |
- <!-- /주소록 등록 갯수 및 정보 불러오기/ --> |
|
| 898 |
- <select id="AddrDAO.selectAddrTotCntInfByUserId" parameterClass="addrVO" resultClass="egovMap"> |
|
| 899 |
- |
|
| 900 |
- SELECT COUNT(MBER_ID) OVER() AS totCnt, |
|
| 901 |
- ADDR_ID AS addrId, |
|
| 902 |
- ADDR_GRP_ID AS addrGrpId, |
|
| 903 |
- MBER_ID AS mberId, |
|
| 904 |
- ADDR_NM AS addrnm, |
|
| 905 |
- ADDR_PHONE_NO AS addrPhoneNo, |
|
| 906 |
- ADDR_INFO1 AS addrInfo1, |
|
| 907 |
- ADDR_INFO2 AS addrInfo2, |
|
| 908 |
- ADDR_INFO3 AS addrInfo3, |
|
| 909 |
- ADDR_INFO4 AS addrInfo4, |
|
| 910 |
- ADDR_COMMENT AS addrComment, |
|
| 911 |
- BOOKMARK AS bookmark, |
|
| 912 |
- FRST_REGIST_PNTTM AS frstRegistPnttm, |
|
| 913 |
- LAST_UPDT_PNTTM AS lastUpdtPnttm |
|
| 914 |
- FROM MJ_ADDR a |
|
| 915 |
- WHERE a.MBER_ID = #mberId# |
|
| 916 |
- AND delete_yn = 'N' |
|
| 917 |
- |
|
| 918 |
- </select> |
|
| 919 |
- |
|
| 920 |
- <insert id="AddrDAO.insertAddrList" parameterClass="java.util.List"> |
|
| 921 |
- /* AddrDAO.insertAddrList */ |
|
| 922 |
- INSERT INTO MJ_ADDR |
|
| 923 |
- ( |
|
| 924 |
- MBER_ID, |
|
| 925 |
- ADDR_GRP_ID, |
|
| 926 |
- ADDR_NM, |
|
| 927 |
- ADDR_PHONE_NO, |
|
| 928 |
- ADDR_INFO1, |
|
| 929 |
- ADDR_INFO2, |
|
| 930 |
- ADDR_INFO3, |
|
| 931 |
- ADDR_INFO4, |
|
| 932 |
- DELETE_YN, |
|
| 933 |
- BOOKMARK, |
|
| 934 |
- ADDR_COMMENT, |
|
| 935 |
- FRST_REGISTER_ID |
|
| 936 |
- ) |
|
| 937 |
- <iterate prepend="VALUES" conjunction=","> |
|
| 938 |
- ( |
|
| 939 |
- #[].mberId#, |
|
| 940 |
- #[].addrGrpId#, |
|
| 941 |
- #[].addrNm#, |
|
| 942 |
- #[].addrPhoneNo#, |
|
| 943 |
- #[].addrInfo1#, |
|
| 944 |
- #[].addrInfo2#, |
|
| 945 |
- #[].addrInfo3#, |
|
| 946 |
- #[].addrInfo4#, |
|
| 947 |
- 'N', |
|
| 948 |
- #[].bookmark#, |
|
| 949 |
- #[].addrComment#, |
|
| 950 |
- #[].frstRegisterId# |
|
| 951 |
- ) |
|
| 952 |
- </iterate> |
|
| 953 |
- |
|
| 954 |
- </insert> |
|
| 955 |
- |
|
| 956 |
- <!-- 주소록 그룹명 중복확인 --> |
|
| 957 |
- <select id="AddrDAO.selectDuplAddrCnt" parameterClass="addrVO" resultClass="int"> |
|
| 958 |
- SELECT |
|
| 959 |
- COUNT(1) usedCnt |
|
| 960 |
- FROM |
|
| 961 |
- MJ_ADDR |
|
| 962 |
- WHERE |
|
| 963 |
- ADDR_GRP_ID = #addrGrpId# |
|
| 964 |
- AND MBER_ID = #mberId# |
|
| 965 |
- AND ADDR_PHONE_NO = #addrPhoneNo# |
|
| 966 |
- <isNotEmpty property="bookmark"> |
|
| 967 |
- <isEqual property="bookmark" compareValue="Y"> |
|
| 968 |
- AND IFNULL(BOOKMARK, 'N') = 'Y' |
|
| 969 |
- </isEqual> |
|
| 970 |
- </isNotEmpty> |
|
| 971 |
- <isEmpty property="bookmark"> |
|
| 972 |
- AND IFNULL(BOOKMARK, 'N') = 'N' |
|
| 973 |
- </isEmpty> |
|
| 974 |
- </select> |
|
| 975 |
- |
|
| 976 |
- |
|
| 977 |
- <!-- 주소록 한 그룹에 속한 주소록의 전화번호 조회(중복체크용도) --> |
|
| 978 |
- <select id="AddrDAO.selectPhoneNumInAddrGroup" parameterClass="addrVO" resultClass="addrVO"> |
|
| 979 |
- SELECT |
|
| 980 |
- ADDR_PHONE_NO AS addrPhoneNo |
|
| 981 |
- FROM |
|
| 982 |
- MJ_ADDR |
|
| 983 |
- WHERE |
|
| 984 |
- ADDR_GRP_ID = #addrGrpId# |
|
| 985 |
- AND MBER_ID = #mberId# |
|
| 986 |
- AND BOOKMARK = #bookmark# |
|
| 987 |
- </select> |
|
| 988 |
- |
|
| 989 |
- <update id="AddrDAO.insertCopyAddrs" parameterClass="addrVO"> |
|
| 990 |
- INSERT INTO MJ_ADDR ( |
|
| 991 |
- ADDR_GRP_ID |
|
| 992 |
- ,MBER_ID |
|
| 993 |
- ,ADDR_NM |
|
| 994 |
- ,ADDR_PHONE_NO |
|
| 995 |
- ,ADDR_INFO1 |
|
| 996 |
- ,ADDR_INFO2 |
|
| 997 |
- ,ADDR_INFO3 |
|
| 998 |
- ,ADDR_INFO4 |
|
| 999 |
- ,ADDR_COMMENT |
|
| 1000 |
- ,FRST_REGIST_PNTTM |
|
| 1001 |
- ,FRST_REGISTER_ID |
|
| 1002 |
- ) |
|
| 1003 |
- SELECT |
|
| 1004 |
- #addrGrpId# AS ADDR_GRP_ID |
|
| 1005 |
- ,MBER_ID |
|
| 1006 |
- ,ADDR_NM |
|
| 1007 |
- ,ADDR_PHONE_NO |
|
| 1008 |
- ,ADDR_INFO1 |
|
| 1009 |
- ,ADDR_INFO2 |
|
| 1010 |
- ,ADDR_INFO3 |
|
| 1011 |
- ,ADDR_INFO4 |
|
| 1012 |
- ,ADDR_COMMENT |
|
| 1013 |
- ,NOW() |
|
| 1014 |
- ,MBER_ID |
|
| 1015 |
- FROM MJ_ADDR |
|
| 1016 |
- WHERE |
|
| 1017 |
- MBER_ID = #mberId# |
|
| 1018 |
- AND |
|
| 1019 |
- ADDR_GRP_ID IN |
|
| 1020 |
- <iterate property="copyAddrs" open="(" close=")" conjunction=",">
|
|
| 1021 |
- #copyAddrs[]# |
|
| 1022 |
- </iterate> |
|
| 1023 |
- </update> |
|
| 1024 |
- |
|
| 1025 |
- <!-- 문자페이지로 전송할 데이터만 추려오기 --> |
|
| 1026 |
- <select id="AddrDAO.selectAddrDataList" parameterClass="addrVO" resultClass="addrVO"> |
|
| 1027 |
- SELECT |
|
| 1028 |
- COUNT(1) OVER() AS totCnt |
|
| 1029 |
- ,A.ADDR_ID AS addrId |
|
| 1030 |
- ,A.ADDR_GRP_ID AS addrGrpId |
|
| 1031 |
- ,A.MBER_ID AS mberId |
|
| 1032 |
- ,A.ADDR_NM AS addrNm |
|
| 1033 |
- ,A.ADDR_PHONE_NO AS addrPhoneNo |
|
| 1034 |
- ,A.ADDR_INFO1 AS addrInfo1 |
|
| 1035 |
- ,A.ADDR_INFO2 AS addrInfo2 |
|
| 1036 |
- ,A.ADDR_INFO3 AS addrInfo3 |
|
| 1037 |
- ,A.ADDR_INFO4 AS addrInfo4 |
|
| 1038 |
- ,A.ADDR_COMMENT AS addrComment |
|
| 1039 |
- ,A.FRST_REGIST_PNTTM AS frstRegistPnttm |
|
| 1040 |
- ,A.FRST_REGISTER_ID AS frstRegisterId |
|
| 1041 |
- ,A.LAST_UPDT_PNTTM AS lastUpdtPnttm |
|
| 1042 |
- ,A.LAST_UPDUSR_ID AS lastUpdusrId |
|
| 1043 |
- ,A.DELETE_YN AS deleteYn |
|
| 1044 |
- ,A.BOOKMARK AS bookmark |
|
| 1045 |
- FROM |
|
| 1046 |
- MJ_ADDR A |
|
| 1047 |
- WHERE |
|
| 1048 |
- A.MBER_ID = #mberId# |
|
| 1049 |
- <iterate prepend="AND A.ADDR_ID IN " open="(" close=")" conjunction="," property="addrIdList">
|
|
| 1050 |
- #addrIdList[]# |
|
| 1051 |
- </iterate> |
|
| 1052 |
- ORDER BY A.ADDR_NM ASC |
|
| 1053 |
- </select> |
|
| 1054 |
- |
|
| 1055 |
- <!-- 주소록 그룹별 중복 연락처 삭제 --> |
|
| 1056 |
- <delete id="AddrDAO.deleteAddrDupliList" parameterClass="addrVO"> |
|
| 1057 |
- DELETE FROM MJ_ADDR WHERE ADDR_ID IN ( |
|
| 1058 |
- SELECT |
|
| 1059 |
- M.ADDR_ID |
|
| 1060 |
- FROM ( |
|
| 1061 |
- SELECT |
|
| 1062 |
- A.ADDR_ID |
|
| 1063 |
- , A.ADDR_PHONE_NO |
|
| 1064 |
- , COUNT(0) AS DUPLI_CNT |
|
| 1065 |
- FROM MJ_ADDR A |
|
| 1066 |
- LEFT OUTER JOIN MJ_ADDR_GRP B |
|
| 1067 |
- ON A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 1068 |
- WHERE A.MBER_ID = #mberId# |
|
| 1069 |
- AND (A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL) |
|
| 1070 |
- AND A.DELETE_YN = 'N' |
|
| 1071 |
- GROUP BY A.ADDR_GRP_ID, A.BOOKMARK, A.ADDR_PHONE_NO |
|
| 1072 |
- ) M |
|
| 1073 |
- WHERE M.DUPLI_CNT > 1 |
|
| 1074 |
- ) |
|
| 1075 |
- </delete> |
|
| 1076 |
- |
|
| 1077 |
- <!-- 주소록 그룹별 중복 연락처 리스트 불러오기 --> |
|
| 1078 |
- <select id="AddrDAO.selectAddrDupliList" parameterClass="addrVO" resultClass="addrVO"> |
|
| 1079 |
- SELECT |
|
| 1080 |
- M.ADDR_GRP_NM AS addrGrpNm |
|
| 1081 |
- , COUNT(0) AS dupliCnt |
|
| 1082 |
- FROM ( |
|
| 1083 |
- SELECT |
|
| 1084 |
- A.ADDR_ID |
|
| 1085 |
- ,CASE |
|
| 1086 |
- WHEN A.ADDR_GRP_ID = 0 AND A.BOOKMARK = 'N' |
|
| 1087 |
- THEN '그룹미지정' |
|
| 1088 |
- WHEN A.ADDR_GRP_ID = 0 AND A.BOOKMARK = 'Y' |
|
| 1089 |
- THEN '자주보내는 번호' |
|
| 1090 |
- ELSE B.ADDR_GRP_NM |
|
| 1091 |
- END ADDR_GRP_NM |
|
| 1092 |
- ,A.ADDR_PHONE_NO |
|
| 1093 |
- ,COUNT(0) AS DUPLI_CNT |
|
| 1094 |
- FROM MJ_ADDR A |
|
| 1095 |
- LEFT OUTER JOIN MJ_ADDR_GRP B |
|
| 1096 |
- ON A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 1097 |
- WHERE A.MBER_ID = #mberId# |
|
| 1098 |
- AND (A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL) |
|
| 1099 |
- AND A.DELETE_YN = 'N' |
|
| 1100 |
- GROUP BY A.ADDR_GRP_ID, A.BOOKMARK, A.ADDR_PHONE_NO |
|
| 1101 |
- ) M |
|
| 1102 |
- WHERE M.DUPLI_CNT > 1 |
|
| 1103 |
- GROUP BY M.ADDR_GRP_NM |
|
| 1104 |
- </select> |
|
| 1105 |
- |
|
| 1106 |
- <!-- 주소록 그룹별 중복 연락처 삭제 --> |
|
| 1107 |
- <delete id="AddrDAO.deleteAddrDupliListByGrpnm" parameterClass="addrVO"> |
|
| 1108 |
- DELETE FROM MJ_ADDR WHERE ADDR_ID IN ( |
|
| 1109 |
- SELECT |
|
| 1110 |
- M.ADDR_ID |
|
| 1111 |
- FROM ( |
|
| 1112 |
- SELECT |
|
| 1113 |
- A.ADDR_ID |
|
| 1114 |
- ,COUNT(0) AS DUPLI_CNT |
|
| 1115 |
- FROM MJ_ADDR A |
|
| 1116 |
- LEFT OUTER JOIN MJ_ADDR_GRP B |
|
| 1117 |
- ON A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 1118 |
- WHERE A.MBER_ID = #mberId# |
|
| 1119 |
- AND A.ADDR_GRP_ID = #addrGrpId# |
|
| 1120 |
- AND A.BOOKMARK = #bookmark# |
|
| 1121 |
- AND (A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL) |
|
| 1122 |
- AND A.DELETE_YN = 'N' |
|
| 1123 |
- GROUP BY A.ADDR_GRP_ID, A.BOOKMARK, A.ADDR_PHONE_NO |
|
| 1124 |
- ) M |
|
| 1125 |
- WHERE M.DUPLI_CNT > 1 |
|
| 1126 |
- ) |
|
| 1127 |
- |
|
| 1128 |
- </delete> |
|
| 1129 |
- |
|
| 1130 |
- <!-- 주소록 그룹별 중복 연락처 리스트 불러오기 --> |
|
| 1131 |
- <select id="AddrDAO.selectAddrDupliListByGrpnm" parameterClass="addrVO" resultClass="addrVO"> |
|
| 1132 |
- SELECT |
|
| 1133 |
- M.ADDR_GRP_NM AS addrGrpNm |
|
| 1134 |
- , COUNT(0) AS dupliCnt |
|
| 1135 |
- FROM ( |
|
| 1136 |
- SELECT |
|
| 1137 |
- A.ADDR_ID |
|
| 1138 |
- ,CASE |
|
| 1139 |
- WHEN A.ADDR_GRP_ID = 0 AND A.BOOKMARK = 'N' |
|
| 1140 |
- THEN '그룹미지정' |
|
| 1141 |
- WHEN A.ADDR_GRP_ID = 0 AND A.BOOKMARK = 'Y' |
|
| 1142 |
- THEN '자주보내는 번호' |
|
| 1143 |
- ELSE B.ADDR_GRP_NM |
|
| 1144 |
- END ADDR_GRP_NM |
|
| 1145 |
- ,A.ADDR_PHONE_NO |
|
| 1146 |
- ,COUNT(0) AS DUPLI_CNT |
|
| 1147 |
- FROM MJ_ADDR A |
|
| 1148 |
- LEFT OUTER JOIN MJ_ADDR_GRP B |
|
| 1149 |
- ON A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 1150 |
- WHERE A.MBER_ID = #mberId# |
|
| 1151 |
- AND A.ADDR_GRP_ID = #addrGrpId# |
|
| 1152 |
- AND A.BOOKMARK = #bookmark# |
|
| 1153 |
- AND (A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL) |
|
| 1154 |
- AND A.DELETE_YN = 'N' |
|
| 1155 |
- GROUP BY A.ADDR_GRP_ID, A.BOOKMARK, A.ADDR_PHONE_NO |
|
| 1156 |
- ) M |
|
| 1157 |
- WHERE M.DUPLI_CNT > 1 |
|
| 1158 |
- GROUP BY M.ADDR_GRP_NM |
|
| 1159 |
- </select> |
|
| 1160 |
- |
|
| 1161 |
- |
|
| 1162 |
- <!-- 주소록 전체 중복 연락처 중 한개만 남기고 삭제 --> |
|
| 1163 |
- <delete id="AddrDAO.deleteAddrDupliListByAll" parameterClass="addrVO"> |
|
| 1164 |
- DELETE FROM MJ_ADDR WHERE ADDR_ID IN ( |
|
| 1165 |
- SELECT |
|
| 1166 |
- M.ADDR_ID |
|
| 1167 |
- FROM ( |
|
| 1168 |
- SELECT |
|
| 1169 |
- A.ADDR_ID |
|
| 1170 |
- , A.ADDR_PHONE_NO |
|
| 1171 |
- , COUNT(0) AS DUPLI_CNT |
|
| 1172 |
- FROM MJ_ADDR A |
|
| 1173 |
- LEFT OUTER JOIN MJ_ADDR_GRP B |
|
| 1174 |
- ON A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 1175 |
- WHERE A.MBER_ID = #mberId# |
|
| 1176 |
- AND (A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL) |
|
| 1177 |
- AND A.DELETE_YN = 'N' |
|
| 1178 |
- GROUP BY A.ADDR_PHONE_NO |
|
| 1179 |
- ORDER BY A.ADDR_PHONE_NO ASC, B.ADDR_GRP_ID ASC |
|
| 1180 |
- ) M |
|
| 1181 |
- WHERE M.DUPLI_CNT > 1 |
|
| 1182 |
- ) |
|
| 1183 |
- |
|
| 1184 |
- </delete> |
|
| 1185 |
- |
|
| 1186 |
- <!-- 주소록 전체 중복 연락처 수 --> |
|
| 1187 |
- <select id="AddrDAO.selectAddrDupliListByAllCnt" parameterClass="addrVO" resultClass="int"> |
|
| 1188 |
- SELECT |
|
| 1189 |
- COUNT(0) AS totCnt |
|
| 1190 |
- FROM ( |
|
| 1191 |
- SELECT |
|
| 1192 |
- A.ADDR_ID |
|
| 1193 |
- , A.ADDR_PHONE_NO |
|
| 1194 |
- , COUNT(0) AS DUPLI_CNT |
|
| 1195 |
- FROM MJ_ADDR A |
|
| 1196 |
- LEFT OUTER JOIN MJ_ADDR_GRP B |
|
| 1197 |
- ON A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 1198 |
- WHERE A.MBER_ID = #mberId# |
|
| 1199 |
- AND (A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL) |
|
| 1200 |
- AND A.DELETE_YN = 'N' |
|
| 1201 |
- GROUP BY A.ADDR_PHONE_NO |
|
| 1202 |
- ORDER BY A.ADDR_PHONE_NO ASC, B.ADDR_GRP_ID ASC |
|
| 1203 |
- ) M |
|
| 1204 |
- WHERE M.DUPLI_CNT > 1 |
|
| 1205 |
- </select> |
|
| 1206 |
- |
|
| 1207 |
- <!-- 주소록 전체 중복 연락처 목록 --> |
|
| 1208 |
- <select id="AddrDAO.selectAddrDupliListByAll" parameterClass="addrVO" resultClass="addrVO"> |
|
| 1209 |
- SELECT |
|
| 1210 |
- COUNT(1) OVER() AS totCnt |
|
| 1211 |
- , A2.ADDR_ID AS addrId |
|
| 1212 |
- , A2.ADDR_NM AS addrNm |
|
| 1213 |
- , A2.ADDR_GRP_ID AS addrGrpId |
|
| 1214 |
- ,CASE |
|
| 1215 |
- WHEN A2.ADDR_GRP_ID = 0 AND A2.BOOKMARK = 'N' |
|
| 1216 |
- THEN '그룹미지정' |
|
| 1217 |
- WHEN A2.ADDR_GRP_ID = 0 AND A2.BOOKMARK = 'Y' |
|
| 1218 |
- THEN '자주보내는 번호' |
|
| 1219 |
- ELSE B2.ADDR_GRP_NM |
|
| 1220 |
- END addrGrpNm |
|
| 1221 |
- , A2.ADDR_PHONE_NO AS addrPhoneNo |
|
| 1222 |
- FROM MJ_ADDR A2 |
|
| 1223 |
- LEFT OUTER JOIN MJ_ADDR_GRP B2 |
|
| 1224 |
- ON A2.ADDR_GRP_ID = B2.ADDR_GRP_ID |
|
| 1225 |
- WHERE A2.MBER_ID = #mberId# |
|
| 1226 |
- AND A2.ADDR_PHONE_NO IN |
|
| 1227 |
- ( |
|
| 1228 |
- SELECT |
|
| 1229 |
- M.ADDR_PHONE_NO |
|
| 1230 |
- FROM ( |
|
| 1231 |
- SELECT |
|
| 1232 |
- A.ADDR_ID |
|
| 1233 |
- , A.ADDR_PHONE_NO |
|
| 1234 |
- , COUNT(0) AS DUPLI_CNT |
|
| 1235 |
- FROM MJ_ADDR A |
|
| 1236 |
- LEFT OUTER JOIN MJ_ADDR_GRP B |
|
| 1237 |
- ON A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 1238 |
- WHERE A.MBER_ID = #mberId# |
|
| 1239 |
- AND (A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL) |
|
| 1240 |
- AND A.DELETE_YN = 'N' |
|
| 1241 |
- GROUP BY A.ADDR_PHONE_NO |
|
| 1242 |
- ORDER BY A.ADDR_PHONE_NO ASC, B.ADDR_GRP_ID ASC |
|
| 1243 |
- ) M |
|
| 1244 |
- WHERE M.DUPLI_CNT > 1 |
|
| 1245 |
- ) |
|
| 1246 |
- ORDER BY A2.ADDR_PHONE_NO ASC, ADDR_GRP_NM ASC |
|
| 1247 |
- LIMIT #recordCountPerPage# OFFSET #firstIndex# |
|
| 1248 |
- </select> |
|
| 1249 |
- |
|
| 1250 |
- <!-- TEMP 주소록 중복 연락처 목록 --> |
|
| 1251 |
- <select id="AddrDAO.selectTempAddrDupliList" parameterClass="addrVO" resultClass="addrVO"> |
|
| 1252 |
- SELECT |
|
| 1253 |
- ADDR_NM AS addrNm |
|
| 1254 |
- , ADDR_PHONE_NO AS addrPhoneNo |
|
| 1255 |
- FROM TEMP_MJ_ADDR |
|
| 1256 |
- WHERE MBER_ID = #mberId# |
|
| 1257 |
- AND ADDR_GRP_ID = #addrGrpId# |
|
| 1258 |
- AND BOOKMARK = #bookmark# |
|
| 1259 |
- AND ADDR_PHONE_NO IN |
|
| 1260 |
- ( |
|
| 1261 |
- SELECT ADDR_PHONE_NO FROM MJ_ADDR |
|
| 1262 |
- WHERE MBER_ID = #mberId# |
|
| 1263 |
- AND ADDR_GRP_ID = #addrGrpId# |
|
| 1264 |
- AND BOOKMARK = #bookmark# |
|
| 1265 |
- ) |
|
| 1266 |
- ORDER BY ADDR_PHONE_NO ASC |
|
| 1267 |
- </select> |
|
| 1268 |
- |
|
| 1269 |
- <!-- TEMP 주소록 삭제 --> |
|
| 1270 |
- <delete id="AddrDAO.deleteTempAddr" parameterClass="addrVO"> |
|
| 1271 |
- DELETE FROM TEMP_MJ_ADDR WHERE MBER_ID = #mberId# |
|
| 1272 |
- </delete> |
|
| 1273 |
- |
|
| 1274 |
- <!-- TEMP 주소록 대량등록 --> |
|
| 1275 |
- <insert id="AddrDAO.insertTempAddrList" parameterClass="java.util.List"> |
|
| 1276 |
- |
|
| 1277 |
- INSERT INTO TEMP_MJ_ADDR |
|
| 1278 |
- ( |
|
| 1279 |
- MBER_ID, |
|
| 1280 |
- ADDR_GRP_ID, |
|
| 1281 |
- ADDR_NM, |
|
| 1282 |
- ADDR_PHONE_NO, |
|
| 1283 |
- ADDR_INFO1, |
|
| 1284 |
- ADDR_INFO2, |
|
| 1285 |
- ADDR_INFO3, |
|
| 1286 |
- ADDR_INFO4, |
|
| 1287 |
- DELETE_YN, |
|
| 1288 |
- BOOKMARK, |
|
| 1289 |
- ADDR_COMMENT, |
|
| 1290 |
- FRST_REGISTER_ID |
|
| 1291 |
- )VALUES |
|
| 1292 |
- <iterate conjunction=","> |
|
| 1293 |
- ( |
|
| 1294 |
- #[].mberId#, |
|
| 1295 |
- #[].addrGrpId#, |
|
| 1296 |
- #[].addrNm#, |
|
| 1297 |
- #[].addrPhoneNo#, |
|
| 1298 |
- #[].addrInfo1#, |
|
| 1299 |
- #[].addrInfo2#, |
|
| 1300 |
- #[].addrInfo3#, |
|
| 1301 |
- #[].addrInfo4#, |
|
| 1302 |
- 'N', |
|
| 1303 |
- #[].bookmark#, |
|
| 1304 |
- #[].addrComment#, |
|
| 1305 |
- #[].frstRegisterId# |
|
| 1306 |
- ) |
|
| 1307 |
- </iterate> |
|
| 1308 |
- </insert> |
|
| 1309 |
- |
|
| 1310 |
- <!-- 주소록 대량등록 By Temp 주소록 --> |
|
| 1311 |
- <insert id="AddrDAO.insertAddrByTempAddr" parameterClass="addrVO"> |
|
| 1312 |
- INSERT INTO MJ_ADDR ( |
|
| 1313 |
- ADDR_GRP_ID |
|
| 1314 |
- , MBER_ID |
|
| 1315 |
- , ADDR_NM |
|
| 1316 |
- , ADDR_PHONE_NO |
|
| 1317 |
- , ADDR_INFO1 |
|
| 1318 |
- , ADDR_INFO2 |
|
| 1319 |
- , ADDR_INFO3 |
|
| 1320 |
- , ADDR_INFO4 |
|
| 1321 |
- , ADDR_COMMENT |
|
| 1322 |
- , FRST_REGIST_PNTTM |
|
| 1323 |
- , FRST_REGISTER_ID |
|
| 1324 |
- , LAST_UPDT_PNTTM |
|
| 1325 |
- , LAST_UPDUSR_ID |
|
| 1326 |
- , DELETE_YN |
|
| 1327 |
- , BOOKMARK |
|
| 1328 |
- , RECV_STATUS |
|
| 1329 |
- ) |
|
| 1330 |
- SELECT |
|
| 1331 |
- ADDR_GRP_ID |
|
| 1332 |
- , MBER_ID |
|
| 1333 |
- , ADDR_NM |
|
| 1334 |
- , ADDR_PHONE_NO |
|
| 1335 |
- , ADDR_INFO1 |
|
| 1336 |
- , ADDR_INFO2 |
|
| 1337 |
- , ADDR_INFO3 |
|
| 1338 |
- , ADDR_INFO4 |
|
| 1339 |
- , ADDR_COMMENT |
|
| 1340 |
- , FRST_REGIST_PNTTM |
|
| 1341 |
- , FRST_REGISTER_ID |
|
| 1342 |
- , LAST_UPDT_PNTTM |
|
| 1343 |
- , LAST_UPDUSR_ID |
|
| 1344 |
- , DELETE_YN |
|
| 1345 |
- , BOOKMARK |
|
| 1346 |
- , RECV_STATUS |
|
| 1347 |
- FROM TEMP_MJ_ADDR |
|
| 1348 |
- WHERE MBER_ID = #mberId# |
|
| 1349 |
- AND ADDR_GRP_ID = #addrGrpId# |
|
| 1350 |
- AND BOOKMARK = #bookmark# |
|
| 1351 |
- AND ADDR_PHONE_NO NOT IN |
|
| 1352 |
- ( |
|
| 1353 |
- SELECT ADDR_PHONE_NO FROM MJ_ADDR |
|
| 1354 |
- WHERE MBER_ID = #mberId# |
|
| 1355 |
- AND ADDR_GRP_ID = #addrGrpId# |
|
| 1356 |
- AND BOOKMARK = #bookmark# |
|
| 1357 |
- ) |
|
| 1358 |
- </insert> |
|
| 1359 |
- |
|
| 1360 |
- |
|
| 1361 |
-</sqlMap> |
|
| 1 |
+<?xml version="1.0" encoding="UTF-8"?> |
|
| 2 |
+<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"> |
|
| 3 |
+<sqlMap namespace="Addr"> |
|
| 4 |
+ <typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/> |
|
| 5 |
+ <typeAlias alias="addrVO" type="itn.let.mjo.addr.service.AddrVO"/> |
|
| 6 |
+ <typeAlias alias="addrTransHistVO" type="itn.let.mjo.addr.service.AddrTransHistVO"/> |
|
| 7 |
+ |
|
| 8 |
+ <!-- 주소록 목록 조회 --> |
|
| 9 |
+ <select id="AddrDAO.selectAddrList" parameterClass="addrVO" resultClass="addrVO"> |
|
| 10 |
+ /* AddrDAO.selectAddrList */ |
|
| 11 |
+ SELECT |
|
| 12 |
+ /* |
|
| 13 |
+ 1 AS totCnt |
|
| 14 |
+ */ |
|
| 15 |
+ COUNT(1) OVER() AS totCnt |
|
| 16 |
+ ,A.ADDR_ID AS addrId |
|
| 17 |
+ ,A.ADDR_GRP_ID AS addrGrpId |
|
| 18 |
+ ,A.MBER_ID AS mberId |
|
| 19 |
+ ,A.ADDR_NM AS addrNm |
|
| 20 |
+ ,A.ADDR_PHONE_NO AS addrPhoneNo |
|
| 21 |
+ ,A.ADDR_INFO1 AS addrInfo1 |
|
| 22 |
+ ,A.ADDR_INFO2 AS addrInfo2 |
|
| 23 |
+ ,A.ADDR_INFO3 AS addrInfo3 |
|
| 24 |
+ ,A.ADDR_INFO4 AS addrInfo4 |
|
| 25 |
+ ,A.ADDR_COMMENT AS addrComment |
|
| 26 |
+ ,A.FRST_REGIST_PNTTM AS frstRegistPnttm |
|
| 27 |
+ ,A.FRST_REGISTER_ID AS frstRegisterId |
|
| 28 |
+ ,A.LAST_UPDT_PNTTM AS lastUpdtPnttm |
|
| 29 |
+ ,A.LAST_UPDUSR_ID AS lastUpdusrId |
|
| 30 |
+ ,A.DELETE_YN AS deleteYn |
|
| 31 |
+ ,A.BOOKMARK AS bookmark |
|
| 32 |
+ ,CASE |
|
| 33 |
+ WHEN A.ADDR_GRP_ID = 0 AND A.BOOKMARK = 'N' |
|
| 34 |
+ THEN '그룹미지정' |
|
| 35 |
+ WHEN A.ADDR_GRP_ID = 0 AND A.BOOKMARK = 'Y' |
|
| 36 |
+ THEN '자주보내는 번호' |
|
| 37 |
+ ELSE B.ADDR_GRP_NM |
|
| 38 |
+ END AS addrGrpNm |
|
| 39 |
+ FROM |
|
| 40 |
+ MJ_ADDR A |
|
| 41 |
+ LEFT OUTER JOIN |
|
| 42 |
+ MJ_ADDR_GRP B |
|
| 43 |
+ ON |
|
| 44 |
+ A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 45 |
+ AND B.DELETE_YN ='N' |
|
| 46 |
+ LEFT OUTER JOIN |
|
| 47 |
+ MJ_ADDR_TRANS_HIST C |
|
| 48 |
+ ON |
|
| 49 |
+ B.ADDR_GRP_ID = C.ADDR_GRP_ID |
|
| 50 |
+ WHERE 1=1 |
|
| 51 |
+ <isNotEmpty property="mberId"> |
|
| 52 |
+ AND A.MBER_ID = #mberId# |
|
| 53 |
+ </isNotEmpty> |
|
| 54 |
+ |
|
| 55 |
+ AND (C.RECV_STATUS = 'Y' OR C.RECV_STATUS IS NULL) |
|
| 56 |
+ |
|
| 57 |
+ <isNotEmpty property="addrIdList"> |
|
| 58 |
+ <iterate prepend="AND A.ADDR_ID IN " open="(" close=")" conjunction="," property="addrIdList">
|
|
| 59 |
+ #addrIdList[]# |
|
| 60 |
+ </iterate> |
|
| 61 |
+ </isNotEmpty> |
|
| 62 |
+ |
|
| 63 |
+ AND A.ADDR_GRP_ID in ( |
|
| 64 |
+ select addr_grp_id |
|
| 65 |
+ from mj_addr_grp |
|
| 66 |
+ where 1=1 |
|
| 67 |
+ <isNotEmpty property="mberId"> |
|
| 68 |
+ AND MBER_ID = #mberId# |
|
| 69 |
+ </isNotEmpty> |
|
| 70 |
+ <isNotEmpty property="searchAddrGrpId"> |
|
| 71 |
+ AND ADDR_GRP_ID = #searchAddrGrpId# |
|
| 72 |
+ </isNotEmpty> |
|
| 73 |
+ ) |
|
| 74 |
+ |
|
| 75 |
+ <isNotEmpty property="searchKeyword"> |
|
| 76 |
+ <isEqual property="searchCondition" compareValue=""> |
|
| 77 |
+ AND ( A.ADDR_PHONE_NO LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 78 |
+ OR A.ADDR_NM LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 79 |
+ ) |
|
| 80 |
+ </isEqual> |
|
| 81 |
+ <isEqual property="searchCondition" compareValue="1"> |
|
| 82 |
+ AND A.ADDR_PHONE_NO LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 83 |
+ </isEqual> |
|
| 84 |
+ <isEqual property="searchCondition" compareValue="2"> |
|
| 85 |
+ AND A.ADDR_NM LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 86 |
+ </isEqual> |
|
| 87 |
+ <isEqual property="searchCondition" compareValue="3"> |
|
| 88 |
+ AND A.MBER_ID LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 89 |
+ </isEqual> |
|
| 90 |
+ </isNotEmpty> |
|
| 91 |
+ <isNotEmpty property="searchAddrGrpId"> |
|
| 92 |
+ <isEqual property="searchAddrGrpId" compareValue="bookmark"> |
|
| 93 |
+ AND A.BOOKMARK = 'Y' |
|
| 94 |
+ </isEqual> |
|
| 95 |
+ <isNotEqual property="searchAddrGrpId" compareValue="bookmark"> |
|
| 96 |
+ <isEqual property="searchAddrGrpId" compareValue="noGrp"> |
|
| 97 |
+ AND A.ADDR_GRP_ID = '0' AND A.BOOKMARK = 'N' |
|
| 98 |
+ </isEqual> |
|
| 99 |
+ <isNotEqual property="searchAddrGrpId" compareValue="noGrp"> |
|
| 100 |
+ AND A.ADDR_GRP_ID = #searchAddrGrpId# |
|
| 101 |
+ </isNotEqual> |
|
| 102 |
+ </isNotEqual> |
|
| 103 |
+ </isNotEmpty> |
|
| 104 |
+ <isEqual property="startKeyword" compareValue="1"> |
|
| 105 |
+ AND (A.ADDR_NM RLIKE '^(ㄱ|ㄲ)' OR (A.ADDR_NM <![CDATA[>=]]> '가' AND A.ADDR_NM <![CDATA[<]]> '나')) |
|
| 106 |
+ </isEqual> |
|
| 107 |
+ <isEqual property="startKeyword" compareValue="2"> |
|
| 108 |
+ AND (A.ADDR_NM RLIKE '^(ㄴ)' OR (A.ADDR_NM <![CDATA[>=]]> '나' AND A.ADDR_NM <![CDATA[<]]> '다')) |
|
| 109 |
+ </isEqual> |
|
| 110 |
+ <isEqual property="startKeyword" compareValue="3"> |
|
| 111 |
+ AND (A.ADDR_NM RLIKE '^(ㄷ|ㄸ)' OR (A.ADDR_NM <![CDATA[>=]]> '다' AND A.ADDR_NM <![CDATA[<]]> '라')) |
|
| 112 |
+ </isEqual> |
|
| 113 |
+ <isEqual property="startKeyword" compareValue="4"> |
|
| 114 |
+ AND (A.ADDR_NM RLIKE '^(ㄹ)' OR (A.ADDR_NM <![CDATA[>=]]> '라' AND A.ADDR_NM <![CDATA[<]]> '마')) |
|
| 115 |
+ </isEqual> |
|
| 116 |
+ <isEqual property="startKeyword" compareValue="5"> |
|
| 117 |
+ AND (A.ADDR_NM RLIKE '^(ㅁ)' OR (A.ADDR_NM <![CDATA[>=]]> '마' AND A.ADDR_NM <![CDATA[<]]> '바')) |
|
| 118 |
+ </isEqual> |
|
| 119 |
+ <isEqual property="startKeyword" compareValue="6"> |
|
| 120 |
+ AND (A.ADDR_NM RLIKE '^(ㅂ|ㅃ)' OR (A.ADDR_NM <![CDATA[>=]]> '바' AND A.ADDR_NM <![CDATA[<]]> '사')) |
|
| 121 |
+ </isEqual> |
|
| 122 |
+ <isEqual property="startKeyword" compareValue="7"> |
|
| 123 |
+ AND (A.ADDR_NM RLIKE '^(ㅅ|ㅆ)' OR (A.ADDR_NM <![CDATA[>=]]> '사' AND A.ADDR_NM <![CDATA[<]]> '아')) |
|
| 124 |
+ </isEqual> |
|
| 125 |
+ <isEqual property="startKeyword" compareValue="8"> |
|
| 126 |
+ AND (A.ADDR_NM RLIKE '^(ㅇ)' OR (A.ADDR_NM <![CDATA[>=]]> '아' AND A.ADDR_NM <![CDATA[<]]> '자')) |
|
| 127 |
+ </isEqual> |
|
| 128 |
+ <isEqual property="startKeyword" compareValue="9"> |
|
| 129 |
+ AND (A.ADDR_NM RLIKE '^(ㅈ|ㅉ)' OR (A.ADDR_NM <![CDATA[>=]]> '자' AND A.ADDR_NM <![CDATA[<]]> '차')) |
|
| 130 |
+ </isEqual> |
|
| 131 |
+ <isEqual property="startKeyword" compareValue="10"> |
|
| 132 |
+ AND (A.ADDR_NM RLIKE '^(ㅊ)' OR (A.ADDR_NM <![CDATA[>=]]> '차' AND A.ADDR_NM <![CDATA[<]]> '카')) |
|
| 133 |
+ </isEqual> |
|
| 134 |
+ <isEqual property="startKeyword" compareValue="11"> |
|
| 135 |
+ AND (A.ADDR_NM RLIKE '^(ㅋ)' OR (A.ADDR_NM <![CDATA[>=]]> '카' AND A.ADDR_NM <![CDATA[<]]> '타')) |
|
| 136 |
+ </isEqual> |
|
| 137 |
+ <isEqual property="startKeyword" compareValue="12"> |
|
| 138 |
+ AND (A.ADDR_NM RLIKE '^(ㅌ)' OR (A.ADDR_NM <![CDATA[>=]]> '타' AND A.ADDR_NM <![CDATA[<]]> '파')) |
|
| 139 |
+ </isEqual> |
|
| 140 |
+ <isEqual property="startKeyword" compareValue="13"> |
|
| 141 |
+ AND (A.ADDR_NM RLIKE '^(ㅍ)' OR (A.ADDR_NM <![CDATA[>=]]> '파' AND A.ADDR_NM <![CDATA[<]]> '하')) |
|
| 142 |
+ </isEqual> |
|
| 143 |
+ <isEqual property="startKeyword" compareValue="14"> |
|
| 144 |
+ AND (A.ADDR_NM RLIKE '^(ㅎ)' OR (A.ADDR_NM <![CDATA[>=]]> '하' AND A.ADDR_NM <![CDATA[<=]]> '힣')) |
|
| 145 |
+ </isEqual> |
|
| 146 |
+ <isEqual property="startKeyword" compareValue="a"> |
|
| 147 |
+ AND (A.ADDR_NM <![CDATA[>=]]> 'a' AND A.ADDR_NM <![CDATA[<=]]> 'z') |
|
| 148 |
+ </isEqual> |
|
| 149 |
+ <isEqual property="startKeyword" compareValue="0"> |
|
| 150 |
+ AND (A.ADDR_NM <![CDATA[>=]]> '0' AND A.ADDR_NM <![CDATA[<=]]>'9') |
|
| 151 |
+ </isEqual> |
|
| 152 |
+ ORDER BY 1=1 |
|
| 153 |
+ <isNotEmpty property="searchSortCnd"> |
|
| 154 |
+ ,$searchSortCnd$ |
|
| 155 |
+ </isNotEmpty> |
|
| 156 |
+ <isNotEmpty property="searchSortOrd"> |
|
| 157 |
+ $searchSortOrd$ |
|
| 158 |
+ </isNotEmpty> |
|
| 159 |
+ LIMIT #recordCountPerPage# OFFSET #firstIndex# |
|
| 160 |
+ </select> |
|
| 161 |
+ |
|
| 162 |
+ <!-- 주소록 목록 조회 --> |
|
| 163 |
+ <select id="AddrDAO.selectAddrListCount" parameterClass="addrVO" resultClass="int"> |
|
| 164 |
+ /* AddrDAO.selectAddrListCount */ |
|
| 165 |
+ SELECT |
|
| 166 |
+ COUNT(1) AS totCnt |
|
| 167 |
+ FROM |
|
| 168 |
+ MJ_ADDR A |
|
| 169 |
+ LEFT OUTER JOIN |
|
| 170 |
+ MJ_ADDR_TRANS_HIST C |
|
| 171 |
+ ON |
|
| 172 |
+ A.ADDR_GRP_ID = C.ADDR_GRP_ID |
|
| 173 |
+ WHERE 1=1 |
|
| 174 |
+ <isNotEmpty property="mberId"> |
|
| 175 |
+ AND A.MBER_ID = #mberId# |
|
| 176 |
+ </isNotEmpty> |
|
| 177 |
+ |
|
| 178 |
+ AND (C.RECV_STATUS = 'Y' OR C.RECV_STATUS IS NULL) |
|
| 179 |
+ |
|
| 180 |
+ <isNotEmpty property="addrIdList"> |
|
| 181 |
+ <iterate prepend="AND A.ADDR_ID IN " open="(" close=")" conjunction="," property="addrIdList">
|
|
| 182 |
+ #addrIdList[]# |
|
| 183 |
+ </iterate> |
|
| 184 |
+ </isNotEmpty> |
|
| 185 |
+ |
|
| 186 |
+ AND A.ADDR_GRP_ID in ( |
|
| 187 |
+ select addr_grp_id |
|
| 188 |
+ from mj_addr_grp |
|
| 189 |
+ where 1=1 |
|
| 190 |
+ <isNotEmpty property="mberId"> |
|
| 191 |
+ AND MBER_ID = #mberId# |
|
| 192 |
+ </isNotEmpty> |
|
| 193 |
+ <isNotEmpty property="addrGrpId"> |
|
| 194 |
+ AND ADDR_GRP_ID = #addrGrpId# |
|
| 195 |
+ </isNotEmpty> |
|
| 196 |
+ ) |
|
| 197 |
+ |
|
| 198 |
+ <isNotEmpty property="searchKeyword"> |
|
| 199 |
+ <isEqual property="searchCondition" compareValue=""> |
|
| 200 |
+ AND ( A.ADDR_PHONE_NO LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 201 |
+ OR A.ADDR_NM LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 202 |
+ ) |
|
| 203 |
+ </isEqual> |
|
| 204 |
+ <isEqual property="searchCondition" compareValue="1"> |
|
| 205 |
+ AND A.ADDR_PHONE_NO LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 206 |
+ </isEqual> |
|
| 207 |
+ <isEqual property="searchCondition" compareValue="2"> |
|
| 208 |
+ AND A.ADDR_NM LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 209 |
+ </isEqual> |
|
| 210 |
+ <isEqual property="searchCondition" compareValue="3"> |
|
| 211 |
+ AND A.MBER_ID LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 212 |
+ </isEqual> |
|
| 213 |
+ </isNotEmpty> |
|
| 214 |
+ <isNotEmpty property="searchAddrGrpId"> |
|
| 215 |
+ <isEqual property="searchAddrGrpId" compareValue="bookmark"> |
|
| 216 |
+ AND A.BOOKMARK = 'Y' |
|
| 217 |
+ </isEqual> |
|
| 218 |
+ <isNotEqual property="searchAddrGrpId" compareValue="bookmark"> |
|
| 219 |
+ <isEqual property="searchAddrGrpId" compareValue="noGrp"> |
|
| 220 |
+ AND A.ADDR_GRP_ID = '0' AND A.BOOKMARK = 'N' |
|
| 221 |
+ </isEqual> |
|
| 222 |
+ <isNotEqual property="searchAddrGrpId" compareValue="noGrp"> |
|
| 223 |
+ AND A.ADDR_GRP_ID = #searchAddrGrpId# |
|
| 224 |
+ </isNotEqual> |
|
| 225 |
+ </isNotEqual> |
|
| 226 |
+ </isNotEmpty> |
|
| 227 |
+ <isEqual property="startKeyword" compareValue="1"> |
|
| 228 |
+ AND (A.ADDR_NM RLIKE '^(ㄱ|ㄲ)' OR (A.ADDR_NM <![CDATA[>=]]> '가' AND A.ADDR_NM <![CDATA[<]]> '나')) |
|
| 229 |
+ </isEqual> |
|
| 230 |
+ <isEqual property="startKeyword" compareValue="2"> |
|
| 231 |
+ AND (A.ADDR_NM RLIKE '^(ㄴ)' OR (A.ADDR_NM <![CDATA[>=]]> '나' AND A.ADDR_NM <![CDATA[<]]> '다')) |
|
| 232 |
+ </isEqual> |
|
| 233 |
+ <isEqual property="startKeyword" compareValue="3"> |
|
| 234 |
+ AND (A.ADDR_NM RLIKE '^(ㄷ|ㄸ)' OR (A.ADDR_NM <![CDATA[>=]]> '다' AND A.ADDR_NM <![CDATA[<]]> '라')) |
|
| 235 |
+ </isEqual> |
|
| 236 |
+ <isEqual property="startKeyword" compareValue="4"> |
|
| 237 |
+ AND (A.ADDR_NM RLIKE '^(ㄹ)' OR (A.ADDR_NM <![CDATA[>=]]> '라' AND A.ADDR_NM <![CDATA[<]]> '마')) |
|
| 238 |
+ </isEqual> |
|
| 239 |
+ <isEqual property="startKeyword" compareValue="5"> |
|
| 240 |
+ AND (A.ADDR_NM RLIKE '^(ㅁ)' OR (A.ADDR_NM <![CDATA[>=]]> '마' AND A.ADDR_NM <![CDATA[<]]> '바')) |
|
| 241 |
+ </isEqual> |
|
| 242 |
+ <isEqual property="startKeyword" compareValue="6"> |
|
| 243 |
+ AND (A.ADDR_NM RLIKE '^(ㅂ|ㅃ)' OR (A.ADDR_NM <![CDATA[>=]]> '바' AND A.ADDR_NM <![CDATA[<]]> '사')) |
|
| 244 |
+ </isEqual> |
|
| 245 |
+ <isEqual property="startKeyword" compareValue="7"> |
|
| 246 |
+ AND (A.ADDR_NM RLIKE '^(ㅅ|ㅆ)' OR (A.ADDR_NM <![CDATA[>=]]> '사' AND A.ADDR_NM <![CDATA[<]]> '아')) |
|
| 247 |
+ </isEqual> |
|
| 248 |
+ <isEqual property="startKeyword" compareValue="8"> |
|
| 249 |
+ AND (A.ADDR_NM RLIKE '^(ㅇ)' OR (A.ADDR_NM <![CDATA[>=]]> '아' AND A.ADDR_NM <![CDATA[<]]> '자')) |
|
| 250 |
+ </isEqual> |
|
| 251 |
+ <isEqual property="startKeyword" compareValue="9"> |
|
| 252 |
+ AND (A.ADDR_NM RLIKE '^(ㅈ|ㅉ)' OR (A.ADDR_NM <![CDATA[>=]]> '자' AND A.ADDR_NM <![CDATA[<]]> '차')) |
|
| 253 |
+ </isEqual> |
|
| 254 |
+ <isEqual property="startKeyword" compareValue="10"> |
|
| 255 |
+ AND (A.ADDR_NM RLIKE '^(ㅊ)' OR (A.ADDR_NM <![CDATA[>=]]> '차' AND A.ADDR_NM <![CDATA[<]]> '카')) |
|
| 256 |
+ </isEqual> |
|
| 257 |
+ <isEqual property="startKeyword" compareValue="11"> |
|
| 258 |
+ AND (A.ADDR_NM RLIKE '^(ㅋ)' OR (A.ADDR_NM <![CDATA[>=]]> '카' AND A.ADDR_NM <![CDATA[<]]> '타')) |
|
| 259 |
+ </isEqual> |
|
| 260 |
+ <isEqual property="startKeyword" compareValue="12"> |
|
| 261 |
+ AND (A.ADDR_NM RLIKE '^(ㅌ)' OR (A.ADDR_NM <![CDATA[>=]]> '타' AND A.ADDR_NM <![CDATA[<]]> '파')) |
|
| 262 |
+ </isEqual> |
|
| 263 |
+ <isEqual property="startKeyword" compareValue="13"> |
|
| 264 |
+ AND (A.ADDR_NM RLIKE '^(ㅍ)' OR (A.ADDR_NM <![CDATA[>=]]> '파' AND A.ADDR_NM <![CDATA[<]]> '하')) |
|
| 265 |
+ </isEqual> |
|
| 266 |
+ <isEqual property="startKeyword" compareValue="14"> |
|
| 267 |
+ AND (A.ADDR_NM RLIKE '^(ㅎ)' OR (A.ADDR_NM <![CDATA[>=]]> '하' AND A.ADDR_NM <![CDATA[<=]]> '힣')) |
|
| 268 |
+ </isEqual> |
|
| 269 |
+ <isEqual property="startKeyword" compareValue="a"> |
|
| 270 |
+ AND (A.ADDR_NM <![CDATA[>=]]> 'a' AND A.ADDR_NM <![CDATA[<=]]> 'z') |
|
| 271 |
+ </isEqual> |
|
| 272 |
+ <isEqual property="startKeyword" compareValue="0"> |
|
| 273 |
+ AND (A.ADDR_NM <![CDATA[>=]]> '0' AND A.ADDR_NM <![CDATA[<=]]>'9') |
|
| 274 |
+ </isEqual> |
|
| 275 |
+ </select> |
|
| 276 |
+ |
|
| 277 |
+ <!-- 주소록 목록 조회(속도개선) --> |
|
| 278 |
+ <select id="AddrDAO.selectAddrNewList" parameterClass="addrVO" resultClass="addrVO"> |
|
| 279 |
+ SELECT |
|
| 280 |
+ ( |
|
| 281 |
+ SELECT COUNT(0) FROM mj_addr A |
|
| 282 |
+ LEFT OUTER JOIN |
|
| 283 |
+ MJ_ADDR_GRP B |
|
| 284 |
+ ON |
|
| 285 |
+ A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 286 |
+ LEFT OUTER JOIN |
|
| 287 |
+ MJ_ADDR_TRANS_HIST C |
|
| 288 |
+ ON |
|
| 289 |
+ B.ADDR_GRP_ID = C.ADDR_GRP_ID |
|
| 290 |
+ WHERE 1=1 |
|
| 291 |
+ AND (C.RECV_STATUS = 'Y' OR C.RECV_STATUS IS NULL) |
|
| 292 |
+ <isNotEmpty property="mberId"> |
|
| 293 |
+ AND A.MBER_ID = #mberId# |
|
| 294 |
+ </isNotEmpty> |
|
| 295 |
+ <isNotEmpty property="searchStartDate"> |
|
| 296 |
+ <![CDATA[ |
|
| 297 |
+ AND A.FRST_REGIST_PNTTM >= DATE_FORMAT(#searchStartDate#, '%Y-%m-%d') |
|
| 298 |
+ ]]> |
|
| 299 |
+ </isNotEmpty> |
|
| 300 |
+ <isNotEmpty property="searchEndDate"> |
|
| 301 |
+ <![CDATA[ |
|
| 302 |
+ AND A.FRST_REGIST_PNTTM <= DATE_ADD(DATE_FORMAT(#searchEndDate#, '%Y-%m-%d') , INTERVAL 1 DAY) |
|
| 303 |
+ ]]> |
|
| 304 |
+ </isNotEmpty> |
|
| 305 |
+ <isNotEmpty property="addrIdList"> |
|
| 306 |
+ <iterate prepend="AND A.ADDR_ID IN " open="(" close=")" conjunction="," property="addrIdList">
|
|
| 307 |
+ #addrIdList[]# |
|
| 308 |
+ </iterate> |
|
| 309 |
+ </isNotEmpty> |
|
| 310 |
+ <isNotEmpty property="addrGrpId"> |
|
| 311 |
+ AND A.ADDR_GRP_ID = #addrGrpId# |
|
| 312 |
+ </isNotEmpty> |
|
| 313 |
+ <isNotEmpty property="searchKeyword"> |
|
| 314 |
+ <isEqual property="searchCondition" compareValue=""> |
|
| 315 |
+ AND ( A.ADDR_PHONE_NO LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 316 |
+ OR A.ADDR_NM LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 317 |
+ ) |
|
| 318 |
+ </isEqual> |
|
| 319 |
+ <isEqual property="searchCondition" compareValue="1"> |
|
| 320 |
+ AND A.ADDR_PHONE_NO LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 321 |
+ </isEqual> |
|
| 322 |
+ <isEqual property="searchCondition" compareValue="2"> |
|
| 323 |
+ AND A.ADDR_NM LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 324 |
+ </isEqual> |
|
| 325 |
+ <isEqual property="searchCondition" compareValue="3"> |
|
| 326 |
+ AND A.MBER_ID LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 327 |
+ </isEqual> |
|
| 328 |
+ </isNotEmpty> |
|
| 329 |
+ <isNotEmpty property="searchAddrGrpId"> |
|
| 330 |
+ <isEqual property="searchAddrGrpId" compareValue="bookmark"> |
|
| 331 |
+ AND A.BOOKMARK = 'Y' |
|
| 332 |
+ </isEqual> |
|
| 333 |
+ <isNotEqual property="searchAddrGrpId" compareValue="bookmark"> |
|
| 334 |
+ <isEqual property="searchAddrGrpId" compareValue="noGrp"> |
|
| 335 |
+ AND A.ADDR_GRP_ID = '0' AND A.BOOKMARK = 'N' |
|
| 336 |
+ </isEqual> |
|
| 337 |
+ <isNotEqual property="searchAddrGrpId" compareValue="noGrp"> |
|
| 338 |
+ AND A.ADDR_GRP_ID = #searchAddrGrpId# |
|
| 339 |
+ </isNotEqual> |
|
| 340 |
+ </isNotEqual> |
|
| 341 |
+ </isNotEmpty> |
|
| 342 |
+ <isEqual property="startKeyword" compareValue="1"> |
|
| 343 |
+ AND (A.ADDR_NM RLIKE '^(ㄱ|ㄲ)' OR (A.ADDR_NM <![CDATA[>=]]> '가' AND A.ADDR_NM <![CDATA[<]]> '나')) |
|
| 344 |
+ </isEqual> |
|
| 345 |
+ <isEqual property="startKeyword" compareValue="2"> |
|
| 346 |
+ AND (A.ADDR_NM RLIKE '^(ㄴ)' OR (A.ADDR_NM <![CDATA[>=]]> '나' AND A.ADDR_NM <![CDATA[<]]> '다')) |
|
| 347 |
+ </isEqual> |
|
| 348 |
+ <isEqual property="startKeyword" compareValue="3"> |
|
| 349 |
+ AND (A.ADDR_NM RLIKE '^(ㄷ|ㄸ)' OR (A.ADDR_NM <![CDATA[>=]]> '다' AND A.ADDR_NM <![CDATA[<]]> '라')) |
|
| 350 |
+ </isEqual> |
|
| 351 |
+ <isEqual property="startKeyword" compareValue="4"> |
|
| 352 |
+ AND (A.ADDR_NM RLIKE '^(ㄹ)' OR (A.ADDR_NM <![CDATA[>=]]> '라' AND A.ADDR_NM <![CDATA[<]]> '마')) |
|
| 353 |
+ </isEqual> |
|
| 354 |
+ <isEqual property="startKeyword" compareValue="5"> |
|
| 355 |
+ AND (A.ADDR_NM RLIKE '^(ㅁ)' OR (A.ADDR_NM <![CDATA[>=]]> '마' AND A.ADDR_NM <![CDATA[<]]> '바')) |
|
| 356 |
+ </isEqual> |
|
| 357 |
+ <isEqual property="startKeyword" compareValue="6"> |
|
| 358 |
+ AND (A.ADDR_NM RLIKE '^(ㅂ|ㅃ)' OR (A.ADDR_NM <![CDATA[>=]]> '바' AND A.ADDR_NM <![CDATA[<]]> '사')) |
|
| 359 |
+ </isEqual> |
|
| 360 |
+ <isEqual property="startKeyword" compareValue="7"> |
|
| 361 |
+ AND (A.ADDR_NM RLIKE '^(ㅅ|ㅆ)' OR (A.ADDR_NM <![CDATA[>=]]> '사' AND A.ADDR_NM <![CDATA[<]]> '아')) |
|
| 362 |
+ </isEqual> |
|
| 363 |
+ <isEqual property="startKeyword" compareValue="8"> |
|
| 364 |
+ AND (A.ADDR_NM RLIKE '^(ㅇ)' OR (A.ADDR_NM <![CDATA[>=]]> '아' AND A.ADDR_NM <![CDATA[<]]> '자')) |
|
| 365 |
+ </isEqual> |
|
| 366 |
+ <isEqual property="startKeyword" compareValue="9"> |
|
| 367 |
+ AND (A.ADDR_NM RLIKE '^(ㅈ|ㅉ)' OR (A.ADDR_NM <![CDATA[>=]]> '자' AND A.ADDR_NM <![CDATA[<]]> '차')) |
|
| 368 |
+ </isEqual> |
|
| 369 |
+ <isEqual property="startKeyword" compareValue="10"> |
|
| 370 |
+ AND (A.ADDR_NM RLIKE '^(ㅊ)' OR (A.ADDR_NM <![CDATA[>=]]> '차' AND A.ADDR_NM <![CDATA[<]]> '카')) |
|
| 371 |
+ </isEqual> |
|
| 372 |
+ <isEqual property="startKeyword" compareValue="11"> |
|
| 373 |
+ AND (A.ADDR_NM RLIKE '^(ㅋ)' OR (A.ADDR_NM <![CDATA[>=]]> '카' AND A.ADDR_NM <![CDATA[<]]> '타')) |
|
| 374 |
+ </isEqual> |
|
| 375 |
+ <isEqual property="startKeyword" compareValue="12"> |
|
| 376 |
+ AND (A.ADDR_NM RLIKE '^(ㅌ)' OR (A.ADDR_NM <![CDATA[>=]]> '타' AND A.ADDR_NM <![CDATA[<]]> '파')) |
|
| 377 |
+ </isEqual> |
|
| 378 |
+ <isEqual property="startKeyword" compareValue="13"> |
|
| 379 |
+ AND (A.ADDR_NM RLIKE '^(ㅍ)' OR (A.ADDR_NM <![CDATA[>=]]> '파' AND A.ADDR_NM <![CDATA[<]]> '하')) |
|
| 380 |
+ </isEqual> |
|
| 381 |
+ <isEqual property="startKeyword" compareValue="14"> |
|
| 382 |
+ AND (A.ADDR_NM RLIKE '^(ㅎ)' OR (A.ADDR_NM <![CDATA[>=]]> '하' AND A.ADDR_NM <![CDATA[<=]]> '힣')) |
|
| 383 |
+ </isEqual> |
|
| 384 |
+ <isEqual property="startKeyword" compareValue="a"> |
|
| 385 |
+ AND (A.ADDR_NM <![CDATA[>=]]> 'a' AND A.ADDR_NM <![CDATA[<=]]> 'z') |
|
| 386 |
+ </isEqual> |
|
| 387 |
+ <isEqual property="startKeyword" compareValue="0"> |
|
| 388 |
+ AND (A.ADDR_NM <![CDATA[>=]]> '0' AND A.ADDR_NM <![CDATA[<=]]>'9') |
|
| 389 |
+ </isEqual> |
|
| 390 |
+ ) totCnt |
|
| 391 |
+ ,M.addrId |
|
| 392 |
+ ,M.addrGrpId |
|
| 393 |
+ ,M.mberId |
|
| 394 |
+ ,M.addrNm |
|
| 395 |
+ ,M.addrPhoneNo |
|
| 396 |
+ ,M.addrInfo1 |
|
| 397 |
+ ,M.addrInfo2 |
|
| 398 |
+ ,M.addrInfo3 |
|
| 399 |
+ ,M.addrInfo4 |
|
| 400 |
+ ,M.addrComment |
|
| 401 |
+ ,M.frstRegistPnttm |
|
| 402 |
+ ,M.frstRegisterId |
|
| 403 |
+ ,M.lastUpdtPnttm |
|
| 404 |
+ ,M.lastUpdusrId |
|
| 405 |
+ ,M.deleteYn |
|
| 406 |
+ ,M.bookmark |
|
| 407 |
+ ,M.addrGrpNm |
|
| 408 |
+ FROM ( |
|
| 409 |
+ SELECT |
|
| 410 |
+ A.ADDR_ID AS addrId |
|
| 411 |
+ ,A.ADDR_GRP_ID AS addrGrpId |
|
| 412 |
+ ,A.MBER_ID AS mberId |
|
| 413 |
+ ,A.ADDR_NM AS addrNm |
|
| 414 |
+ ,A.ADDR_PHONE_NO AS addrPhoneNo |
|
| 415 |
+ ,A.ADDR_INFO1 AS addrInfo1 |
|
| 416 |
+ ,A.ADDR_INFO2 AS addrInfo2 |
|
| 417 |
+ ,A.ADDR_INFO3 AS addrInfo3 |
|
| 418 |
+ ,A.ADDR_INFO4 AS addrInfo4 |
|
| 419 |
+ ,A.ADDR_COMMENT AS addrComment |
|
| 420 |
+ ,A.FRST_REGIST_PNTTM AS frstRegistPnttm |
|
| 421 |
+ ,A.FRST_REGISTER_ID AS frstRegisterId |
|
| 422 |
+ ,A.LAST_UPDT_PNTTM AS lastUpdtPnttm |
|
| 423 |
+ ,A.LAST_UPDUSR_ID AS lastUpdusrId |
|
| 424 |
+ ,A.DELETE_YN AS deleteYn |
|
| 425 |
+ ,A.BOOKMARK AS bookmark |
|
| 426 |
+ ,CASE |
|
| 427 |
+ WHEN A.ADDR_GRP_ID = 0 AND A.BOOKMARK = 'N' |
|
| 428 |
+ THEN '그룹미지정' |
|
| 429 |
+ WHEN A.ADDR_GRP_ID = 0 AND A.BOOKMARK = 'Y' |
|
| 430 |
+ THEN '자주보내는 번호' |
|
| 431 |
+ ELSE B.ADDR_GRP_NM |
|
| 432 |
+ END AS addrGrpNm |
|
| 433 |
+ FROM |
|
| 434 |
+ MJ_ADDR A |
|
| 435 |
+ LEFT OUTER JOIN |
|
| 436 |
+ MJ_ADDR_GRP B |
|
| 437 |
+ ON |
|
| 438 |
+ A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 439 |
+ LEFT OUTER JOIN |
|
| 440 |
+ MJ_ADDR_TRANS_HIST C |
|
| 441 |
+ ON |
|
| 442 |
+ B.ADDR_GRP_ID = C.ADDR_GRP_ID |
|
| 443 |
+ WHERE 1=1 |
|
| 444 |
+ AND (C.RECV_STATUS = 'Y' OR C.RECV_STATUS IS NULL) |
|
| 445 |
+ <isNotEmpty property="mberId"> |
|
| 446 |
+ AND A.MBER_ID = #mberId# |
|
| 447 |
+ </isNotEmpty> |
|
| 448 |
+ <isNotEmpty prepend="AND" property="searchStartDate"> |
|
| 449 |
+ <![CDATA[ |
|
| 450 |
+ A.FRST_REGIST_PNTTM >= DATE_FORMAT(#searchStartDate#, '%Y-%m-%d') |
|
| 451 |
+ ]]> |
|
| 452 |
+ </isNotEmpty> |
|
| 453 |
+ <isNotEmpty prepend="AND" property="searchEndDate"> |
|
| 454 |
+ <![CDATA[ |
|
| 455 |
+ DATE_FORMAT(A.FRST_REGIST_PNTTM, '%Y-%m-%d') <= DATE_ADD(DATE_FORMAT(#searchEndDate#, '%Y-%m-%d') , INTERVAL 1 DAY) |
|
| 456 |
+ ]]> |
|
| 457 |
+ </isNotEmpty> |
|
| 458 |
+ <isNotEmpty property="addrIdList"> |
|
| 459 |
+ <iterate prepend="AND A.ADDR_ID IN " open="(" close=")" conjunction="," property="addrIdList">
|
|
| 460 |
+ #addrIdList[]# |
|
| 461 |
+ </iterate> |
|
| 462 |
+ </isNotEmpty> |
|
| 463 |
+ <isNotEmpty property="addrGrpId"> |
|
| 464 |
+ AND A.ADDR_GRP_ID = #addrGrpId# |
|
| 465 |
+ </isNotEmpty> |
|
| 466 |
+ <isNotEmpty property="searchKeyword"> |
|
| 467 |
+ <isEqual property="searchCondition" compareValue=""> |
|
| 468 |
+ AND ( A.ADDR_PHONE_NO LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 469 |
+ OR A.ADDR_NM LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 470 |
+ ) |
|
| 471 |
+ </isEqual> |
|
| 472 |
+ <isEqual property="searchCondition" compareValue="1"> |
|
| 473 |
+ AND A.ADDR_PHONE_NO LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 474 |
+ </isEqual> |
|
| 475 |
+ <isEqual property="searchCondition" compareValue="2"> |
|
| 476 |
+ AND A.ADDR_NM LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 477 |
+ </isEqual> |
|
| 478 |
+ <isEqual property="searchCondition" compareValue="3"> |
|
| 479 |
+ AND A.MBER_ID LIKE CONCAT ('%', #searchKeyword#,'%')
|
|
| 480 |
+ </isEqual> |
|
| 481 |
+ </isNotEmpty> |
|
| 482 |
+ <isNotEmpty property="searchAddrGrpId"> |
|
| 483 |
+ <isEqual property="searchAddrGrpId" compareValue="bookmark"> |
|
| 484 |
+ AND A.BOOKMARK = 'Y' |
|
| 485 |
+ </isEqual> |
|
| 486 |
+ <isNotEqual property="searchAddrGrpId" compareValue="bookmark"> |
|
| 487 |
+ <isEqual property="searchAddrGrpId" compareValue="noGrp"> |
|
| 488 |
+ AND A.ADDR_GRP_ID = '0' AND A.BOOKMARK = 'N' |
|
| 489 |
+ </isEqual> |
|
| 490 |
+ <isNotEqual property="searchAddrGrpId" compareValue="noGrp"> |
|
| 491 |
+ AND A.ADDR_GRP_ID = #searchAddrGrpId# |
|
| 492 |
+ </isNotEqual> |
|
| 493 |
+ </isNotEqual> |
|
| 494 |
+ </isNotEmpty> |
|
| 495 |
+ <isEqual property="startKeyword" compareValue="1"> |
|
| 496 |
+ AND (A.ADDR_NM RLIKE '^(ㄱ|ㄲ)' OR (A.ADDR_NM <![CDATA[>=]]> '가' AND A.ADDR_NM <![CDATA[<]]> '나')) |
|
| 497 |
+ </isEqual> |
|
| 498 |
+ <isEqual property="startKeyword" compareValue="2"> |
|
| 499 |
+ AND (A.ADDR_NM RLIKE '^(ㄴ)' OR (A.ADDR_NM <![CDATA[>=]]> '나' AND A.ADDR_NM <![CDATA[<]]> '다')) |
|
| 500 |
+ </isEqual> |
|
| 501 |
+ <isEqual property="startKeyword" compareValue="3"> |
|
| 502 |
+ AND (A.ADDR_NM RLIKE '^(ㄷ|ㄸ)' OR (A.ADDR_NM <![CDATA[>=]]> '다' AND A.ADDR_NM <![CDATA[<]]> '라')) |
|
| 503 |
+ </isEqual> |
|
| 504 |
+ <isEqual property="startKeyword" compareValue="4"> |
|
| 505 |
+ AND (A.ADDR_NM RLIKE '^(ㄹ)' OR (A.ADDR_NM <![CDATA[>=]]> '라' AND A.ADDR_NM <![CDATA[<]]> '마')) |
|
| 506 |
+ </isEqual> |
|
| 507 |
+ <isEqual property="startKeyword" compareValue="5"> |
|
| 508 |
+ AND (A.ADDR_NM RLIKE '^(ㅁ)' OR (A.ADDR_NM <![CDATA[>=]]> '마' AND A.ADDR_NM <![CDATA[<]]> '바')) |
|
| 509 |
+ </isEqual> |
|
| 510 |
+ <isEqual property="startKeyword" compareValue="6"> |
|
| 511 |
+ AND (A.ADDR_NM RLIKE '^(ㅂ|ㅃ)' OR (A.ADDR_NM <![CDATA[>=]]> '바' AND A.ADDR_NM <![CDATA[<]]> '사')) |
|
| 512 |
+ </isEqual> |
|
| 513 |
+ <isEqual property="startKeyword" compareValue="7"> |
|
| 514 |
+ AND (A.ADDR_NM RLIKE '^(ㅅ|ㅆ)' OR (A.ADDR_NM <![CDATA[>=]]> '사' AND A.ADDR_NM <![CDATA[<]]> '아')) |
|
| 515 |
+ </isEqual> |
|
| 516 |
+ <isEqual property="startKeyword" compareValue="8"> |
|
| 517 |
+ AND (A.ADDR_NM RLIKE '^(ㅇ)' OR (A.ADDR_NM <![CDATA[>=]]> '아' AND A.ADDR_NM <![CDATA[<]]> '자')) |
|
| 518 |
+ </isEqual> |
|
| 519 |
+ <isEqual property="startKeyword" compareValue="9"> |
|
| 520 |
+ AND (A.ADDR_NM RLIKE '^(ㅈ|ㅉ)' OR (A.ADDR_NM <![CDATA[>=]]> '자' AND A.ADDR_NM <![CDATA[<]]> '차')) |
|
| 521 |
+ </isEqual> |
|
| 522 |
+ <isEqual property="startKeyword" compareValue="10"> |
|
| 523 |
+ AND (A.ADDR_NM RLIKE '^(ㅊ)' OR (A.ADDR_NM <![CDATA[>=]]> '차' AND A.ADDR_NM <![CDATA[<]]> '카')) |
|
| 524 |
+ </isEqual> |
|
| 525 |
+ <isEqual property="startKeyword" compareValue="11"> |
|
| 526 |
+ AND (A.ADDR_NM RLIKE '^(ㅋ)' OR (A.ADDR_NM <![CDATA[>=]]> '카' AND A.ADDR_NM <![CDATA[<]]> '타')) |
|
| 527 |
+ </isEqual> |
|
| 528 |
+ <isEqual property="startKeyword" compareValue="12"> |
|
| 529 |
+ AND (A.ADDR_NM RLIKE '^(ㅌ)' OR (A.ADDR_NM <![CDATA[>=]]> '타' AND A.ADDR_NM <![CDATA[<]]> '파')) |
|
| 530 |
+ </isEqual> |
|
| 531 |
+ <isEqual property="startKeyword" compareValue="13"> |
|
| 532 |
+ AND (A.ADDR_NM RLIKE '^(ㅍ)' OR (A.ADDR_NM <![CDATA[>=]]> '파' AND A.ADDR_NM <![CDATA[<]]> '하')) |
|
| 533 |
+ </isEqual> |
|
| 534 |
+ <isEqual property="startKeyword" compareValue="14"> |
|
| 535 |
+ AND (A.ADDR_NM RLIKE '^(ㅎ)' OR (A.ADDR_NM <![CDATA[>=]]> '하' AND A.ADDR_NM <![CDATA[<=]]> '힣')) |
|
| 536 |
+ </isEqual> |
|
| 537 |
+ <isEqual property="startKeyword" compareValue="a"> |
|
| 538 |
+ AND (A.ADDR_NM <![CDATA[>=]]> 'a' AND A.ADDR_NM <![CDATA[<=]]> 'z') |
|
| 539 |
+ </isEqual> |
|
| 540 |
+ <isEqual property="startKeyword" compareValue="0"> |
|
| 541 |
+ AND (A.ADDR_NM <![CDATA[>=]]> '0' AND A.ADDR_NM <![CDATA[<=]]>'9') |
|
| 542 |
+ </isEqual> |
|
| 543 |
+ |
|
| 544 |
+ ORDER BY 1=1 |
|
| 545 |
+ <isNotEmpty property="searchSortCnd"> |
|
| 546 |
+ ,$searchSortCnd$ |
|
| 547 |
+ </isNotEmpty> |
|
| 548 |
+ <isNotEmpty property="searchSortOrd"> |
|
| 549 |
+ $searchSortOrd$ |
|
| 550 |
+ </isNotEmpty> |
|
| 551 |
+ LIMIT #recordCountPerPage# OFFSET #firstIndex# |
|
| 552 |
+ ) M |
|
| 553 |
+ </select> |
|
| 554 |
+ |
|
| 555 |
+ <!-- 회원별 주소록 전체 갯수 조회 --> |
|
| 556 |
+ <select id="AddrDAO.selectAddrTotalCount" parameterClass="addrVO" resultClass="int"> |
|
| 557 |
+ SELECT |
|
| 558 |
+ COUNT(A.ADDR_ID) AS totCnt |
|
| 559 |
+ FROM |
|
| 560 |
+ MJ_ADDR A |
|
| 561 |
+ WHERE |
|
| 562 |
+ A.MBER_ID = #mberId# |
|
| 563 |
+ AND (A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL) |
|
| 564 |
+ AND A.DELETE_YN = 'N' |
|
| 565 |
+ </select> |
|
| 566 |
+ |
|
| 567 |
+ <!-- 주소록 상세 조회 --> |
|
| 568 |
+ <select id="AddrDAO.selectAddrDetail" parameterClass="addrVO" resultClass="addrVO"> |
|
| 569 |
+ SELECT |
|
| 570 |
+ A.ADDR_ID AS addrId |
|
| 571 |
+ ,A.ADDR_GRP_ID AS addrGrpId |
|
| 572 |
+ ,A.MBER_ID AS mberId |
|
| 573 |
+ ,A.ADDR_NM AS addrNm |
|
| 574 |
+ ,A.ADDR_PHONE_NO AS addrPhoneNo |
|
| 575 |
+ ,A.ADDR_INFO1 AS addrInfo1 |
|
| 576 |
+ ,A.ADDR_INFO2 AS addrInfo2 |
|
| 577 |
+ ,A.ADDR_INFO3 AS addrInfo3 |
|
| 578 |
+ ,A.ADDR_INFO4 AS addrInfo4 |
|
| 579 |
+ ,A.ADDR_COMMENT AS addrComment |
|
| 580 |
+ ,A.FRST_REGIST_PNTTM AS frstRegistPnttm |
|
| 581 |
+ ,A.FRST_REGISTER_ID AS frstRegisterId |
|
| 582 |
+ ,A.LAST_UPDT_PNTTM AS lastUpdtPnttm |
|
| 583 |
+ ,A.LAST_UPDUSR_ID AS lastUpdusrId |
|
| 584 |
+ ,A.DELETE_YN AS deleteYn |
|
| 585 |
+ ,A.BOOKMARK AS bookmark |
|
| 586 |
+ ,b.ADDR_GRP_NM AS addrGrpNm |
|
| 587 |
+ FROM |
|
| 588 |
+ MJ_ADDR a |
|
| 589 |
+ LEFT OUTER JOIN |
|
| 590 |
+ MJ_ADDR_GRP b |
|
| 591 |
+ ON |
|
| 592 |
+ a.ADDR_GRP_ID = b.ADDR_GRP_ID |
|
| 593 |
+ WHERE |
|
| 594 |
+ a.ADDR_ID = #addrId# |
|
| 595 |
+ </select> |
|
| 596 |
+ |
|
| 597 |
+ |
|
| 598 |
+ <!-- 주소록 등록 --> |
|
| 599 |
+ <insert id="AddrDAO.insertAddr" parameterClass="addrVO"> |
|
| 600 |
+ INSERT INTO MJ_ADDR ( |
|
| 601 |
+ <isNotEmpty property="addrGrpId"> |
|
| 602 |
+ ADDR_GRP_ID, |
|
| 603 |
+ </isNotEmpty> |
|
| 604 |
+ MBER_ID |
|
| 605 |
+ ,ADDR_NM |
|
| 606 |
+ ,ADDR_PHONE_NO |
|
| 607 |
+ ,ADDR_INFO1 |
|
| 608 |
+ ,ADDR_INFO2 |
|
| 609 |
+ ,ADDR_INFO3 |
|
| 610 |
+ ,ADDR_INFO4 |
|
| 611 |
+ ,ADDR_COMMENT |
|
| 612 |
+ ,FRST_REGIST_PNTTM |
|
| 613 |
+ ,FRST_REGISTER_ID |
|
| 614 |
+ <isNotEmpty property="bookmark"> |
|
| 615 |
+ ,BOOKMARK |
|
| 616 |
+ </isNotEmpty> |
|
| 617 |
+ <isNotEmpty property="recvStatus"> |
|
| 618 |
+ ,RECV_STATUS |
|
| 619 |
+ </isNotEmpty> |
|
| 620 |
+ )VALUES( |
|
| 621 |
+ <isNotEmpty property="addrGrpId"> |
|
| 622 |
+ #addrGrpId#, |
|
| 623 |
+ </isNotEmpty> |
|
| 624 |
+ #mberId# |
|
| 625 |
+ ,#addrNm# |
|
| 626 |
+ ,#addrPhoneNo# |
|
| 627 |
+ ,#addrInfo1# |
|
| 628 |
+ ,#addrInfo2# |
|
| 629 |
+ ,#addrInfo3# |
|
| 630 |
+ ,#addrInfo4# |
|
| 631 |
+ ,#addrComment# |
|
| 632 |
+ ,NOW() |
|
| 633 |
+ ,#frstRegisterId# |
|
| 634 |
+ <isNotEmpty property="bookmark"> |
|
| 635 |
+ ,#bookmark# |
|
| 636 |
+ </isNotEmpty> |
|
| 637 |
+ <isNotEmpty property="recvStatus"> |
|
| 638 |
+ ,#recvStatus# |
|
| 639 |
+ </isNotEmpty> |
|
| 640 |
+ ) |
|
| 641 |
+ </insert> |
|
| 642 |
+ |
|
| 643 |
+ |
|
| 644 |
+ <!-- 주소록 수정 --> |
|
| 645 |
+ <update id="AddrDAO.updateAddr" parameterClass="addrVO"> |
|
| 646 |
+ UPDATE |
|
| 647 |
+ MJ_ADDR |
|
| 648 |
+ SET |
|
| 649 |
+ <isNotEmpty property="addrGrpId"> |
|
| 650 |
+ ADDR_GRP_ID = #addrGrpId#, |
|
| 651 |
+ </isNotEmpty> |
|
| 652 |
+ <isNotEmpty property="addrPhoneNo"> |
|
| 653 |
+ ADDR_PHONE_NO = #addrPhoneNo#, |
|
| 654 |
+ </isNotEmpty> |
|
| 655 |
+ ADDR_NM = #addrNm#, |
|
| 656 |
+ ADDR_INFO1 = #addrInfo1#, |
|
| 657 |
+ ADDR_INFO2 = #addrInfo2#, |
|
| 658 |
+ ADDR_INFO3 = #addrInfo3#, |
|
| 659 |
+ ADDR_INFO4 = #addrInfo4#, |
|
| 660 |
+ <isNotEmpty property="addrComment"> |
|
| 661 |
+ ADDR_COMMENT = #addrComment#, |
|
| 662 |
+ </isNotEmpty> |
|
| 663 |
+ <isNotEmpty property="bookmark"> |
|
| 664 |
+ BOOKMARK = #bookmark#, |
|
| 665 |
+ </isNotEmpty> |
|
| 666 |
+ LAST_UPDT_PNTTM = NOW(), |
|
| 667 |
+ LAST_UPDUSR_ID = #lastUpdusrId# |
|
| 668 |
+ WHERE |
|
| 669 |
+ MBER_ID = #mberId# |
|
| 670 |
+ AND |
|
| 671 |
+ ADDR_ID = #addrId# |
|
| 672 |
+ </update> |
|
| 673 |
+ |
|
| 674 |
+ <!-- 주소록 그룹 수정 --> |
|
| 675 |
+ <update id="AddrDAO.updateAddrGrp" parameterClass="addrVO"> |
|
| 676 |
+ UPDATE |
|
| 677 |
+ MJ_ADDR |
|
| 678 |
+ SET |
|
| 679 |
+ ADDR_GRP_ID = #addrGrpId#, |
|
| 680 |
+ BOOKMARK = #bookmark#, |
|
| 681 |
+ LAST_UPDT_PNTTM = NOW(), |
|
| 682 |
+ LAST_UPDUSR_ID = #lastUpdusrId# |
|
| 683 |
+ WHERE |
|
| 684 |
+ MBER_ID = #mberId# |
|
| 685 |
+ AND |
|
| 686 |
+ ADDR_ID = #addrId# |
|
| 687 |
+ </update> |
|
| 688 |
+ |
|
| 689 |
+ <!-- 주소록 메모 수정 --> |
|
| 690 |
+ <update id="AddrDAO.updateMemoAddr" parameterClass="addrVO"> |
|
| 691 |
+ UPDATE |
|
| 692 |
+ MJ_ADDR |
|
| 693 |
+ SET |
|
| 694 |
+ ADDR_COMMENT = #addrComment# |
|
| 695 |
+ WHERE |
|
| 696 |
+ MBER_ID = #mberId# |
|
| 697 |
+ AND |
|
| 698 |
+ ADDR_ID = #addrId# |
|
| 699 |
+ </update> |
|
| 700 |
+ |
|
| 701 |
+ |
|
| 702 |
+ |
|
| 703 |
+ <!-- 주소록 수정 By Admin --> |
|
| 704 |
+ <update id="AddrDAO.updateAddrByAdmin" parameterClass="addrVO"> |
|
| 705 |
+ UPDATE |
|
| 706 |
+ MJ_ADDR |
|
| 707 |
+ SET |
|
| 708 |
+ <isNotEmpty property="addrGrpId"> |
|
| 709 |
+ ADDR_GRP_ID = #addrGrpId#, |
|
| 710 |
+ </isNotEmpty> |
|
| 711 |
+ <isNotEmpty property="addrNm"> |
|
| 712 |
+ ADDR_NM = #addrNm#, |
|
| 713 |
+ </isNotEmpty> |
|
| 714 |
+ <isNotEmpty property="addrPhoneNo"> |
|
| 715 |
+ ADDR_PHONE_NO = #addrPhoneNo#, |
|
| 716 |
+ </isNotEmpty> |
|
| 717 |
+ <isNotEmpty property="addrInfo1"> |
|
| 718 |
+ ADDR_INFO1 = #addrInfo1#, |
|
| 719 |
+ </isNotEmpty> |
|
| 720 |
+ <isNotEmpty property="addrInfo2"> |
|
| 721 |
+ ADDR_INFO2 = #addrInfo2#, |
|
| 722 |
+ </isNotEmpty> |
|
| 723 |
+ <isNotEmpty property="addrInfo3"> |
|
| 724 |
+ ADDR_INFO3 = #addrInfo3#, |
|
| 725 |
+ </isNotEmpty> |
|
| 726 |
+ <isNotEmpty property="addrInfo4"> |
|
| 727 |
+ ADDR_INFO4 = #addrInfo4#, |
|
| 728 |
+ </isNotEmpty> |
|
| 729 |
+ <isNotEmpty property="addrComment"> |
|
| 730 |
+ ADDR_COMMENT = #addrComment#, |
|
| 731 |
+ </isNotEmpty> |
|
| 732 |
+ <isNotEmpty property="bookmark"> |
|
| 733 |
+ BOOKMARK = #bookmark#, |
|
| 734 |
+ </isNotEmpty> |
|
| 735 |
+ LAST_UPDT_PNTTM = NOW(), |
|
| 736 |
+ LAST_UPDUSR_ID = #lastUpdusrId# |
|
| 737 |
+ WHERE |
|
| 738 |
+ ADDR_ID = #addrId# |
|
| 739 |
+ </update> |
|
| 740 |
+ |
|
| 741 |
+ |
|
| 742 |
+ <!-- 주소록 합치기, 이동 --> |
|
| 743 |
+ <update id="AddrDAO.updateAddrsGrp" parameterClass="addrVO"> |
|
| 744 |
+ UPDATE |
|
| 745 |
+ MJ_ADDR |
|
| 746 |
+ SET |
|
| 747 |
+ ADDR_GRP_ID = #addrGrpId#, |
|
| 748 |
+ LAST_UPDT_PNTTM = NOW(), |
|
| 749 |
+ LAST_UPDUSR_ID = #lastUpdusrId# |
|
| 750 |
+ WHERE |
|
| 751 |
+ MBER_ID = #mberId# |
|
| 752 |
+ AND |
|
| 753 |
+ ADDR_GRP_ID |
|
| 754 |
+ IN |
|
| 755 |
+ <iterate property="mergeGrps" open="(" close=")" conjunction=",">
|
|
| 756 |
+ #mergeGrps[]# |
|
| 757 |
+ </iterate> |
|
| 758 |
+ |
|
| 759 |
+ </update> |
|
| 760 |
+ |
|
| 761 |
+ |
|
| 762 |
+ |
|
| 763 |
+ <!-- 주소록 삭제 --> |
|
| 764 |
+ <delete id="AddrDAO.deleteAddr" parameterClass="addrVO"> |
|
| 765 |
+ DELETE FROM |
|
| 766 |
+ MJ_ADDR |
|
| 767 |
+ WHERE |
|
| 768 |
+ MBER_ID = #mberId# |
|
| 769 |
+ <isEqual property="grpDelete" compareValue="Y"> |
|
| 770 |
+ AND |
|
| 771 |
+ ADDR_GRP_ID = #addrGrpId# |
|
| 772 |
+ </isEqual> |
|
| 773 |
+ <isNotEqual property="grpDelete" compareValue="Y"> |
|
| 774 |
+ AND |
|
| 775 |
+ ADDR_ID = #addrId# |
|
| 776 |
+ </isNotEqual> |
|
| 777 |
+<!-- <isNotEmpty property="batchSize"> --> |
|
| 778 |
+<!-- LIMIT #batchSize# --> |
|
| 779 |
+<!-- </isNotEmpty> --> |
|
| 780 |
+ </delete> |
|
| 781 |
+ |
|
| 782 |
+ |
|
| 783 |
+ <!-- 주소록 삭제 --> |
|
| 784 |
+ <select id="AddrDAO.getAddrCount" parameterClass="addrVO" resultClass="int"> |
|
| 785 |
+ |
|
| 786 |
+ select |
|
| 787 |
+ count(*) |
|
| 788 |
+ FROM |
|
| 789 |
+ MJ_ADDR |
|
| 790 |
+ WHERE |
|
| 791 |
+ MBER_ID = #mberId# |
|
| 792 |
+ <isNotEmpty property="addrGrpId"> |
|
| 793 |
+ AND |
|
| 794 |
+ ADDR_GRP_ID = #addrGrpId# |
|
| 795 |
+ </isNotEmpty> |
|
| 796 |
+ </select> |
|
| 797 |
+ |
|
| 798 |
+ <!-- 주소록 삭제 By Admin --> |
|
| 799 |
+ <delete id="AddrDAO.deleteAddrByAdmin" parameterClass="addrVO"> |
|
| 800 |
+ DELETE FROM |
|
| 801 |
+ MJ_ADDR |
|
| 802 |
+ WHERE ADDR_ID = #addrId# |
|
| 803 |
+ </delete> |
|
| 804 |
+ |
|
| 805 |
+ <!-- 주소록 삭제 By Admin By Grpid --> |
|
| 806 |
+ <delete id="AddrDAO.deleteAddrByAdminByGrpid" parameterClass="addrVO"> |
|
| 807 |
+ DELETE FROM |
|
| 808 |
+ MJ_ADDR |
|
| 809 |
+ WHERE ADDR_GRP_ID = #addrGrpId# |
|
| 810 |
+ </delete> |
|
| 811 |
+ |
|
| 812 |
+ <!-- 주소록 기본 그룹 조회 (자주보내는번호, 그룹미지정)--> |
|
| 813 |
+ <select id="AddrDAO.selectAddrBasicGrpList" parameterClass="addrVO" resultClass="addrVO"> |
|
| 814 |
+ /* AddrDAO.selectAddrBasicGrpList */ |
|
| 815 |
+ SELECT |
|
| 816 |
+ COUNT(1) OVER() AS totCnt |
|
| 817 |
+ ,A.ADDR_ID AS addrId |
|
| 818 |
+ ,A.ADDR_GRP_ID AS addrGrpId |
|
| 819 |
+ ,A.MBER_ID AS mberId |
|
| 820 |
+ ,A.ADDR_NM AS addrNm |
|
| 821 |
+ ,A.ADDR_PHONE_NO AS addrPhoneNo |
|
| 822 |
+ ,A.ADDR_INFO1 AS addrInfo1 |
|
| 823 |
+ ,A.ADDR_INFO2 AS addrInfo2 |
|
| 824 |
+ ,A.ADDR_INFO3 AS addrInfo3 |
|
| 825 |
+ ,A.ADDR_INFO4 AS addrInfo4 |
|
| 826 |
+ ,A.ADDR_COMMENT AS addrComment |
|
| 827 |
+ ,A.FRST_REGIST_PNTTM AS frstRegistPnttm |
|
| 828 |
+ ,A.FRST_REGISTER_ID AS frstRegisterId |
|
| 829 |
+ ,A.LAST_UPDT_PNTTM AS lastUpdtPnttm |
|
| 830 |
+ ,A.LAST_UPDUSR_ID AS lastUpdusrId |
|
| 831 |
+ ,A.DELETE_YN AS deleteYn |
|
| 832 |
+ ,A.BOOKMARK AS bookmark |
|
| 833 |
+ ,B.ADDR_GRP_NM AS addrGrpNm |
|
| 834 |
+ FROM |
|
| 835 |
+ MJ_ADDR A |
|
| 836 |
+ LEFT OUTER JOIN |
|
| 837 |
+ MJ_ADDR_GRP B |
|
| 838 |
+ ON |
|
| 839 |
+ A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 840 |
+ WHERE |
|
| 841 |
+ A.MBER_ID = #mberId# |
|
| 842 |
+ <isEqual property="type" compareValue="bookmark"> |
|
| 843 |
+ AND |
|
| 844 |
+ A.BOOKMARK = 'Y' |
|
| 845 |
+ </isEqual> |
|
| 846 |
+ <isEqual property="type" compareValue="noGrp"> |
|
| 847 |
+ AND |
|
| 848 |
+ A.ADDR_GRP_ID = '0' |
|
| 849 |
+ |
|
| 850 |
+ AND |
|
| 851 |
+ A.BOOKMARK = 'N' |
|
| 852 |
+ </isEqual> |
|
| 853 |
+ ORDER BY 1=1 |
|
| 854 |
+ <isNotEmpty property="searchSortCnd"> |
|
| 855 |
+ ,$searchSortCnd$ |
|
| 856 |
+ </isNotEmpty> |
|
| 857 |
+ <isNotEmpty property="searchSortOrd"> |
|
| 858 |
+ $searchSortOrd$ |
|
| 859 |
+ </isNotEmpty> |
|
| 860 |
+ </select> |
|
| 861 |
+ |
|
| 862 |
+ |
|
| 863 |
+ <update id="AddrDAO.insertCopyAddr" parameterClass="addrVO"> |
|
| 864 |
+ INSERT INTO MJ_ADDR ( |
|
| 865 |
+ ADDR_GRP_ID |
|
| 866 |
+ ,MBER_ID |
|
| 867 |
+ ,ADDR_NM |
|
| 868 |
+ ,ADDR_PHONE_NO |
|
| 869 |
+ ,ADDR_INFO1 |
|
| 870 |
+ ,ADDR_INFO2 |
|
| 871 |
+ ,ADDR_INFO3 |
|
| 872 |
+ ,ADDR_INFO4 |
|
| 873 |
+ ,ADDR_COMMENT |
|
| 874 |
+ ,FRST_REGIST_PNTTM |
|
| 875 |
+ ,FRST_REGISTER_ID |
|
| 876 |
+ <isNotEmpty property="bookmark"> |
|
| 877 |
+ ,BOOKMARK |
|
| 878 |
+ </isNotEmpty> |
|
| 879 |
+ ) |
|
| 880 |
+ SELECT |
|
| 881 |
+ #addrGrpId# AS ADDR_GRP_ID |
|
| 882 |
+ ,MBER_ID |
|
| 883 |
+ ,ADDR_NM |
|
| 884 |
+ ,ADDR_PHONE_NO |
|
| 885 |
+ ,ADDR_INFO1 |
|
| 886 |
+ ,ADDR_INFO2 |
|
| 887 |
+ ,ADDR_INFO3 |
|
| 888 |
+ ,ADDR_INFO4 |
|
| 889 |
+ ,ADDR_COMMENT |
|
| 890 |
+ ,NOW() |
|
| 891 |
+ ,MBER_ID |
|
| 892 |
+ <isNotEmpty property="bookmark"> |
|
| 893 |
+ ,#bookmark# |
|
| 894 |
+ </isNotEmpty> |
|
| 895 |
+ FROM MJ_ADDR |
|
| 896 |
+ WHERE |
|
| 897 |
+ MBER_ID = #mberId# |
|
| 898 |
+ AND |
|
| 899 |
+ ADDR_ID = #addrId# |
|
| 900 |
+ </update> |
|
| 901 |
+ |
|
| 902 |
+ <!-- /주소록 등록 갯수 및 정보 불러오기/ --> |
|
| 903 |
+ <select id="AddrDAO.selectAddrTotCntInfByUserId" parameterClass="addrVO" resultClass="egovMap"> |
|
| 904 |
+ |
|
| 905 |
+ SELECT COUNT(MBER_ID) OVER() AS totCnt, |
|
| 906 |
+ ADDR_ID AS addrId, |
|
| 907 |
+ ADDR_GRP_ID AS addrGrpId, |
|
| 908 |
+ MBER_ID AS mberId, |
|
| 909 |
+ ADDR_NM AS addrnm, |
|
| 910 |
+ ADDR_PHONE_NO AS addrPhoneNo, |
|
| 911 |
+ ADDR_INFO1 AS addrInfo1, |
|
| 912 |
+ ADDR_INFO2 AS addrInfo2, |
|
| 913 |
+ ADDR_INFO3 AS addrInfo3, |
|
| 914 |
+ ADDR_INFO4 AS addrInfo4, |
|
| 915 |
+ ADDR_COMMENT AS addrComment, |
|
| 916 |
+ BOOKMARK AS bookmark, |
|
| 917 |
+ FRST_REGIST_PNTTM AS frstRegistPnttm, |
|
| 918 |
+ LAST_UPDT_PNTTM AS lastUpdtPnttm |
|
| 919 |
+ FROM MJ_ADDR a |
|
| 920 |
+ WHERE a.MBER_ID = #mberId# |
|
| 921 |
+ AND delete_yn = 'N' |
|
| 922 |
+ |
|
| 923 |
+ </select> |
|
| 924 |
+ |
|
| 925 |
+ <insert id="AddrDAO.insertAddrList" parameterClass="java.util.List"> |
|
| 926 |
+ /* AddrDAO.insertAddrList */ |
|
| 927 |
+ INSERT INTO MJ_ADDR |
|
| 928 |
+ ( |
|
| 929 |
+ MBER_ID, |
|
| 930 |
+ ADDR_GRP_ID, |
|
| 931 |
+ ADDR_NM, |
|
| 932 |
+ ADDR_PHONE_NO, |
|
| 933 |
+ ADDR_INFO1, |
|
| 934 |
+ ADDR_INFO2, |
|
| 935 |
+ ADDR_INFO3, |
|
| 936 |
+ ADDR_INFO4, |
|
| 937 |
+ DELETE_YN, |
|
| 938 |
+ BOOKMARK, |
|
| 939 |
+ ADDR_COMMENT, |
|
| 940 |
+ FRST_REGISTER_ID |
|
| 941 |
+ ) |
|
| 942 |
+ <iterate prepend="VALUES" conjunction=","> |
|
| 943 |
+ ( |
|
| 944 |
+ #[].mberId#, |
|
| 945 |
+ #[].addrGrpId#, |
|
| 946 |
+ #[].addrNm#, |
|
| 947 |
+ #[].addrPhoneNo#, |
|
| 948 |
+ #[].addrInfo1#, |
|
| 949 |
+ #[].addrInfo2#, |
|
| 950 |
+ #[].addrInfo3#, |
|
| 951 |
+ #[].addrInfo4#, |
|
| 952 |
+ 'N', |
|
| 953 |
+ #[].bookmark#, |
|
| 954 |
+ #[].addrComment#, |
|
| 955 |
+ #[].frstRegisterId# |
|
| 956 |
+ ) |
|
| 957 |
+ </iterate> |
|
| 958 |
+ |
|
| 959 |
+ </insert> |
|
| 960 |
+ |
|
| 961 |
+ <!-- 주소록 그룹명 중복확인 --> |
|
| 962 |
+ <select id="AddrDAO.selectDuplAddrCnt" parameterClass="addrVO" resultClass="int"> |
|
| 963 |
+ SELECT |
|
| 964 |
+ COUNT(1) usedCnt |
|
| 965 |
+ FROM |
|
| 966 |
+ MJ_ADDR |
|
| 967 |
+ WHERE |
|
| 968 |
+ ADDR_GRP_ID = #addrGrpId# |
|
| 969 |
+ AND MBER_ID = #mberId# |
|
| 970 |
+ AND ADDR_PHONE_NO = #addrPhoneNo# |
|
| 971 |
+ <isNotEmpty property="bookmark"> |
|
| 972 |
+ <isEqual property="bookmark" compareValue="Y"> |
|
| 973 |
+ AND IFNULL(BOOKMARK, 'N') = 'Y' |
|
| 974 |
+ </isEqual> |
|
| 975 |
+ </isNotEmpty> |
|
| 976 |
+ <isEmpty property="bookmark"> |
|
| 977 |
+ AND IFNULL(BOOKMARK, 'N') = 'N' |
|
| 978 |
+ </isEmpty> |
|
| 979 |
+ </select> |
|
| 980 |
+ |
|
| 981 |
+ |
|
| 982 |
+ <!-- 주소록 한 그룹에 속한 주소록의 전화번호 조회(중복체크용도) --> |
|
| 983 |
+ <select id="AddrDAO.selectPhoneNumInAddrGroup" parameterClass="addrVO" resultClass="addrVO"> |
|
| 984 |
+ SELECT |
|
| 985 |
+ ADDR_PHONE_NO AS addrPhoneNo |
|
| 986 |
+ FROM |
|
| 987 |
+ MJ_ADDR |
|
| 988 |
+ WHERE |
|
| 989 |
+ ADDR_GRP_ID = #addrGrpId# |
|
| 990 |
+ AND MBER_ID = #mberId# |
|
| 991 |
+ AND BOOKMARK = #bookmark# |
|
| 992 |
+ </select> |
|
| 993 |
+ |
|
| 994 |
+ <update id="AddrDAO.insertCopyAddrs" parameterClass="addrVO"> |
|
| 995 |
+ INSERT INTO MJ_ADDR ( |
|
| 996 |
+ ADDR_GRP_ID |
|
| 997 |
+ ,MBER_ID |
|
| 998 |
+ ,ADDR_NM |
|
| 999 |
+ ,ADDR_PHONE_NO |
|
| 1000 |
+ ,ADDR_INFO1 |
|
| 1001 |
+ ,ADDR_INFO2 |
|
| 1002 |
+ ,ADDR_INFO3 |
|
| 1003 |
+ ,ADDR_INFO4 |
|
| 1004 |
+ ,ADDR_COMMENT |
|
| 1005 |
+ ,FRST_REGIST_PNTTM |
|
| 1006 |
+ ,FRST_REGISTER_ID |
|
| 1007 |
+ ) |
|
| 1008 |
+ SELECT |
|
| 1009 |
+ #addrGrpId# AS ADDR_GRP_ID |
|
| 1010 |
+ ,MBER_ID |
|
| 1011 |
+ ,ADDR_NM |
|
| 1012 |
+ ,ADDR_PHONE_NO |
|
| 1013 |
+ ,ADDR_INFO1 |
|
| 1014 |
+ ,ADDR_INFO2 |
|
| 1015 |
+ ,ADDR_INFO3 |
|
| 1016 |
+ ,ADDR_INFO4 |
|
| 1017 |
+ ,ADDR_COMMENT |
|
| 1018 |
+ ,NOW() |
|
| 1019 |
+ ,MBER_ID |
|
| 1020 |
+ FROM MJ_ADDR |
|
| 1021 |
+ WHERE |
|
| 1022 |
+ MBER_ID = #mberId# |
|
| 1023 |
+ AND |
|
| 1024 |
+ ADDR_GRP_ID IN |
|
| 1025 |
+ <iterate property="copyAddrs" open="(" close=")" conjunction=",">
|
|
| 1026 |
+ #copyAddrs[]# |
|
| 1027 |
+ </iterate> |
|
| 1028 |
+ </update> |
|
| 1029 |
+ |
|
| 1030 |
+ <!-- 문자페이지로 전송할 데이터만 추려오기 --> |
|
| 1031 |
+ <select id="AddrDAO.selectAddrDataList" parameterClass="addrVO" resultClass="addrVO"> |
|
| 1032 |
+ SELECT |
|
| 1033 |
+ COUNT(1) OVER() AS totCnt |
|
| 1034 |
+ ,A.ADDR_ID AS addrId |
|
| 1035 |
+ ,A.ADDR_GRP_ID AS addrGrpId |
|
| 1036 |
+ ,A.MBER_ID AS mberId |
|
| 1037 |
+ ,A.ADDR_NM AS addrNm |
|
| 1038 |
+ ,A.ADDR_PHONE_NO AS addrPhoneNo |
|
| 1039 |
+ ,A.ADDR_INFO1 AS addrInfo1 |
|
| 1040 |
+ ,A.ADDR_INFO2 AS addrInfo2 |
|
| 1041 |
+ ,A.ADDR_INFO3 AS addrInfo3 |
|
| 1042 |
+ ,A.ADDR_INFO4 AS addrInfo4 |
|
| 1043 |
+ ,A.ADDR_COMMENT AS addrComment |
|
| 1044 |
+ ,A.FRST_REGIST_PNTTM AS frstRegistPnttm |
|
| 1045 |
+ ,A.FRST_REGISTER_ID AS frstRegisterId |
|
| 1046 |
+ ,A.LAST_UPDT_PNTTM AS lastUpdtPnttm |
|
| 1047 |
+ ,A.LAST_UPDUSR_ID AS lastUpdusrId |
|
| 1048 |
+ ,A.DELETE_YN AS deleteYn |
|
| 1049 |
+ ,A.BOOKMARK AS bookmark |
|
| 1050 |
+ FROM |
|
| 1051 |
+ MJ_ADDR A |
|
| 1052 |
+ WHERE |
|
| 1053 |
+ A.MBER_ID = #mberId# |
|
| 1054 |
+ <iterate prepend="AND A.ADDR_ID IN " open="(" close=")" conjunction="," property="addrIdList">
|
|
| 1055 |
+ #addrIdList[]# |
|
| 1056 |
+ </iterate> |
|
| 1057 |
+ ORDER BY A.ADDR_NM ASC |
|
| 1058 |
+ </select> |
|
| 1059 |
+ |
|
| 1060 |
+ <!-- 주소록 그룹별 중복 연락처 삭제 --> |
|
| 1061 |
+ <delete id="AddrDAO.deleteAddrDupliList" parameterClass="addrVO"> |
|
| 1062 |
+ DELETE FROM MJ_ADDR WHERE ADDR_ID IN ( |
|
| 1063 |
+ SELECT |
|
| 1064 |
+ M.ADDR_ID |
|
| 1065 |
+ FROM ( |
|
| 1066 |
+ SELECT |
|
| 1067 |
+ A.ADDR_ID |
|
| 1068 |
+ , A.ADDR_PHONE_NO |
|
| 1069 |
+ , COUNT(0) AS DUPLI_CNT |
|
| 1070 |
+ FROM MJ_ADDR A |
|
| 1071 |
+ LEFT OUTER JOIN MJ_ADDR_GRP B |
|
| 1072 |
+ ON A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 1073 |
+ WHERE A.MBER_ID = #mberId# |
|
| 1074 |
+ AND (A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL) |
|
| 1075 |
+ AND A.DELETE_YN = 'N' |
|
| 1076 |
+ GROUP BY A.ADDR_GRP_ID, A.BOOKMARK, A.ADDR_PHONE_NO |
|
| 1077 |
+ ) M |
|
| 1078 |
+ WHERE M.DUPLI_CNT > 1 |
|
| 1079 |
+ ) |
|
| 1080 |
+ </delete> |
|
| 1081 |
+ |
|
| 1082 |
+ <!-- 주소록 그룹별 중복 연락처 리스트 불러오기 --> |
|
| 1083 |
+ <select id="AddrDAO.selectAddrDupliList" parameterClass="addrVO" resultClass="addrVO"> |
|
| 1084 |
+ SELECT |
|
| 1085 |
+ M.ADDR_GRP_NM AS addrGrpNm |
|
| 1086 |
+ , COUNT(0) AS dupliCnt |
|
| 1087 |
+ FROM ( |
|
| 1088 |
+ SELECT |
|
| 1089 |
+ A.ADDR_ID |
|
| 1090 |
+ ,CASE |
|
| 1091 |
+ WHEN A.ADDR_GRP_ID = 0 AND A.BOOKMARK = 'N' |
|
| 1092 |
+ THEN '그룹미지정' |
|
| 1093 |
+ WHEN A.ADDR_GRP_ID = 0 AND A.BOOKMARK = 'Y' |
|
| 1094 |
+ THEN '자주보내는 번호' |
|
| 1095 |
+ ELSE B.ADDR_GRP_NM |
|
| 1096 |
+ END ADDR_GRP_NM |
|
| 1097 |
+ ,A.ADDR_PHONE_NO |
|
| 1098 |
+ ,COUNT(0) AS DUPLI_CNT |
|
| 1099 |
+ FROM MJ_ADDR A |
|
| 1100 |
+ LEFT OUTER JOIN MJ_ADDR_GRP B |
|
| 1101 |
+ ON A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 1102 |
+ WHERE A.MBER_ID = #mberId# |
|
| 1103 |
+ AND (A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL) |
|
| 1104 |
+ AND A.DELETE_YN = 'N' |
|
| 1105 |
+ GROUP BY A.ADDR_GRP_ID, A.BOOKMARK, A.ADDR_PHONE_NO |
|
| 1106 |
+ ) M |
|
| 1107 |
+ WHERE M.DUPLI_CNT > 1 |
|
| 1108 |
+ GROUP BY M.ADDR_GRP_NM |
|
| 1109 |
+ </select> |
|
| 1110 |
+ |
|
| 1111 |
+ <!-- 주소록 그룹별 중복 연락처 삭제 --> |
|
| 1112 |
+ <delete id="AddrDAO.deleteAddrDupliListByGrpnm" parameterClass="addrVO"> |
|
| 1113 |
+ DELETE FROM MJ_ADDR WHERE ADDR_ID IN ( |
|
| 1114 |
+ SELECT |
|
| 1115 |
+ M.ADDR_ID |
|
| 1116 |
+ FROM ( |
|
| 1117 |
+ SELECT |
|
| 1118 |
+ A.ADDR_ID |
|
| 1119 |
+ ,COUNT(0) AS DUPLI_CNT |
|
| 1120 |
+ FROM MJ_ADDR A |
|
| 1121 |
+ LEFT OUTER JOIN MJ_ADDR_GRP B |
|
| 1122 |
+ ON A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 1123 |
+ WHERE A.MBER_ID = #mberId# |
|
| 1124 |
+ AND A.ADDR_GRP_ID = #addrGrpId# |
|
| 1125 |
+ AND A.BOOKMARK = #bookmark# |
|
| 1126 |
+ AND (A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL) |
|
| 1127 |
+ AND A.DELETE_YN = 'N' |
|
| 1128 |
+ GROUP BY A.ADDR_GRP_ID, A.BOOKMARK, A.ADDR_PHONE_NO |
|
| 1129 |
+ ) M |
|
| 1130 |
+ WHERE M.DUPLI_CNT > 1 |
|
| 1131 |
+ ) |
|
| 1132 |
+ |
|
| 1133 |
+ </delete> |
|
| 1134 |
+ |
|
| 1135 |
+ <!-- 주소록 그룹별 중복 연락처 리스트 불러오기 --> |
|
| 1136 |
+ <select id="AddrDAO.selectAddrDupliListByGrpnm" parameterClass="addrVO" resultClass="addrVO"> |
|
| 1137 |
+ SELECT |
|
| 1138 |
+ M.ADDR_GRP_NM AS addrGrpNm |
|
| 1139 |
+ , COUNT(0) AS dupliCnt |
|
| 1140 |
+ FROM ( |
|
| 1141 |
+ SELECT |
|
| 1142 |
+ A.ADDR_ID |
|
| 1143 |
+ ,CASE |
|
| 1144 |
+ WHEN A.ADDR_GRP_ID = 0 AND A.BOOKMARK = 'N' |
|
| 1145 |
+ THEN '그룹미지정' |
|
| 1146 |
+ WHEN A.ADDR_GRP_ID = 0 AND A.BOOKMARK = 'Y' |
|
| 1147 |
+ THEN '자주보내는 번호' |
|
| 1148 |
+ ELSE B.ADDR_GRP_NM |
|
| 1149 |
+ END ADDR_GRP_NM |
|
| 1150 |
+ ,A.ADDR_PHONE_NO |
|
| 1151 |
+ ,COUNT(0) AS DUPLI_CNT |
|
| 1152 |
+ FROM MJ_ADDR A |
|
| 1153 |
+ LEFT OUTER JOIN MJ_ADDR_GRP B |
|
| 1154 |
+ ON A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 1155 |
+ WHERE A.MBER_ID = #mberId# |
|
| 1156 |
+ AND A.ADDR_GRP_ID = #addrGrpId# |
|
| 1157 |
+ AND A.BOOKMARK = #bookmark# |
|
| 1158 |
+ AND (A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL) |
|
| 1159 |
+ AND A.DELETE_YN = 'N' |
|
| 1160 |
+ GROUP BY A.ADDR_GRP_ID, A.BOOKMARK, A.ADDR_PHONE_NO |
|
| 1161 |
+ ) M |
|
| 1162 |
+ WHERE M.DUPLI_CNT > 1 |
|
| 1163 |
+ GROUP BY M.ADDR_GRP_NM |
|
| 1164 |
+ </select> |
|
| 1165 |
+ |
|
| 1166 |
+ |
|
| 1167 |
+ <!-- 주소록 전체 중복 연락처 중 한개만 남기고 삭제 --> |
|
| 1168 |
+ <delete id="AddrDAO.deleteAddrDupliListByAll" parameterClass="addrVO"> |
|
| 1169 |
+ DELETE FROM MJ_ADDR WHERE ADDR_ID IN ( |
|
| 1170 |
+ SELECT |
|
| 1171 |
+ M.ADDR_ID |
|
| 1172 |
+ FROM ( |
|
| 1173 |
+ SELECT |
|
| 1174 |
+ A.ADDR_ID |
|
| 1175 |
+ , A.ADDR_PHONE_NO |
|
| 1176 |
+ , COUNT(0) AS DUPLI_CNT |
|
| 1177 |
+ FROM MJ_ADDR A |
|
| 1178 |
+ LEFT OUTER JOIN MJ_ADDR_GRP B |
|
| 1179 |
+ ON A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 1180 |
+ WHERE A.MBER_ID = #mberId# |
|
| 1181 |
+ AND (A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL) |
|
| 1182 |
+ AND A.DELETE_YN = 'N' |
|
| 1183 |
+ GROUP BY A.ADDR_PHONE_NO |
|
| 1184 |
+ ORDER BY A.ADDR_PHONE_NO ASC, B.ADDR_GRP_ID ASC |
|
| 1185 |
+ ) M |
|
| 1186 |
+ WHERE M.DUPLI_CNT > 1 |
|
| 1187 |
+ ) |
|
| 1188 |
+ |
|
| 1189 |
+ </delete> |
|
| 1190 |
+ |
|
| 1191 |
+ <!-- 주소록 전체 중복 연락처 수 --> |
|
| 1192 |
+ <select id="AddrDAO.selectAddrDupliListByAllCnt" parameterClass="addrVO" resultClass="int"> |
|
| 1193 |
+ SELECT |
|
| 1194 |
+ COUNT(0) AS totCnt |
|
| 1195 |
+ FROM ( |
|
| 1196 |
+ SELECT |
|
| 1197 |
+ A.ADDR_ID |
|
| 1198 |
+ , A.ADDR_PHONE_NO |
|
| 1199 |
+ , COUNT(0) AS DUPLI_CNT |
|
| 1200 |
+ FROM MJ_ADDR A |
|
| 1201 |
+ LEFT OUTER JOIN MJ_ADDR_GRP B |
|
| 1202 |
+ ON A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 1203 |
+ WHERE A.MBER_ID = #mberId# |
|
| 1204 |
+ AND (A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL) |
|
| 1205 |
+ AND A.DELETE_YN = 'N' |
|
| 1206 |
+ GROUP BY A.ADDR_PHONE_NO |
|
| 1207 |
+ ORDER BY A.ADDR_PHONE_NO ASC, B.ADDR_GRP_ID ASC |
|
| 1208 |
+ ) M |
|
| 1209 |
+ WHERE M.DUPLI_CNT > 1 |
|
| 1210 |
+ </select> |
|
| 1211 |
+ |
|
| 1212 |
+ <!-- 주소록 전체 중복 연락처 목록 --> |
|
| 1213 |
+ <select id="AddrDAO.selectAddrDupliListByAll" parameterClass="addrVO" resultClass="addrVO"> |
|
| 1214 |
+ SELECT |
|
| 1215 |
+ COUNT(1) OVER() AS totCnt |
|
| 1216 |
+ , A2.ADDR_ID AS addrId |
|
| 1217 |
+ , A2.ADDR_NM AS addrNm |
|
| 1218 |
+ , A2.ADDR_GRP_ID AS addrGrpId |
|
| 1219 |
+ ,CASE |
|
| 1220 |
+ WHEN A2.ADDR_GRP_ID = 0 AND A2.BOOKMARK = 'N' |
|
| 1221 |
+ THEN '그룹미지정' |
|
| 1222 |
+ WHEN A2.ADDR_GRP_ID = 0 AND A2.BOOKMARK = 'Y' |
|
| 1223 |
+ THEN '자주보내는 번호' |
|
| 1224 |
+ ELSE B2.ADDR_GRP_NM |
|
| 1225 |
+ END addrGrpNm |
|
| 1226 |
+ , A2.ADDR_PHONE_NO AS addrPhoneNo |
|
| 1227 |
+ FROM MJ_ADDR A2 |
|
| 1228 |
+ LEFT OUTER JOIN MJ_ADDR_GRP B2 |
|
| 1229 |
+ ON A2.ADDR_GRP_ID = B2.ADDR_GRP_ID |
|
| 1230 |
+ WHERE A2.MBER_ID = #mberId# |
|
| 1231 |
+ AND A2.ADDR_PHONE_NO IN |
|
| 1232 |
+ ( |
|
| 1233 |
+ SELECT |
|
| 1234 |
+ M.ADDR_PHONE_NO |
|
| 1235 |
+ FROM ( |
|
| 1236 |
+ SELECT |
|
| 1237 |
+ A.ADDR_ID |
|
| 1238 |
+ , A.ADDR_PHONE_NO |
|
| 1239 |
+ , COUNT(0) AS DUPLI_CNT |
|
| 1240 |
+ FROM MJ_ADDR A |
|
| 1241 |
+ LEFT OUTER JOIN MJ_ADDR_GRP B |
|
| 1242 |
+ ON A.ADDR_GRP_ID = B.ADDR_GRP_ID |
|
| 1243 |
+ WHERE A.MBER_ID = #mberId# |
|
| 1244 |
+ AND (A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL) |
|
| 1245 |
+ AND A.DELETE_YN = 'N' |
|
| 1246 |
+ GROUP BY A.ADDR_PHONE_NO |
|
| 1247 |
+ ORDER BY A.ADDR_PHONE_NO ASC, B.ADDR_GRP_ID ASC |
|
| 1248 |
+ ) M |
|
| 1249 |
+ WHERE M.DUPLI_CNT > 1 |
|
| 1250 |
+ ) |
|
| 1251 |
+ ORDER BY A2.ADDR_PHONE_NO ASC, ADDR_GRP_NM ASC |
|
| 1252 |
+ LIMIT #recordCountPerPage# OFFSET #firstIndex# |
|
| 1253 |
+ </select> |
|
| 1254 |
+ |
|
| 1255 |
+ <!-- TEMP 주소록 중복 연락처 목록 --> |
|
| 1256 |
+ <select id="AddrDAO.selectTempAddrDupliList" parameterClass="addrVO" resultClass="addrVO"> |
|
| 1257 |
+ SELECT |
|
| 1258 |
+ ADDR_NM AS addrNm |
|
| 1259 |
+ , ADDR_PHONE_NO AS addrPhoneNo |
|
| 1260 |
+ FROM TEMP_MJ_ADDR |
|
| 1261 |
+ WHERE MBER_ID = #mberId# |
|
| 1262 |
+ AND ADDR_GRP_ID = #addrGrpId# |
|
| 1263 |
+ AND BOOKMARK = #bookmark# |
|
| 1264 |
+ AND ADDR_PHONE_NO IN |
|
| 1265 |
+ ( |
|
| 1266 |
+ SELECT ADDR_PHONE_NO FROM MJ_ADDR |
|
| 1267 |
+ WHERE MBER_ID = #mberId# |
|
| 1268 |
+ AND ADDR_GRP_ID = #addrGrpId# |
|
| 1269 |
+ AND BOOKMARK = #bookmark# |
|
| 1270 |
+ ) |
|
| 1271 |
+ ORDER BY ADDR_PHONE_NO ASC |
|
| 1272 |
+ </select> |
|
| 1273 |
+ |
|
| 1274 |
+ <!-- TEMP 주소록 삭제 --> |
|
| 1275 |
+ <delete id="AddrDAO.deleteTempAddr" parameterClass="addrVO"> |
|
| 1276 |
+ DELETE FROM TEMP_MJ_ADDR WHERE MBER_ID = #mberId# |
|
| 1277 |
+ </delete> |
|
| 1278 |
+ |
|
| 1279 |
+ <!-- TEMP 주소록 대량등록 --> |
|
| 1280 |
+ <insert id="AddrDAO.insertTempAddrList" parameterClass="java.util.List"> |
|
| 1281 |
+ |
|
| 1282 |
+ INSERT INTO TEMP_MJ_ADDR |
|
| 1283 |
+ ( |
|
| 1284 |
+ MBER_ID, |
|
| 1285 |
+ ADDR_GRP_ID, |
|
| 1286 |
+ ADDR_NM, |
|
| 1287 |
+ ADDR_PHONE_NO, |
|
| 1288 |
+ ADDR_INFO1, |
|
| 1289 |
+ ADDR_INFO2, |
|
| 1290 |
+ ADDR_INFO3, |
|
| 1291 |
+ ADDR_INFO4, |
|
| 1292 |
+ DELETE_YN, |
|
| 1293 |
+ BOOKMARK, |
|
| 1294 |
+ ADDR_COMMENT, |
|
| 1295 |
+ FRST_REGISTER_ID |
|
| 1296 |
+ )VALUES |
|
| 1297 |
+ <iterate conjunction=","> |
|
| 1298 |
+ ( |
|
| 1299 |
+ #[].mberId#, |
|
| 1300 |
+ #[].addrGrpId#, |
|
| 1301 |
+ #[].addrNm#, |
|
| 1302 |
+ #[].addrPhoneNo#, |
|
| 1303 |
+ #[].addrInfo1#, |
|
| 1304 |
+ #[].addrInfo2#, |
|
| 1305 |
+ #[].addrInfo3#, |
|
| 1306 |
+ #[].addrInfo4#, |
|
| 1307 |
+ 'N', |
|
| 1308 |
+ #[].bookmark#, |
|
| 1309 |
+ #[].addrComment#, |
|
| 1310 |
+ #[].frstRegisterId# |
|
| 1311 |
+ ) |
|
| 1312 |
+ </iterate> |
|
| 1313 |
+ </insert> |
|
| 1314 |
+ |
|
| 1315 |
+ <!-- 주소록 대량등록 By Temp 주소록 --> |
|
| 1316 |
+ <insert id="AddrDAO.insertAddrByTempAddr" parameterClass="addrVO"> |
|
| 1317 |
+ INSERT INTO MJ_ADDR ( |
|
| 1318 |
+ ADDR_GRP_ID |
|
| 1319 |
+ , MBER_ID |
|
| 1320 |
+ , ADDR_NM |
|
| 1321 |
+ , ADDR_PHONE_NO |
|
| 1322 |
+ , ADDR_INFO1 |
|
| 1323 |
+ , ADDR_INFO2 |
|
| 1324 |
+ , ADDR_INFO3 |
|
| 1325 |
+ , ADDR_INFO4 |
|
| 1326 |
+ , ADDR_COMMENT |
|
| 1327 |
+ , FRST_REGIST_PNTTM |
|
| 1328 |
+ , FRST_REGISTER_ID |
|
| 1329 |
+ , LAST_UPDT_PNTTM |
|
| 1330 |
+ , LAST_UPDUSR_ID |
|
| 1331 |
+ , DELETE_YN |
|
| 1332 |
+ , BOOKMARK |
|
| 1333 |
+ , RECV_STATUS |
|
| 1334 |
+ ) |
|
| 1335 |
+ SELECT |
|
| 1336 |
+ ADDR_GRP_ID |
|
| 1337 |
+ , MBER_ID |
|
| 1338 |
+ , ADDR_NM |
|
| 1339 |
+ , ADDR_PHONE_NO |
|
| 1340 |
+ , ADDR_INFO1 |
|
| 1341 |
+ , ADDR_INFO2 |
|
| 1342 |
+ , ADDR_INFO3 |
|
| 1343 |
+ , ADDR_INFO4 |
|
| 1344 |
+ , ADDR_COMMENT |
|
| 1345 |
+ , FRST_REGIST_PNTTM |
|
| 1346 |
+ , FRST_REGISTER_ID |
|
| 1347 |
+ , LAST_UPDT_PNTTM |
|
| 1348 |
+ , LAST_UPDUSR_ID |
|
| 1349 |
+ , DELETE_YN |
|
| 1350 |
+ , BOOKMARK |
|
| 1351 |
+ , RECV_STATUS |
|
| 1352 |
+ FROM TEMP_MJ_ADDR |
|
| 1353 |
+ WHERE MBER_ID = #mberId# |
|
| 1354 |
+ AND ADDR_GRP_ID = #addrGrpId# |
|
| 1355 |
+ AND BOOKMARK = #bookmark# |
|
| 1356 |
+ AND ADDR_PHONE_NO NOT IN |
|
| 1357 |
+ ( |
|
| 1358 |
+ SELECT ADDR_PHONE_NO FROM MJ_ADDR |
|
| 1359 |
+ WHERE MBER_ID = #mberId# |
|
| 1360 |
+ AND ADDR_GRP_ID = #addrGrpId# |
|
| 1361 |
+ AND BOOKMARK = #bookmark# |
|
| 1362 |
+ ) |
|
| 1363 |
+ </insert> |
|
| 1364 |
+ |
|
| 1365 |
+ |
|
| 1366 |
+</sqlMap> |
--- src/main/webapp/WEB-INF/jsp/web/addr/AddrGroupListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/addr/AddrGroupListAjax.jsp
... | ... | @@ -1,905 +1,905 @@ |
| 1 |
-<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> |
|
| 2 |
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> |
|
| 3 |
-<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> |
|
| 4 |
-<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> |
|
| 5 |
-<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> |
|
| 6 |
- |
|
| 7 |
-<script src="/publish/js/content.js"></script> |
|
| 8 |
-<script type="text/javascript"> |
|
| 9 |
-var successHtml=""; |
|
| 10 |
- |
|
| 11 |
-$(document).ready(function(){
|
|
| 12 |
- |
|
| 13 |
- // 주소록 그룹 카운트(전체) |
|
| 14 |
- getAddrGroupTotCnt(); |
|
| 15 |
- |
|
| 16 |
- //주소록 그룹 카운트(그룹미지정) |
|
| 17 |
- getAddrGroupNogrpCnt(); |
|
| 18 |
- |
|
| 19 |
- //주소록 그룹 카운트(자주보내는 번호) |
|
| 20 |
- getAddrGroupBookmarkCnt(); |
|
| 21 |
- |
|
| 22 |
-}); |
|
| 23 |
- |
|
| 24 |
-// 주소록 그룹 카운트(전체) |
|
| 25 |
-function getAddrGroupTotCnt() {
|
|
| 26 |
- $.ajax({
|
|
| 27 |
- type: "POST", |
|
| 28 |
- url: "/web/addr/selectAddrGroupTotCntAjax.do", |
|
| 29 |
- data: {},
|
|
| 30 |
- dataType:'json', |
|
| 31 |
- async: true, |
|
| 32 |
- success: function (data) {
|
|
| 33 |
- console.log('data : ', data);
|
|
| 34 |
- if (data.isSuccess) {
|
|
| 35 |
- $("#addrTotCnt").html(numberWithCommas(data.addrTotCnt));
|
|
| 36 |
- } |
|
| 37 |
- else {
|
|
| 38 |
- //alert("Msg : " + data.msg);
|
|
| 39 |
- } |
|
| 40 |
- }, |
|
| 41 |
- error: function (e) {
|
|
| 42 |
- //alert("ERROR : " + JSON.stringify(e));
|
|
| 43 |
- } |
|
| 44 |
- }); |
|
| 45 |
-} |
|
| 46 |
- |
|
| 47 |
-//주소록 그룹 카운트(그룹미지정) |
|
| 48 |
-function getAddrGroupNogrpCnt() {
|
|
| 49 |
- $.ajax({
|
|
| 50 |
- type: "POST", |
|
| 51 |
- url: "/web/addr/selectAddrGroupNogrpCntAjax.do", |
|
| 52 |
- data: {},
|
|
| 53 |
- dataType:'json', |
|
| 54 |
- async: true, |
|
| 55 |
- success: function (data) {
|
|
| 56 |
- if (data.isSuccess) {
|
|
| 57 |
- $("#nogrpCnt").html(data.nogrpCnt);
|
|
| 58 |
- } |
|
| 59 |
- else {
|
|
| 60 |
- //alert("Msg : " + data.msg);
|
|
| 61 |
- } |
|
| 62 |
- }, |
|
| 63 |
- error: function (e) {
|
|
| 64 |
- //alert("ERROR : " + JSON.stringify(e));
|
|
| 65 |
- } |
|
| 66 |
- }); |
|
| 67 |
-} |
|
| 68 |
- |
|
| 69 |
-//주소록 그룹 카운트(자주보내는 번호) |
|
| 70 |
-function getAddrGroupBookmarkCnt() {
|
|
| 71 |
- $.ajax({
|
|
| 72 |
- type: "POST", |
|
| 73 |
- url: "/web/addr/selectAddrGroupBookmarkCntAjax.do", |
|
| 74 |
- data: {},
|
|
| 75 |
- dataType:'json', |
|
| 76 |
- async: true, |
|
| 77 |
- success: function (data) {
|
|
| 78 |
- if (data.isSuccess) {
|
|
| 79 |
- $("#bookmarkCnt").html(data.bookmarkCnt);
|
|
| 80 |
- } |
|
| 81 |
- else {
|
|
| 82 |
- //alert("Msg : " + data.msg);
|
|
| 83 |
- } |
|
| 84 |
- }, |
|
| 85 |
- error: function (e) {
|
|
| 86 |
- //alert("ERROR : " + JSON.stringify(e));
|
|
| 87 |
- } |
|
| 88 |
- }); |
|
| 89 |
-} |
|
| 90 |
- |
|
| 91 |
-// 주소록 그룹 리스트 띄우기 |
|
| 92 |
-function listAddrGroupAjax() {
|
|
| 93 |
- var form = document.searchAddrGrpForm; |
|
| 94 |
- |
|
| 95 |
- var sendData = $(document.searchAddrGrpForm).serializeArray() ; |
|
| 96 |
- $("#adr1_left").load("/web/addr/selectAddrGroupListAjax.do", sendData ,function(response, status, xhr){});
|
|
| 97 |
-} |
|
| 98 |
- |
|
| 99 |
-// 주소록 그룹 지우기(선택삭제) |
|
| 100 |
-function deleteAddrGroup() {
|
|
| 101 |
- var form = document.addrGrpListForm; |
|
| 102 |
- if($("input:checkbox[name='grpCheck']").is(":checked")==true){
|
|
| 103 |
- if(confirm("그룹을 삭제하시겠습니까?\n그룹 내 전체 주소가 삭제되며 복구할 수 없습니다.")) {
|
|
| 104 |
- fn_loadAddActive(); |
|
| 105 |
- var data = new FormData(form); |
|
| 106 |
- $.ajax({
|
|
| 107 |
- cache : false, |
|
| 108 |
- url : "<c:url value='/web/addr/deleteAddrGroupAjax.do'/>", |
|
| 109 |
- type : 'POST', |
|
| 110 |
- data : data, |
|
| 111 |
- dataType:'json', |
|
| 112 |
- processData: false, |
|
| 113 |
- contentType: false, |
|
| 114 |
- success : function(returnData, status){
|
|
| 115 |
- if(status == "success") {
|
|
| 116 |
- if("fail"==returnData.result){
|
|
| 117 |
- alert(returnData.message); |
|
| 118 |
- return; |
|
| 119 |
- } |
|
| 120 |
- alert("삭제되었습니다.");
|
|
| 121 |
- listAddrGrp(); |
|
| 122 |
- addrGroupLoadAjax(); |
|
| 123 |
- addrLoadAjax(); |
|
| 124 |
- |
|
| 125 |
- }else{ alert("ERROR!");return;}
|
|
| 126 |
- }, |
|
| 127 |
- error: function (e) { alert("삭제 실패하였습니다."); console.log("ERROR : ", e); },
|
|
| 128 |
- beforeSend: function(xmlHttpRequest) {
|
|
| 129 |
- }, |
|
| 130 |
- complete: function(xhr, textStatus) {
|
|
| 131 |
- fn_loadRemoveActive(); |
|
| 132 |
- } |
|
| 133 |
- }); |
|
| 134 |
- } |
|
| 135 |
- }else{
|
|
| 136 |
- alert("선택된 그룹이 없습니다.");
|
|
| 137 |
- return false; |
|
| 138 |
- } |
|
| 139 |
- |
|
| 140 |
-} |
|
| 141 |
- |
|
| 142 |
-// 체크박스 전체선택 |
|
| 143 |
-function fnCheckAll() {
|
|
| 144 |
- var checkField = document.addrGrpListForm.grpCheck; |
|
| 145 |
- if(document.addrGrpListForm.groupAll.checked) {
|
|
| 146 |
- if(checkField) {
|
|
| 147 |
- if(checkField.length > 1) {
|
|
| 148 |
- for(var i=0; i < checkField.length; i++) {
|
|
| 149 |
- checkField[i].checked = true; |
|
| 150 |
- } |
|
| 151 |
- } else {
|
|
| 152 |
- checkField.checked = true; |
|
| 153 |
- } |
|
| 154 |
- } |
|
| 155 |
- } else {
|
|
| 156 |
- if(checkField) {
|
|
| 157 |
- if(checkField.length > 1) {
|
|
| 158 |
- for(var j=0; j < checkField.length; j++) {
|
|
| 159 |
- checkField[j].checked = false; |
|
| 160 |
- } |
|
| 161 |
- } else {
|
|
| 162 |
- checkField.checked = false; |
|
| 163 |
- } |
|
| 164 |
- } |
|
| 165 |
- } |
|
| 166 |
- tooltipCheck(); |
|
| 167 |
-} |
|
| 168 |
- |
|
| 169 |
-// 주소록 그룹 합치기 레이어 열기 |
|
| 170 |
-function mergeAddrGroupLayer(){
|
|
| 171 |
- var form = document.addrGrpListForm; |
|
| 172 |
- var html = ""; |
|
| 173 |
- var index = 0; |
|
| 174 |
- if($("input:checkbox[name='grpCheck']:checked").length > 1){
|
|
| 175 |
- |
|
| 176 |
- $('input:checkbox[name="grpCheck"]').each(function() {
|
|
| 177 |
- if(this.checked){
|
|
| 178 |
- var id = $(this).attr('id');
|
|
| 179 |
- var idNum = id.substr(5); |
|
| 180 |
- |
|
| 181 |
- html += '<li name="liIndex" class="'+$("#addrGrpId"+idNum).val()+'" id="liIndex'+index+'">'+$("#addrGrpNm"+idNum).val()+' [<span>'+$("#grpCount"+idNum).val()+'</span>명]<button type="button" onclick="removeLi('+ index +');"><img src="/publish/images/content/close_btn.png" alt="선택 그룹 취소"></button></li>';
|
|
| 182 |
- index++; |
|
| 183 |
- } |
|
| 184 |
- }); |
|
| 185 |
- //초기화 |
|
| 186 |
- $('#selGroup').empty();
|
|
| 187 |
- $('#selGroup').append(html);
|
|
| 188 |
- |
|
| 189 |
- }else{
|
|
| 190 |
- alert("합치실 그룹을 두개 이상 선택하세요.");
|
|
| 191 |
- return false; |
|
| 192 |
- } |
|
| 193 |
- |
|
| 194 |
-} |
|
| 195 |
- |
|
| 196 |
- |
|
| 197 |
-//주소록 그룹 복사 레이어 열기 |
|
| 198 |
-function copyAddrGroupLayer(){
|
|
| 199 |
- var form = document.addrGrpListForm; |
|
| 200 |
- var html = ""; |
|
| 201 |
- var index = 0; |
|
| 202 |
- if($("input:checkbox[name='grpCheck']:checked").length > 0){
|
|
| 203 |
- |
|
| 204 |
- $('input:checkbox[name="grpCheck"]').each(function() {
|
|
| 205 |
- if(this.checked){
|
|
| 206 |
- var id = $(this).attr('id');
|
|
| 207 |
- var idNum = id.substr(5); |
|
| 208 |
- |
|
| 209 |
- html += '<li name="li4Index" class="'+$("#addrGrpId"+idNum).val()+'" id="li4Index'+index+'">'+$("#addrGrpNm"+idNum).val()+' [<span>'+$("#grpCount"+idNum).val()+'</span>명]<button type="button" onclick="removeLi4('+ index +');"><img src="/publish/images/content/close_btn.png" alt="선택 그룹 취소"></button></li>';
|
|
| 210 |
- index++; |
|
| 211 |
- } |
|
| 212 |
- }); |
|
| 213 |
- //초기화 |
|
| 214 |
- $('#selGroup3').empty();
|
|
| 215 |
- $('#selGroup3').append(html);
|
|
| 216 |
- |
|
| 217 |
- }else{
|
|
| 218 |
- alert("복사할 그룹을 한 개 이상 선택하세요.");
|
|
| 219 |
- return false; |
|
| 220 |
- } |
|
| 221 |
- |
|
| 222 |
-} |
|
| 223 |
- |
|
| 224 |
- |
|
| 225 |
-// 합치기 레이어 내 리스트 세팅 |
|
| 226 |
-function removeLi(idx) {
|
|
| 227 |
- var liCount = $("li[name=liIndex]").length;
|
|
| 228 |
- if(liCount > 2) {
|
|
| 229 |
- $("#liIndex"+idx).remove();
|
|
| 230 |
- } else {
|
|
| 231 |
- alert("합치실 그룹은 최소 두 개 이상이어야 합니다");
|
|
| 232 |
- } |
|
| 233 |
-} |
|
| 234 |
- |
|
| 235 |
-//내보내기 레이어 내 리스트 세팅 |
|
| 236 |
-function removeLi2(idx) {
|
|
| 237 |
- var liCount = $("li[name=li2Index]").length;
|
|
| 238 |
- if(liCount > 1) {
|
|
| 239 |
- $("#li2Index"+idx).remove();
|
|
| 240 |
- $(".checkGroupCount").text(liCount-1);
|
|
| 241 |
- } else {
|
|
| 242 |
- alert("내보낼 그룹은 최소 한 개 이상이어야 합니다");
|
|
| 243 |
- } |
|
| 244 |
- |
|
| 245 |
-} |
|
| 246 |
- |
|
| 247 |
-//합치기 레이어 내 리스트 세팅 |
|
| 248 |
-function removeLi4(idx) {
|
|
| 249 |
- var liCount = $("li[name=li4Index]").length;
|
|
| 250 |
- if(liCount > 1) {
|
|
| 251 |
- $("#li4Index"+idx).remove();
|
|
| 252 |
- } else {
|
|
| 253 |
- alert("복사할 그룹은 한 개 이상이어야 합니다");
|
|
| 254 |
- } |
|
| 255 |
-} |
|
| 256 |
- |
|
| 257 |
- |
|
| 258 |
-// 툴팁 삭제/삽입 |
|
| 259 |
-function tooltipCheck() {
|
|
| 260 |
- //그룹합치기 툴팁 |
|
| 261 |
- if($("input:checkbox[name='grpCheck']:checked").length < 2){
|
|
| 262 |
- $(".group_join").removeAttr("data-tooltip");
|
|
| 263 |
- } else {
|
|
| 264 |
- $(".group_join").attr("data-tooltip", "adr_popup02");
|
|
| 265 |
- } |
|
| 266 |
- |
|
| 267 |
- //그룹복사 툴팁 |
|
| 268 |
- if($("input:checkbox[name='grpCheck']:checked").length < 1){
|
|
| 269 |
- $(".group_copy").removeAttr("data-tooltip");
|
|
| 270 |
- } else {
|
|
| 271 |
- $(".group_copy").attr("data-tooltip", "adr_popup05");
|
|
| 272 |
- } |
|
| 273 |
-} |
|
| 274 |
- |
|
| 275 |
- |
|
| 276 |
-// 그룹 합치기 |
|
| 277 |
-function addrGroupMerge() {
|
|
| 278 |
- var form = document.addrGrpMergeForm; |
|
| 279 |
- var mergeGrpArray = new Array(); |
|
| 280 |
- |
|
| 281 |
- $('.selGroup li').each(function (idx, item) {
|
|
| 282 |
- mergeGrpArray.push($(item).attr('class'));
|
|
| 283 |
- }); |
|
| 284 |
- form.mergeGrps.value = mergeGrpArray; |
|
| 285 |
- |
|
| 286 |
- // 그룹을 합치겠습니까?\n기존의 그룹 및 중복연락처는 삭제됩니다. |
|
| 287 |
- if(confirm("그룹을 합치겠습니까?\n기존의 그룹은 삭제됩니다.")) {
|
|
| 288 |
- var data = new FormData(form); |
|
| 289 |
- $.ajax({
|
|
| 290 |
- cache : false, |
|
| 291 |
- url : "<c:url value='/web/addr/mergeAddrGroupAjax.do'/>", |
|
| 292 |
- type : 'POST', |
|
| 293 |
- data : data, |
|
| 294 |
- dataType:'json', |
|
| 295 |
- processData: false, |
|
| 296 |
- contentType: false, |
|
| 297 |
- success : function(returnData, status){
|
|
| 298 |
- if(status == "success") {
|
|
| 299 |
- if("fail"==returnData.result){
|
|
| 300 |
- alert(returnData.message); |
|
| 301 |
- return; |
|
| 302 |
- } else if("dupl" == returnData.result) {
|
|
| 303 |
- alert("이미 존재하는 그룹명입니다.");
|
|
| 304 |
- return; |
|
| 305 |
- } |
|
| 306 |
- alert("합치기가 완료되었습니다.");
|
|
| 307 |
- |
|
| 308 |
- location.reload(); |
|
| 309 |
- |
|
| 310 |
- }else{ alert("ERROR!");return;}
|
|
| 311 |
- }, |
|
| 312 |
- error: function (e) { alert("그룹 합치기가 실패하였습니다."); console.log("ERROR : ", e); }
|
|
| 313 |
- }); |
|
| 314 |
- } |
|
| 315 |
- |
|
| 316 |
-} |
|
| 317 |
- |
|
| 318 |
-//그룹 복사하기 |
|
| 319 |
-function addrGroupCopy() {
|
|
| 320 |
- var form = document.addrGrpCopyForm; |
|
| 321 |
- var copyAddrArray = new Array(); |
|
| 322 |
- |
|
| 323 |
- $('.selGroup3 li').each(function (idx, item) {
|
|
| 324 |
- copyAddrArray.push($(item).attr('class'));
|
|
| 325 |
- }); |
|
| 326 |
- form.copyAddrs.value = copyAddrArray; |
|
| 327 |
- |
|
| 328 |
- |
|
| 329 |
- if(confirm("그룹을 복사하시겠습니까?")) {
|
|
| 330 |
- var data = new FormData(form); |
|
| 331 |
- $.ajax({
|
|
| 332 |
- cache : false, |
|
| 333 |
- url : "<c:url value='/web/addr/copyAddrGroupAjax.do'/>", |
|
| 334 |
- type : 'POST', |
|
| 335 |
- data : data, |
|
| 336 |
- dataType:'json', |
|
| 337 |
- processData: false, |
|
| 338 |
- contentType: false, |
|
| 339 |
- success : function(returnData, status){
|
|
| 340 |
- if(status == "success") {
|
|
| 341 |
- if("fail"==returnData.result){
|
|
| 342 |
- alert(returnData.message); |
|
| 343 |
- return; |
|
| 344 |
- } else if("dupl" == returnData.result) {
|
|
| 345 |
- alert("이미 존재하는 그룹명입니다.");
|
|
| 346 |
- return; |
|
| 347 |
- } |
|
| 348 |
- alert("정상적으로 처리되었습니다.");
|
|
| 349 |
- |
|
| 350 |
- location.reload(); |
|
| 351 |
- |
|
| 352 |
- }else{ alert("ERROR!");return;}
|
|
| 353 |
- }, |
|
| 354 |
- error: function (e) { alert("그룹 복사 실패하였습니다."); console.log("ERROR : ", e); }
|
|
| 355 |
- }); |
|
| 356 |
- } |
|
| 357 |
- |
|
| 358 |
- |
|
| 359 |
-} |
|
| 360 |
- |
|
| 361 |
-//그룹 다중수정모드 및 수정 프로세스 |
|
| 362 |
-function editAddrGroups() {
|
|
| 363 |
- if($('.addrGrpNms').attr("type") == "hidden") {
|
|
| 364 |
- $('.groupsName').hide();
|
|
| 365 |
- $('.editAddrGrpBtn').html("저장");
|
|
| 366 |
- $('.cancelAddrGrpBtn').show();
|
|
| 367 |
- $('.addrGrpNms').attr("type","text");
|
|
| 368 |
- $('#orderBtn').show();
|
|
| 369 |
- } else {
|
|
| 370 |
- if(confirm("수정하시겠습니까?")) {
|
|
| 371 |
- var addrGrpNms = $("input[name=addrGrpNms]");
|
|
| 372 |
- for(var i = 0; i < addrGrpNms.length; i++){
|
|
| 373 |
- if(addrGrpNms[i].value == ''){
|
|
| 374 |
- alert("그룹명을 입력해주세요.")
|
|
| 375 |
- return false; |
|
| 376 |
- } |
|
| 377 |
- } |
|
| 378 |
- var form = document.addrGrpListForm; |
|
| 379 |
- var data = new FormData(form); |
|
| 380 |
- $.ajax({
|
|
| 381 |
- cache : false, |
|
| 382 |
- url : "<c:url value='/web/addr/updateAddrGroupAjax.do'/>", |
|
| 383 |
- type : 'POST', |
|
| 384 |
- data : data, |
|
| 385 |
- dataType:'json', |
|
| 386 |
- processData: false, |
|
| 387 |
- contentType: false, |
|
| 388 |
- success : function(returnData, status){
|
|
| 389 |
- if(status == "success") {
|
|
| 390 |
- if("fail"==returnData.result){
|
|
| 391 |
- alert(returnData.message); |
|
| 392 |
- return; |
|
| 393 |
- } else if("dupl"==returnData.result) {
|
|
| 394 |
- alert("중복된 주소록그룹명이 존재합니다");
|
|
| 395 |
- return; |
|
| 396 |
- } |
|
| 397 |
- alert("정상적으로 처리되었습니다.");
|
|
| 398 |
- location.reload(); |
|
| 399 |
- |
|
| 400 |
- }else{ alert("ERROR!");return;}
|
|
| 401 |
- }, |
|
| 402 |
- error: function (e) { alert("그룹 수정 실패하였습니다."); console.log("ERROR : ", e); }
|
|
| 403 |
- }); |
|
| 404 |
- } |
|
| 405 |
- } |
|
| 406 |
-} |
|
| 407 |
- |
|
| 408 |
-// 그룹 다중수정모드 취소 |
|
| 409 |
-function cancelAddrGroupEdit() {
|
|
| 410 |
- /* |
|
| 411 |
- $('.groupsName').show();
|
|
| 412 |
- $('.cancelAddrGrpBtn').hide();
|
|
| 413 |
- $('.editAddrGrpBtn').html("편집");
|
|
| 414 |
- $('.addrGrpNms').attr("type","hidden");
|
|
| 415 |
- $('#orderBtn').hide();
|
|
| 416 |
- */ |
|
| 417 |
- listAddrGrp(); |
|
| 418 |
-} |
|
| 419 |
- |
|
| 420 |
-// 그룹을 클릭해서 주소록 목록에 노출하기 |
|
| 421 |
-function openThisGroup(id) {
|
|
| 422 |
- var form = document.searchAddrOpenForm; |
|
| 423 |
- |
|
| 424 |
- if (id == 'bookmark') {
|
|
| 425 |
- //자주보내는번호 검색 |
|
| 426 |
- form.searchAddrGrpId.value="bookmark"; |
|
| 427 |
- } else if (id != '') {
|
|
| 428 |
- //id가 넘어오면 해당 그룹id만 검색 |
|
| 429 |
- form.searchAddrGrpId.value = id; |
|
| 430 |
- } else if (id == 'noGrp') {
|
|
| 431 |
- form.searchAddrGrpId.value = "noGrp"; |
|
| 432 |
- } else {
|
|
| 433 |
- form.searchAddrGrpId.value = ""; |
|
| 434 |
- } |
|
| 435 |
- |
|
| 436 |
- var sendData = $(document.searchAddrOpenForm).serializeArray() ; |
|
| 437 |
- $("#adr1_right").load("/web/mjon/addr/selectAddrAjax.do", sendData, function(response, status, xhr){});
|
|
| 438 |
-} |
|
| 439 |
- |
|
| 440 |
-// 주소록 전송할 아이디가 유효한지 체크 |
|
| 441 |
-function validateId() {
|
|
| 442 |
- var recvId = $("#recvId").val();
|
|
| 443 |
- var form = document.duplIdCheckForm; |
|
| 444 |
- |
|
| 445 |
- if($("input:checkbox[name='grpCheck']").is(":checked")==false){
|
|
| 446 |
- alert("선택된 그룹이 없습니다.");
|
|
| 447 |
- return false; |
|
| 448 |
- } |
|
| 449 |
- |
|
| 450 |
- if(recvId == "" || recvId == null) {
|
|
| 451 |
- alert("아이디를 입력해주세요.")
|
|
| 452 |
- return; |
|
| 453 |
- } |
|
| 454 |
- form.checkId.value = recvId; |
|
| 455 |
- |
|
| 456 |
- var data = new FormData(form); |
|
| 457 |
- $.ajax({
|
|
| 458 |
- cache : false, |
|
| 459 |
- url : "<c:url value='/uss/umt/user/EgovIdDplctCnfirmAjax.do'/>", |
|
| 460 |
- type : 'POST', |
|
| 461 |
- data : data, |
|
| 462 |
- dataType:'json', |
|
| 463 |
- processData: false, |
|
| 464 |
- contentType: false, |
|
| 465 |
- success : function(returnData, status){
|
|
| 466 |
- if(status == "success") {
|
|
| 467 |
- if(returnData.usedCnt < 1){
|
|
| 468 |
- alert("일치하는 아이디가 없습니다.");
|
|
| 469 |
- return; |
|
| 470 |
- }else if(returnData.usedCnt > 0){
|
|
| 471 |
- //체크한 그룹들을 html로 그리기 |
|
| 472 |
- sendAddrGroupLayer(); |
|
| 473 |
- |
|
| 474 |
- $(".groupSendLayer").attr("data-tooltip", "adr_popup03");
|
|
| 475 |
- $("#idCheckSuccess").trigger("click");
|
|
| 476 |
- } |
|
| 477 |
- }else{ alert("ERROR!");return;}
|
|
| 478 |
- }, |
|
| 479 |
- error: function (e) { alert("조회에 실패하였습니다."); console.log("ERROR : ", e); }
|
|
| 480 |
- }); |
|
| 481 |
- |
|
| 482 |
-} |
|
| 483 |
- |
|
| 484 |
-// 그룹 내보내기 레이어 띄우기 |
|
| 485 |
-function sendAddrGroupLayer() {
|
|
| 486 |
- var form = document.addrGrpListForm; |
|
| 487 |
- var html = ""; |
|
| 488 |
- var index = 0; |
|
| 489 |
- successHtml = ""; //내보내기 최종레이어의 초기화 |
|
| 490 |
- if($("input:checkbox[name='grpCheck']:checked").length > 0){
|
|
| 491 |
- |
|
| 492 |
- $('input:checkbox[name="grpCheck"]').each(function() {
|
|
| 493 |
- if(this.checked){
|
|
| 494 |
- var id = $(this).attr('id');
|
|
| 495 |
- var idNum = id.substr(5); |
|
| 496 |
- |
|
| 497 |
- html += '<li name="li2Index" class="'+$("#addrGrpId"+idNum).val()+'" id="li2Index'+index+'">'+$("#addrGrpNm"+idNum).val()+' [<span>'+$("#grpCount"+idNum).val()+'</span>명]<button type="button" onclick="removeLi2('+ index +');"><img src="/publish/images/content/close_btn.png" alt="선택 그룹 취소"></button></li>';
|
|
| 498 |
- successHtml += '<li name="li3Index" id="li3Index'+index+'">'+$("#addrGrpNm"+idNum).val()+' [<span>'+$("#grpCount"+idNum).val()+'</span>명]<p id=sendCondition'+index+'></p></li>';
|
|
| 499 |
- index++; |
|
| 500 |
- } |
|
| 501 |
- }); |
|
| 502 |
- //초기화 |
|
| 503 |
- $('#selGroup2').empty();
|
|
| 504 |
- $('#selGroup2').append(html);
|
|
| 505 |
- $(".recvId").text($("#recvId").val());
|
|
| 506 |
- $(".checkGroupCount").text($("input:checkbox[name='grpCheck']:checked").length);
|
|
| 507 |
- } |
|
| 508 |
-} |
|
| 509 |
- |
|
| 510 |
-//휴대폰 본인인증 팝업 |
|
| 511 |
-function kmcPopUp() {
|
|
| 512 |
- //KMC팝업에 정보 미리 삽입 |
|
| 513 |
- var kmcPopUpForm = $("form[name=reqKMCISForm]").serialize() ;
|
|
| 514 |
- |
|
| 515 |
- $.ajax({
|
|
| 516 |
- url : "<c:url value='/web/addr/kmcPopupAddrSubmitPramAjax.do' />", |
|
| 517 |
- type : 'POST', |
|
| 518 |
- data : kmcPopUpForm, |
|
| 519 |
- dataType:'json', |
|
| 520 |
- success : function(returnData, status){
|
|
| 521 |
- if(status == "success") {
|
|
| 522 |
- if (returnData.result=="success"){
|
|
| 523 |
- $("#tr_cert").val(returnData.tr_cert);
|
|
| 524 |
- $("#tr_url").val(returnData.tr_url);
|
|
| 525 |
- $("#tr_add").val(returnData.tr_add);
|
|
| 526 |
- |
|
| 527 |
- openKMCISWindow(); |
|
| 528 |
- }else{
|
|
| 529 |
- alert(returnData.message); |
|
| 530 |
- } |
|
| 531 |
- |
|
| 532 |
- }else{ alert("실패");return;}
|
|
| 533 |
- }, |
|
| 534 |
- |
|
| 535 |
- error : function(request , status, error){
|
|
| 536 |
- alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
|
|
| 537 |
- } |
|
| 538 |
- }); |
|
| 539 |
- |
|
| 540 |
-} |
|
| 541 |
- |
|
| 542 |
-// 주소록 내보내기 |
|
| 543 |
-function sendAddrGroup() {
|
|
| 544 |
- |
|
| 545 |
- var form = document.addrGrpSendForm; |
|
| 546 |
- var sendGrpArray = new Array(); |
|
| 547 |
- var resultStatus = new Array(); |
|
| 548 |
- var successSendGroup = 0; |
|
| 549 |
- var html = ""; |
|
| 550 |
- $('.selGroup2 li').each(function (idx, item) {
|
|
| 551 |
- sendGrpArray.push($(item).attr('class'));
|
|
| 552 |
- }); |
|
| 553 |
- form.sendGrps.value = sendGrpArray; |
|
| 554 |
- |
|
| 555 |
- form.recvMberId.value = $("#recvId").val();
|
|
| 556 |
- |
|
| 557 |
- /* if(confirm("그룹을 내보내겠습니까?")) { */
|
|
| 558 |
- var data = new FormData(form); |
|
| 559 |
- $.ajax({
|
|
| 560 |
- cache : false, |
|
| 561 |
- url : "<c:url value='/web/mjon/addr/transAddrGroupAjax.do'/>", |
|
| 562 |
- type : 'POST', |
|
| 563 |
- data : data, |
|
| 564 |
- dataType:'json', |
|
| 565 |
- processData: false, |
|
| 566 |
- contentType: false, |
|
| 567 |
- success : function(returnData, status){
|
|
| 568 |
- if(status == "success") {
|
|
| 569 |
- if("fail"==returnData.result){
|
|
| 570 |
- console.log(returnData.message); |
|
| 571 |
- return; |
|
| 572 |
- } |
|
| 573 |
- |
|
| 574 |
- resultStatus = returnData.result.split(',');
|
|
| 575 |
- |
|
| 576 |
- $("#resultSendList").html(successHtml);
|
|
| 577 |
- |
|
| 578 |
- |
|
| 579 |
- for(var i=0; i<resultStatus.length; i++) {
|
|
| 580 |
- if(resultStatus[i] == 'Y'){
|
|
| 581 |
- successSendGroup ++; |
|
| 582 |
- $("#sendCondition"+i).html("전송완료");
|
|
| 583 |
- } else {
|
|
| 584 |
- $("#sendCondition"+i).html("전송실패");
|
|
| 585 |
- } |
|
| 586 |
- } |
|
| 587 |
- |
|
| 588 |
- $(".successSendGroup").text(successSendGroup);
|
|
| 589 |
- |
|
| 590 |
- $("#sendCheckCloseBtn").trigger("click");
|
|
| 591 |
- $("#sendSuccessLayer").trigger("click");
|
|
| 592 |
- |
|
| 593 |
- }else{ alert("ERROR!");return;}
|
|
| 594 |
- }, |
|
| 595 |
- error: function (e) { alert("그룹 전송 실패하였습니다."); console.log("ERROR : ", e); }
|
|
| 596 |
- }); |
|
| 597 |
- /* } */ |
|
| 598 |
- |
|
| 599 |
-} |
|
| 600 |
- |
|
| 601 |
-//주소록 내보내기 히스토리 목록 |
|
| 602 |
-function listAddrTransHistAjax(pageNo) {
|
|
| 603 |
- var form = document.searchAddrTransHistForm; |
|
| 604 |
- form.pageIndex.value = pageNo; |
|
| 605 |
- |
|
| 606 |
- if($('#addrTransHistPageUnit').val() != undefined) {
|
|
| 607 |
- form.pageUnit.value = $('#addrTransHistPageUnit').val();
|
|
| 608 |
- } |
|
| 609 |
- |
|
| 610 |
- var sendData = $(document.searchAddrTransHistForm).serializeArray(); |
|
| 611 |
- $("#addrTransHistListDiv").load("/web/mjon/addr/selectAddrTransHistListAjax.do", sendData, function(response, status, xhr){
|
|
| 612 |
- //리스트 스크롤 처리해주기 |
|
| 613 |
- /* |
|
| 614 |
- $(".tb_wrap").mCustomScrollbar({
|
|
| 615 |
- axis: 'y', |
|
| 616 |
- scrollbarPosition: "outside", |
|
| 617 |
- theme: "dark", |
|
| 618 |
- autoHideScrollbar: false |
|
| 619 |
- }); |
|
| 620 |
- */ |
|
| 621 |
- }); |
|
| 622 |
- |
|
| 623 |
- $("#addrTransHistListLayer").trigger("click");
|
|
| 624 |
- |
|
| 625 |
- |
|
| 626 |
-} |
|
| 627 |
- |
|
| 628 |
-</script> |
|
| 629 |
- |
|
| 630 |
-<script language=javascript> |
|
| 631 |
- |
|
| 632 |
- window.name = "kmcis_web_sample"; |
|
| 633 |
- |
|
| 634 |
- var KMCIS_window; |
|
| 635 |
- |
|
| 636 |
- function openKMCISWindow(){
|
|
| 637 |
- |
|
| 638 |
- var UserAgent = navigator.userAgent; |
|
| 639 |
- /* 모바일 접근 체크*/ |
|
| 640 |
- // 모바일일 경우 (변동사항 있을경우 추가 필요) |
|
| 641 |
- if (UserAgent.match(/iPhone|iPod|Android|Windows CE|BlackBerry|Symbian|Windows Phone|webOS|Opera Mini|Opera Mobi|POLARIS|IEMobile|lgtelecom|nokia|SonyEricsson/i) != null || UserAgent.match(/LG|SAMSUNG|Samsung/) != null) {
|
|
| 642 |
- document.reqKMCISForm.target = 'KMCISWindow'; // 모바일 |
|
| 643 |
- } |
|
| 644 |
- |
|
| 645 |
- // 모바일이 아닐 경우 |
|
| 646 |
- else {
|
|
| 647 |
- KMCIS_window = window.open('', 'KMCISWindow', 'width=425, height=550, resizable=0, scrollbars=no, status=0, titlebar=0, toolbar=0, left=435, top=250' );
|
|
| 648 |
- |
|
| 649 |
- if(KMCIS_window == null){
|
|
| 650 |
- alert(" ※ 윈도우 XP SP2 또는 인터넷 익스플로러 7 사용자일 경우에는 \n 화면 상단에 있는 팝업 차단 알림줄을 클릭하여 팝업을 허용해 주시기 바랍니다. \n\n※ MSN,야후,구글 팝업 차단 툴바가 설치된 경우 팝업허용을 해주시기 바랍니다.");
|
|
| 651 |
- } |
|
| 652 |
- |
|
| 653 |
- document.reqKMCISForm.target = 'KMCISWindow'; |
|
| 654 |
- } |
|
| 655 |
- |
|
| 656 |
- document.reqKMCISForm.action = 'https://www.kmcert.com/kmcis/web/kmcisReq.jsp'; |
|
| 657 |
- document.reqKMCISForm.submit(); |
|
| 658 |
- |
|
| 659 |
- } |
|
| 660 |
- |
|
| 661 |
-</script> |
|
| 662 |
- |
|
| 663 |
-<form name="searchAddrGrpForm" id="searchAddrGrpForm" method="post" onsubmit="return false;"> |
|
| 664 |
- <div class="search_group_top"> |
|
| 665 |
- <label for="" class="label">그룹명 검색</label> |
|
| 666 |
- <input type="text" name="searchKeyword" id="searchKeyword" placeholder="그룹명을 입력하세요" onfocus="this.placeholder=''" onblur="this.placeholder='그룹명을 입력하세요'" class="inputLight"> |
|
| 667 |
- <input type="hidden" name="searchCondition" id="searchCondition" value="2" /> |
|
| 668 |
- <input type="hidden" name="searchAddrGrpId" id="searchAddrGrpId" /> |
|
| 669 |
- <button type="button" onclick="listAddrGroupAjax(); return false;"><img src="/publish/images/popup/search.png" alt="검색"></button> |
|
| 670 |
- </div> |
|
| 671 |
-</form> |
|
| 672 |
- |
|
| 673 |
-<div class="adrBox"> |
|
| 674 |
- <form name="addrGrpInsertForm" id="addrGrpInsertForm" method="post" onsubmit="return false;"> |
|
| 675 |
- <div class="search_group_middle"> |
|
| 676 |
- <label for="" class="label">새 그룹 추가</label> |
|
| 677 |
- <input type="text" name="addrGrpNm" id="addrGrpNm" placeholder="새 그룹명 입력(40Byte 이내)" onfocus="this.placeholder=''" onblur="this.placeholder='새 그룹명 입력(40Byte 이내)'" class="inputLight" maxlength="24"> |
|
| 678 |
- <button type="button" onclick="insertAddrGroupAjax(); return false;" class="btnType">추가</button> |
|
| 679 |
- </div> |
|
| 680 |
- </form> |
|
| 681 |
- <form name="addrGrpListForm" id="addrGrpListForm" method="post" onsubmit="return false;"> |
|
| 682 |
- <div class="adr_cb_wrap check_group_all"> |
|
| 683 |
- <div style="margin-right: 2px;"> |
|
| 684 |
- <label for="groupAll" class="label">전체 선택</label> |
|
| 685 |
- <input type="checkbox" name="groupAll" id="groupAll" value="1" onClick="fnCheckAll();"> |
|
| 686 |
- </div> |
|
| 687 |
- <p class="open" onclick="openThisGroup('');"><img src="/publish/images/content/open_folder.png" alt="폴더 열림">전체[<span class="c_002c9a fwMd" id="addrTotCnt"></span>/최대 500,000]</p>
|
|
| 688 |
- </div> |
|
| 689 |
- <div class="adr1_btnWrap"> |
|
| 690 |
- <div> |
|
| 691 |
- <button type="button" class="btnType btnType21 editAddrGrpBtn" onclick="editAddrGroups();">편집</button> |
|
| 692 |
- <button type="button" class="btnType btnType7 cancelAddrGrpBtn" onclick="cancelAddrGroupEdit();" style="display:none;">취소</button> |
|
| 693 |
- </div> |
|
| 694 |
- <div id="orderBtn" style="display:none;"> |
|
| 695 |
- <button type="button" class="btn_top"><img src="/publish/images/content/adress_up2.png"></button> |
|
| 696 |
- <button type="button" class="btn_up"><img src="/publish/images/content/adress_up1.png"></button> |
|
| 697 |
- <button type="button" class="btn_down"><img src="/publish/images/content/adress_down1.png"></button> |
|
| 698 |
- <button type="button" class="btn_botom"><img src="/publish/images/content/adress_down2.png"></button> |
|
| 699 |
- </div> |
|
| 700 |
- </div> |
|
| 701 |
- <div class="adr1_list"> |
|
| 702 |
- <!-- 고정그룹 : 그룹미지정 --> |
|
| 703 |
- <div class="adr_cb_wrap list_fixed"> |
|
| 704 |
- <label for="group1" class="label"></label> |
|
| 705 |
- <input type="checkbox" id="group1" disabled="disabled"> |
|
| 706 |
- <p onclick="openThisGroup('noGrp');"><img src="/publish/images/content/close_folder2.png" alt="폴더 닫힘">그룹미지정[<span id="nogrpCnt"></span>명]</p>
|
|
| 707 |
- </div> |
|
| 708 |
- <!-- 고정그룹 : 자주보내는번호 --> |
|
| 709 |
- <div class="adr_cb_wrap list_fixed"> |
|
| 710 |
- <label for="group2" class="label"></label> |
|
| 711 |
- <input type="checkbox" id="group2" disabled="disabled"> |
|
| 712 |
- <p onclick="openThisGroup('bookmark');"><img src="/publish/images/content/close_folder2.png" alt="폴더 닫힘">자주보내는 번호[<span id="bookmarkCnt"></span>명]
|
|
| 713 |
- </div> |
|
| 714 |
- <c:forEach var="addrGroupList" items="${addrGroupList}" varStatus="status">
|
|
| 715 |
- <div class="adr_cb_wrap list_switch"> |
|
| 716 |
- <div> |
|
| 717 |
- <label for="group${status.index+3}" class="label"><c:out value="${addrGroupList.addrGrpNm}" /></label>
|
|
| 718 |
- <input type="checkbox" name="grpCheck" id="group${status.index+3}" onclick="tooltipCheck();" value="${addrGroupList.addrGrpId}">
|
|
| 719 |
- </div> |
|
| 720 |
- <p onclick="openThisGroup('<c:out value="${addrGroupList.addrGrpId}" />');">
|
|
| 721 |
- <img src="/publish/images/content/close_folder2.png" alt="폴더 닫힘"> |
|
| 722 |
- <input type="hidden" name="addrGrpNms" class="addrGrpNms" id="addrGrpNm${status.index+3}" value="${addrGroupList.addrGrpNm}" maxlength="20"/>
|
|
| 723 |
- <span class="groupsName"><c:out value="${addrGroupList.addrGrpNm}" />[<span><c:out value="${addrGroupList.grpCount}" /></span>명]
|
|
| 724 |
- </p> |
|
| 725 |
- <input type="hidden" name="addrGrpIds" id="addrGrpId${status.index+3}" value="${addrGroupList.addrGrpId}" />
|
|
| 726 |
- <input type="hidden" id="grpCount${status.index+3}" value="${addrGroupList.grpCount}" />
|
|
| 727 |
- </div> |
|
| 728 |
- </c:forEach> |
|
| 729 |
- </div> |
|
| 730 |
- <div class="adr1_btnWrap_bottom"> |
|
| 731 |
- <button type="button" onclick="deleteAddrGroup(); return false;" class="btnType group_remove"><i class="remove_img"></i>그룹삭제</button> |
|
| 732 |
- <button type="button" onclick="javascript:mergeAddrGroupLayer(); return false;" class="btnType group_join">그룹 합치기</button> |
|
| 733 |
- <button type="button" onclick="copyAddrGroupLayer(); return false;" class="btnType group_copy">그룹복사</button> |
|
| 734 |
- </div> |
|
| 735 |
- |
|
| 736 |
- <!-- Workaround to avoid corrupted XHR2 request body in IE10 / IE11 --> |
|
| 737 |
- <input type="hidden" name="_dontcare"> |
|
| 738 |
- </form> |
|
| 739 |
- <%----%> |
|
| 740 |
- <div class="adr1_exprot clearfix"> |
|
| 741 |
- <p>주소록 내보내기</p> |
|
| 742 |
- <button type="button" onclick="listAddrTransHistAjax(1); return false;" class="send_address"><i></i>보낸 주소록</button> |
|
| 743 |
- <input type="hidden" id="addrTransHistListLayer" data-tooltip="adr_popup08" /> |
|
| 744 |
- </div> |
|
| 745 |
- <div class="search_group_bottom"> |
|
| 746 |
- <label for="" class="label">받는사람 아이디 입력</label> |
|
| 747 |
- <input type="text" id="recvId" placeholder="보낼 아이디 입력" onfocus="this.placeholder=''" onblur="this.placeholder='보낼 아이디 입력'" class="inputLight"> |
|
| 748 |
- <button type="button" onclick="validateId();" class="btnType">내보내기</button> |
|
| 749 |
- <input type="hidden" class="groupSendLayer" id="idCheckSuccess" data-tooltip="adr_popup03" /> |
|
| 750 |
- </div> |
|
| 751 |
- <%----%> |
|
| 752 |
-</div> |
|
| 753 |
- |
|
| 754 |
-<!-- 그룹 합치기 팝업 data-tooltip:adr_popup02 --> |
|
| 755 |
-<form name="addrGrpMergeForm" id="addrGrpMergeForm" method="post" onsubmit="return false;"> |
|
| 756 |
- <input type="hidden" name="mergeGrps" id="mergeGrps" /> |
|
| 757 |
- <div class="tooltip-wrap"> |
|
| 758 |
- <div class="popup-com adr_layer adr_popup02" tabindex="0" data-tooltip-con="adr_popup02" data-focus="adr_popup02" data-focus-prev="adr_popup02-close" style="width: 510px;"> |
|
| 759 |
- <div class="popup_heading"> |
|
| 760 |
- <p>그룹 합치기</p> |
|
| 761 |
- <button type="button" class="tooltip-close" data-focus="adr_popup02-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> |
|
| 762 |
- </div> |
|
| 763 |
- <div class="layer_in"> |
|
| 764 |
- <div class="gorup_join_cont"> |
|
| 765 |
- <div class="select_group"> |
|
| 766 |
- <p>선택그룹</p> |
|
| 767 |
- <ul id="selGroup" class="selGroup"></ul> |
|
| 768 |
- </div> |
|
| 769 |
- <div class="group_input"> |
|
| 770 |
- <div class="input_left">그룹이름</div> |
|
| 771 |
- <div class="input_right"> |
|
| 772 |
- <label for="" class="label">새 그룹명 입력</label> |
|
| 773 |
- <input type="text" name="addrGrpNewNm" placeholder="새 그룹명 입력" onfocus="this.placeholder=''" onblur="this.placeholder='새 그룹명 입력'" class="inputLight"> |
|
| 774 |
- </div> |
|
| 775 |
- </div> |
|
| 776 |
- </div> |
|
| 777 |
- <div class="popup_btn_wrap2"> |
|
| 778 |
- <button type="button" onclick="addrGroupMerge();">저장</button> |
|
| 779 |
- <button type="button" class="tooltip-close" data-focus="adr_popup02-close" data-focus-next="adr_popup02">취소</button> |
|
| 780 |
- </div> |
|
| 781 |
- </div> |
|
| 782 |
- </div> |
|
| 783 |
- </div><!--// 그룹 합치기 팝업 --> |
|
| 784 |
-</form> |
|
| 785 |
- |
|
| 786 |
-<!-- 그룹 내보내기 팝업 data-tooltip:adr_popup03 --> |
|
| 787 |
-<form name="addrGrpSendForm" id="addrGrpSendForm" method="post" onsubmit="return false;"> |
|
| 788 |
- <input type="hidden" name="sendGrps" id="sendGrps" /> |
|
| 789 |
- <input type="hidden" name="recvMberId" id="recvMberId" /> |
|
| 790 |
- <div class="tooltip-wrap"> |
|
| 791 |
- <div class="popup-com adr_layer adr_popup03" tabindex="0" data-tooltip-con="adr_popup03" data-focus="adr_popup03" data-focus-prev="adr_popup03-close" style="width: 510px;"> |
|
| 792 |
- <div class="popup_heading"> |
|
| 793 |
- <p>그룹 내보내기</p> |
|
| 794 |
- <button type="button" id="sendCheckCloseBtn" class="tooltip-close" data-focus="adr_popup03-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> |
|
| 795 |
- </div> |
|
| 796 |
- <div class="layer_in"> |
|
| 797 |
- <p class="adr_pop_title"><span class="c_222 recvId"></span>님께 <span class="c_e40000">총 <span class="checkGroupCount"></span>개의 주소록</span>을 전송하겠습니까?</p> |
|
| 798 |
- <div class="gorup_join_cont"> |
|
| 799 |
- <div class="select_group"> |
|
| 800 |
- <p>선택그룹</p> |
|
| 801 |
- <ul id="selGroup2" class="selGroup2"></ul> |
|
| 802 |
- </div> |
|
| 803 |
- </div> |
|
| 804 |
- <div class="popup_btn_wrap2"> |
|
| 805 |
- <button type="button" onclick="kmcPopUp();">확인</button> |
|
| 806 |
- <button type="button" class="tooltip-close" data-focus="adr_popup03-close" data-focus-next="adr_popup03">취소</button> |
|
| 807 |
- </div> |
|
| 808 |
- </div> |
|
| 809 |
- </div> |
|
| 810 |
- </div> |
|
| 811 |
-</form> |
|
| 812 |
-<!--// 그룹 내보내기 팝업 --> |
|
| 813 |
- |
|
| 814 |
-<!-- 그룹 내보내기(결과) 팝업 data-tooltip:adr_popup04 --> |
|
| 815 |
-<div class="tooltip-wrap"> |
|
| 816 |
- <input type="hidden" class="sendSuccessLayer" id="sendSuccessLayer" data-tooltip="adr_popup04" /> |
|
| 817 |
- <div class="popup-com adr_layer adr_popup04" tabindex="0" data-tooltip-con="adr_popup04" data-focus="adr_popup04" data-focus-prev="adr_popup04-close" style="width: 510px;"> |
|
| 818 |
- <div class="popup_heading"> |
|
| 819 |
- <p>그룹 내보내기</p> |
|
| 820 |
- <button type="button" class="tooltip-close" data-focus="adr_popup04-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> |
|
| 821 |
- </div> |
|
| 822 |
- <div class="layer_in"> |
|
| 823 |
- <p class="adr_pop_title"><span class="c_222 recvId"></span>님께 <span class="c_e40000">총 <span class="successSendGroup"></span>개의 주소록</span>을 전송하였습니다</p> |
|
| 824 |
- <div class="gorup_join_cont"> |
|
| 825 |
- <div class="select_group2"> |
|
| 826 |
- <ul id="resultSendList"> |
|
| 827 |
- </ul> |
|
| 828 |
- </div> |
|
| 829 |
- <p class="select_group_info">※ 발신된 주소록은 10일 이내 수신해야 합니다.</p> |
|
| 830 |
- </div> |
|
| 831 |
- <div class="popup_btn_wrap2"> |
|
| 832 |
- <button type="button" class="tooltip-close check_btn_pop" data-focus="adr_popup04-close" data-focus-next="adr_popup04">확인</button> |
|
| 833 |
- </div> |
|
| 834 |
- </div> |
|
| 835 |
- </div> |
|
| 836 |
-</div><!--// 그룹 내보내기(결과) 팝업 --> |
|
| 837 |
- |
|
| 838 |
- |
|
| 839 |
- |
|
| 840 |
-<!-- 그룹 복사 팝업 data-tooltip:adr_popup05 --> |
|
| 841 |
-<form name="addrGrpCopyForm" id="addrGrpCopyForm" method="post" onsubmit="return false;"> |
|
| 842 |
- <input type="hidden" name="copyAddrs" id="copyAddrs" /> |
|
| 843 |
- <div class="tooltip-wrap"> |
|
| 844 |
- <div class="popup-com adr_layer adr_popup05" tabindex="0" data-tooltip-con="adr_popup05" data-focus="adr_popup05" data-focus-prev="adr_popup05-close" style="width: 510px;"> |
|
| 845 |
- <div class="popup_heading"> |
|
| 846 |
- <p>그룹 복사</p> |
|
| 847 |
- <button type="button" class="tooltip-close" data-focus="adr_popup05-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> |
|
| 848 |
- </div> |
|
| 849 |
- <div class="layer_in"> |
|
| 850 |
- <div class="gorup_join_cont"> |
|
| 851 |
- <div class="select_group"> |
|
| 852 |
- <p>선택그룹</p> |
|
| 853 |
- <ul id="selGroup3" class="selGroup3"></ul> |
|
| 854 |
- </div> |
|
| 855 |
- <div class="group_input"> |
|
| 856 |
- <div class="input_left">그룹이름</div> |
|
| 857 |
- <div class="input_right"> |
|
| 858 |
- <label for="" class="label">새 그룹명 입력</label> |
|
| 859 |
- <input type="text" id="addrGrpNewNm" name="addrGrpNewNm" placeholder="새 그룹명 입력" onfocus="this.placeholder=''" onblur="this.placeholder='새 그룹명 입력'" class="inputLight"> |
|
| 860 |
- </div> |
|
| 861 |
- </div> |
|
| 862 |
- </div> |
|
| 863 |
- <div class="popup_btn_wrap2"> |
|
| 864 |
- <button type="button" onclick="addrGroupCopy();">저장</button> |
|
| 865 |
- <button type="button" class="tooltip-close" data-focus="adr_popup05-close" data-focus-next="adr_popup05">취소</button> |
|
| 866 |
- </div> |
|
| 867 |
- </div> |
|
| 868 |
- </div> |
|
| 869 |
- </div><!--// 그룹 합치기 팝업 --> |
|
| 870 |
-</form> |
|
| 871 |
- |
|
| 872 |
- |
|
| 873 |
- |
|
| 874 |
-<!-- 주소록 내보내기 관리 data-tooltip:adr_popup08 --> |
|
| 875 |
-<div class="tooltip-wrap"> |
|
| 876 |
- <div class="popup-com adr_layer adr_popup08" tabindex="0" data-tooltip-con="adr_popup08" data-focus="adr_popup08" data-focus-prev="adr_popup08-close" style="width: 920px;height:456px;"> |
|
| 877 |
- <div class="popup_heading"> |
|
| 878 |
- <p>주소록 내보내기 관리</p> |
|
| 879 |
- <button type="button" class="tooltip-close" data-focus="adr_popup08-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> |
|
| 880 |
- </div> |
|
| 881 |
- <div class="layer_in" style="padding: 30px 30px 40px 30px;"> |
|
| 882 |
- <div id="addrTransHistListDiv"></div> |
|
| 883 |
- </div> |
|
| 884 |
- </div> |
|
| 885 |
-</div><!--// 주소록 내보내기 관리 팝업 --> |
|
| 886 |
- |
|
| 887 |
-<form name="searchAddrOpenForm" id="searchAddrOpenForm" method="post" onsubmit="return false;"> |
|
| 888 |
- <input type="hidden" name="searchAddrGrpId" id="searchAddrGrpId" /> |
|
| 889 |
-</form> |
|
| 890 |
-<form name="duplIdCheckForm" id="duplIdCheckForm" method="post" onsubmit="return false;"> |
|
| 891 |
- <input type="hidden" name="checkId" id="checkId" /> |
|
| 892 |
-</form> |
|
| 893 |
- |
|
| 894 |
-<form name="searchAddrTransHistForm" id="searchAddrTransHistForm" method="post" onsubmit="return false;"> |
|
| 895 |
- <input name="pageIndex" type="hidden" /> |
|
| 896 |
- <input name="pageUnit" type="hidden" value="10"/> |
|
| 897 |
-</form> |
|
| 898 |
- |
|
| 899 |
-<form name="reqKMCISForm" id="reqKMCISForm" mehtod="post"> |
|
| 900 |
- <input type="hidden" name="tr_cert" id="tr_cert" value = "${tr_cert}">
|
|
| 901 |
- <input type="hidden" name="tr_url" id="tr_url" value = "${tr_url}">
|
|
| 902 |
- <input type="hidden" name="tr_add" id="tr_add" value = "${tr_add}">
|
|
| 903 |
- <input type="hidden" name="mberId" id="mberId" value= "${userId}">
|
|
| 904 |
-</form> |
|
| 905 |
- |
|
| 1 |
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> |
|
| 2 |
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> |
|
| 3 |
+<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> |
|
| 4 |
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> |
|
| 5 |
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> |
|
| 6 |
+ |
|
| 7 |
+<script src="/publish/js/content.js"></script> |
|
| 8 |
+<script type="text/javascript"> |
|
| 9 |
+var successHtml=""; |
|
| 10 |
+ |
|
| 11 |
+$(document).ready(function(){
|
|
| 12 |
+ |
|
| 13 |
+ // 주소록 그룹 카운트(전체) |
|
| 14 |
+// getAddrGroupTotCnt(); |
|
| 15 |
+ |
|
| 16 |
+ //주소록 그룹 카운트(그룹미지정) |
|
| 17 |
+// getAddrGroupNogrpCnt(); |
|
| 18 |
+ |
|
| 19 |
+ //주소록 그룹 카운트(자주보내는 번호) |
|
| 20 |
+// getAddrGroupBookmarkCnt(); |
|
| 21 |
+ |
|
| 22 |
+}); |
|
| 23 |
+ |
|
| 24 |
+// 주소록 그룹 카운트(전체) |
|
| 25 |
+function getAddrGroupTotCnt() {
|
|
| 26 |
+ $.ajax({
|
|
| 27 |
+ type: "POST", |
|
| 28 |
+ url: "/web/addr/selectAddrGroupTotCntAjax.do", |
|
| 29 |
+ data: {},
|
|
| 30 |
+ dataType:'json', |
|
| 31 |
+ async: true, |
|
| 32 |
+ success: function (data) {
|
|
| 33 |
+ console.log('data : ', data);
|
|
| 34 |
+ if (data.isSuccess) {
|
|
| 35 |
+ $("#addrTotCnt").html(numberWithCommas(data.addrTotCnt));
|
|
| 36 |
+ } |
|
| 37 |
+ else {
|
|
| 38 |
+ //alert("Msg : " + data.msg);
|
|
| 39 |
+ } |
|
| 40 |
+ }, |
|
| 41 |
+ error: function (e) {
|
|
| 42 |
+ //alert("ERROR : " + JSON.stringify(e));
|
|
| 43 |
+ } |
|
| 44 |
+ }); |
|
| 45 |
+} |
|
| 46 |
+ |
|
| 47 |
+//주소록 그룹 카운트(그룹미지정) |
|
| 48 |
+function getAddrGroupNogrpCnt() {
|
|
| 49 |
+ $.ajax({
|
|
| 50 |
+ type: "POST", |
|
| 51 |
+ url: "/web/addr/selectAddrGroupNogrpCntAjax.do", |
|
| 52 |
+ data: {},
|
|
| 53 |
+ dataType:'json', |
|
| 54 |
+ async: true, |
|
| 55 |
+ success: function (data) {
|
|
| 56 |
+ if (data.isSuccess) {
|
|
| 57 |
+ $("#nogrpCnt").html(data.nogrpCnt);
|
|
| 58 |
+ } |
|
| 59 |
+ else {
|
|
| 60 |
+ //alert("Msg : " + data.msg);
|
|
| 61 |
+ } |
|
| 62 |
+ }, |
|
| 63 |
+ error: function (e) {
|
|
| 64 |
+ //alert("ERROR : " + JSON.stringify(e));
|
|
| 65 |
+ } |
|
| 66 |
+ }); |
|
| 67 |
+} |
|
| 68 |
+ |
|
| 69 |
+//주소록 그룹 카운트(자주보내는 번호) |
|
| 70 |
+function getAddrGroupBookmarkCnt() {
|
|
| 71 |
+ $.ajax({
|
|
| 72 |
+ type: "POST", |
|
| 73 |
+ url: "/web/addr/selectAddrGroupBookmarkCntAjax.do", |
|
| 74 |
+ data: {},
|
|
| 75 |
+ dataType:'json', |
|
| 76 |
+ async: true, |
|
| 77 |
+ success: function (data) {
|
|
| 78 |
+ if (data.isSuccess) {
|
|
| 79 |
+ $("#bookmarkCnt").html(data.bookmarkCnt);
|
|
| 80 |
+ } |
|
| 81 |
+ else {
|
|
| 82 |
+ //alert("Msg : " + data.msg);
|
|
| 83 |
+ } |
|
| 84 |
+ }, |
|
| 85 |
+ error: function (e) {
|
|
| 86 |
+ //alert("ERROR : " + JSON.stringify(e));
|
|
| 87 |
+ } |
|
| 88 |
+ }); |
|
| 89 |
+} |
|
| 90 |
+ |
|
| 91 |
+// 주소록 그룹 리스트 띄우기 |
|
| 92 |
+function listAddrGroupAjax() {
|
|
| 93 |
+ var form = document.searchAddrGrpForm; |
|
| 94 |
+ |
|
| 95 |
+ var sendData = $(document.searchAddrGrpForm).serializeArray() ; |
|
| 96 |
+ $("#adr1_left").load("/web/addr/selectAddrGroupListAjax.do", sendData ,function(response, status, xhr){});
|
|
| 97 |
+} |
|
| 98 |
+ |
|
| 99 |
+// 주소록 그룹 지우기(선택삭제) |
|
| 100 |
+function deleteAddrGroup() {
|
|
| 101 |
+ var form = document.addrGrpListForm; |
|
| 102 |
+ if($("input:checkbox[name='grpCheck']").is(":checked")==true){
|
|
| 103 |
+ if(confirm("그룹을 삭제하시겠습니까?\n그룹 내 전체 주소가 삭제되며 복구할 수 없습니다.")) {
|
|
| 104 |
+ fn_loadAddActive(); |
|
| 105 |
+ var data = new FormData(form); |
|
| 106 |
+ $.ajax({
|
|
| 107 |
+ cache : false, |
|
| 108 |
+ url : "<c:url value='/web/addr/deleteAddrGroupAjax.do'/>", |
|
| 109 |
+ type : 'POST', |
|
| 110 |
+ data : data, |
|
| 111 |
+ dataType:'json', |
|
| 112 |
+ processData: false, |
|
| 113 |
+ contentType: false, |
|
| 114 |
+ success : function(returnData, status){
|
|
| 115 |
+ if(status == "success") {
|
|
| 116 |
+ if("fail"==returnData.result){
|
|
| 117 |
+ alert(returnData.message); |
|
| 118 |
+ return; |
|
| 119 |
+ } |
|
| 120 |
+ alert("삭제되었습니다.");
|
|
| 121 |
+ listAddrGrp(); |
|
| 122 |
+ addrGroupLoadAjax(); |
|
| 123 |
+ addrLoadAjax(); |
|
| 124 |
+ |
|
| 125 |
+ }else{ alert("ERROR!");return;}
|
|
| 126 |
+ }, |
|
| 127 |
+ error: function (e) { alert("삭제 실패하였습니다."); console.log("ERROR : ", e); },
|
|
| 128 |
+ beforeSend: function(xmlHttpRequest) {
|
|
| 129 |
+ }, |
|
| 130 |
+ complete: function(xhr, textStatus) {
|
|
| 131 |
+ fn_loadRemoveActive(); |
|
| 132 |
+ } |
|
| 133 |
+ }); |
|
| 134 |
+ } |
|
| 135 |
+ }else{
|
|
| 136 |
+ alert("선택된 그룹이 없습니다.");
|
|
| 137 |
+ return false; |
|
| 138 |
+ } |
|
| 139 |
+ |
|
| 140 |
+} |
|
| 141 |
+ |
|
| 142 |
+// 체크박스 전체선택 |
|
| 143 |
+function fnCheckAll() {
|
|
| 144 |
+ var checkField = document.addrGrpListForm.grpCheck; |
|
| 145 |
+ if(document.addrGrpListForm.groupAll.checked) {
|
|
| 146 |
+ if(checkField) {
|
|
| 147 |
+ if(checkField.length > 1) {
|
|
| 148 |
+ for(var i=0; i < checkField.length; i++) {
|
|
| 149 |
+ checkField[i].checked = true; |
|
| 150 |
+ } |
|
| 151 |
+ } else {
|
|
| 152 |
+ checkField.checked = true; |
|
| 153 |
+ } |
|
| 154 |
+ } |
|
| 155 |
+ } else {
|
|
| 156 |
+ if(checkField) {
|
|
| 157 |
+ if(checkField.length > 1) {
|
|
| 158 |
+ for(var j=0; j < checkField.length; j++) {
|
|
| 159 |
+ checkField[j].checked = false; |
|
| 160 |
+ } |
|
| 161 |
+ } else {
|
|
| 162 |
+ checkField.checked = false; |
|
| 163 |
+ } |
|
| 164 |
+ } |
|
| 165 |
+ } |
|
| 166 |
+ tooltipCheck(); |
|
| 167 |
+} |
|
| 168 |
+ |
|
| 169 |
+// 주소록 그룹 합치기 레이어 열기 |
|
| 170 |
+function mergeAddrGroupLayer(){
|
|
| 171 |
+ var form = document.addrGrpListForm; |
|
| 172 |
+ var html = ""; |
|
| 173 |
+ var index = 0; |
|
| 174 |
+ if($("input:checkbox[name='grpCheck']:checked").length > 1){
|
|
| 175 |
+ |
|
| 176 |
+ $('input:checkbox[name="grpCheck"]').each(function() {
|
|
| 177 |
+ if(this.checked){
|
|
| 178 |
+ var id = $(this).attr('id');
|
|
| 179 |
+ var idNum = id.substr(5); |
|
| 180 |
+ |
|
| 181 |
+ html += '<li name="liIndex" class="'+$("#addrGrpId"+idNum).val()+'" id="liIndex'+index+'">'+$("#addrGrpNm"+idNum).val()+' [<span>'+$("#grpCount"+idNum).val()+'</span>명]<button type="button" onclick="removeLi('+ index +');"><img src="/publish/images/content/close_btn.png" alt="선택 그룹 취소"></button></li>';
|
|
| 182 |
+ index++; |
|
| 183 |
+ } |
|
| 184 |
+ }); |
|
| 185 |
+ //초기화 |
|
| 186 |
+ $('#selGroup').empty();
|
|
| 187 |
+ $('#selGroup').append(html);
|
|
| 188 |
+ |
|
| 189 |
+ }else{
|
|
| 190 |
+ alert("합치실 그룹을 두개 이상 선택하세요.");
|
|
| 191 |
+ return false; |
|
| 192 |
+ } |
|
| 193 |
+ |
|
| 194 |
+} |
|
| 195 |
+ |
|
| 196 |
+ |
|
| 197 |
+//주소록 그룹 복사 레이어 열기 |
|
| 198 |
+function copyAddrGroupLayer(){
|
|
| 199 |
+ var form = document.addrGrpListForm; |
|
| 200 |
+ var html = ""; |
|
| 201 |
+ var index = 0; |
|
| 202 |
+ if($("input:checkbox[name='grpCheck']:checked").length > 0){
|
|
| 203 |
+ |
|
| 204 |
+ $('input:checkbox[name="grpCheck"]').each(function() {
|
|
| 205 |
+ if(this.checked){
|
|
| 206 |
+ var id = $(this).attr('id');
|
|
| 207 |
+ var idNum = id.substr(5); |
|
| 208 |
+ |
|
| 209 |
+ html += '<li name="li4Index" class="'+$("#addrGrpId"+idNum).val()+'" id="li4Index'+index+'">'+$("#addrGrpNm"+idNum).val()+' [<span>'+$("#grpCount"+idNum).val()+'</span>명]<button type="button" onclick="removeLi4('+ index +');"><img src="/publish/images/content/close_btn.png" alt="선택 그룹 취소"></button></li>';
|
|
| 210 |
+ index++; |
|
| 211 |
+ } |
|
| 212 |
+ }); |
|
| 213 |
+ //초기화 |
|
| 214 |
+ $('#selGroup3').empty();
|
|
| 215 |
+ $('#selGroup3').append(html);
|
|
| 216 |
+ |
|
| 217 |
+ }else{
|
|
| 218 |
+ alert("복사할 그룹을 한 개 이상 선택하세요.");
|
|
| 219 |
+ return false; |
|
| 220 |
+ } |
|
| 221 |
+ |
|
| 222 |
+} |
|
| 223 |
+ |
|
| 224 |
+ |
|
| 225 |
+// 합치기 레이어 내 리스트 세팅 |
|
| 226 |
+function removeLi(idx) {
|
|
| 227 |
+ var liCount = $("li[name=liIndex]").length;
|
|
| 228 |
+ if(liCount > 2) {
|
|
| 229 |
+ $("#liIndex"+idx).remove();
|
|
| 230 |
+ } else {
|
|
| 231 |
+ alert("합치실 그룹은 최소 두 개 이상이어야 합니다");
|
|
| 232 |
+ } |
|
| 233 |
+} |
|
| 234 |
+ |
|
| 235 |
+//내보내기 레이어 내 리스트 세팅 |
|
| 236 |
+function removeLi2(idx) {
|
|
| 237 |
+ var liCount = $("li[name=li2Index]").length;
|
|
| 238 |
+ if(liCount > 1) {
|
|
| 239 |
+ $("#li2Index"+idx).remove();
|
|
| 240 |
+ $(".checkGroupCount").text(liCount-1);
|
|
| 241 |
+ } else {
|
|
| 242 |
+ alert("내보낼 그룹은 최소 한 개 이상이어야 합니다");
|
|
| 243 |
+ } |
|
| 244 |
+ |
|
| 245 |
+} |
|
| 246 |
+ |
|
| 247 |
+//합치기 레이어 내 리스트 세팅 |
|
| 248 |
+function removeLi4(idx) {
|
|
| 249 |
+ var liCount = $("li[name=li4Index]").length;
|
|
| 250 |
+ if(liCount > 1) {
|
|
| 251 |
+ $("#li4Index"+idx).remove();
|
|
| 252 |
+ } else {
|
|
| 253 |
+ alert("복사할 그룹은 한 개 이상이어야 합니다");
|
|
| 254 |
+ } |
|
| 255 |
+} |
|
| 256 |
+ |
|
| 257 |
+ |
|
| 258 |
+// 툴팁 삭제/삽입 |
|
| 259 |
+function tooltipCheck() {
|
|
| 260 |
+ //그룹합치기 툴팁 |
|
| 261 |
+ if($("input:checkbox[name='grpCheck']:checked").length < 2){
|
|
| 262 |
+ $(".group_join").removeAttr("data-tooltip");
|
|
| 263 |
+ } else {
|
|
| 264 |
+ $(".group_join").attr("data-tooltip", "adr_popup02");
|
|
| 265 |
+ } |
|
| 266 |
+ |
|
| 267 |
+ //그룹복사 툴팁 |
|
| 268 |
+ if($("input:checkbox[name='grpCheck']:checked").length < 1){
|
|
| 269 |
+ $(".group_copy").removeAttr("data-tooltip");
|
|
| 270 |
+ } else {
|
|
| 271 |
+ $(".group_copy").attr("data-tooltip", "adr_popup05");
|
|
| 272 |
+ } |
|
| 273 |
+} |
|
| 274 |
+ |
|
| 275 |
+ |
|
| 276 |
+// 그룹 합치기 |
|
| 277 |
+function addrGroupMerge() {
|
|
| 278 |
+ var form = document.addrGrpMergeForm; |
|
| 279 |
+ var mergeGrpArray = new Array(); |
|
| 280 |
+ |
|
| 281 |
+ $('.selGroup li').each(function (idx, item) {
|
|
| 282 |
+ mergeGrpArray.push($(item).attr('class'));
|
|
| 283 |
+ }); |
|
| 284 |
+ form.mergeGrps.value = mergeGrpArray; |
|
| 285 |
+ |
|
| 286 |
+ // 그룹을 합치겠습니까?\n기존의 그룹 및 중복연락처는 삭제됩니다. |
|
| 287 |
+ if(confirm("그룹을 합치겠습니까?\n기존의 그룹은 삭제됩니다.")) {
|
|
| 288 |
+ var data = new FormData(form); |
|
| 289 |
+ $.ajax({
|
|
| 290 |
+ cache : false, |
|
| 291 |
+ url : "<c:url value='/web/addr/mergeAddrGroupAjax.do'/>", |
|
| 292 |
+ type : 'POST', |
|
| 293 |
+ data : data, |
|
| 294 |
+ dataType:'json', |
|
| 295 |
+ processData: false, |
|
| 296 |
+ contentType: false, |
|
| 297 |
+ success : function(returnData, status){
|
|
| 298 |
+ if(status == "success") {
|
|
| 299 |
+ if("fail"==returnData.result){
|
|
| 300 |
+ alert(returnData.message); |
|
| 301 |
+ return; |
|
| 302 |
+ } else if("dupl" == returnData.result) {
|
|
| 303 |
+ alert("이미 존재하는 그룹명입니다.");
|
|
| 304 |
+ return; |
|
| 305 |
+ } |
|
| 306 |
+ alert("합치기가 완료되었습니다.");
|
|
| 307 |
+ |
|
| 308 |
+ location.reload(); |
|
| 309 |
+ |
|
| 310 |
+ }else{ alert("ERROR!");return;}
|
|
| 311 |
+ }, |
|
| 312 |
+ error: function (e) { alert("그룹 합치기가 실패하였습니다."); console.log("ERROR : ", e); }
|
|
| 313 |
+ }); |
|
| 314 |
+ } |
|
| 315 |
+ |
|
| 316 |
+} |
|
| 317 |
+ |
|
| 318 |
+//그룹 복사하기 |
|
| 319 |
+function addrGroupCopy() {
|
|
| 320 |
+ var form = document.addrGrpCopyForm; |
|
| 321 |
+ var copyAddrArray = new Array(); |
|
| 322 |
+ |
|
| 323 |
+ $('.selGroup3 li').each(function (idx, item) {
|
|
| 324 |
+ copyAddrArray.push($(item).attr('class'));
|
|
| 325 |
+ }); |
|
| 326 |
+ form.copyAddrs.value = copyAddrArray; |
|
| 327 |
+ |
|
| 328 |
+ |
|
| 329 |
+ if(confirm("그룹을 복사하시겠습니까?")) {
|
|
| 330 |
+ var data = new FormData(form); |
|
| 331 |
+ $.ajax({
|
|
| 332 |
+ cache : false, |
|
| 333 |
+ url : "<c:url value='/web/addr/copyAddrGroupAjax.do'/>", |
|
| 334 |
+ type : 'POST', |
|
| 335 |
+ data : data, |
|
| 336 |
+ dataType:'json', |
|
| 337 |
+ processData: false, |
|
| 338 |
+ contentType: false, |
|
| 339 |
+ success : function(returnData, status){
|
|
| 340 |
+ if(status == "success") {
|
|
| 341 |
+ if("fail"==returnData.result){
|
|
| 342 |
+ alert(returnData.message); |
|
| 343 |
+ return; |
|
| 344 |
+ } else if("dupl" == returnData.result) {
|
|
| 345 |
+ alert("이미 존재하는 그룹명입니다.");
|
|
| 346 |
+ return; |
|
| 347 |
+ } |
|
| 348 |
+ alert("정상적으로 처리되었습니다.");
|
|
| 349 |
+ |
|
| 350 |
+ location.reload(); |
|
| 351 |
+ |
|
| 352 |
+ }else{ alert("ERROR!");return;}
|
|
| 353 |
+ }, |
|
| 354 |
+ error: function (e) { alert("그룹 복사 실패하였습니다."); console.log("ERROR : ", e); }
|
|
| 355 |
+ }); |
|
| 356 |
+ } |
|
| 357 |
+ |
|
| 358 |
+ |
|
| 359 |
+} |
|
| 360 |
+ |
|
| 361 |
+//그룹 다중수정모드 및 수정 프로세스 |
|
| 362 |
+function editAddrGroups() {
|
|
| 363 |
+ if($('.addrGrpNms').attr("type") == "hidden") {
|
|
| 364 |
+ $('.groupsName').hide();
|
|
| 365 |
+ $('.editAddrGrpBtn').html("저장");
|
|
| 366 |
+ $('.cancelAddrGrpBtn').show();
|
|
| 367 |
+ $('.addrGrpNms').attr("type","text");
|
|
| 368 |
+ $('#orderBtn').show();
|
|
| 369 |
+ } else {
|
|
| 370 |
+ if(confirm("수정하시겠습니까?")) {
|
|
| 371 |
+ var addrGrpNms = $("input[name=addrGrpNms]");
|
|
| 372 |
+ for(var i = 0; i < addrGrpNms.length; i++){
|
|
| 373 |
+ if(addrGrpNms[i].value == ''){
|
|
| 374 |
+ alert("그룹명을 입력해주세요.")
|
|
| 375 |
+ return false; |
|
| 376 |
+ } |
|
| 377 |
+ } |
|
| 378 |
+ var form = document.addrGrpListForm; |
|
| 379 |
+ var data = new FormData(form); |
|
| 380 |
+ $.ajax({
|
|
| 381 |
+ cache : false, |
|
| 382 |
+ url : "<c:url value='/web/addr/updateAddrGroupAjax.do'/>", |
|
| 383 |
+ type : 'POST', |
|
| 384 |
+ data : data, |
|
| 385 |
+ dataType:'json', |
|
| 386 |
+ processData: false, |
|
| 387 |
+ contentType: false, |
|
| 388 |
+ success : function(returnData, status){
|
|
| 389 |
+ if(status == "success") {
|
|
| 390 |
+ if("fail"==returnData.result){
|
|
| 391 |
+ alert(returnData.message); |
|
| 392 |
+ return; |
|
| 393 |
+ } else if("dupl"==returnData.result) {
|
|
| 394 |
+ alert("중복된 주소록그룹명이 존재합니다");
|
|
| 395 |
+ return; |
|
| 396 |
+ } |
|
| 397 |
+ alert("정상적으로 처리되었습니다.");
|
|
| 398 |
+ location.reload(); |
|
| 399 |
+ |
|
| 400 |
+ }else{ alert("ERROR!");return;}
|
|
| 401 |
+ }, |
|
| 402 |
+ error: function (e) { alert("그룹 수정 실패하였습니다."); console.log("ERROR : ", e); }
|
|
| 403 |
+ }); |
|
| 404 |
+ } |
|
| 405 |
+ } |
|
| 406 |
+} |
|
| 407 |
+ |
|
| 408 |
+// 그룹 다중수정모드 취소 |
|
| 409 |
+function cancelAddrGroupEdit() {
|
|
| 410 |
+ /* |
|
| 411 |
+ $('.groupsName').show();
|
|
| 412 |
+ $('.cancelAddrGrpBtn').hide();
|
|
| 413 |
+ $('.editAddrGrpBtn').html("편집");
|
|
| 414 |
+ $('.addrGrpNms').attr("type","hidden");
|
|
| 415 |
+ $('#orderBtn').hide();
|
|
| 416 |
+ */ |
|
| 417 |
+ listAddrGrp(); |
|
| 418 |
+} |
|
| 419 |
+ |
|
| 420 |
+// 그룹을 클릭해서 주소록 목록에 노출하기 |
|
| 421 |
+function openThisGroup(id) {
|
|
| 422 |
+ var form = document.searchAddrOpenForm; |
|
| 423 |
+ |
|
| 424 |
+ if (id == 'bookmark') {
|
|
| 425 |
+ //자주보내는번호 검색 |
|
| 426 |
+ form.searchAddrGrpId.value="bookmark"; |
|
| 427 |
+ } else if (id != '') {
|
|
| 428 |
+ //id가 넘어오면 해당 그룹id만 검색 |
|
| 429 |
+ form.searchAddrGrpId.value = id; |
|
| 430 |
+ } else if (id == 'noGrp') {
|
|
| 431 |
+ form.searchAddrGrpId.value = "noGrp"; |
|
| 432 |
+ } else {
|
|
| 433 |
+ form.searchAddrGrpId.value = ""; |
|
| 434 |
+ } |
|
| 435 |
+ |
|
| 436 |
+ var sendData = $(document.searchAddrOpenForm).serializeArray() ; |
|
| 437 |
+ $("#adr1_right").load("/web/mjon/addr/selectAddrAjax.do", sendData, function(response, status, xhr){});
|
|
| 438 |
+} |
|
| 439 |
+ |
|
| 440 |
+// 주소록 전송할 아이디가 유효한지 체크 |
|
| 441 |
+function validateId() {
|
|
| 442 |
+ var recvId = $("#recvId").val();
|
|
| 443 |
+ var form = document.duplIdCheckForm; |
|
| 444 |
+ |
|
| 445 |
+ if($("input:checkbox[name='grpCheck']").is(":checked")==false){
|
|
| 446 |
+ alert("선택된 그룹이 없습니다.");
|
|
| 447 |
+ return false; |
|
| 448 |
+ } |
|
| 449 |
+ |
|
| 450 |
+ if(recvId == "" || recvId == null) {
|
|
| 451 |
+ alert("아이디를 입력해주세요.")
|
|
| 452 |
+ return; |
|
| 453 |
+ } |
|
| 454 |
+ form.checkId.value = recvId; |
|
| 455 |
+ |
|
| 456 |
+ var data = new FormData(form); |
|
| 457 |
+ $.ajax({
|
|
| 458 |
+ cache : false, |
|
| 459 |
+ url : "<c:url value='/uss/umt/user/EgovIdDplctCnfirmAjax.do'/>", |
|
| 460 |
+ type : 'POST', |
|
| 461 |
+ data : data, |
|
| 462 |
+ dataType:'json', |
|
| 463 |
+ processData: false, |
|
| 464 |
+ contentType: false, |
|
| 465 |
+ success : function(returnData, status){
|
|
| 466 |
+ if(status == "success") {
|
|
| 467 |
+ if(returnData.usedCnt < 1){
|
|
| 468 |
+ alert("일치하는 아이디가 없습니다.");
|
|
| 469 |
+ return; |
|
| 470 |
+ }else if(returnData.usedCnt > 0){
|
|
| 471 |
+ //체크한 그룹들을 html로 그리기 |
|
| 472 |
+ sendAddrGroupLayer(); |
|
| 473 |
+ |
|
| 474 |
+ $(".groupSendLayer").attr("data-tooltip", "adr_popup03");
|
|
| 475 |
+ $("#idCheckSuccess").trigger("click");
|
|
| 476 |
+ } |
|
| 477 |
+ }else{ alert("ERROR!");return;}
|
|
| 478 |
+ }, |
|
| 479 |
+ error: function (e) { alert("조회에 실패하였습니다."); console.log("ERROR : ", e); }
|
|
| 480 |
+ }); |
|
| 481 |
+ |
|
| 482 |
+} |
|
| 483 |
+ |
|
| 484 |
+// 그룹 내보내기 레이어 띄우기 |
|
| 485 |
+function sendAddrGroupLayer() {
|
|
| 486 |
+ var form = document.addrGrpListForm; |
|
| 487 |
+ var html = ""; |
|
| 488 |
+ var index = 0; |
|
| 489 |
+ successHtml = ""; //내보내기 최종레이어의 초기화 |
|
| 490 |
+ if($("input:checkbox[name='grpCheck']:checked").length > 0){
|
|
| 491 |
+ |
|
| 492 |
+ $('input:checkbox[name="grpCheck"]').each(function() {
|
|
| 493 |
+ if(this.checked){
|
|
| 494 |
+ var id = $(this).attr('id');
|
|
| 495 |
+ var idNum = id.substr(5); |
|
| 496 |
+ |
|
| 497 |
+ html += '<li name="li2Index" class="'+$("#addrGrpId"+idNum).val()+'" id="li2Index'+index+'">'+$("#addrGrpNm"+idNum).val()+' [<span>'+$("#grpCount"+idNum).val()+'</span>명]<button type="button" onclick="removeLi2('+ index +');"><img src="/publish/images/content/close_btn.png" alt="선택 그룹 취소"></button></li>';
|
|
| 498 |
+ successHtml += '<li name="li3Index" id="li3Index'+index+'">'+$("#addrGrpNm"+idNum).val()+' [<span>'+$("#grpCount"+idNum).val()+'</span>명]<p id=sendCondition'+index+'></p></li>';
|
|
| 499 |
+ index++; |
|
| 500 |
+ } |
|
| 501 |
+ }); |
|
| 502 |
+ //초기화 |
|
| 503 |
+ $('#selGroup2').empty();
|
|
| 504 |
+ $('#selGroup2').append(html);
|
|
| 505 |
+ $(".recvId").text($("#recvId").val());
|
|
| 506 |
+ $(".checkGroupCount").text($("input:checkbox[name='grpCheck']:checked").length);
|
|
| 507 |
+ } |
|
| 508 |
+} |
|
| 509 |
+ |
|
| 510 |
+//휴대폰 본인인증 팝업 |
|
| 511 |
+function kmcPopUp() {
|
|
| 512 |
+ //KMC팝업에 정보 미리 삽입 |
|
| 513 |
+ var kmcPopUpForm = $("form[name=reqKMCISForm]").serialize() ;
|
|
| 514 |
+ |
|
| 515 |
+ $.ajax({
|
|
| 516 |
+ url : "<c:url value='/web/addr/kmcPopupAddrSubmitPramAjax.do' />", |
|
| 517 |
+ type : 'POST', |
|
| 518 |
+ data : kmcPopUpForm, |
|
| 519 |
+ dataType:'json', |
|
| 520 |
+ success : function(returnData, status){
|
|
| 521 |
+ if(status == "success") {
|
|
| 522 |
+ if (returnData.result=="success"){
|
|
| 523 |
+ $("#tr_cert").val(returnData.tr_cert);
|
|
| 524 |
+ $("#tr_url").val(returnData.tr_url);
|
|
| 525 |
+ $("#tr_add").val(returnData.tr_add);
|
|
| 526 |
+ |
|
| 527 |
+ openKMCISWindow(); |
|
| 528 |
+ }else{
|
|
| 529 |
+ alert(returnData.message); |
|
| 530 |
+ } |
|
| 531 |
+ |
|
| 532 |
+ }else{ alert("실패");return;}
|
|
| 533 |
+ }, |
|
| 534 |
+ |
|
| 535 |
+ error : function(request , status, error){
|
|
| 536 |
+ alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
|
|
| 537 |
+ } |
|
| 538 |
+ }); |
|
| 539 |
+ |
|
| 540 |
+} |
|
| 541 |
+ |
|
| 542 |
+// 주소록 내보내기 |
|
| 543 |
+function sendAddrGroup() {
|
|
| 544 |
+ |
|
| 545 |
+ var form = document.addrGrpSendForm; |
|
| 546 |
+ var sendGrpArray = new Array(); |
|
| 547 |
+ var resultStatus = new Array(); |
|
| 548 |
+ var successSendGroup = 0; |
|
| 549 |
+ var html = ""; |
|
| 550 |
+ $('.selGroup2 li').each(function (idx, item) {
|
|
| 551 |
+ sendGrpArray.push($(item).attr('class'));
|
|
| 552 |
+ }); |
|
| 553 |
+ form.sendGrps.value = sendGrpArray; |
|
| 554 |
+ |
|
| 555 |
+ form.recvMberId.value = $("#recvId").val();
|
|
| 556 |
+ |
|
| 557 |
+ /* if(confirm("그룹을 내보내겠습니까?")) { */
|
|
| 558 |
+ var data = new FormData(form); |
|
| 559 |
+ $.ajax({
|
|
| 560 |
+ cache : false, |
|
| 561 |
+ url : "<c:url value='/web/mjon/addr/transAddrGroupAjax.do'/>", |
|
| 562 |
+ type : 'POST', |
|
| 563 |
+ data : data, |
|
| 564 |
+ dataType:'json', |
|
| 565 |
+ processData: false, |
|
| 566 |
+ contentType: false, |
|
| 567 |
+ success : function(returnData, status){
|
|
| 568 |
+ if(status == "success") {
|
|
| 569 |
+ if("fail"==returnData.result){
|
|
| 570 |
+ console.log(returnData.message); |
|
| 571 |
+ return; |
|
| 572 |
+ } |
|
| 573 |
+ |
|
| 574 |
+ resultStatus = returnData.result.split(',');
|
|
| 575 |
+ |
|
| 576 |
+ $("#resultSendList").html(successHtml);
|
|
| 577 |
+ |
|
| 578 |
+ |
|
| 579 |
+ for(var i=0; i<resultStatus.length; i++) {
|
|
| 580 |
+ if(resultStatus[i] == 'Y'){
|
|
| 581 |
+ successSendGroup ++; |
|
| 582 |
+ $("#sendCondition"+i).html("전송완료");
|
|
| 583 |
+ } else {
|
|
| 584 |
+ $("#sendCondition"+i).html("전송실패");
|
|
| 585 |
+ } |
|
| 586 |
+ } |
|
| 587 |
+ |
|
| 588 |
+ $(".successSendGroup").text(successSendGroup);
|
|
| 589 |
+ |
|
| 590 |
+ $("#sendCheckCloseBtn").trigger("click");
|
|
| 591 |
+ $("#sendSuccessLayer").trigger("click");
|
|
| 592 |
+ |
|
| 593 |
+ }else{ alert("ERROR!");return;}
|
|
| 594 |
+ }, |
|
| 595 |
+ error: function (e) { alert("그룹 전송 실패하였습니다."); console.log("ERROR : ", e); }
|
|
| 596 |
+ }); |
|
| 597 |
+ /* } */ |
|
| 598 |
+ |
|
| 599 |
+} |
|
| 600 |
+ |
|
| 601 |
+//주소록 내보내기 히스토리 목록 |
|
| 602 |
+function listAddrTransHistAjax(pageNo) {
|
|
| 603 |
+ var form = document.searchAddrTransHistForm; |
|
| 604 |
+ form.pageIndex.value = pageNo; |
|
| 605 |
+ |
|
| 606 |
+ if($('#addrTransHistPageUnit').val() != undefined) {
|
|
| 607 |
+ form.pageUnit.value = $('#addrTransHistPageUnit').val();
|
|
| 608 |
+ } |
|
| 609 |
+ |
|
| 610 |
+ var sendData = $(document.searchAddrTransHistForm).serializeArray(); |
|
| 611 |
+ $("#addrTransHistListDiv").load("/web/mjon/addr/selectAddrTransHistListAjax.do", sendData, function(response, status, xhr){
|
|
| 612 |
+ //리스트 스크롤 처리해주기 |
|
| 613 |
+ /* |
|
| 614 |
+ $(".tb_wrap").mCustomScrollbar({
|
|
| 615 |
+ axis: 'y', |
|
| 616 |
+ scrollbarPosition: "outside", |
|
| 617 |
+ theme: "dark", |
|
| 618 |
+ autoHideScrollbar: false |
|
| 619 |
+ }); |
|
| 620 |
+ */ |
|
| 621 |
+ }); |
|
| 622 |
+ |
|
| 623 |
+ $("#addrTransHistListLayer").trigger("click");
|
|
| 624 |
+ |
|
| 625 |
+ |
|
| 626 |
+} |
|
| 627 |
+ |
|
| 628 |
+</script> |
|
| 629 |
+ |
|
| 630 |
+<script language=javascript> |
|
| 631 |
+ |
|
| 632 |
+ window.name = "kmcis_web_sample"; |
|
| 633 |
+ |
|
| 634 |
+ var KMCIS_window; |
|
| 635 |
+ |
|
| 636 |
+ function openKMCISWindow(){
|
|
| 637 |
+ |
|
| 638 |
+ var UserAgent = navigator.userAgent; |
|
| 639 |
+ /* 모바일 접근 체크*/ |
|
| 640 |
+ // 모바일일 경우 (변동사항 있을경우 추가 필요) |
|
| 641 |
+ if (UserAgent.match(/iPhone|iPod|Android|Windows CE|BlackBerry|Symbian|Windows Phone|webOS|Opera Mini|Opera Mobi|POLARIS|IEMobile|lgtelecom|nokia|SonyEricsson/i) != null || UserAgent.match(/LG|SAMSUNG|Samsung/) != null) {
|
|
| 642 |
+ document.reqKMCISForm.target = 'KMCISWindow'; // 모바일 |
|
| 643 |
+ } |
|
| 644 |
+ |
|
| 645 |
+ // 모바일이 아닐 경우 |
|
| 646 |
+ else {
|
|
| 647 |
+ KMCIS_window = window.open('', 'KMCISWindow', 'width=425, height=550, resizable=0, scrollbars=no, status=0, titlebar=0, toolbar=0, left=435, top=250' );
|
|
| 648 |
+ |
|
| 649 |
+ if(KMCIS_window == null){
|
|
| 650 |
+ alert(" ※ 윈도우 XP SP2 또는 인터넷 익스플로러 7 사용자일 경우에는 \n 화면 상단에 있는 팝업 차단 알림줄을 클릭하여 팝업을 허용해 주시기 바랍니다. \n\n※ MSN,야후,구글 팝업 차단 툴바가 설치된 경우 팝업허용을 해주시기 바랍니다.");
|
|
| 651 |
+ } |
|
| 652 |
+ |
|
| 653 |
+ document.reqKMCISForm.target = 'KMCISWindow'; |
|
| 654 |
+ } |
|
| 655 |
+ |
|
| 656 |
+ document.reqKMCISForm.action = 'https://www.kmcert.com/kmcis/web/kmcisReq.jsp'; |
|
| 657 |
+ document.reqKMCISForm.submit(); |
|
| 658 |
+ |
|
| 659 |
+ } |
|
| 660 |
+ |
|
| 661 |
+</script> |
|
| 662 |
+ |
|
| 663 |
+<form name="searchAddrGrpForm" id="searchAddrGrpForm" method="post" onsubmit="return false;"> |
|
| 664 |
+ <div class="search_group_top"> |
|
| 665 |
+ <label for="" class="label">그룹명 검색</label> |
|
| 666 |
+ <input type="text" name="searchKeyword" id="searchKeyword" placeholder="그룹명을 입력하세요" onfocus="this.placeholder=''" onblur="this.placeholder='그룹명을 입력하세요'" class="inputLight"> |
|
| 667 |
+ <input type="hidden" name="searchCondition" id="searchCondition" value="2" /> |
|
| 668 |
+ <input type="hidden" name="searchAddrGrpId" id="searchAddrGrpId" /> |
|
| 669 |
+ <button type="button" onclick="listAddrGroupAjax(); return false;"><img src="/publish/images/popup/search.png" alt="검색"></button> |
|
| 670 |
+ </div> |
|
| 671 |
+</form> |
|
| 672 |
+ |
|
| 673 |
+<div class="adrBox"> |
|
| 674 |
+ <form name="addrGrpInsertForm" id="addrGrpInsertForm" method="post" onsubmit="return false;"> |
|
| 675 |
+ <div class="search_group_middle"> |
|
| 676 |
+ <label for="" class="label">새 그룹 추가</label> |
|
| 677 |
+ <input type="text" name="addrGrpNm" id="addrGrpNm" placeholder="새 그룹명 입력(40Byte 이내)" onfocus="this.placeholder=''" onblur="this.placeholder='새 그룹명 입력(40Byte 이내)'" class="inputLight" maxlength="24"> |
|
| 678 |
+ <button type="button" onclick="insertAddrGroupAjax(); return false;" class="btnType">추가</button> |
|
| 679 |
+ </div> |
|
| 680 |
+ </form> |
|
| 681 |
+ <form name="addrGrpListForm" id="addrGrpListForm" method="post" onsubmit="return false;"> |
|
| 682 |
+ <div class="adr_cb_wrap check_group_all"> |
|
| 683 |
+ <div style="margin-right: 2px;"> |
|
| 684 |
+ <label for="groupAll" class="label">전체 선택</label> |
|
| 685 |
+ <input type="checkbox" name="groupAll" id="groupAll" value="1" onClick="fnCheckAll();"> |
|
| 686 |
+ </div> |
|
| 687 |
+ <p class="open" onclick="openThisGroup('');"><img src="/publish/images/content/open_folder.png" alt="폴더 열림">전체[<span class="c_002c9a fwMd" id="addrTotCnt">${addrTotalCount }</span>/최대 1,000,000]</p>
|
|
| 688 |
+ </div> |
|
| 689 |
+ <div class="adr1_btnWrap"> |
|
| 690 |
+ <div> |
|
| 691 |
+ <button type="button" class="btnType btnType21 editAddrGrpBtn" onclick="editAddrGroups();">편집</button> |
|
| 692 |
+ <button type="button" class="btnType btnType7 cancelAddrGrpBtn" onclick="cancelAddrGroupEdit();" style="display:none;">취소</button> |
|
| 693 |
+ </div> |
|
| 694 |
+ <div id="orderBtn" style="display:none;"> |
|
| 695 |
+ <button type="button" class="btn_top"><img src="/publish/images/content/adress_up2.png"></button> |
|
| 696 |
+ <button type="button" class="btn_up"><img src="/publish/images/content/adress_up1.png"></button> |
|
| 697 |
+ <button type="button" class="btn_down"><img src="/publish/images/content/adress_down1.png"></button> |
|
| 698 |
+ <button type="button" class="btn_botom"><img src="/publish/images/content/adress_down2.png"></button> |
|
| 699 |
+ </div> |
|
| 700 |
+ </div> |
|
| 701 |
+ <div class="adr1_list"> |
|
| 702 |
+ <!-- 고정그룹 : 그룹미지정 --> |
|
| 703 |
+ <div class="adr_cb_wrap list_fixed"> |
|
| 704 |
+ <label for="group1" class="label"></label> |
|
| 705 |
+ <input type="checkbox" id="group1" disabled="disabled"> |
|
| 706 |
+ <p onclick="openThisGroup('noGrp');"><img src="/publish/images/content/close_folder2.png" alt="폴더 닫힘">그룹미지정[<span id="nogrpCnt"><c:out value="${addrNoGrpCnt}" /></span>명]</p>
|
|
| 707 |
+ </div> |
|
| 708 |
+ <!-- 고정그룹 : 자주보내는번호 --> |
|
| 709 |
+ <div class="adr_cb_wrap list_fixed"> |
|
| 710 |
+ <label for="group2" class="label"></label> |
|
| 711 |
+ <input type="checkbox" id="group2" disabled="disabled"> |
|
| 712 |
+ <p onclick="openThisGroup('bookmark');"><img src="/publish/images/content/close_folder2.png" alt="폴더 닫힘">자주보내는 번호[<span id="bookmarkCnt"><c:out value="${addrBookmarkCnt }"/></span>명]
|
|
| 713 |
+ </div> |
|
| 714 |
+ <c:forEach var="addrGroupList" items="${addrGroupList}" varStatus="status">
|
|
| 715 |
+ <div class="adr_cb_wrap list_switch"> |
|
| 716 |
+ <div> |
|
| 717 |
+ <label for="group${status.index+3}" class="label"><c:out value="${addrGroupList.addrGrpNm}" /></label>
|
|
| 718 |
+ <input type="checkbox" name="grpCheck" id="group${status.index+3}" onclick="tooltipCheck();" value="${addrGroupList.addrGrpId}">
|
|
| 719 |
+ </div> |
|
| 720 |
+ <p onclick="openThisGroup('<c:out value="${addrGroupList.addrGrpId}" />');">
|
|
| 721 |
+ <img src="/publish/images/content/close_folder2.png" alt="폴더 닫힘"> |
|
| 722 |
+ <input type="hidden" name="addrGrpNms" class="addrGrpNms" id="addrGrpNm${status.index+3}" value="${addrGroupList.addrGrpNm}" maxlength="20"/>
|
|
| 723 |
+ <span class="groupsName"><c:out value="${addrGroupList.addrGrpNm}" />[<span><c:out value="${addrGroupList.grpCount}" /></span>명]
|
|
| 724 |
+ </p> |
|
| 725 |
+ <input type="hidden" name="addrGrpIds" id="addrGrpId${status.index+3}" value="${addrGroupList.addrGrpId}" />
|
|
| 726 |
+ <input type="hidden" id="grpCount${status.index+3}" value="${addrGroupList.grpCount}" />
|
|
| 727 |
+ </div> |
|
| 728 |
+ </c:forEach> |
|
| 729 |
+ </div> |
|
| 730 |
+ <div class="adr1_btnWrap_bottom"> |
|
| 731 |
+ <button type="button" onclick="deleteAddrGroup(); return false;" class="btnType group_remove"><i class="remove_img"></i>그룹삭제</button> |
|
| 732 |
+ <button type="button" onclick="javascript:mergeAddrGroupLayer(); return false;" class="btnType group_join">그룹 합치기</button> |
|
| 733 |
+ <button type="button" onclick="copyAddrGroupLayer(); return false;" class="btnType group_copy">그룹복사</button> |
|
| 734 |
+ </div> |
|
| 735 |
+ |
|
| 736 |
+ <!-- Workaround to avoid corrupted XHR2 request body in IE10 / IE11 --> |
|
| 737 |
+ <input type="hidden" name="_dontcare"> |
|
| 738 |
+ </form> |
|
| 739 |
+ <%----%> |
|
| 740 |
+ <div class="adr1_exprot clearfix"> |
|
| 741 |
+ <p>주소록 내보내기</p> |
|
| 742 |
+ <button type="button" onclick="listAddrTransHistAjax(1); return false;" class="send_address"><i></i>보낸 주소록</button> |
|
| 743 |
+ <input type="hidden" id="addrTransHistListLayer" data-tooltip="adr_popup08" /> |
|
| 744 |
+ </div> |
|
| 745 |
+ <div class="search_group_bottom"> |
|
| 746 |
+ <label for="" class="label">받는사람 아이디 입력</label> |
|
| 747 |
+ <input type="text" id="recvId" placeholder="보낼 아이디 입력" onfocus="this.placeholder=''" onblur="this.placeholder='보낼 아이디 입력'" class="inputLight"> |
|
| 748 |
+ <button type="button" onclick="validateId();" class="btnType">내보내기</button> |
|
| 749 |
+ <input type="hidden" class="groupSendLayer" id="idCheckSuccess" data-tooltip="adr_popup03" /> |
|
| 750 |
+ </div> |
|
| 751 |
+ <%----%> |
|
| 752 |
+</div> |
|
| 753 |
+ |
|
| 754 |
+<!-- 그룹 합치기 팝업 data-tooltip:adr_popup02 --> |
|
| 755 |
+<form name="addrGrpMergeForm" id="addrGrpMergeForm" method="post" onsubmit="return false;"> |
|
| 756 |
+ <input type="hidden" name="mergeGrps" id="mergeGrps" /> |
|
| 757 |
+ <div class="tooltip-wrap"> |
|
| 758 |
+ <div class="popup-com adr_layer adr_popup02" tabindex="0" data-tooltip-con="adr_popup02" data-focus="adr_popup02" data-focus-prev="adr_popup02-close" style="width: 510px;"> |
|
| 759 |
+ <div class="popup_heading"> |
|
| 760 |
+ <p>그룹 합치기</p> |
|
| 761 |
+ <button type="button" class="tooltip-close" data-focus="adr_popup02-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> |
|
| 762 |
+ </div> |
|
| 763 |
+ <div class="layer_in"> |
|
| 764 |
+ <div class="gorup_join_cont"> |
|
| 765 |
+ <div class="select_group"> |
|
| 766 |
+ <p>선택그룹</p> |
|
| 767 |
+ <ul id="selGroup" class="selGroup"></ul> |
|
| 768 |
+ </div> |
|
| 769 |
+ <div class="group_input"> |
|
| 770 |
+ <div class="input_left">그룹이름</div> |
|
| 771 |
+ <div class="input_right"> |
|
| 772 |
+ <label for="" class="label">새 그룹명 입력</label> |
|
| 773 |
+ <input type="text" name="addrGrpNewNm" placeholder="새 그룹명 입력" onfocus="this.placeholder=''" onblur="this.placeholder='새 그룹명 입력'" class="inputLight"> |
|
| 774 |
+ </div> |
|
| 775 |
+ </div> |
|
| 776 |
+ </div> |
|
| 777 |
+ <div class="popup_btn_wrap2"> |
|
| 778 |
+ <button type="button" onclick="addrGroupMerge();">저장</button> |
|
| 779 |
+ <button type="button" class="tooltip-close" data-focus="adr_popup02-close" data-focus-next="adr_popup02">취소</button> |
|
| 780 |
+ </div> |
|
| 781 |
+ </div> |
|
| 782 |
+ </div> |
|
| 783 |
+ </div><!--// 그룹 합치기 팝업 --> |
|
| 784 |
+</form> |
|
| 785 |
+ |
|
| 786 |
+<!-- 그룹 내보내기 팝업 data-tooltip:adr_popup03 --> |
|
| 787 |
+<form name="addrGrpSendForm" id="addrGrpSendForm" method="post" onsubmit="return false;"> |
|
| 788 |
+ <input type="hidden" name="sendGrps" id="sendGrps" /> |
|
| 789 |
+ <input type="hidden" name="recvMberId" id="recvMberId" /> |
|
| 790 |
+ <div class="tooltip-wrap"> |
|
| 791 |
+ <div class="popup-com adr_layer adr_popup03" tabindex="0" data-tooltip-con="adr_popup03" data-focus="adr_popup03" data-focus-prev="adr_popup03-close" style="width: 510px;"> |
|
| 792 |
+ <div class="popup_heading"> |
|
| 793 |
+ <p>그룹 내보내기</p> |
|
| 794 |
+ <button type="button" id="sendCheckCloseBtn" class="tooltip-close" data-focus="adr_popup03-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> |
|
| 795 |
+ </div> |
|
| 796 |
+ <div class="layer_in"> |
|
| 797 |
+ <p class="adr_pop_title"><span class="c_222 recvId"></span>님께 <span class="c_e40000">총 <span class="checkGroupCount"></span>개의 주소록</span>을 전송하겠습니까?</p> |
|
| 798 |
+ <div class="gorup_join_cont"> |
|
| 799 |
+ <div class="select_group"> |
|
| 800 |
+ <p>선택그룹</p> |
|
| 801 |
+ <ul id="selGroup2" class="selGroup2"></ul> |
|
| 802 |
+ </div> |
|
| 803 |
+ </div> |
|
| 804 |
+ <div class="popup_btn_wrap2"> |
|
| 805 |
+ <button type="button" onclick="kmcPopUp();">확인</button> |
|
| 806 |
+ <button type="button" class="tooltip-close" data-focus="adr_popup03-close" data-focus-next="adr_popup03">취소</button> |
|
| 807 |
+ </div> |
|
| 808 |
+ </div> |
|
| 809 |
+ </div> |
|
| 810 |
+ </div> |
|
| 811 |
+</form> |
|
| 812 |
+<!--// 그룹 내보내기 팝업 --> |
|
| 813 |
+ |
|
| 814 |
+<!-- 그룹 내보내기(결과) 팝업 data-tooltip:adr_popup04 --> |
|
| 815 |
+<div class="tooltip-wrap"> |
|
| 816 |
+ <input type="hidden" class="sendSuccessLayer" id="sendSuccessLayer" data-tooltip="adr_popup04" /> |
|
| 817 |
+ <div class="popup-com adr_layer adr_popup04" tabindex="0" data-tooltip-con="adr_popup04" data-focus="adr_popup04" data-focus-prev="adr_popup04-close" style="width: 510px;"> |
|
| 818 |
+ <div class="popup_heading"> |
|
| 819 |
+ <p>그룹 내보내기</p> |
|
| 820 |
+ <button type="button" class="tooltip-close" data-focus="adr_popup04-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> |
|
| 821 |
+ </div> |
|
| 822 |
+ <div class="layer_in"> |
|
| 823 |
+ <p class="adr_pop_title"><span class="c_222 recvId"></span>님께 <span class="c_e40000">총 <span class="successSendGroup"></span>개의 주소록</span>을 전송하였습니다</p> |
|
| 824 |
+ <div class="gorup_join_cont"> |
|
| 825 |
+ <div class="select_group2"> |
|
| 826 |
+ <ul id="resultSendList"> |
|
| 827 |
+ </ul> |
|
| 828 |
+ </div> |
|
| 829 |
+ <p class="select_group_info">※ 발신된 주소록은 10일 이내 수신해야 합니다.</p> |
|
| 830 |
+ </div> |
|
| 831 |
+ <div class="popup_btn_wrap2"> |
|
| 832 |
+ <button type="button" class="tooltip-close check_btn_pop" data-focus="adr_popup04-close" data-focus-next="adr_popup04">확인</button> |
|
| 833 |
+ </div> |
|
| 834 |
+ </div> |
|
| 835 |
+ </div> |
|
| 836 |
+</div><!--// 그룹 내보내기(결과) 팝업 --> |
|
| 837 |
+ |
|
| 838 |
+ |
|
| 839 |
+ |
|
| 840 |
+<!-- 그룹 복사 팝업 data-tooltip:adr_popup05 --> |
|
| 841 |
+<form name="addrGrpCopyForm" id="addrGrpCopyForm" method="post" onsubmit="return false;"> |
|
| 842 |
+ <input type="hidden" name="copyAddrs" id="copyAddrs" /> |
|
| 843 |
+ <div class="tooltip-wrap"> |
|
| 844 |
+ <div class="popup-com adr_layer adr_popup05" tabindex="0" data-tooltip-con="adr_popup05" data-focus="adr_popup05" data-focus-prev="adr_popup05-close" style="width: 510px;"> |
|
| 845 |
+ <div class="popup_heading"> |
|
| 846 |
+ <p>그룹 복사</p> |
|
| 847 |
+ <button type="button" class="tooltip-close" data-focus="adr_popup05-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> |
|
| 848 |
+ </div> |
|
| 849 |
+ <div class="layer_in"> |
|
| 850 |
+ <div class="gorup_join_cont"> |
|
| 851 |
+ <div class="select_group"> |
|
| 852 |
+ <p>선택그룹</p> |
|
| 853 |
+ <ul id="selGroup3" class="selGroup3"></ul> |
|
| 854 |
+ </div> |
|
| 855 |
+ <div class="group_input"> |
|
| 856 |
+ <div class="input_left">그룹이름</div> |
|
| 857 |
+ <div class="input_right"> |
|
| 858 |
+ <label for="" class="label">새 그룹명 입력</label> |
|
| 859 |
+ <input type="text" id="addrGrpNewNm" name="addrGrpNewNm" placeholder="새 그룹명 입력" onfocus="this.placeholder=''" onblur="this.placeholder='새 그룹명 입력'" class="inputLight"> |
|
| 860 |
+ </div> |
|
| 861 |
+ </div> |
|
| 862 |
+ </div> |
|
| 863 |
+ <div class="popup_btn_wrap2"> |
|
| 864 |
+ <button type="button" onclick="addrGroupCopy();">저장</button> |
|
| 865 |
+ <button type="button" class="tooltip-close" data-focus="adr_popup05-close" data-focus-next="adr_popup05">취소</button> |
|
| 866 |
+ </div> |
|
| 867 |
+ </div> |
|
| 868 |
+ </div> |
|
| 869 |
+ </div><!--// 그룹 합치기 팝업 --> |
|
| 870 |
+</form> |
|
| 871 |
+ |
|
| 872 |
+ |
|
| 873 |
+ |
|
| 874 |
+<!-- 주소록 내보내기 관리 data-tooltip:adr_popup08 --> |
|
| 875 |
+<div class="tooltip-wrap"> |
|
| 876 |
+ <div class="popup-com adr_layer adr_popup08" tabindex="0" data-tooltip-con="adr_popup08" data-focus="adr_popup08" data-focus-prev="adr_popup08-close" style="width: 920px;height:456px;"> |
|
| 877 |
+ <div class="popup_heading"> |
|
| 878 |
+ <p>주소록 내보내기 관리</p> |
|
| 879 |
+ <button type="button" class="tooltip-close" data-focus="adr_popup08-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> |
|
| 880 |
+ </div> |
|
| 881 |
+ <div class="layer_in" style="padding: 30px 30px 40px 30px;"> |
|
| 882 |
+ <div id="addrTransHistListDiv"></div> |
|
| 883 |
+ </div> |
|
| 884 |
+ </div> |
|
| 885 |
+</div><!--// 주소록 내보내기 관리 팝업 --> |
|
| 886 |
+ |
|
| 887 |
+<form name="searchAddrOpenForm" id="searchAddrOpenForm" method="post" onsubmit="return false;"> |
|
| 888 |
+ <input type="hidden" name="searchAddrGrpId" id="searchAddrGrpId" /> |
|
| 889 |
+</form> |
|
| 890 |
+<form name="duplIdCheckForm" id="duplIdCheckForm" method="post" onsubmit="return false;"> |
|
| 891 |
+ <input type="hidden" name="checkId" id="checkId" /> |
|
| 892 |
+</form> |
|
| 893 |
+ |
|
| 894 |
+<form name="searchAddrTransHistForm" id="searchAddrTransHistForm" method="post" onsubmit="return false;"> |
|
| 895 |
+ <input name="pageIndex" type="hidden" /> |
|
| 896 |
+ <input name="pageUnit" type="hidden" value="10"/> |
|
| 897 |
+</form> |
|
| 898 |
+ |
|
| 899 |
+<form name="reqKMCISForm" id="reqKMCISForm" mehtod="post"> |
|
| 900 |
+ <input type="hidden" name="tr_cert" id="tr_cert" value = "${tr_cert}">
|
|
| 901 |
+ <input type="hidden" name="tr_url" id="tr_url" value = "${tr_url}">
|
|
| 902 |
+ <input type="hidden" name="tr_add" id="tr_add" value = "${tr_add}">
|
|
| 903 |
+ <input type="hidden" name="mberId" id="mberId" value= "${userId}">
|
|
| 904 |
+</form> |
|
| 905 |
+ |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?