@Overridepublic MemberDto detail(String userId){
Optional<Member> optionalMember = memberRepository.findById(userId);
if(!optionalMember.isPresent()){
returnnull;
}
// optional 멤버 존재할 때만
Member member = optionalMember.get();
return MemberDto.of(member);
}
- 컨트롤러
java
열기
@GetMapping("/admin/member/detail.do")public String detail(Model model, MemberParam parameter){
parameter.init(); // 유효한 값이 되도록 만든다.
MemberDto member = memberService.detail(parameter.getUserId());
model.addAttribute("member", member);
return"admin/member/detail";
}
=================오류 =======================
================= 오류 ==================
- 오류: SQL문을 건드리지 않았는데 다음과 같은 오류가 났다.
- 원인: DTO 클래스를 빌드 하기 위해서 @NoArgs, @AllArgs 를 붙여야 한다.
Note) 실행 결과
- 이제 이 데이터를 표로 만들자
Ex) 테이블로 만들기
html
열기
<!doctype html><htmllang="ko"xmlns:th="http://www.thymeleaf.org"><head><metacharset="UTF-8"><title>관리자 화면</title><style></style></head><body><h1>관리자 회원 관리 - 회원 상세 정보</h1><!-- <div th:replace="/fragments/layout.html :: fragment-body-menu" ></div>--><div><ahref="/admin/main.do">관리자 메인</a>
|
<ahref="/admin/member/list.do">회원 관리</a>
|
<ahref="#">카테고리 관리</a>
|
<ahref="#">강의 관리</a>
|
<ahref="/member/logout">로그 아웃</a><br><hr/></div><divclass="detail"><table><tbody><tr><th>아이디</th><td><pth:text="${member.userId}"></p></td></tr><tr><th>이름</th><td><pth:text="${member.userName}"></p></td></tr><tr><th>연락처</th><td><pth:text="${member.phone}"></p></td></tr><tr><th>가입일</th><td><pth:text="${member.regDt}"></p></td></tr><tr><th>이메일 인증</th><td><pth:text="${member.isEmailAuthYn()}"></p></td></tr><tr><th>관리자 여부</th><td><pth:text="${member.isAdminYn()}"></p></td></tr></tbody></table></div></body></html>
- 임플 - register()에 추가한다. - 회원 가입 중일 때는 멤버 코드가 요청 중이다.
-> emailAuth() 에서 이메일 인증을 한 다음에 회원이 되도록 구현
java
열기
Member member = Member.builder()
.userId(parameter.getUserId())
.userName(parameter.getUserName())
.phone(parameter.getPhone())
.password(encPassword)
.regDt(LocalDateTime.now())
.emailAuthYn(false)
.emailAuthKey(uuid)
.userStatus(Member.MEMBER_STATUS_REQ)
.build();
- emailAuth() => ING를 넣어줘야 이용 가능한 회원이 된다.
java
열기
@OverridepublicbooleanemailAuth(String uuid){ // 이메일 인증
Optional<Member> optionalMember = memberRepository.findByEmailAuthKey(uuid); // 있으면 Optional<Member> 가 리턴된다.if(!optionalMember.isPresent()){
returnfalse;
}
Member member = optionalMember.get(); // 존재하는 경우 멤버// 이미 활성화됐기 때문에 또 활성화할 필요없다.if(member.isEmailAuthYn()){
returnfalse;
}
member.setUserStatus(MemberCode.MEMBER_STATUS_ING);
member.setEmailAuthYn(true);
member.setEmailAuthDt(LocalDateTime.now());
memberRepository.save(member);
returntrue;
}
<tr><th>회원 상태</th><td><p>
현재 상태: <spanth:text="${member.userStatus}"></span></p><selectname="userStatus"><optionvalue="REQ">가입 승인 중</option><optionvalue="ING">정상 이용 중</option><optionvalue="STOP">정지 중</option></select><pth:text="${member.userStatus}"></p></td></tr>
- 관리자가 옵션을 선택해서 변경 가능하도록 구현한다.
- 상태 변경 버튼을 누르면 서버로 전송되게끔 <form> 으로 감싼다.
-> 상태만 전송하면 안되니까 <input> 으로 아이디도 함께 보낸다.
html
열기
<formmethod="post"action="/admin/member/status.do"><inputtype="hidden"th:value="${member.userId}"/><selectname="userStatus"><optionvalue="REQ">가입 승인 중</option><optionvalue="ING">정상 이용 중</option><optionvalue="STOP">정지 중</option></select><buttontype="submit">상태 변경</button></form>