하석형 하석형 06-24
250624 하석형 소셜 계정 이메일 수정(현재 미사용)
@8e10f62ccf5389dca7d68104430aee21413b01c7
src/main/java/com/takensoft/cms/mber/dao/MberDAO.java
--- src/main/java/com/takensoft/cms/mber/dao/MberDAO.java
+++ src/main/java/com/takensoft/cms/mber/dao/MberDAO.java
@@ -180,6 +180,17 @@
 
     /**
      * @param params - 연동 해지 정보를 포함한 Map
+     *               - snsEml: 소셜 계정 이메일
+     *               - mbrId: 회원 ID
+     *               - mdfr: 수정자
+     * @return int - 수정 결과
+     *
+     * 소셜 계정 이메일 수정
+     */
+    int updateSocialAccountEmail(HashMap<String, Object> params);
+
+    /**
+     * @param params - 연동 해지 정보를 포함한 Map
      *               - mbrId: 회원 ID
      *               - lgnOffrType: 제공자 타입
      *               - mdfr: 수정자
src/main/java/com/takensoft/cms/mber/dto/AdmMbrDTO.java
--- src/main/java/com/takensoft/cms/mber/dto/AdmMbrDTO.java
+++ src/main/java/com/takensoft/cms/mber/dto/AdmMbrDTO.java
@@ -1,6 +1,7 @@
 package com.takensoft.cms.mber.dto;
 
 import com.takensoft.cms.mber.vo.MberAuthorVO;
+import com.takensoft.cms.mber.vo.MberSocialAccountVO;
 import lombok.*;
 
 import java.util.ArrayList;
@@ -42,7 +43,7 @@
     private String prvcRlsYn;       // 개인정보공개여부 0: 거부, 1: 허용
     private String mbrType;         // 회원형태 S: 시스템, K: 카카오, N: 네이버, G: 구글, F: 페이스북
     private String pswdChgDt;       // 비밀번호 변경일
-    private String frstRegIp;       // 최초등록 아이디
+    private String frstRegIp;       // 최초등록 아이피
     private String sysPvsnYn;       // 시스템 제공 여부 -> 시스템에서 제공되는 데이터는 사용자가 제거하지 못하도록 하기 위한 설정값 0: 시스템, 1: 사용자
     private String rgtr;            // 등록자
     private String regDt;           // 등록일
@@ -50,4 +51,6 @@
     private String mdfcnDt;         // 수정일
     @Builder.Default
     private List<MberAuthorVO> authorList = new ArrayList<MberAuthorVO>(); // 권한 정보
+    @Builder.Default
+    private List<MberSocialAccountVO> socialAccountList = new ArrayList<MberSocialAccountVO>(); // 소셜 계정 정보
 }
src/main/java/com/takensoft/cms/mber/service/Impl/AdmMbrServiceImpl.java
--- src/main/java/com/takensoft/cms/mber/service/Impl/AdmMbrServiceImpl.java
+++ src/main/java/com/takensoft/cms/mber/service/Impl/AdmMbrServiceImpl.java
@@ -10,6 +10,7 @@
 import com.takensoft.cms.mber.service.AdmMbrService;
 import com.takensoft.cms.mber.service.MberService;
 import com.takensoft.cms.mber.vo.MberAuthorVO;
+import com.takensoft.cms.mber.vo.MberSocialAccountVO;
 import com.takensoft.cms.mber.vo.MberVO;
 import com.takensoft.common.Pagination;
 import com.takensoft.common.exception.*;
@@ -100,11 +101,12 @@
     @Override
     public AdmMbrDTO mbrDetail(String mbrId){
         try {
-            verificationService.verifyAccess(mbrId); // 접근 검증
             AdmMbrDTO admMbrDTO = new AdmMbrDTO();
 
         // mbrId가 있는 경우
         if (mbrId != null) {
+            verificationService.verifyAccess(mbrId); // 접근 검증
+
             admMbrDTO = admMbrDAO.mbrDetail(mbrId);
 
             // 휴대폰번호 복호화
@@ -116,6 +118,10 @@
             if (admMbrDTO.getTelno() != null && !admMbrDTO.getTelno().equals("")) {
                 admMbrDTO.setTelno(Secret.decrypt(admMbrDTO.getTelno()));
             }
+            
+            // SNS 연계 정보 조회
+            List<MberSocialAccountVO> socialAccountList = mberDAO.findSocialAccountsByMbrId(admMbrDTO.getMbrId(), false);
+            admMbrDTO.setSocialAccountList(socialAccountList);
         }
         // mbrId가 없는 경우
         else {
@@ -148,7 +154,7 @@
     @Transactional(rollbackFor = Exception.class)
     public int updateMbr(AdmMbrDTO admMbrDTO){
         try {
-            // 이메일 중복 검사
+            // 이메일 중복 검사 #수정 시에는 이메일 변경 불가 처리
             if (admMbrDTO.getEml() != null || !admMbrDTO.getEml().isEmpty()) {
                 HashMap<String, Object> emlParams = new HashMap<>();
                 emlParams.put("eml", admMbrDTO.getEml());
@@ -202,6 +208,22 @@
                         }
                     }
                 }
+
+
+                // SNS 연계 정보 조회
+//                List<MberSocialAccountVO> socialAccountList = mberDAO.findSocialAccountsByMbrId(admMbrDTO.getMbrId(), false);
+                // 연동된 연계 정보가 없을 시 SNS 연계 정보 수정 (1개 = 시스템 계정) #수정 시에는 이메일 변경 불가 처리
+//                if(socialAccountList.size() == 1) {
+//                    HashMap<String, Object> params = new HashMap<>();
+//                    params.put("lgnOffrType", 'S');
+//                    params.put("snsEml", admMbrDTO.getEml());
+//                    params.put("mbrId", admMbrDTO.getMbrId());
+//                    params.put("mdfr", admMbrDTO.getMdfr());
+//                    int emlResult = mberDAO.updateSocialAccountEmail(params);
+//                    if (emlResult == 0) {
+//                        throw new CustomUpdateFailException("SNS 연계 이메일 수정에 실패했습니다.");
+//                    }
+//                }
             } else { // 회원 탈퇴일 경우 관련 정보 삭제
                 // 부서 사용자 삭제
                 DeptMbrVO deptMbrVO = new DeptMbrVO();
src/main/resources/mybatis/mapper/mber/mber-SQL.xml
--- src/main/resources/mybatis/mapper/mber/mber-SQL.xml
+++ src/main/resources/mybatis/mapper/mber/mber-SQL.xml
@@ -476,6 +476,19 @@
             mdfcn_dt = NOW()
     </insert>
 
+    <!-- 소셜 계정 이메일 수정 -->
+    <update id="updateSocialAccountEmail" parameterType="map">
+        UPDATE mbr_sns_acnt_info
+        SET sns_eml = #{snsEml},
+            mdfr = #{mdfr},
+            mdfcn_dt = NOW()
+        WHERE mbr_id = #{mbrId}
+            AND link_vtlz_yn = true
+        <if test="lgnOffrType != null and lgnOffrType != ''">
+            AND lgn_offr_type = #{lgnOffrType}
+        </if>
+    </update>
+
     <!-- 소셜 계정 연동 해지 -->
     <update id="unlinkSocialAccount" parameterType="map">
         UPDATE mbr_sns_acnt_info
@@ -493,6 +506,7 @@
     <update id="reLinkSocialAccount" parameterType="map">
         UPDATE mbr_sns_acnt_info
         SET link_vtlz_yn = true,
+            link_cncltn_dt = NULL,
             mdfr = #{mdfr},
             mdfcn_dt = NOW()
         WHERE mbr_id = #{mbrId}
Add a comment
List