본문 바로가기
프로젝트/PongGame

Account 생성

by 히포파타마스 2022. 4. 14.

Account 생성

인증, 보안과 같은 서비스를 적용시키기 위해서는 그 대상이 되는 객체가 존재해야 한다. 

때문에 회원의 계정에 해당하는 Account 엔티티를 작성한다.

 

[Account]

@Where(clause = "deleted = false")
@Entity
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Account {

    @Id @GeneratedValue
    @Column(name = "account_id")
    private Long id;

    private String username;

    private String password;

    private String nickname;

    private String profileImgName;
    
    private int win = 0;

    private int lose = 0;
    
    private int point = 0;

    @Enumerated(EnumType.STRING)
    private Role role;

    @Enumerated(EnumType.STRING)
    private Gender gender;

    private LocalDate birthDate;

    //수정 관련//
    public void updateInfo(Account updatedAccount) {
        if (updatedAccount.nickname != null) {
            this.nickname = updatedAccount.getNickname();
        }
        if (updatedAccount.gender != null) {
            this.gender = updatedAccount.getGender();
        }
        if (updatedAccount.birthDate != null) {
            this.birthDate = updatedAccount.getBirthDate();
        }
    }

    public void updateProfileImg(String profileImgName) {
        this.profileImgName = profileImgName;
    }
    //수정 관련//
    
    //게임 관련//
    public void win() {
        win += 1;
    }

    public void lose() {
        lose += 1;
    }
    
    public void point() {
        if (this.win == 0) {
            this.point = 0;
        } else {
            this.point = (win * 100) * (win / (win + lose));
        }
    }
    //게임 관련//

    public void settingRole(Role role) {
        this.role = role;
    }
    
    
}

● win, lose : 게임 승, 패에 따라 증가되는 필드

● role : 인가시 사용되는 역할

ex) USER, MANAGER 등

● @Enumerated : enum 타입의 필드를 db와 매핑하기 위해 붙여주는 어노테이션

◎ 기본적으로 db에 숫자로 표현되기 때문에 알아보기 어렵고 enum 클래스의 필드가 추가됬을 때 순서가 밀릴수 있는 치명적인 단점이 있다.

◎ 때문에 enum 클래스의 필드 이름 그대로 db에 반영되도록 EnumType.String을 설정해주었다.

● 추후에 수정가능한 필드들에 대한 메서드를 작성하였다(update~).

 

 

[Role]

import lombok.Getter;

@Getter
public enum Role {
    User("ROLE_USER"), NotVerified("ROLE_NotVerifiedUser");

    private String roleName;

    Role(String role) {
        this.roleName = role;
    }
}

● User : 인가된 회원

● NotVerified : 비회원

'프로젝트 > PongGame' 카테고리의 다른 글

LoginAccountIdArgumentResolver  (0) 2022.04.28
FileProcessor  (0) 2022.04.28
Spring Security, JWT, 인증, 인가  (5) 2022.04.18
build.gradle, application.yml  (0) 2022.04.13
PongGame  (0) 2022.04.10

댓글