diff --git a/backend/streetdrop-api/src/main/java/com/depromeet/domains/level/controller/LevelController.java b/backend/streetdrop-api/src/main/java/com/depromeet/domains/level/controller/LevelController.java new file mode 100644 index 00000000..c6a5069d --- /dev/null +++ b/backend/streetdrop-api/src/main/java/com/depromeet/domains/level/controller/LevelController.java @@ -0,0 +1,28 @@ +package com.depromeet.domains.level.controller; + +import com.depromeet.common.dto.ResponseDto; +import com.depromeet.domains.level.dto.LevelPolicyResponseDto; +import com.depromeet.domains.level.service.LevelService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/level") +@RequiredArgsConstructor +@Tag(name = "Level Controller", description = "Level API") +public class LevelController { + + private final LevelService levelService; + + @Operation(summary = "레벨 정책 확인") + @GetMapping("/policy") + public ResponseEntity getPolicy() { + var response = levelService.getPolicy(); + return ResponseDto.ok(response); + } +} diff --git a/backend/streetdrop-api/src/main/java/com/depromeet/domains/level/data/LevelPolicy.java b/backend/streetdrop-api/src/main/java/com/depromeet/domains/level/data/LevelPolicy.java new file mode 100644 index 00000000..9c71ad00 --- /dev/null +++ b/backend/streetdrop-api/src/main/java/com/depromeet/domains/level/data/LevelPolicy.java @@ -0,0 +1,19 @@ +package com.depromeet.domains.level.data; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum LevelPolicy { + LEVEL_1("드랍스타터", "신규유저", "https://street-drop.s3.ap-northeast-2.amazonaws.com/USER_PROFILE/Level1.png", 1L, 0L, 5L), + LEVEL_2("프로 드랍퍼", "5개 이상 드랍한 유저", "https://street-drop.s3.ap-northeast-2.amazonaws.com/USER_PROFILE/Level2.png", 2L, 5L, 25L), + LEVEL_3("스폐셜 DJ", "25개 이상 드랍한 유저", "https://street-drop.s3.ap-northeast-2.amazonaws.com/USER_PROFILE/Level3.png", 3L, 25L, 50L); + + private final String levelName; + private final String description; + private final String levelImage; + private final Long level; + private final Long dropCountStart; + private final Long dropCountEnd; +} diff --git a/backend/streetdrop-api/src/main/java/com/depromeet/domains/level/dto/LevelPolicyDataDto.java b/backend/streetdrop-api/src/main/java/com/depromeet/domains/level/dto/LevelPolicyDataDto.java new file mode 100644 index 00000000..9c9bc116 --- /dev/null +++ b/backend/streetdrop-api/src/main/java/com/depromeet/domains/level/dto/LevelPolicyDataDto.java @@ -0,0 +1,13 @@ +package com.depromeet.domains.level.dto; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter +public class LevelPolicyDataDto { + private final Long level; + private final String levelName; + private final String levelDescription; + private final String levelImage; +} diff --git a/backend/streetdrop-api/src/main/java/com/depromeet/domains/level/dto/LevelPolicyResponseDto.java b/backend/streetdrop-api/src/main/java/com/depromeet/domains/level/dto/LevelPolicyResponseDto.java new file mode 100644 index 00000000..ad6b54b6 --- /dev/null +++ b/backend/streetdrop-api/src/main/java/com/depromeet/domains/level/dto/LevelPolicyResponseDto.java @@ -0,0 +1,12 @@ +package com.depromeet.domains.level.dto; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.List; + +@Getter +@AllArgsConstructor +public class LevelPolicyResponseDto { + private final List data; +} diff --git a/backend/streetdrop-api/src/main/java/com/depromeet/domains/level/service/LevelService.java b/backend/streetdrop-api/src/main/java/com/depromeet/domains/level/service/LevelService.java new file mode 100644 index 00000000..de885ac9 --- /dev/null +++ b/backend/streetdrop-api/src/main/java/com/depromeet/domains/level/service/LevelService.java @@ -0,0 +1,28 @@ +package com.depromeet.domains.level.service; + +import com.depromeet.domains.level.data.LevelPolicy; +import com.depromeet.domains.level.dto.LevelPolicyDataDto; +import com.depromeet.domains.level.dto.LevelPolicyResponseDto; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Arrays; + +@RequiredArgsConstructor +@Service +public class LevelService { + + public LevelPolicyResponseDto getPolicy() { + return new LevelPolicyResponseDto( + Arrays.stream(LevelPolicy.values()) + .map(levelPolicy -> new LevelPolicyDataDto( + levelPolicy.getLevel(), + levelPolicy.getLevelName(), + levelPolicy.getDescription(), + levelPolicy.getLevelImage() + )) + .toList() + ); + } + +}