diff --git a/.github/workflows/ci_checker_on_main_push.yml b/.github/workflows/ci_checker_on_main_push.yml index 88bbbfe..4a0f88c 100644 --- a/.github/workflows/ci_checker_on_main_push.yml +++ b/.github/workflows/ci_checker_on_main_push.yml @@ -1,4 +1,4 @@ -name: Uni PR Builder +name: On Push CI on: push: @@ -14,16 +14,6 @@ jobs: tasks : '["checkstyleMain", "checkstyleTest", "build -x test", "test"]' secrets: inherit - publish-test-result: - needs: - - ci - runs-on: ubuntu-latest - steps: - - name: Publish Test Results - uses: EnricoMi/publish-unit-test-result-action@v1 - with: - files: build/test-results/**/*.xml - result-failure: needs: - ci diff --git a/src/main/java/com/universe/uni/domain/entity/MissionContent.java b/src/main/java/com/universe/uni/domain/entity/MissionContent.java index 68eb766..066a3ad 100644 --- a/src/main/java/com/universe/uni/domain/entity/MissionContent.java +++ b/src/main/java/com/universe/uni/domain/entity/MissionContent.java @@ -32,6 +32,6 @@ public class MissionContent { @Column(name = "content", nullable = false) private String content; - @Column(name = "image", nullable = false) - private String image; + @Column(name = "recommend_time", nullable = false) + private String recommendTime; } diff --git a/src/main/java/com/universe/uni/dto/MissionContentDto.java b/src/main/java/com/universe/uni/dto/MissionContentDto.java index 0a7dcaa..b1c85c2 100644 --- a/src/main/java/com/universe/uni/dto/MissionContentDto.java +++ b/src/main/java/com/universe/uni/dto/MissionContentDto.java @@ -1,13 +1,21 @@ package com.universe.uni.dto; +import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Builder; -@JsonPropertyOrder({"id", "content"}) +@JsonPropertyOrder({"id", "content", "recommend_time"}) +@Schema(description = "미션 내용을 담는 DTO") @Builder public record MissionContentDto( - Long id, - String content + @Schema(description = "미션 내용 id") + Long id, + @Schema(description = "미션 내용") + String content, + @Schema(description = "미션 추천 시간") + @JsonProperty("recommend_time") + String recommendTime ) { } diff --git a/src/main/java/com/universe/uni/dto/response/RoundMissionContentDto.java b/src/main/java/com/universe/uni/dto/response/RoundMissionContentDto.java index 8c1640a..d38edbd 100644 --- a/src/main/java/com/universe/uni/dto/response/RoundMissionContentDto.java +++ b/src/main/java/com/universe/uni/dto/response/RoundMissionContentDto.java @@ -9,12 +9,12 @@ public class RoundMissionContentDto { private final Long id; private final MissionCategoryDto missionCategory; private final String content; - private final String image; + private final String recommendTime; public RoundMissionContentDto(MissionContent missionContent) { this.id = missionContent.getId(); this.missionCategory = new MissionCategoryDto(missionContent.getMissionCategory()); this.content = missionContent.getContent(); - this.image = missionContent.getImage(); + this.recommendTime = missionContent.getRecommendTime(); } } \ No newline at end of file diff --git a/src/main/java/com/universe/uni/service/MissionService.java b/src/main/java/com/universe/uni/service/MissionService.java index b5f72e3..c70f06c 100644 --- a/src/main/java/com/universe/uni/service/MissionService.java +++ b/src/main/java/com/universe/uni/service/MissionService.java @@ -3,13 +3,6 @@ import static com.universe.uni.exception.dto.ErrorType.NOT_FOUND_MISSION_CATEGORY_EXCEPTION; import static com.universe.uni.exception.dto.ErrorType.NOT_FOUND_MISSION_CONTENT; -import java.util.List; -import java.util.Random; -import java.util.stream.Collectors; - -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - import com.universe.uni.domain.entity.MissionCategory; import com.universe.uni.domain.entity.MissionContent; import com.universe.uni.dto.MissionContentDto; @@ -18,6 +11,13 @@ import com.universe.uni.repository.MissionCategoryRepository; import com.universe.uni.repository.MissionContentRepository; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Random; +import java.util.stream.Collectors; + import lombok.RequiredArgsConstructor; @Service @@ -25,65 +25,66 @@ @Transactional public class MissionService { - private final MissionCategoryRepository missionCategoryRepository; - private final MissionContentRepository missionContentRepository; - - public MissionCategory getMissionCategoryById(Long missionCategoryId) { - return missionCategoryRepository.findById(missionCategoryId) - .orElseThrow(() -> new NotFoundException(NOT_FOUND_MISSION_CATEGORY_EXCEPTION)); - } - - public MissionContent getMissionContentByRandom(MissionCategory missionCategory) { - List missionContentList = missionContentRepository.findByMissionCategory(missionCategory); - - try { - int randomIndex = new Random().nextInt(missionContentList.size()); - return missionContentList.get(randomIndex); - } catch (Exception exception) { - throw new NotFoundException(NOT_FOUND_MISSION_CONTENT); - } - } - - public MissionCategoryResponseDto getMissionCategory(Long missionCategoryId) { - MissionCategory missionCategory = missionCategoryRepository.findById(missionCategoryId) - .orElseThrow(() -> new NotFoundException(NOT_FOUND_MISSION_CATEGORY_EXCEPTION)); - return fromMissionCategoryToMissionCategoryResponseDto(missionCategory); - } - - public List getMissionCategoryList() { - List missionCategoryList = missionCategoryRepository.findAll(); - return missionCategoryList - .stream() - .map(this::fromMissionCategoryToMissionCategoryResponseDto) - .toList(); - } - - private MissionCategoryResponseDto fromMissionCategoryToMissionCategoryResponseDto( - MissionCategory missionCategory) { - - List missionContentList = missionContentRepository.findByMissionCategoryId( - missionCategory.getId()); - - List missionContentDtoList = missionContentList.stream() - .map(this::fromMissionContentToMissionContentResponseDto) - .collect(Collectors.toList()); - - return MissionCategoryResponseDto.builder() - .id(missionCategory.getId()) - .title(missionCategory.getTitle()) - .description(missionCategory.getDescription()) - .rule(missionCategory.getRule()) - .tip(missionCategory.getTip()) - .image(missionCategory.getImage()) - .missionContentList(missionContentDtoList) - .build(); - } - - private MissionContentDto fromMissionContentToMissionContentResponseDto(MissionContent missionContent) { - return MissionContentDto.builder() - .id(missionContent.getId()) - .content(missionContent.getContent()) - .build(); - } + private final MissionCategoryRepository missionCategoryRepository; + private final MissionContentRepository missionContentRepository; + + public MissionCategory getMissionCategoryById(Long missionCategoryId) { + return missionCategoryRepository.findById(missionCategoryId) + .orElseThrow(() -> new NotFoundException(NOT_FOUND_MISSION_CATEGORY_EXCEPTION)); + } + + public MissionContent getMissionContentByRandom(MissionCategory missionCategory) { + List missionContentList = missionContentRepository.findByMissionCategory(missionCategory); + + try { + int randomIndex = new Random().nextInt(missionContentList.size()); + return missionContentList.get(randomIndex); + } catch (Exception exception) { + throw new NotFoundException(NOT_FOUND_MISSION_CONTENT); + } + } + + public MissionCategoryResponseDto getMissionCategory(Long missionCategoryId) { + MissionCategory missionCategory = missionCategoryRepository.findById(missionCategoryId) + .orElseThrow(() -> new NotFoundException(NOT_FOUND_MISSION_CATEGORY_EXCEPTION)); + return fromMissionCategoryToMissionCategoryResponseDto(missionCategory); + } + + public List getMissionCategoryList() { + List missionCategoryList = missionCategoryRepository.findAll(); + return missionCategoryList + .stream() + .map(this::fromMissionCategoryToMissionCategoryResponseDto) + .toList(); + } + + private MissionCategoryResponseDto fromMissionCategoryToMissionCategoryResponseDto( + MissionCategory missionCategory) { + + List missionContentList = missionContentRepository.findByMissionCategoryId( + missionCategory.getId()); + + List missionContentDtoList = missionContentList.stream() + .map(this::fromMissionContentToMissionContentResponseDto) + .collect(Collectors.toList()); + + return MissionCategoryResponseDto.builder() + .id(missionCategory.getId()) + .title(missionCategory.getTitle()) + .description(missionCategory.getDescription()) + .rule(missionCategory.getRule()) + .tip(missionCategory.getTip()) + .image(missionCategory.getImage()) + .missionContentList(missionContentDtoList) + .build(); + } + + private MissionContentDto fromMissionContentToMissionContentResponseDto(MissionContent missionContent) { + return MissionContentDto.builder() + .id(missionContent.getId()) + .content(missionContent.getContent()) + .recommendTime(missionContent.getRecommendTime()) + .build(); + } }