[클론 코딩] 네이버 카페 - 카페 탈퇴

2024. 5. 26. 18:30Project/Naver Cafe

  네이버 카페의 경우 탈퇴 요청시 즉시 탈퇴처리가 이루어진다. 이번에 사용자가 카페를 탈퇴할 수 있는 기능을 구현한다.


CafeMemberController

package CloneCoding.NaverCafe.domain.cafeMember.controller;

@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("/{cafe_url}")
public class CafeMemberController {

    private final CafeMemberService cafeMemberService;

    @DeleteMapping()
    public String deleteCafeMember(@PathVariable("cafe_url") String url,
                                   @RequestHeader("Authorization") String token) {
        log.info("카페 회원 탈퇴");
        return cafeMemberService.deleteCafeMember(url, token);
    }

}

 

  • deleteCafeMember() : 카페 url 정보와 토큰 정보로 cafeMemberService의 deleteCafeMember()를 호출하고 결과를 반환

CafeMemberServiceImpl

package CloneCoding.NaverCafe.domain.cafeMember.service;

@Service
@RequiredArgsConstructor
public class CafeMemberServiceImpl implements CafeMemberService {

    private final CafeMemberRepository cafeMemberRepository;
    private final CafeRepository cafeRepository;
    private final MemberRepository memberRepository;
    private final AesUtil aesUtil;

    @Override
    public String deleteCafeMember(String url, String token) {

        Cafe findcafe = checkCafe(url);
        CafeMember findCafeMember = checkCafeMember(findcafe, token);

        cafeMemberRepository.delete(findCafeMember);

        return DELETE_CAFE_MEMBER_COMPLETE.getMessage();

    }

    private Cafe checkCafe(String url) {
        return cafeRepository.findByUrl(url);
    }

    private CafeMember checkCafeMember(Cafe cafe, String token) {
        String accountId = aesUtil.aesDecode(token);
        return cafeMemberRepository.findByAccountId(cafe, accountId);
    }

}

 

  • deleteCafeMember() : url과 token을 통해 카페 회원을 조회, 해당 엔티티 삭제 후 결과 메시지 반환

API TEST

 

DB - 카페 탈퇴 전

 

  카페 탈퇴전 CAFE_MEMBER 테이블이다. 이번 테스트에서는 eclipse라는 별명을 가진 회원이 탈퇴할 예정이다.

 

API TEST - 카페 탈퇴

 

DB - 카페 탈퇴 후

 

  카페 탈퇴 요청 결과이다. 정상적으로 탈퇴가 완료됬다는 메시지가 반환되었다. 다시 CAFE_MEMBER 테이블을 확인해 보면 정상적으로 eclipse라는 별명을 가진 레코드(엔티티)가 테이블에서 삭제된 것을 확인할 수 있다.