New World

[해외공구관리사이트] 회원 - 수정 & 탈퇴 본문

Project/old

[해외공구관리사이트] 회원 - 수정 & 탈퇴

hyeovi 2022. 9. 6. 15:35
728x90
반응형

수정 페이지의 기능

 

회원 가입 페이지의 기능과 같이 만들면서도 몇가지 부분을 추가적으로 작업하였습니다.

 

1. 입력값이 빈 경우, 기존에 있던 계정 정보와 같이 넣어준다.

 

탈퇴 기능

 

1. 회원 정보와 캐쉬 지갑이 사라지도록 작업하였습니다.

 

 

 

 

 

controller

ㄴ MemberController

    @RequestMapping("/profile-edit")
    public String edit() {
        return "sample/member/edit";
    }

API

ㄴ MemberApiController

회원을 업데이트해주기 위해 만들어준 것으로 현재 로그인한 회원의 정보를 받아 수정할 수 있도록 해줍니다

    // 프로필 수정
    @PutMapping("/api/member/edit")
    public UpdateMemberResponse updateMember(@SessionAttribute("mSession") Long nowLoginMemberNo,
            @RequestBody @Valid UpdateMemberRequest request) {
        Member myMember = memberService.myInfo(nowLoginMemberNo);
        memberService.update(myMember, request, fileService.fileUrl);
        return new UpdateMemberResponse(myMember.getNo(), request.getName(), request.getId());
    }
    
    @Data
    @AllArgsConstructor
    static class UpdateMemberResponse {
        private Long no;
        private String name;
        private String id;
    }

Service

ㄴ MemberService

ㄴ MemberServiceImpl

length() 을 통해 입력값의 크기가 0이 아닌지 파악한다. set으로 DB로 바로 접근이 가능하기 때문에 따로 repository는 사용하지 않았다

    @Override
    @Transactional
    public void update(Member member, UpdateMemberRequest request, String fileUrl) {
        if (request.getName().length() != 0) {
            member.setName(request.getName());
        }
        if (request.getId().length() != 0) {
            validateDuplicateMember(request.getId());

            member.setId(request.getId());
        }
        if (request.getPwd().length() != 0) {
            pwd(request.getPwd());
            checkPwd(request.getPwd(), request.getCheckPwd());

            member.setPwd(request.getPwd());
        }
        if (fileUrl != null) {
            member.setPhotoUrl(fileUrl);
        }
        if (request.getPhone().length() != 0) {
            checkPhone(request.getPhone());

            member.setPhone(request.getPhone());
        }
        if (request.getCity().length() != 0 && request.getStreet().length() != 0
                && request.getZipcode().length() != 0) {
            Address address = new Address(request.getCity(), request.getStreet(),
                    request.getZipcode());

            member.setAddress(address);
        }
    }

controller

ㄴ MemberController

회원 탈퇴할 회원 정보를 세션으로 받아 service 쪽으로 넘겨준다

    // 회원 탈퇴
    @DeleteMapping("/api/member/remove")
    public void deleteMember(@SessionAttribute(name = "mSession") Long nowLoginMemberNo) {
        memberService.delete(memberService.myInfo(nowLoginMemberNo).getNo());
    }

Service

ㄴ MemberService

ㄴ MemberServiceImpl

탈퇴할 아이디를 넘겨주어 JPA에서 삭제해준다

    @Override
    @Transactional
    public void delete(Long no) {
        if (myInfo(no) != null) {
            memberRepositoryJPA.deleteById(no);
        } else {
            throw new IllegalStateException("회원을 찾을 수 없습니다.");
        }
    }
반응형
Comments