package itn.let.uss.umt.service;

import java.util.List;

import itn.let.mjo.cert.service.CertVO;
import itn.let.mjo.msgsent.service.MjonMsgSentVO;
import itn.let.mjo.pay.service.KmcVO;
import itn.let.uat.uia.service.AuthCertVO;

/**
 * 일반회원관리에 관한 인터페이스클래스를 정의한다.
 * @author 공통서비스 개발팀 조재영
 * @since 2009.04.10
 * @version 1.0
 * @see
 *
 * <pre>
 * << 개정이력(Modification Information) >>
 *
 *   수정일      수정자           수정내용
 *  -------    --------    ---------------------------
 *   2009.04.10  조재영          최초 생성
 *   2017.07.21  장동한 			로그인인증제한 작업
 *
 * </pre>
 */
public interface EgovMberManageService {

	/**
	 * 사용자의 기본정보를 화면에서 입력하여 항목의 정합성을 체크하고 데이터베이스에 저장
	 * @param mberManageVO 일반회원 등록정보
	 * @return 등록결과
	 * @throws Exception
	 */
	public int insertMber(MberManageVO mberManageVO) throws Exception;

	/**
	 * 기 등록된 사용자 중 검색조건에 맞는 일반회원의 정보를 데이터베이스에서 읽어와 화면에 출력
	 * @param mberId 상세조회대상 일반회원아이디
	 * @return mberManageVO 일반회원상세정보
	 * @throws Exception
	 */
	public MberManageVO selectMber(String mberId) throws Exception;

	// 이메일 발송용 정상회원 전체목록
	public List<MberManageVO> selectEmailSendMberList(UserDefaultVO userSearchVO) throws Exception;
	
	/**
	 * 기 등록된 회원 중 검색조건에 맞는 회원들의 정보를 데이터베이스에서 읽어와 화면에 출력
	 * @param userSearchVO 검색조건
	 * @return List<MberManageVO> 일반회원목록정보
	 * @throws Exception
	 */
	public List<MberManageVO> selectMberList(UserDefaultVO userSearchVO) throws Exception;
	
	public List<MberManageVO> selectMberDelTypeGrpList(UserDefaultVO userSearchVO) throws Exception;
	
	public List<MberManageVO> selectMberLoginAddList(UserDefaultVO userSearchVO) throws Exception;
	
	public List<MberManageVO> selectMberListNewUser(UserDefaultVO userSearchVO) throws Exception;

    /**
     * 일반회원 총 갯수를 조회한다.
     * @param userSearchVO 검색조건
     * @return 일반회원총갯수(int)
     * @throws Exception
     */
    public int selectMberListTotCnt(UserDefaultVO userSearchVO) throws Exception;
    
    

	/**
	 * 화면에 조회된 일반회원의 기본정보를 수정하여 항목의 정합성을 체크하고 수정된 데이터를 데이터베이스에 반영
	 * @param mberManageVO 일반회원수정정보
	 * @throws Exception
	 */
	public void updateMber(MberManageVO mberManageVO) throws Exception;

	/**
	 * 화면에 조회된 사용자의 정보를 데이터베이스에서 삭제
	 * @param checkedIdForDel 삭제대상 일반회원아이디
	 * @throws Exception
	 */
	public void deleteMber(String checkedIdForDel) throws Exception;

	/**
	 * 일반회원 약관확인
	 * @param stplatId 일반회원약관아이디
	 * @return 일반회원약관정보(List)
	 * @throws Exception
	 */
	public List<?> selectStplat(String stplatId)  throws Exception;

	/**
	 * 일반회원암호수정
	 * @param mberManageVO 일반회원수정정보(비밀번호)
	 * @throws Exception
	 */
	public void updatePassword(MberManageVO mberManageVO) throws Exception;

	/**
	 * 일반회원이 비밀번호를 기억하지 못할 때 비밀번호를 찾을 수 있도록 함
	 * @param passVO 일반회원암호 조회조건정보
	 * @return mberManageVO 일반회원암호정보
	 * @throws Exception
	 */
	public MberManageVO selectPassword(MberManageVO passVO) throws Exception;

	/**
	 * 로그인인증제한 해제 
	 * @param mberManageVO 일반회원정보
	 * @return void
	 * @throws Exception
	 */
	public void updateLockIncorrect(MberManageVO mberManageVO) throws Exception;
	
	/**
	 * 사용자의 기본정보를 화면에서 입력하여 항목의 정합성을 체크하고 데이터베이스에 저장
	 * @param mberManageVO 일반회원 등록정보
	 * @return 등록결과
	 * @throws Exception
	 */
	public String insertMberItn(MberManageVO mberManageVO) throws Exception;

	/**
     * 회원 config 정보 가져온다.
     *
     * @param 조회조건정보 vo
     * @return 회원 config 정보 MberManageConfigVO
     * @throws Exception
     */
	//public MberManageConfigVO selectMberCnf(MberManageConfigVO vo)  throws Exception;

	public List<MberManageConfigVO> selectMberCnf(MberManageConfigVO vo) throws Exception;

	/**
     * 회원 config 정보 업데이트한다.
     *
     * @param 조회조건정보 vo
     * @return 회원 config 정보 MberManageConfigVO
     * @throws Exception
     */
	public void updateMberCnf(MberManageConfigVO mberManageConfigVO) throws Exception;
	
	
	//문자온 사용자 회원가입
	public int insertUsr(MberManageVO mberManageVO)  throws Exception;
	
