Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,21 +1,12 @@
package TtattaBackend.ttatta.converter;

import TtattaBackend.ttatta.domain.Challenges;
import TtattaBackend.ttatta.domain.Diaries;
import TtattaBackend.ttatta.domain.DiaryPhotos;
import TtattaBackend.ttatta.web.dto.ChallengeRequestDTO;
import TtattaBackend.ttatta.web.dto.ChallengeResponeseDTO;
import TtattaBackend.ttatta.web.dto.DiaryResponseDTO;
import org.springframework.data.domain.Page;

import java.util.List;
import java.util.stream.Collectors;

import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.List;
import java.util.stream.Collectors;

public class ChallengeConverter {

public static Challenges toChallenge(ChallengeRequestDTO.CreateChallengeRequestDTO request) {
Expand Down Expand Up @@ -48,6 +39,7 @@ public static ChallengeResponeseDTO.ChallengeResultDTO toChallengeResultDTO(Chal
return ChallengeResponeseDTO.ChallengeResultDTO.builder()
.challengeId(challenge.getId())
.title(challenge.getTitle())
.content(challenge.getContent())
.isCompleted(challenge.getIsCompleted())
.build();
}
Expand All @@ -61,21 +53,21 @@ public static ChallengeResponeseDTO.ChallengeListResultDTO toChallengeListResult
.build();
}

public static ChallengeResponeseDTO.FailChallengeResultDTO toFailChallengeResultDTO(Challenges challenge, int term) {
return ChallengeResponeseDTO.FailChallengeResultDTO.builder()
public static ChallengeResponeseDTO.GetAllPastChallengeResultDTO toGetAllPastChallengeResultDTO(Challenges challenge) {
return ChallengeResponeseDTO.GetAllPastChallengeResultDTO.builder()
.challengeId(challenge.getId())
.title(challenge.getTitle())
.content(challenge.getContent())
.term(term)
.isCompleted(challenge.getIsCompleted())
.build();
}

public static ChallengeResponeseDTO.FailChallengeListResultDTO toFailChallengeListResultDTO(List<Challenges> challengeList) {
List<ChallengeResponeseDTO.FailChallengeResultDTO> challengeListDTO = challengeList.stream()
.map(challenge -> ChallengeConverter.toFailChallengeResultDTO(challenge, (int) ChronoUnit.DAYS.between(challenge.getCreatedAt(), LocalDateTime.now()))).collect(Collectors.toList());
public static ChallengeResponeseDTO.GetAllPastChallengeListResultDTO toGetAllPastChallengeListResultDTO(List<Challenges> challengeList) {
List<ChallengeResponeseDTO.GetAllPastChallengeResultDTO> challengeListDTO = challengeList.stream()
.map(challenge -> ChallengeConverter.toGetAllPastChallengeResultDTO(challenge)).collect(Collectors.toList());

return ChallengeResponeseDTO.FailChallengeListResultDTO.builder()
.failChallengeList(challengeListDTO)
return ChallengeResponeseDTO.GetAllPastChallengeListResultDTO.builder()
.getAllPastChallengeResultDTOList(challengeListDTO)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,14 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

public interface ChallengeRepository extends JpaRepository<Challenges, Long> {
@Query("SELECT COUNT(c) FROM Challenges c WHERE c.users = :user AND DATE(c.createdAt) = DATE(:targetDate)")
int countByCreatedAtOn(@Param("user") Users user, @Param("targetDate") LocalDateTime targetDate);
Challenges findByIdAndUsers(Long challengeId, Users user);
@Query("SELECT c FROM Challenges c WHERE c.users = :user AND DATE(c.createdAt) = :targetDate ORDER BY c.createdAt ASC")
List<Challenges> findByUsersAndCreatedAtDateOrderByCreatedAtAsc(@Param("user") Users user, @Param("targetDate") LocalDate targetDate);
@Query("SELECT c FROM Challenges c " +
"WHERE c.users = :user " +
"AND c.isCompleted = false " +
"AND DATE(c.createdAt) <> CURRENT_DATE " +
"ORDER BY c.createdAt DESC " +
"LIMIT 5")
List<Challenges> findTop5ByUserAndIsCompletedFalseExcludeTodayOrderByCreatedAtDesc(@Param("user") Users user);
Challenges findByUsers(Users getUser);
boolean existsByUsersAndIsCompletedFalseAndCreatedAtBetween(Users users, LocalDateTime start, LocalDateTime end);
List<Challenges> findAllByUsersAndCreatedAtBefore(Users getUser, LocalDateTime startOfToday);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@

public interface ChallengeQueryService {
List<Challenges> getChallenges();
List<Challenges> getFailChallenges();
List<Challenges> getAllPastChallenges();
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@
import TtattaBackend.ttatta.repository.ChallengeRepository;
import TtattaBackend.ttatta.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

@Service
Expand All @@ -29,9 +29,12 @@ public List<Challenges> getChallenges() {
}

@Override
public List<Challenges> getFailChallenges() {
public List<Challenges> getAllPastChallenges() {
Long userId = SecurityUtil.getCurrentUserId();
Users getUser = userRepository.findById(userId).orElseThrow(() -> new ExceptionHandler(ErrorStatus.USER_NOT_FOUND));
return challengeRepository.findTop5ByUserAndIsCompletedFalseExcludeTodayOrderByCreatedAtDesc(getUser);
LocalDate today = LocalDate.now();
// 오늘 00:00
LocalDateTime startOfToday = today.atStartOfDay();
return challengeRepository.findAllByUsersAndCreatedAtBefore(getUser, startOfToday);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,11 @@

import TtattaBackend.ttatta.apiPayload.ApiResponse;
import TtattaBackend.ttatta.converter.ChallengeConverter;
import TtattaBackend.ttatta.converter.ItemConverter;
import TtattaBackend.ttatta.domain.Challenges;
import TtattaBackend.ttatta.domain.Items;
import TtattaBackend.ttatta.service.ChallengeService.ChallengeCommandService;
import TtattaBackend.ttatta.service.ChallengeService.ChallengeQueryService;
import TtattaBackend.ttatta.service.ItemService.ItemCommandService;
import TtattaBackend.ttatta.web.dto.ChallengeRequestDTO;
import TtattaBackend.ttatta.web.dto.ChallengeResponeseDTO;
import TtattaBackend.ttatta.web.dto.ItemRequestDTO;
import TtattaBackend.ttatta.web.dto.ItemResponseDTO;
import io.swagger.v3.oas.annotations.Operation;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
Expand Down Expand Up @@ -62,13 +57,13 @@ public ApiResponse<ChallengeResponeseDTO.ChallengeListResultDTO> getChallenges()
);
}

@Operation(summary = "가장 최근에 실패한 챌린지 5개 조회 api",
description = "가장 최근에 실패한 5개의 챌린지를 조회하는 api입니다.\n"
@Operation(summary = "지난 모든 챌린지 조회 api",
description = "지난 모든 챌린지를 조회하는 api입니다.\n"
+ "header에 access token을 넣어주세요.")
@GetMapping("/fail")
public ApiResponse<ChallengeResponeseDTO.FailChallengeListResultDTO> getFailChallenges() {
@GetMapping("/all")
public ApiResponse<ChallengeResponeseDTO.GetAllPastChallengeListResultDTO> getAllPastChallenges() {
return ApiResponse.onSuccess(
ChallengeConverter.toFailChallengeListResultDTO(challengeQueryService.getFailChallenges())
ChallengeConverter.toGetAllPastChallengeListResultDTO(challengeQueryService.getAllPastChallenges())
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ public static class SuccessChallengeResultDTO {
public static class ChallengeResultDTO {
Long challengeId;
String title;
String content;
Boolean isCompleted;
}

Expand All @@ -53,18 +54,18 @@ public static class ChallengeListResultDTO {
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class FailChallengeResultDTO {
public static class GetAllPastChallengeResultDTO {
Long challengeId;
String title;
String content;
int term;
boolean isCompleted;
}

@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class FailChallengeListResultDTO {
List<FailChallengeResultDTO> failChallengeList;
public static class GetAllPastChallengeListResultDTO {
List<GetAllPastChallengeResultDTO> getAllPastChallengeResultDTOList;
}
}