“사용자 레벨 관리 기능 추가” 를 이용하여 작성해보겠습니다.

사용자 레벨 관리 기능 추가


트랜잭션을 처리할 수 있는 상황을 만들기 위해 기존 User 에 활동 내역에 따라 레벨(Level)을 조정해주는 기능을 추가해보겠습니다.

레벨은 다음과 같은 규칙으로 할당되고, 조정됩니다.

일괄적으로 유저 목록을 불러와서 레벨을 업그레이드하는 로직을 차근차근 작성해보겠습니다.

먼저, 효율적인 레벨 값 관리를 위해 다음과 같이 Level 이라는 enum을 선언합니다.

@AllArgsConstructor
public enum Level {
    BRONZE(1),
    SILVER(2),
    GOLD(3);

    private final int value;

    public int getIntValue() {
        return value;
    }

    public static Level valueOf(int value) {
       return Arrays.asList(Level.values())
               .stream()
               .filter(level -> level.getIntValue() == value)
               .findFirst()
               .orElseThrow(() -> new AssertionError("Unknown value: " + value));
    }
}

User 클래스에 level, 로그인 횟수 loginCount, 추천 횟수 recommendCount 필드를 추가해줍니다.

@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private String id;
    private String nickName;
    //추가
    private Level level;
    private int loginCount;
    private int recommendCount;
}