회원 탈퇴 다이어그램.drawio.png

회원 탈퇴 다이어그램.drawio

MemberController

// 회원 탈퇴 확정 시
	@RequestMapping(value = "/memberDelete.do", method = RequestMethod.POST)
	public ResponseEntity deleteMember(@RequestParam("memberId") String memberId, HttpServletRequest requ,
			HttpSession session) throws Exception { // ResponseEntity로 탈퇴되었습니다 와 함께 메인으로 이동

		ResponseEntity res = null;
		
		// 세션에서 아이디 가져오기
		MemberDomain memberDomain = (MemberDomain) session.getAttribute("member");
		String memberIdCheck = memberDomain.getMemberId();
		System.out.println("memberId야 들어왔니? " + memberId);

		
		if(memberId.equals(memberIdCheck)) {
		boolean deleteQuietlyCheck = true;
    	boolean deleteMyHomeCheck = false;
    	
    	// 파일 삭제 // 커버파일삭제 추가 03.18
    	String fileRoot = "C:\\\\gami\\\\memberProfileImage\\\\" + memberId + "\\\\";
    	
    	File targetFile = new File(fileRoot);
    	
    	if(targetFile.isDirectory()) { // 해당 게시글 폴더가 존재하면 폴더 째로 삭제.
    		try {
    			FileUtils.deleteQuietly(targetFile); 
    			
    		}catch(Exception e){
    			e.printStackTrace();
    			System.out.println("파일 삭제를 실패하였습니다.");
    			deleteQuietlyCheck = false;
    		}
    	}
 	
    	// 탈퇴
    	try {
    		memberService.deleteMember(memberId);

			session.removeAttribute("member");
			session.removeAttribute("isLogOn");
    		deleteMyHomeCheck = true;
    	}catch(Exception e){
    		e.printStackTrace();
			System.out.println("게시글 삭제를 실패하였습니다.");
    	}
    	
        if (deleteMyHomeCheck && deleteQuietlyCheck) {
        	String msg = "<script>";
			msg += " alert('탈퇴되었습니다.');";
			msg += " location.href='" + requ.getContextPath() + "/main.do'; ";
			msg += " </script>";
			HttpHeaders responseHeaders = new HttpHeaders();
			responseHeaders.add("Content-Type", "text/html; charset=utf-8");
			res = new ResponseEntity(msg, responseHeaders, HttpStatus.CREATED);
        } else {
        	String msg = "<script>";
			msg += " alert('오류가 발생하였습니다. 다시 시도해 주세요.');";
			msg += " location.href='" + requ.getContextPath() + "/member/memberDeleteLastCh.do'; ";
			msg += " </script>";
			HttpHeaders responseHeaders = new HttpHeaders();
			responseHeaders.add("Content-Type", "text/html; charset=utf-8");
			res = new ResponseEntity(msg, responseHeaders, HttpStatus.CREATED);
        }	
		}
		return res;
    }

MemberServiceImpl

// 회원 탈퇴 메서드
	@Override
	public void deleteMember(String memberId) throws Exception {
		memberDAO.deleteMember(memberId);
	}

MemberDAOImpl

// 회원 탈퇴 메서드
	@Override
	public void deleteMember(String memberId) throws DataAccessException {
		sqlSession.delete("mapper.member.deleteMember", memberId);
	}

member.xml

  <!-- 회원 탈퇴 -->
  <update id="deleteMember" parameterType="String">
  <![CDATA[
    BEGIN
    
    UPDATE boardMyhome
    set memberId= '탈퇴회원'
    where memberId= #{memberId};
    
    UPDATE reply
    set memberId= '탈퇴회원'
    where memberId= #{memberId};
    
    UPDATE boardMyHomeLikes
    set memberId= '탈퇴회원'
    where memberId= #{memberId};
    
    UPDATE review
    set memberId= '탈퇴회원'
    where memberId= #{memberId};
    
    UPDATE orders
    set memberId= '탈퇴회원'
    where memberId= #{memberId};
    
    UPDATE cre
    set memberId= '탈퇴회원'
    where memberId= #{memberId};
    
    UPDATE delivery
    set memberId= '탈퇴회원'
    where memberId= #{memberId};
    
    UPDATE boardQuestion
    set writerId= '탈퇴회원'
    where writerId= #{memberId};
    
    DELETE member
    where memberId= #{memberId};
    
    END;
	]]>
  </update>