diff --git a/src/main/java/com/ceos/bankids/controller/ChallengeController.java b/src/main/java/com/ceos/bankids/controller/ChallengeController.java index 34ca33d..557aa00 100644 --- a/src/main/java/com/ceos/bankids/controller/ChallengeController.java +++ b/src/main/java/com/ceos/bankids/controller/ChallengeController.java @@ -76,6 +76,17 @@ public CommonResponse> getListChallenge( return CommonResponse.onSuccess(challengeDTOList); } + @ApiOperation(value = "돈길 상세 가져오기") + @GetMapping(value = "/{challengeId}", produces = "application/json; charset=utf-8") + public CommonResponse getChallengeDetail(@AuthenticationPrincipal User authUser, + @PathVariable Long challengeId) { + + log.info("api = 돈길 상세 가져오기, user = {}, challenge = {}", authUser.getUsername(), + challengeId); + + return CommonResponse.onSuccess(challengeMapper.readChallengeDetail(authUser, challengeId)); + } + @ApiOperation(value = "자녀의 돈길 리스트 가져오기") @GetMapping(value = "/kid/{kidId}", produces = "application/json; charset=utf-8") public CommonResponse getListKidChallenge( diff --git a/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java b/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java index 2193233..6160856 100644 --- a/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java +++ b/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java @@ -156,6 +156,15 @@ public List readChallengeListMapper(User authUser, String status) return challengeDTOList; } + @Transactional + public ChallengeDTO readChallengeDetail(User authUser, Long challengeId) { + ChallengeUser challengeUser = challengeUserService.readChallengeUser(challengeId); + if (authUser.getId() != challengeUser.getUser().getId()) { + throw new BadRequestException(ErrorCode.NOT_MATCH_CHALLENGE_USER.getErrorCode()); + } + return challengeService.readChallengeDetail(challengeId); + } + // 자녀의 돈길 리스트 가져오기 API Mapper @Transactional public KidChallengeListDTO readKidChallengeListMapper(User authUser, Long kidId, diff --git a/src/main/java/com/ceos/bankids/service/ChallengeService.java b/src/main/java/com/ceos/bankids/service/ChallengeService.java index 54c8527..58979fd 100644 --- a/src/main/java/com/ceos/bankids/service/ChallengeService.java +++ b/src/main/java/com/ceos/bankids/service/ChallengeService.java @@ -55,4 +55,6 @@ public ChallengeCompleteDeleteByKidMapperDTO challengeCompleteDeleteByKid( List challengeList); public List readChallengeHistory(String status); + + public ChallengeDTO readChallengeDetail(Long challengeId); } diff --git a/src/main/java/com/ceos/bankids/service/ChallengeServiceImpl.java b/src/main/java/com/ceos/bankids/service/ChallengeServiceImpl.java index cfd923b..6e35999 100644 --- a/src/main/java/com/ceos/bankids/service/ChallengeServiceImpl.java +++ b/src/main/java/com/ceos/bankids/service/ChallengeServiceImpl.java @@ -174,6 +174,16 @@ public ChallengeListMapperDTO readPendingChallenge(Challenge challenge) { return new ChallengeListMapperDTO(challenge, null, false); } + @Transactional + @Override + public ChallengeDTO readChallengeDetail(Long challengeId) { + Challenge challenge = challengeRepository.findById(challengeId).orElseThrow( + () -> new BadRequestException(ErrorCode.NOT_EXIST_CHALLENGE.getErrorCode())); + return new ChallengeDTO(challenge, challenge.getProgressList().stream() + .map(progress -> new ProgressDTO(progress, challenge)).collect( + Collectors.toList()), challenge.getComment()); + } + // 돈길 수락 / 거절 API @Transactional @Override