“사용자 레벨 관리 기능 추가” 를 이용하여 작성해보겠습니다.
트랜잭션을 처리할 수 있는 상황을 만들기 위해 기존 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;
}