cs/java-spring-boot

[Zero-base] 7-6. 회원 상세 목록 구현

Lomo 2022. 2. 24. 16:40
반응형

회원 상세 목록 구현

 

list.html

  • ID(이메일)을 링크로 변경

 

 

 

  • 링크로 변경된 모습

 

 

 

  • 링크로 해당 ID값이 전달 확인
  • /detail.do?id=01test@gmail.com

 

 

 

  • 링크로 해당 ID값이 전달 확인
  • /detail.do?id=02est@gmail.com

 

 

 

list.html

  • userId를 받도록 수정

 

 

 

detail.html

  • 회원 상세 정보(detail.html) 페이지 생성

 

 

 

MemberParam.java

 

 

 

AdminMemberController.java

  • 상세 페이지 맵핑

 

 

 

localhost:8080/admin/member/detail.do?userId=01test@gmail.com

  • 상세 페이지 맵핑 확인

 

 

 

AdminMemberController.java

  • 'member' 모델 생성
public class AdminMemberController {

    @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";
    }

 

 

 

MemberService.java

public interface MemberService extends UserDetailsService {
     /**
     * 회원 상세 정보
     */
    MemberDto detail(String userId);
}

 

 

 

MemberDto.java

public class MemberDto {

    public static MemberDto of(Member member) {

        return MemberDto.builder()
                .userId(member.getUserId())
                .userName(member.getUserName())
                .phone(member.getPhone())
//              .password(member.getPassword())
                .regDt(member.getRegDt())
                .emailAuthYn(member.isEmailAuthYn())
                .emailAuthDt(member.getEmailAuthDt())
                .emailAuthKey(member.getEmailAuthKey())
                .resetPasswordKey(member.getResetPasswordKey())
                .resetPasswordLimitDt(member.getResetPasswordLimitDt())
                .adminYn(member.isAdminYn())
                .build();
    }

 

 

 

MemberServiceImpl.java

public class MemberServiceImpl implements MemberService {

    @Override
    public MemberDto detail(String userId) {

        Optional<Member> optionalMember = memberRepository.findById(userId);
        if (!optionalMember.isPresent()) {
            return null;
        }

        Member member = optionalMember.get();

        return MemberDto.of(member);
    }

 

 

 

detail.html

  • member 값 출력 테스트용 코드

 

 

 

  • MemberDto 값 출력 확인

 

 

 

detail.html

  • 상세 페이지에 테이블 생성
<table>
    <tbody>
        <tr>
            <th>ID</th>
            <td>
                <p th:text="${member.userId}"></p>
            </td>
        </tr>
        <tr>
            <th>이름</th>
            <td>
                <p th:text="${member.userName}"></p>
            </td>
        </tr>
        <tr>
            <th>연락처</th>
            <td>
                <p th:text="${member.phone}"></p>
            </td>
        </tr>
        <tr>
            <th>가입일</th>
            <td>
                <p th:text="${member.regDt}"></p>
            </td>
        </tr>
        <tr>
            <th>이메일 인증</th>
            <td>
                <p th:text="${member.emailAuthYn}"></p>
            </td>
        </tr>
        <tr>
            <th>관리자 여부</th>
            <td>
                <p th:text="${member.adminYn}"></p>
            </td>
        </tr>
    </tbody>
</table>

 

 

 

  • 생성된 테이블 확인

 

 

 

detail.html

  • 가독성을 위한 스타일 추가

 

 

 

  • 스타일 적용된 모습

 

 

 

  • 리스트로 돌아가기 링크 추가

 

 

 

  • 웹페이지에서 확인

 

 

 

  • 회원 목록 페이지 에러

 

 

 

MemberDto.java

  • @AllArgsConstructor 추가
  • @NoArgusConstructor 추가
package com.zerobase.fastlms.admin.dto;
import com.zerobase.fastlms.member.entity.Member;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@AllArgsConstructor
@NoArgsConstructor
@Builder
@Data
public class MemberDto {

    String userId;
    String userName;
    String phone;
    String password;
    LocalDateTime regDt;

    boolean emailAuthYn;
    String emailAuthKey;
    LocalDateTime emailAuthDt;

    String resetPasswordKey;
    LocalDateTime resetPasswordLimitDt;

    boolean adminYn;

//Add column
    long totalCount;
    long seq;

    public static MemberDto of(Member member) {

        return MemberDto.builder()
                .userId(member.getUserId())
                .userName(member.getUserName())
                .phone(member.getPhone())
//              .password(member.getPassword())
                .regDt(member.getRegDt())
                .emailAuthYn(member.isEmailAuthYn())
                .emailAuthDt(member.getEmailAuthDt())
                .emailAuthKey(member.getEmailAuthKey())
                .resetPasswordKey(member.getResetPasswordKey())
                .resetPasswordLimitDt(member.getResetPasswordLimitDt())
                .adminYn(member.isAdminYn())
                .build();
    }
}

 

 

 

  • 회원 관리 페이지(list.html) 정상 시현 확인

 


반응형