
회원 탈퇴 다이어그램.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>