	//문자온 중복아이디 체크를 위한 모든 아이디 조회
	public List<String> selectIdCheck(String memberId) throws Exception;
	
	//문자온 페스워드 변경을 위한 계정 정보 조회
	public int selectPasswordCheck(UserManageVO userManageVO) throws Exception;
	
	//문자온 중복가입 체크를 위한 모든 모바일 인증키
	public List<String> selectMblDnCheck(String mblDn) throws Exception;
	
	//문자온 담당자변경 시 다른 계정에서 사용하는 인증키 체크
	public List<String> selectMblDnCheckById(MberManageVO mberManageVO) throws Exception;	
	
	//문자온 사용자 관리메모
	public void insertMberMemo(MberManageVO mberManageVO) throws Exception;
	
	public List<MberManageVO> selectMberMemo(MberManageVO mberManageVO) throws Exception;
	
	public void deleteMberMemo(MberManageVO mberManageVO) throws Exception;
	
	public void updateMberAdmin(MberManageVO mberManageVO) throws Exception;
	
	//본인인증 로그 저장하기
	public void insertCertInfoLog(AuthCertVO authCertVO) throws Exception;
	
	//본인인증 로그 저장하기
	public void insertCertInfoLogBn(KmcVO kmcRVO) throws Exception;
	//본인인증 로그 mberId 수정하기
	public void updateCertInfoLogMberId(MberManageVO mberManageVO) throws Exception;
	//세금계산서 정보 수정하기
	public void updateTaxbill(MberManageVO mberManageVO) throws Exception;
	//현금영수증 정보 수정하기
	public void updateCashbill(MberManageVO mberManageVO) throws Exception;
	
	public void updateMembershipChange(MberManageVO mberManageVO) throws Exception;
	
	public String selectUniqIdToMberId(MberManageVO mberManageVO) throws Exception;
	
	public String selectMberNmByMberId(MberManageVO mberManageVO) throws Exception;
	
	public String selectBlineCodeByMberId(MberManageVO mberManageVO) throws Exception;
	
	//개인 문자전송 금액 수정하기
	public int updateUserPrice(MberManageVO mberManageVO) throws Exception;
	//개인 팩스전송 금액 수정하기
	public int updateUserFaxPrice(MberManageVO mberManageVO) throws Exception;
	
	//기업회원 정보 내역 등록
	public void insertCmpUsrHst(MberManageVO mberManageVO) throws Exception;
	//기업회원 정보 내역 조회
	public MberManageVO selectCmpUsrHst(MberManageVO mberManageVO) throws Exception;
	
	//회원 최근 발송 문자내용 3개 불러오기
	public List<MjonMsgSentVO> selectMberMsgSentLatestList(String mberId) throws Exception;
	//성능개선 2024-03-20	
	public List<MjonMsgSentVO> selectMberMsgSentLatestListNew20240320(String mberId) throws Exception;	

	//회원 최근 발송 문자내용 3개 불러오기(예약)
	public List<MjonMsgSentVO> selectMberMsgSentLatestList2(String mberId) throws Exception;
	
	//회원 30분 지연 문자 내용 불러오기
	public List<MjonMsgSentVO> selectMberMsgDelaySentList(String mberId) throws Exception;
	
	//회원 상태값 차단 처리
	public void updateMberSttusBlockAjax(MberManageVO mberManageVO) throws Exception;
	
	//회원 금지어 예외 수정 처리
	public int updateMberExceptSpamYn(MberManageVO mberManageVO) throws Exception;
	
	//스팸처리 회원정보  조회
	public MberManageVO selectSpamMemberInfo(MberManageVO mberManageVO) throws Exception;
	
	//회원 상태값 변경 처리
	public int updateUserMsttus(MberManageVO mberManageVO) throws Exception;

	// 이용정지 사유 수정
	public int updateSpamMemberMemo(MberManageVO mberManageVO) throws Exception;
	
	//회원 탈퇴 상태값 변경 처리
	public int updateUserSecessionMsttus(MberManageVO mberManageVO) throws Exception;
	
	// 휴면회원 변경 처리
	public int updateUserDormant(MberManageVO mberManageVO) throws Exception;
	
	//스팸처리 회원 주소록 다운로드 요청
	public void updateReqeustAddr(MberManageVO mberManageVO) throws Exception;
	//스팸처리 회원 주소록 요청 목록 조회
	public List<MberManageVO> selectRequestAddrList(MberManageVO mberManageVO) throws Exception;
	//스팸처리 회원 주소록 전송 처리
	public void updateSendSttusY(MberManageVO mberManageVO) throws Exception;
	
	//페스워드 수정 중복여부 체크
	public int selectMberPWOverlapCheck(UserManageVO userManageVO) throws Exception;
	
	// 이용정지회원 금일, 금년 잔액 합계
	public MberManageVO selectMberStopCashSum(MberManageVO mberManageVO) throws Exception;	
	
	//기업회원 기업정보 변경신청 취소 처리
	public int updateCmpUserInfoCancel(MberManageVO mberManageVO) throws Exception;

	public String getSecuLoginFlag(String id);
	
	public void updateSecureLoginFlag(MberManageVO mberManageVO) throws Exception;

	public String findTopByregDateFromCertLog(AuthCertVO authCertVO);

	//사용자 헤더 정보(단가, 이벤트 활성화 기간)
	public MberManageVO selectMberHeaderInfo(String mberId) throws Exception;
}