From f5941cf304668615a89550ee02b18959e577c3c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=A4=80?= Date: Mon, 7 Nov 2022 14:06:44 +0900 Subject: [PATCH 01/10] =?UTF-8?q?fix:=20timeStamp=20NAN=20=EB=8C=80?= =?UTF-8?q?=EC=9D=91=20#268?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/ceos/bankids/dto/ChallengeDTO.java | 2 +- src/main/java/com/ceos/bankids/dto/NoticeDTO.java | 2 +- src/main/java/com/ceos/bankids/dto/NoticeListDTO.java | 2 +- src/main/java/com/ceos/bankids/dto/NotificationDTO.java | 2 +- src/main/java/com/ceos/bankids/dto/OptInDTO.java | 2 +- src/main/java/com/ceos/bankids/dto/ProgressDTO.java | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/ceos/bankids/dto/ChallengeDTO.java b/src/main/java/com/ceos/bankids/dto/ChallengeDTO.java index 35fab331..41a62268 100644 --- a/src/main/java/com/ceos/bankids/dto/ChallengeDTO.java +++ b/src/main/java/com/ceos/bankids/dto/ChallengeDTO.java @@ -54,7 +54,7 @@ public class ChallengeDTO { private Long weeks; @ApiModelProperty(example = "2022/07/05 05:05:05") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy/MM/dd kk:mm:ss", timezone = "Asia/Seoul") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy/MM/dd HH:mm:ss", timezone = "Asia/Seoul") private Timestamp createdAt; @ApiModelProperty(example = "true") diff --git a/src/main/java/com/ceos/bankids/dto/NoticeDTO.java b/src/main/java/com/ceos/bankids/dto/NoticeDTO.java index bf7f5048..decbacad 100644 --- a/src/main/java/com/ceos/bankids/dto/NoticeDTO.java +++ b/src/main/java/com/ceos/bankids/dto/NoticeDTO.java @@ -23,7 +23,7 @@ public class NoticeDTO { private String body; @ApiModelProperty(example = "2022/07/05 05:05:05") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy/MM/dd kk:mm:ss", timezone = "Asia/Seoul") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy/MM/dd HH:mm:ss", timezone = "Asia/Seoul") private Timestamp createdAt; public NoticeDTO(Notice notice) { diff --git a/src/main/java/com/ceos/bankids/dto/NoticeListDTO.java b/src/main/java/com/ceos/bankids/dto/NoticeListDTO.java index d20e1cd0..1a279bed 100644 --- a/src/main/java/com/ceos/bankids/dto/NoticeListDTO.java +++ b/src/main/java/com/ceos/bankids/dto/NoticeListDTO.java @@ -20,7 +20,7 @@ public class NoticeListDTO { private String title; @ApiModelProperty(example = "2022/07/05 05:05:05") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy/MM/dd kk:mm:ss", timezone = "Asia/Seoul") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy/MM/dd HH:mm:ss", timezone = "Asia/Seoul") private Timestamp createdAt; public NoticeListDTO(Notice notice) { diff --git a/src/main/java/com/ceos/bankids/dto/NotificationDTO.java b/src/main/java/com/ceos/bankids/dto/NotificationDTO.java index 118039ce..6b89dc0d 100644 --- a/src/main/java/com/ceos/bankids/dto/NotificationDTO.java +++ b/src/main/java/com/ceos/bankids/dto/NotificationDTO.java @@ -33,7 +33,7 @@ public class NotificationDTO { private String linkUrl; @ApiModelProperty(example = "2022/07/05 05:05:05") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy/MM/dd kk:mm:ss", timezone = "Asia/Seoul") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy/MM/dd HH:mm:ss", timezone = "Asia/Seoul") private Timestamp createdAt; public NotificationDTO(Notification notification) { diff --git a/src/main/java/com/ceos/bankids/dto/OptInDTO.java b/src/main/java/com/ceos/bankids/dto/OptInDTO.java index 9bd78b8c..7a07e9d3 100644 --- a/src/main/java/com/ceos/bankids/dto/OptInDTO.java +++ b/src/main/java/com/ceos/bankids/dto/OptInDTO.java @@ -18,7 +18,7 @@ public class OptInDTO { @ApiModelProperty(example = "true") private Boolean serviceOptIn; @ApiModelProperty(example = "2022/07/05 05:05:05") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy/MM/dd kk:mm:ss", timezone = "Asia/Seoul") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy/MM/dd HH:mm:ss", timezone = "Asia/Seoul") private Timestamp updatedAt; public OptInDTO(User user) { diff --git a/src/main/java/com/ceos/bankids/dto/ProgressDTO.java b/src/main/java/com/ceos/bankids/dto/ProgressDTO.java index 3ea40bee..7dd617b4 100644 --- a/src/main/java/com/ceos/bankids/dto/ProgressDTO.java +++ b/src/main/java/com/ceos/bankids/dto/ProgressDTO.java @@ -28,7 +28,7 @@ public class ProgressDTO { private ChallengeStatus challengeStatus; @ApiModelProperty(example = "2022/05/05 06:33:13") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy/MM/dd kk:mm:ss", timezone = "Asia/Seoul") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy/MM/dd HH:mm:ss", timezone = "Asia/Seoul") private Timestamp approvedAt; From 98f9fadfa5e4f858e5f56f75b1aca93372d7c1c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=A4=80?= Date: Thu, 10 Nov 2022 20:23:39 +0900 Subject: [PATCH 02/10] =?UTF-8?q?refactor:=20=EC=95=8C=EB=A6=BC=20?= =?UTF-8?q?=EC=97=B0=EA=B2=B0=20=EB=A7=81=ED=81=AC=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?#268?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bankids/service/ExpoNotificationServiceImpl.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/ceos/bankids/service/ExpoNotificationServiceImpl.java b/src/main/java/com/ceos/bankids/service/ExpoNotificationServiceImpl.java index b9f02c82..4783bc3b 100644 --- a/src/main/java/com/ceos/bankids/service/ExpoNotificationServiceImpl.java +++ b/src/main/java/com/ceos/bankids/service/ExpoNotificationServiceImpl.java @@ -226,10 +226,10 @@ public void createPendingChallengeNotification(User contractUser, ChallengeUser newMap.put("challenge", challengeUser.getChallenge().getId()); NotificationCategory notificationCategory = NotificationCategory.CHALLENGE; Boolean checkServiceOptIn = checkServiceOptIn(contractUser, title, notificationBody, - notificationCategory, ""); + notificationCategory, "/"); if (checkServiceOptIn) { this.sendMessage(contractUser, title, notificationBody, newMap, - notificationCategory, ""); + notificationCategory, "/"); } log.info("부모 유저 id = {}에게 유저 id = {} 돈길 id = {} 의 돈길 제안", contractUser.getId(), challengeUser.getUser().getId(), challengeUser.getChallenge().getId()); @@ -288,10 +288,10 @@ public void kidLevelUpNotification(User contractUser, User user, Long level, Lon newMap.put("user", user.getId()); NotificationCategory notificationCategory = NotificationCategory.LEVEL; Boolean checkServiceOptIn = checkServiceOptIn(contractUser, title, notificationBody, - notificationCategory, ""); + notificationCategory, "/"); if (checkServiceOptIn) { this.sendMessage(contractUser, title, notificationBody, newMap, - notificationCategory, ""); + notificationCategory, "/"); } log.info("부모 유저 id = {}에게 유저 id = {}의 레벨업 알림 전송", contractUser.getId(), user.getId()); } @@ -391,10 +391,10 @@ public void newFamilyUserNotification(User newFamilyUser, List famil familyUserList.forEach(familyUser -> { User user = familyUser.getUser(); Boolean checkServiceOptIn = checkServiceOptIn(user, title, notificationBody, - notificationCategory, ""); + notificationCategory, "/newFamily"); if (checkServiceOptIn) { this.sendMessage(user, title, notificationBody, newMap, - notificationCategory, ""); + notificationCategory, "/newFamily"); } log.info("기존 가족 구성원 id = {}에게 유저 id = {}의 가족 참여 알림 전송", familyUser.getUser().getId(), newFamilyUser.getId()); From 83276603bfb1e6f790582b3d23aff1732afa0a94 Mon Sep 17 00:00:00 2001 From: eojinsarang joo Date: Thu, 10 Nov 2022 20:37:54 +0900 Subject: [PATCH 03/10] =?UTF-8?q?feat:=20=EB=8B=A4=EC=A4=91=EA=B8=B0?= =?UTF-8?q?=EA=B8=B0=20=EC=97=90=EB=9F=AC=20=EC=BD=94=EB=93=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20#270?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ceos/bankids/constant/ErrorCode.java | 1 + .../com/ceos/bankids/mapper/UserMapper.java | 20 +++++++++---------- .../bankids/service/AppleServiceImpl.java | 2 +- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/ceos/bankids/constant/ErrorCode.java b/src/main/java/com/ceos/bankids/constant/ErrorCode.java index ca4c8c8e..f8f8c70d 100644 --- a/src/main/java/com/ceos/bankids/constant/ErrorCode.java +++ b/src/main/java/com/ceos/bankids/constant/ErrorCode.java @@ -16,6 +16,7 @@ public enum ErrorCode implements EnumMapperType { USER_ALREADY_HAS_TYPE("E400-20002"), INVALID_BIRTHDAY("E400-20003"), USER_TYPE_NOT_CHOSEN("E400-20004"), + USER_ALREADY_LOGINED("E400-20005"), // Family FAMILY_NOT_EXISTS("E403-30001"), diff --git a/src/main/java/com/ceos/bankids/mapper/UserMapper.java b/src/main/java/com/ceos/bankids/mapper/UserMapper.java index 190ce615..61dec7ce 100644 --- a/src/main/java/com/ceos/bankids/mapper/UserMapper.java +++ b/src/main/java/com/ceos/bankids/mapper/UserMapper.java @@ -106,11 +106,11 @@ public LoginDTO updateUserToken(User user) { LoginDTO loginDTO; if (updatedUser.getIsKid() == null || updatedUser.getIsKid() == false) { loginDTO = new LoginDTO(updatedUser.getIsKid(), newAccessToken, - updatedUser.getProvider()); + updatedUser.getProvider()); } else { loginDTO = new LoginDTO(updatedUser.getIsKid(), newAccessToken, - updatedUser.getKid().getLevel(), - updatedUser.getProvider()); + updatedUser.getKid().getLevel(), + updatedUser.getProvider()); } return loginDTO; } @@ -144,20 +144,20 @@ public void deleteFamilyUserIfExists(User user) { if (familyUser.isPresent()) { Family family = familyUser.get().getFamily(); List familyUserList = familyUserService.getFamilyUserListExclude(family, - user); + user); if (user.getIsKid()) { List challengeList = challengeUserService.readAllChallengeUserListToChallengeList( - user); + user); challengeUserService.deleteAllChallengeUserOfUser(user); ChallengeCompleteDeleteByKidMapperDTO challengeCompleteDeleteByKidMapperDTO = challengeService.challengeCompleteDeleteByKid( - challengeList); + challengeList); kidService.updateInitKid(user); parentService.updateParentForDeleteFamilyUserByKid(familyUserList, - challengeCompleteDeleteByKidMapperDTO); + challengeCompleteDeleteByKidMapperDTO); } else { List challengeUserList = challengeUserService.getChallengeUserListByContractUser( - user); + user); kidService.updateKidForDeleteFamilyUserByParent(challengeUserList); parentService.updateInitParent(user); challengeService.challengeCompleteDeleteByParent(challengeUserList); @@ -175,12 +175,12 @@ public UserDTO deleteUserAccount(User user, WithdrawalRequest withdrawalRequest) if (user.getIsKid()) { KidBackupDTO kidBackupDTO = kidBackupService.backupKidUser(user); slackService.sendWithdrawalMessage("KidBackup ", kidBackupDTO.getId(), - withdrawalRequest.getMessage()); + withdrawalRequest.getMessage()); kidService.deleteKid(user); } else { ParentBackupDTO parentBackupDTO = parentBackupService.backupParentUser(user); slackService.sendWithdrawalMessage("ParentBackup ", parentBackupDTO.getId(), - withdrawalRequest.getMessage()); + withdrawalRequest.getMessage()); parentService.deleteParent(user); } diff --git a/src/main/java/com/ceos/bankids/service/AppleServiceImpl.java b/src/main/java/com/ceos/bankids/service/AppleServiceImpl.java index 0c9d5dcb..6d14dfab 100644 --- a/src/main/java/com/ceos/bankids/service/AppleServiceImpl.java +++ b/src/main/java/com/ceos/bankids/service/AppleServiceImpl.java @@ -106,7 +106,7 @@ public AppleSubjectDTO verifyIdentityToken(AppleRequest appleRequest, appleHeaderDTO.getAlg()) .orElseThrow( () -> new BadRequestException(ErrorCode.APPLE_KEY_UNAVAILABLE.getErrorCode())); - + byte[] nBytes = Base64.getUrlDecoder().decode(appleKeyDTO.getN()); byte[] eBytes = Base64.getUrlDecoder().decode(appleKeyDTO.getE()); From c710924637efa963f3954c198849d630964767f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=A4=80?= Date: Thu, 10 Nov 2022 20:41:05 +0900 Subject: [PATCH 04/10] =?UTF-8?q?feat:=20=EB=8F=88=EA=B8=B8=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=20API=20=EC=9E=91=EC=84=B1=20#268?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ceos/bankids/controller/ChallengeController.java | 11 +++++++++++ .../java/com/ceos/bankids/mapper/ChallengeMapper.java | 9 +++++++++ .../com/ceos/bankids/service/ChallengeService.java | 2 ++ .../ceos/bankids/service/ChallengeServiceImpl.java | 10 ++++++++++ 4 files changed, 32 insertions(+) diff --git a/src/main/java/com/ceos/bankids/controller/ChallengeController.java b/src/main/java/com/ceos/bankids/controller/ChallengeController.java index 34ca33db..557aa00e 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 2193233f..61608568 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 54c8527b..58979fd5 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 cfd923bf..6e359998 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 From 70a1c3b3da4084fea85f240e9e5cc458c1d9ca4d Mon Sep 17 00:00:00 2001 From: eojinsarang joo Date: Thu, 10 Nov 2022 20:45:47 +0900 Subject: [PATCH 05/10] =?UTF-8?q?feat:=20UserMapper=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EB=8B=A4=EC=A4=91=EA=B8=B0=EA=B8=B0=20=EC=97=90=EB=9F=AC=20thr?= =?UTF-8?q?ow=20#270?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/ceos/bankids/mapper/UserMapper.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/com/ceos/bankids/mapper/UserMapper.java b/src/main/java/com/ceos/bankids/mapper/UserMapper.java index 61dec7ce..e667ea75 100644 --- a/src/main/java/com/ceos/bankids/mapper/UserMapper.java +++ b/src/main/java/com/ceos/bankids/mapper/UserMapper.java @@ -62,6 +62,11 @@ public class UserMapper { @Transactional public UserDTO updateUserType(User user, UserTypeRequest userTypeRequest) { + // 이미 로그인한 유저인지 검사 + if (user.getExpoToken().contains("ExponentPushToken")) { + throw new BadRequestException(ErrorCode.USER_ALREADY_LOGINED.getErrorCode()); + } + // 유저 타입이 이미 선택되었는지 검사 if (user.getIsFemale() != null) { throw new BadRequestException(ErrorCode.USER_ALREADY_HAS_TYPE.getErrorCode()); From bc940ef457915b7459e9b409ccd02adb0c9ca2be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=A4=80?= Date: Fri, 11 Nov 2022 13:42:51 +0900 Subject: [PATCH 06/10] =?UTF-8?q?feat:=20=EB=8F=88=EA=B8=B8=20=ED=8F=AC?= =?UTF-8?q?=EA=B8=B0=20=EC=8B=9C=20=EC=95=8C=EB=A6=BC=20=EB=A1=9C=EC=A7=81?= =?UTF-8?q?=20=EC=9E=91=EC=84=B1=20#268?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ceos/bankids/mapper/ChallengeMapper.java | 7 +++++-- .../service/ExpoNotificationServiceImpl.java | 20 +++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java b/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java index 61608568..0a901754 100644 --- a/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java +++ b/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java @@ -90,9 +90,12 @@ public ChallengeDTO deleteChallengeMapper(User authUser, Long challengeId) { } if (deleteChallenge.getChallengeStatus() == ChallengeStatus.WALKING) { kidService.checkKidDeleteChallenge(authUser, deleteChallenge); - return challengeService.deleteWalkingChallenge( + ChallengeDTO challengeDTO = challengeService.deleteWalkingChallenge( authUser, challengeUser); + notificationService.deleteChallengeNotification(authUser, + deleteChallenge.getContractUser(), deleteChallenge); + return challengeDTO; } else if (deleteChallenge.getChallengeStatus() == ChallengeStatus.FAILED) { return challengeService.deleteWalkingChallenge( authUser, @@ -160,7 +163,7 @@ public List readChallengeListMapper(User authUser, String status) 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()); + throw new ForbiddenException(ErrorCode.NOT_MATCH_CHALLENGE_USER.getErrorCode()); } return challengeService.readChallengeDetail(challengeId); } diff --git a/src/main/java/com/ceos/bankids/service/ExpoNotificationServiceImpl.java b/src/main/java/com/ceos/bankids/service/ExpoNotificationServiceImpl.java index 4783bc3b..b1cda646 100644 --- a/src/main/java/com/ceos/bankids/service/ExpoNotificationServiceImpl.java +++ b/src/main/java/com/ceos/bankids/service/ExpoNotificationServiceImpl.java @@ -380,6 +380,26 @@ public void runProgressNotification(User user, User contractUser, Challenge chal user.getId(), challenge.getId()); } + @Async + @ApiOperation(value = "자녀가 돈길을 포기했을 때 부모 알림") + public void deleteChallengeNotification(User user, User contractUser, Challenge challenge) { + + String title = "🚨자녀가 돈길을 포기했어요"; + String notificationBody = "포기한 돈길은 무엇인지 확인해볼까요?\uD83D\uDE1F\n포기한 돈길들은 마이페이지 - 돈길 기록에서 확인가능해요"; + HashMap newMap = new HashMap<>(); + newMap.put("user", user.getId()); + newMap.put("challenge", challenge.getId()); + NotificationCategory notificationCategory = NotificationCategory.CHALLENGE; + Boolean checkServiceOptIn = checkServiceOptIn(contractUser, title, notificationBody, + notificationCategory, "/"); + if (checkServiceOptIn) { + this.sendMessage(contractUser, title, notificationBody, newMap, notificationCategory, + "/"); + } + log.info("부모 유저 id = {}에게 유저 id = {}의 돈길 id = {} 돈길 포기 알림 전송", contractUser.getId(), + user.getId(), challenge.getId()); + } + @Async public void newFamilyUserNotification(User newFamilyUser, List familyUserList) { From 4757848fe072dedc51457343917c4b7f7d535053 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=A4=80?= Date: Fri, 11 Nov 2022 13:53:05 +0900 Subject: [PATCH 07/10] =?UTF-8?q?feat:=20=EB=8F=88=EA=B8=B8=20=ED=8F=AC?= =?UTF-8?q?=EA=B8=B0=20=EC=8B=9C=20totalChallenge=20=EC=B0=A8=EA=B0=90=20#?= =?UTF-8?q?268?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ceos/bankids/mapper/ChallengeMapper.java | 2 ++ src/main/java/com/ceos/bankids/service/KidService.java | 2 ++ .../java/com/ceos/bankids/service/KidServiceImpl.java | 9 +++++++++ 3 files changed, 13 insertions(+) diff --git a/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java b/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java index 0a901754..33677fe4 100644 --- a/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java +++ b/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java @@ -93,6 +93,7 @@ public ChallengeDTO deleteChallengeMapper(User authUser, Long challengeId) { ChallengeDTO challengeDTO = challengeService.deleteWalkingChallenge( authUser, challengeUser); + kidService.updateKidDecreaseTotalChallenge(authUser); notificationService.deleteChallengeNotification(authUser, deleteChallenge.getContractUser(), deleteChallenge); return challengeDTO; @@ -159,6 +160,7 @@ public List readChallengeListMapper(User authUser, String status) return challengeDTOList; } + // 돈길 상세 가져오기 API Mapper @Transactional public ChallengeDTO readChallengeDetail(User authUser, Long challengeId) { ChallengeUser challengeUser = challengeUserService.readChallengeUser(challengeId); diff --git a/src/main/java/com/ceos/bankids/service/KidService.java b/src/main/java/com/ceos/bankids/service/KidService.java index 67b0c051..c09a2e7e 100644 --- a/src/main/java/com/ceos/bankids/service/KidService.java +++ b/src/main/java/com/ceos/bankids/service/KidService.java @@ -23,4 +23,6 @@ public interface KidService { public void updateInitKid(User user); public void updateKidByPatchProgress(User user, Challenge challenge); + + public void updateKidDecreaseTotalChallenge(User user); } diff --git a/src/main/java/com/ceos/bankids/service/KidServiceImpl.java b/src/main/java/com/ceos/bankids/service/KidServiceImpl.java index 27a7ee6c..88606d32 100644 --- a/src/main/java/com/ceos/bankids/service/KidServiceImpl.java +++ b/src/main/java/com/ceos/bankids/service/KidServiceImpl.java @@ -146,6 +146,15 @@ public void updateKidTotalChallenge(User user) { kidRepository.save(kid); } + @Transactional + @Override + public void updateKidDecreaseTotalChallenge(User user) { + Kid kid = user.getKid(); + Long totalChallenge = kid.getTotalChallenge(); + kid.setTotalChallenge(totalChallenge - 1L); + kidRepository.save(kid); + } + @Transactional @Override public void updateInitKid(User user) { From 9d957ce6972ee31b10c35c3a423b815658ee2369 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=A4=80?= Date: Fri, 11 Nov 2022 15:04:46 +0900 Subject: [PATCH 08/10] =?UTF-8?q?feat:=20=EA=B1=B7=EA=B3=A0=EC=9E=88?= =?UTF-8?q?=EB=8A=94=20=EB=8F=88=EA=B8=B8=20=ED=8F=AC=EA=B8=B0=20=EC=8B=9C?= =?UTF-8?q?=20=EB=B6=80=EB=AA=A8=EC=9D=98=20acceptedChallenge=EB=8F=84=20?= =?UTF-8?q?=EC=B0=A8=EA=B0=90=20=EB=A1=9C=EC=A7=81=20=EC=9E=91=EC=84=B1=20?= =?UTF-8?q?#268?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ceos/bankids/mapper/ChallengeMapper.java | 1 + .../java/com/ceos/bankids/service/ParentService.java | 2 ++ .../com/ceos/bankids/service/ParentServiceImpl.java | 10 ++++++++++ 3 files changed, 13 insertions(+) diff --git a/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java b/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java index 33677fe4..6c583d10 100644 --- a/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java +++ b/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java @@ -94,6 +94,7 @@ public ChallengeDTO deleteChallengeMapper(User authUser, Long challengeId) { authUser, challengeUser); kidService.updateKidDecreaseTotalChallenge(authUser); + parentService.parentAcceptedChallengeDecrease(deleteChallenge.getContractUser()); notificationService.deleteChallengeNotification(authUser, deleteChallenge.getContractUser(), deleteChallenge); return challengeDTO; diff --git a/src/main/java/com/ceos/bankids/service/ParentService.java b/src/main/java/com/ceos/bankids/service/ParentService.java index ed6a746e..4248a0fe 100644 --- a/src/main/java/com/ceos/bankids/service/ParentService.java +++ b/src/main/java/com/ceos/bankids/service/ParentService.java @@ -17,6 +17,8 @@ public interface ParentService { public void updateParentAcceptedChallenge(User contractUser); + public void parentAcceptedChallengeDecrease(User contractUser); + public void updateParentForDeleteFamilyUserByKid(List familyUserList, ChallengeCompleteDeleteByKidMapperDTO challengeCompleteDeleteByKidMapperDTO); diff --git a/src/main/java/com/ceos/bankids/service/ParentServiceImpl.java b/src/main/java/com/ceos/bankids/service/ParentServiceImpl.java index 96475b84..a77318a3 100644 --- a/src/main/java/com/ceos/bankids/service/ParentServiceImpl.java +++ b/src/main/java/com/ceos/bankids/service/ParentServiceImpl.java @@ -53,6 +53,16 @@ public void updateParentAcceptedChallenge(User contractUser) { parentRepository.save(parent); } + @Transactional + @Override + public void parentAcceptedChallengeDecrease(User contractUser) { + + Parent parent = contractUser.getParent(); + Long acceptedRequest = parent.getAcceptedRequest(); + parent.setAcceptedRequest(acceptedRequest - 1L); + parentRepository.save(parent); + } + @Transactional @Override public void updateParentForDeleteFamilyUserByKid(List familyUserList, From ac9aa29140875fc45d338ee4e1e5be82b2d7cbf0 Mon Sep 17 00:00:00 2001 From: eojinsarang joo Date: Sat, 12 Nov 2022 02:11:10 +0900 Subject: [PATCH 09/10] =?UTF-8?q?fix:=20expoToken=20null=EC=9D=BC=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0=20=EA=B2=80=EC=82=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/ceos/bankids/mapper/UserMapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/ceos/bankids/mapper/UserMapper.java b/src/main/java/com/ceos/bankids/mapper/UserMapper.java index e667ea75..44995f79 100644 --- a/src/main/java/com/ceos/bankids/mapper/UserMapper.java +++ b/src/main/java/com/ceos/bankids/mapper/UserMapper.java @@ -63,7 +63,7 @@ public class UserMapper { @Transactional public UserDTO updateUserType(User user, UserTypeRequest userTypeRequest) { // 이미 로그인한 유저인지 검사 - if (user.getExpoToken().contains("ExponentPushToken")) { + if (user.getExpoToken() != null && user.getExpoToken().contains("ExponentPushToken")) { throw new BadRequestException(ErrorCode.USER_ALREADY_LOGINED.getErrorCode()); } From e961c06dc0a39b65187b8f6a5a75e7a489bf5ba9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=A4=80?= Date: Sat, 19 Nov 2022 09:32:45 +0900 Subject: [PATCH 10/10] =?UTF-8?q?fix:=20=EA=B0=80=EC=A1=B1=20=EA=B7=B8?= =?UTF-8?q?=EB=A3=B9=20=EC=B6=94=EA=B0=80=20=EC=8B=9C=20=EC=95=8C=EB=A6=BC?= =?UTF-8?q?=20=EB=A7=81=ED=81=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ceos/bankids/service/ExpoNotificationServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/ceos/bankids/service/ExpoNotificationServiceImpl.java b/src/main/java/com/ceos/bankids/service/ExpoNotificationServiceImpl.java index b1cda646..bd0d92fa 100644 --- a/src/main/java/com/ceos/bankids/service/ExpoNotificationServiceImpl.java +++ b/src/main/java/com/ceos/bankids/service/ExpoNotificationServiceImpl.java @@ -414,7 +414,7 @@ public void newFamilyUserNotification(User newFamilyUser, List famil notificationCategory, "/newFamily"); if (checkServiceOptIn) { this.sendMessage(user, title, notificationBody, newMap, - notificationCategory, "/newFamily"); + notificationCategory, "/mypage/new"); } log.info("기존 가족 구성원 id = {}에게 유저 id = {}의 가족 참여 알림 전송", familyUser.getUser().getId(), newFamilyUser.getId());