New World
[해외공구관리사이트] 회원 - 수정 & 탈퇴 본문
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("회원을 찾을 수 없습니다.");
}
}
반응형
'Project > old' 카테고리의 다른 글
[해외공구관리사이트] 프로젝트 - 수정 & 삭제 (0) | 2022.09.06 |
---|---|
[해외공구관리사이트] 프로젝트 - 생성 (0) | 2022.09.06 |
[해외공구관리사이트] 회원 - 내 정보 (0) | 2022.09.06 |
[해외공구관리사이트] 회원 - 로그인 & 로그아웃 (0) | 2022.09.05 |
[해외공구관리사이트] 회원 - 가입 (0) | 2022.09.05 |
Comments