package com.takensoft.cms.mber.dao; import com.takensoft.cms.mber.dto.JoinDTO; import com.takensoft.cms.mber.dto.PasswordDTO; 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 org.egovframe.rte.psl.dataaccess.mapper.Mapper; import java.util.*; /** * @author takensoft * @since 2024.04.01 * @modification * since | author | description * 2024.04.01 | takensoft | 최초 등록 * 2025.05.29 | takensoft | 통합 로그인 기능 추가 * * 회원 정보 관련 Mapper - 통합 로그인 시스템 지원 */ @Mapper("mberDAO") public interface MberDAO { /** * @param lgnId - 로그인 아이디 * @return MberVO - 사용자 정보 조회 결과 * * 사용자 정보 조회 [security 용] - 통합 로그인 대응 */ MberVO findByMberSecurity(String lgnId); /** * @param lgnId - 로그인 아이디 * @return boolean - 아이디 중복 여부 * * 아이디 중복 검사 - 통합 로그인 대응 */ boolean findByCheckLoginId(String lgnId); /** * @param joinDTO - 회원 가입 관련 DTO * @return int - 회원가입 결과 * * 회원가입 */ int save(JoinDTO joinDTO); /** * @param mberAuthorVO - 사용자 권한 관련 VO * @return int - 사용자 권한 등록 결과 * * 사용자 권한 등록 */ int authorSave(MberAuthorVO mberAuthorVO); /** * @param passwordDTO -비밀 번호 변경 관련 DTO * @return int - 비밀 번호 변경 결과 * * 비밀 번호 변경 */ int updatePassword(PasswordDTO passwordDTO); /** * @param mbrId -회원 아이디 * @return MberVO - 사용자 정보 조회 결과 * * 사용자 정보 조회 */ MberVO findByMber(String mbrId); /** * @param email - 이메일 * @return MberVO - 사용자 정보 * * 이메일로만 사용자 조회 (provider 무관) */ MberVO findByEmail(String email); /** * @param email - 이메일 * @param mbrType - OAuth2 회원 유형 (K, N, G, F, S) * @return MberVO - OAuth2 사용자 정보 * * 이메일과 제공자로 사용자 조회 */ MberVO findByEmailAndProvider(String email, String mbrType); /** * @param mberVO - OAuth2 사용자 정보 * @return int - OAuth2 사용자 저장 결과 * * OAuth2 사용자 저장 */ int saveOAuthUser(MberVO mberVO); /** * @param mberVO - OAuth2 사용자 정보 * @return int - OAuth2 사용자 업데이트 결과 * * OAuth2 사용자 정보 업데이트 */ int updateOAuthUser(MberVO mberVO); /** * @param mberVO - OAuth2 연동 정보 * @return int - 연동 결과 * * 기존 계정에 OAuth2 정보 연동 */ int linkOAuth2Account(MberVO mberVO); /** * @param mbrId - 회원 ID * @return List - 회원 권한 목록 * * 회원 ID로 권한 목록 조회 */ List findAuthoritiesByMbrId(String mbrId); // =================================== // 통합 로그인을 위한 새로운 메서드들 // =================================== /** * @param params - 제공자 타입과 식별자를 포함한 Map * - lgnOffrType: 제공자 타입 (SYSTEM, KAKAO, NAVER, GOOGLE) * - identifier: 식별자 (로그인ID 또는 소셜ID) * @return MberVO - 통합 로그인으로 조회된 사용자 정보 * * 통합 로그인: 제공자별 사용자 조회 */ MberVO findByUnifiedLogin(HashMap params); /** * @param email - 이메일 * @return MberVO - 이메일로 조회된 사용자 정보 (첫 번째 계정) * * 이메일로 모든 연동 계정 조회 (통합용) */ MberVO findAllAccountsByEmail(String email); /** * @param mbrId - 회원 ID * @return List - 소셜 계정 목록 * * 회원 ID로 소셜 계정 목록 조회 */ List findSocialAccountsByMbrId(String mbrId); /** * @param params - 회원 ID와 제공자 타입을 포함한 Map * - mbrId: 회원 ID * - lgnOffrType: 제공자 타입 * @return MberSocialAccountVO - 특정 제공자의 소셜 계정 정보 * * 특정 제공자로 소셜 계정 조회 */ MberSocialAccountVO findSocialAccountByProvider(HashMap params); /** * @param socialAccount - 소셜 계정 정보 * @return int - 저장 결과 * * 소셜 계정 정보 저장 */ int saveSocialAccount(MberSocialAccountVO socialAccount); /** * @param socialAccount - 소셜 계정 연동 정보 * @return int - 연동 결과 * * 소셜 계정 연동 (중복 시 업데이트) */ int linkSocialAccount(MberSocialAccountVO socialAccount); /** * @param params - 연동 해지 정보를 포함한 Map * - mbrId: 회원 ID * - lgnOffrType: 제공자 타입 * - mdfr: 수정자 * @return int - 해지 결과 * * 소셜 계정 연동 해지 */ int unlinkSocialAccount(HashMap params); /** * @param params - 메인 프로필 설정 정보를 포함한 Map * - mbrId: 회원 ID * - lgnOffrType: 제공자 타입 * - mdfr: 수정자 * @return int - 설정 결과 * * 메인 프로필 설정 */ int setPrimaryProfile(HashMap params); /** * @param params - 연동 가능한 계정 검색 정보를 포함한 Map * - email: 이메일 * - lgnOffrType: 제외할 제공자 타입 * @return MberVO - 연동 가능한 계정 정보 * * 연동 가능한 계정 조회 (이메일로 검색, 특정 제공자 제외) */ MberVO findLinkableAccount(HashMap params); }