diff --git a/src/main/java/com/ceos/bankids/controller/ChallengeController.java b/src/main/java/com/ceos/bankids/controller/ChallengeController.java index e84f141..34ca33d 100644 --- a/src/main/java/com/ceos/bankids/controller/ChallengeController.java +++ b/src/main/java/com/ceos/bankids/controller/ChallengeController.java @@ -186,4 +186,18 @@ public CommonResponse patchProgress(@AuthenticationPrincipal User a return CommonResponse.onSuccess(progressDTO); } + +// @ApiOperation(value = "자녀 측 돈길 히스토리") +// @GetMapping(value = "/history", produces = "application/json; charset=utf-8") +// public CommonResponse> getChallengeHistory( +// @AuthenticationPrincipal User authUser, @RequestParam String status) { +// +// log.info("api = 자녀 측 돈길 히스토리 가져오기, user = {}, status = {}", authUser, status); +// +// List challengeHistoryDTOList = challengeMapper.readChallengeHistoryMapper( +// authUser, +// status); +// +// return CommonResponse.onSuccess(challengeHistoryDTOList); +// } } diff --git a/src/main/java/com/ceos/bankids/domain/Challenge.java b/src/main/java/com/ceos/bankids/domain/Challenge.java index 341387f..6b52cb6 100644 --- a/src/main/java/com/ceos/bankids/domain/Challenge.java +++ b/src/main/java/com/ceos/bankids/domain/Challenge.java @@ -29,8 +29,6 @@ import org.hibernate.annotations.ColumnDefault; import org.hibernate.annotations.DynamicInsert; import org.hibernate.annotations.DynamicUpdate; -import org.hibernate.annotations.SQLDelete; -import org.hibernate.annotations.Where; @Getter @Setter @@ -41,8 +39,8 @@ @DynamicInsert @DynamicUpdate @ToString(exclude = {"progressList", "challengeUserList"}) -@Where(clause = "deleted_at is Null") -@SQLDelete(sql = "UPDATE challenge SET deleted_at = CURRENT_TIMESTAMP where id = ?") +//@Where(clause = "deleted_at is Null") +//@SQLDelete(sql = "UPDATE challenge SET deleted_at = CURRENT_TIMESTAMP where id = ?") public class Challenge extends AbstractTimestamp { @Id @@ -84,7 +82,7 @@ public class Challenge extends AbstractTimestamp { @Column() @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd hh:mm:ss", timezone = "Asia/Seoul") - private Timestamp deleted_at; + private Timestamp deletedAt; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "targetItemId", nullable = false) diff --git a/src/main/java/com/ceos/bankids/domain/ChallengeUser.java b/src/main/java/com/ceos/bankids/domain/ChallengeUser.java index 45171e8..5d94e53 100644 --- a/src/main/java/com/ceos/bankids/domain/ChallengeUser.java +++ b/src/main/java/com/ceos/bankids/domain/ChallengeUser.java @@ -18,8 +18,6 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import org.hibernate.annotations.SQLDelete; -import org.hibernate.annotations.Where; @Entity @Getter @@ -27,8 +25,8 @@ @Table(name = "ChallengeUser") @NoArgsConstructor @EqualsAndHashCode(of = "id") -@Where(clause = "deleted_at is Null") -@SQLDelete(sql = "UPDATE challenge_user SET deleted_at = CURRENT_TIMESTAMP where id = ?") +//@Where(clause = "deleted_at is Null") +//@SQLDelete(sql = "UPDATE challenge_user SET deleted_at = CURRENT_TIMESTAMP where id = ?") public class ChallengeUser extends AbstractTimestamp { @Id diff --git a/src/main/java/com/ceos/bankids/domain/Comment.java b/src/main/java/com/ceos/bankids/domain/Comment.java index 0b2626c..967201a 100644 --- a/src/main/java/com/ceos/bankids/domain/Comment.java +++ b/src/main/java/com/ceos/bankids/domain/Comment.java @@ -20,8 +20,6 @@ import lombok.NoArgsConstructor; import lombok.Setter; import org.hibernate.annotations.DynamicUpdate; -import org.hibernate.annotations.SQLDelete; -import org.hibernate.annotations.Where; @Getter @Setter @@ -30,8 +28,8 @@ @NoArgsConstructor @DynamicUpdate @EqualsAndHashCode(of = "id") -@Where(clause = "deleted_at is Null") -@SQLDelete(sql = "UPDATE comment SET deleted_at = CURRENT_TIMESTAMP where id = ?") +//@Where(clause = "deleted_at is Null") +//@SQLDelete(sql = "UPDATE comment SET deleted_at = CURRENT_TIMESTAMP where id = ?") public class Comment { @Id diff --git a/src/main/java/com/ceos/bankids/domain/Progress.java b/src/main/java/com/ceos/bankids/domain/Progress.java index 7199c9e..346ddae 100644 --- a/src/main/java/com/ceos/bankids/domain/Progress.java +++ b/src/main/java/com/ceos/bankids/domain/Progress.java @@ -19,8 +19,6 @@ import lombok.Setter; import org.hibernate.annotations.ColumnDefault; import org.hibernate.annotations.DynamicInsert; -import org.hibernate.annotations.SQLDelete; -import org.hibernate.annotations.Where; @Entity @Getter @@ -29,8 +27,8 @@ @NoArgsConstructor @DynamicInsert @EqualsAndHashCode(of = "id") -@Where(clause = "deleted_at is Null") -@SQLDelete(sql = "UPDATE progress SET deleted_at = CURRENT_TIMESTAMP where id = ?") +//@Where(clause = "deleted_at is Null") +//@SQLDelete(sql = "UPDATE progress SET deleted_at = CURRENT_TIMESTAMP where id = ?") public class Progress extends AbstractTimestamp { @Id diff --git a/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java b/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java index c1d8ec6..ea187ee 100644 --- a/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java +++ b/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java @@ -336,6 +336,14 @@ public ProgressDTO updateProgressMapper(User authUser, Long challengeId) { return progressDTO; } + // Todo: 자녀 측 돈길 히스토리 API Mapper + @Transactional + public List readChallengeHistoryMapper(User authUser, String status) { + + userRoleValidation(authUser, true); + return challengeService.readChallengeHistory(status); + } + // 일요일 처리 validation private void sundayValidation() { LocalDateTime now = LocalDateTime.now(); diff --git a/src/main/java/com/ceos/bankids/mapper/UserMapper.java b/src/main/java/com/ceos/bankids/mapper/UserMapper.java index 1247eb1..190ce61 100644 --- a/src/main/java/com/ceos/bankids/mapper/UserMapper.java +++ b/src/main/java/com/ceos/bankids/mapper/UserMapper.java @@ -68,7 +68,7 @@ public UserDTO updateUserType(User user, UserTypeRequest userTypeRequest) { } // 날짜가 입력됐다면 유효한지 검사 - if (userTypeRequest.getBirthday() != "") { + if (!userTypeRequest.getBirthday().equals("99999999")) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); dateFormat.setLenient(false); try { diff --git a/src/main/java/com/ceos/bankids/repository/ChallengeRepository.java b/src/main/java/com/ceos/bankids/repository/ChallengeRepository.java index 3a1964c..5921c1a 100644 --- a/src/main/java/com/ceos/bankids/repository/ChallengeRepository.java +++ b/src/main/java/com/ceos/bankids/repository/ChallengeRepository.java @@ -10,4 +10,9 @@ public interface ChallengeRepository extends JpaRepository { public Optional findById(Long id); public List findByContractUserId(Long contractUserId); + + public List findAllByDeletedAtIsNotNullOrderByIdDesc(); + + public List findByChallengeStatusAndDeletedAtIsNotNullOrderByIdDesc( + String challengeStatus); } diff --git a/src/main/java/com/ceos/bankids/service/ChallengeService.java b/src/main/java/com/ceos/bankids/service/ChallengeService.java index d899a89..54c8527 100644 --- a/src/main/java/com/ceos/bankids/service/ChallengeService.java +++ b/src/main/java/com/ceos/bankids/service/ChallengeService.java @@ -54,4 +54,5 @@ public KidAchievedChallengeListDTO readKidAchievedChallenge(User user, public ChallengeCompleteDeleteByKidMapperDTO challengeCompleteDeleteByKid( List challengeList); + public List readChallengeHistory(String status); } diff --git a/src/main/java/com/ceos/bankids/service/ChallengeServiceImpl.java b/src/main/java/com/ceos/bankids/service/ChallengeServiceImpl.java index f7a7d4a..cfd923b 100644 --- a/src/main/java/com/ceos/bankids/service/ChallengeServiceImpl.java +++ b/src/main/java/com/ceos/bankids/service/ChallengeServiceImpl.java @@ -109,6 +109,7 @@ public ChallengeDTO deleteWalkingChallenge(User user, ChallengeUser challengeUse return new ChallengeDTO(deleteChallenge, null, null); } + @Transactional @Override public ChallengeDTO deleteRejectedChallenge(User user, ChallengeUser challengeUser) { Challenge deleteChallenge = challengeUser.getChallenge(); @@ -119,6 +120,7 @@ public ChallengeDTO deleteRejectedChallenge(User user, ChallengeUser challengeUs return new ChallengeDTO(deleteChallenge, null, null); } + @Transactional @Override public ChallengeDTO deletePendingChallenge(User user, ChallengeUser challengeUser) { Challenge deleteChallenge = challengeUser.getChallenge(); @@ -379,6 +381,27 @@ public ChallengeCompleteDeleteByKidMapperDTO challengeCompleteDeleteByKid( dadRequest[0], dadRequest[1]); } + @Transactional(readOnly = true) + @Override + public List readChallengeHistory(String status) { + + List challengeHistoryList = + status == null ? challengeRepository.findAllByDeletedAtIsNotNullOrderByIdDesc() + : challengeRepository.findByChallengeStatusAndDeletedAtIsNotNullOrderByIdDesc( + status); + return challengeHistoryList.stream().map(challenge -> { + if (challenge.getChallengeStatus() == ChallengeStatus.ACHIEVED + || challenge.getChallengeStatus() == ChallengeStatus.FAILED) { + List progressDTOList = challenge.getProgressList().stream() + .map(progress -> new ProgressDTO(progress, challenge)).collect( + Collectors.toList()); + return new ChallengeDTO(challenge, progressDTOList, null); + } else { + return new ChallengeDTO(challenge, null, challenge.getComment()); + } + }).collect(Collectors.toList()); + } + @Transactional public void challengeCompleteDeleteByParent(List challengeUserList) { diff --git a/src/test/java/com/ceos/bankids/unit/controller/UserControllerTest.java b/src/test/java/com/ceos/bankids/unit/controller/UserControllerTest.java index 8f37a13..ffc8ba3 100644 --- a/src/test/java/com/ceos/bankids/unit/controller/UserControllerTest.java +++ b/src/test/java/com/ceos/bankids/unit/controller/UserControllerTest.java @@ -123,7 +123,7 @@ public void testIfUserTypePatchWithoutBirthdaySucceedReturnResult() { .provider("kakao") .refreshToken("token") .build(); - UserTypeRequest userTypeRequest = new UserTypeRequest("", false, true); + UserTypeRequest userTypeRequest = new UserTypeRequest("99999999", false, true); UserRepository mockUserRepository = Mockito.mock(UserRepository.class); Mockito.when(mockUserRepository.findById(1L)) .thenReturn(Optional.ofNullable(user)); @@ -163,7 +163,7 @@ public void testIfUserTypePatchWithoutBirthdaySucceedReturnResult() { CommonResponse result = userController.patchUserType(user, userTypeRequest); // then - user.setBirthday(""); + user.setBirthday("99999999"); user.setIsFemale(false); user.setIsKid(true); UserDTO userDTO = new UserDTO(user);