diff --git a/src/main/java/com/ceos/bankids/controller/FamilyController.java b/src/main/java/com/ceos/bankids/controller/FamilyController.java index b7c9513d..fdd1b1c2 100644 --- a/src/main/java/com/ceos/bankids/controller/FamilyController.java +++ b/src/main/java/com/ceos/bankids/controller/FamilyController.java @@ -5,7 +5,6 @@ import com.ceos.bankids.domain.User; import com.ceos.bankids.dto.FamilyDTO; import com.ceos.bankids.dto.KidListDTO; -import com.ceos.bankids.mapper.ChallengeMapper; import com.ceos.bankids.mapper.FamilyMapper; import io.swagger.annotations.ApiOperation; import java.util.List; @@ -28,7 +27,6 @@ public class FamilyController { private final FamilyMapper familyMapper; - private final ChallengeMapper challengeMapper; @ApiOperation(value = "가족 생성하기") @PostMapping(value = "", produces = "application/json; charset=utf-8") @@ -89,7 +87,6 @@ public CommonResponse deleteFamilyUser(@AuthenticationPrincipal User log.info("api = 가족 나가기, user = {}", authUser.getUsername()); FamilyDTO familyDTO = familyMapper.deleteFamilyUser(authUser, familyRequest); - challengeMapper.deleteChallengeInFamily(authUser, familyRequest); return CommonResponse.onSuccess(familyDTO); } diff --git a/src/main/java/com/ceos/bankids/controller/UserController.java b/src/main/java/com/ceos/bankids/controller/UserController.java index f1cafdb8..9f5e07ac 100644 --- a/src/main/java/com/ceos/bankids/controller/UserController.java +++ b/src/main/java/com/ceos/bankids/controller/UserController.java @@ -1,15 +1,15 @@ package com.ceos.bankids.controller; import com.ceos.bankids.config.CommonResponse; +import com.ceos.bankids.controller.request.ExpoRequest; +import com.ceos.bankids.controller.request.UserTypeRequest; +import com.ceos.bankids.controller.request.WithdrawalRequest; import com.ceos.bankids.domain.User; import com.ceos.bankids.dto.LoginDTO; import com.ceos.bankids.dto.MyPageDTO; import com.ceos.bankids.dto.OptInDTO; import com.ceos.bankids.dto.UserDTO; import com.ceos.bankids.mapper.UserMapper; -import com.ceos.bankids.controller.request.ExpoRequest; -import com.ceos.bankids.controller.request.UserTypeRequest; -import com.ceos.bankids.controller.request.WithdrawalRequest; import io.swagger.annotations.ApiOperation; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; @@ -89,6 +89,7 @@ public CommonResponse deleteUserAccount(@AuthenticationPrincipal User a log.info("api = 유저 탈퇴, user = {}", authUser.getUsername()); + userMapper.deleteFamilyUserIfExists(authUser); UserDTO userDTO = userMapper.deleteUserAccount(authUser, withdrawalRequest); return CommonResponse.onSuccess(userDTO); diff --git a/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java b/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java index 86dd9737..3ed0c6d4 100644 --- a/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java +++ b/src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java @@ -3,17 +3,13 @@ import com.ceos.bankids.constant.ChallengeStatus; import com.ceos.bankids.constant.ErrorCode; import com.ceos.bankids.controller.request.ChallengeRequest; -import com.ceos.bankids.controller.request.FamilyRequest; import com.ceos.bankids.controller.request.KidChallengeRequest; import com.ceos.bankids.domain.Challenge; import com.ceos.bankids.domain.ChallengeUser; -import com.ceos.bankids.domain.Family; -import com.ceos.bankids.domain.FamilyUser; import com.ceos.bankids.domain.Kid; import com.ceos.bankids.domain.User; import com.ceos.bankids.dto.AchievedChallengeDTO; import com.ceos.bankids.dto.AchievedChallengeListDTO; -import com.ceos.bankids.dto.ChallengeCompleteDeleteByKidMapperDTO; import com.ceos.bankids.dto.ChallengeDTO; import com.ceos.bankids.dto.ChallengeListMapperDTO; import com.ceos.bankids.dto.ChallengePostDTO; @@ -340,32 +336,6 @@ public ProgressDTO updateProgressMapper(User authUser, Long challengeId) { return progressDTO; } - @Transactional - public void deleteChallengeInFamily(User user, FamilyRequest familyRequest) { - FamilyUser familyUser = familyUserService.findByUserAndCheckCode(user, - familyRequest.getCode()); - Family family = familyUser.getFamily(); - List familyUserList = familyUserService.getFamilyUserListExclude(family, - user); - - if (user.getIsKid()) { - List challengeList = challengeUserService.readAllChallengeUserListToChallengeList( - user); - challengeUserService.deleteAllChallengeUserOfUser(user); - ChallengeCompleteDeleteByKidMapperDTO challengeCompleteDeleteByKidMapperDTO = challengeService.challengeCompleteDeleteByKid( - challengeList); - kidService.updateInitKid(user); - parentService.updateParentForDeleteFamilyUserByKid(familyUserList, - challengeCompleteDeleteByKidMapperDTO); - } else { - List challengeUserList = challengeUserService.getChallengeUserListByContractUser( - user); - kidService.updateKidForDeleteFamilyUserByParent(challengeUserList); - parentService.updateInitParent(user); - challengeService.challengeCompleteDeleteByParent(challengeUserList); - } - } - // 일요일 처리 validation private void sundayValidation() { LocalDateTime now = LocalDateTime.now(); diff --git a/src/main/java/com/ceos/bankids/mapper/FamilyMapper.java b/src/main/java/com/ceos/bankids/mapper/FamilyMapper.java index 0b3a1db2..001ba8a7 100644 --- a/src/main/java/com/ceos/bankids/mapper/FamilyMapper.java +++ b/src/main/java/com/ceos/bankids/mapper/FamilyMapper.java @@ -2,17 +2,24 @@ import com.ceos.bankids.constant.ErrorCode; import com.ceos.bankids.controller.request.FamilyRequest; +import com.ceos.bankids.domain.Challenge; +import com.ceos.bankids.domain.ChallengeUser; import com.ceos.bankids.domain.Family; import com.ceos.bankids.domain.FamilyUser; import com.ceos.bankids.domain.User; +import com.ceos.bankids.dto.ChallengeCompleteDeleteByKidMapperDTO; import com.ceos.bankids.dto.FamilyDTO; import com.ceos.bankids.dto.FamilyUserDTO; import com.ceos.bankids.dto.KidListDTO; import com.ceos.bankids.exception.BadRequestException; import com.ceos.bankids.exception.ForbiddenException; +import com.ceos.bankids.service.ChallengeServiceImpl; +import com.ceos.bankids.service.ChallengeUserServiceImpl; import com.ceos.bankids.service.ExpoNotificationServiceImpl; import com.ceos.bankids.service.FamilyServiceImpl; import com.ceos.bankids.service.FamilyUserServiceImpl; +import com.ceos.bankids.service.KidServiceImpl; +import com.ceos.bankids.service.ParentServiceImpl; import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -30,6 +37,10 @@ public class FamilyMapper { private final FamilyServiceImpl familyService; private final FamilyUserServiceImpl familyUserService; private final ExpoNotificationServiceImpl notificationService; + private final ChallengeServiceImpl challengeService; + private final ChallengeUserServiceImpl challengeUserService; + private final KidServiceImpl kidService; + private final ParentServiceImpl parentService; @Transactional public FamilyDTO createFamily(User user) { @@ -120,6 +131,23 @@ public FamilyDTO deleteFamilyUser(User user, FamilyRequest familyRequest) { List familyUserList = familyUserService.getFamilyUserListExclude(family, user); + if (user.getIsKid()) { + List challengeList = challengeUserService.readAllChallengeUserListToChallengeList( + user); + challengeUserService.deleteAllChallengeUserOfUser(user); + ChallengeCompleteDeleteByKidMapperDTO challengeCompleteDeleteByKidMapperDTO = challengeService.challengeCompleteDeleteByKid( + challengeList); + kidService.updateInitKid(user); + parentService.updateParentForDeleteFamilyUserByKid(familyUserList, + challengeCompleteDeleteByKidMapperDTO); + } else { + List challengeUserList = challengeUserService.getChallengeUserListByContractUser( + user); + kidService.updateKidForDeleteFamilyUserByParent(challengeUserList); + parentService.updateInitParent(user); + challengeService.challengeCompleteDeleteByParent(challengeUserList); + } + familyUserService.deleteFamilyUser(familyUser); if (familyUserList.size() == 0) { familyService.deleteFamily(family); diff --git a/src/main/java/com/ceos/bankids/mapper/UserMapper.java b/src/main/java/com/ceos/bankids/mapper/UserMapper.java index 1d7c4de5..ee6f55b2 100644 --- a/src/main/java/com/ceos/bankids/mapper/UserMapper.java +++ b/src/main/java/com/ceos/bankids/mapper/UserMapper.java @@ -1,19 +1,25 @@ package com.ceos.bankids.mapper; import com.ceos.bankids.constant.ErrorCode; +import com.ceos.bankids.controller.request.ExpoRequest; +import com.ceos.bankids.controller.request.UserTypeRequest; +import com.ceos.bankids.controller.request.WithdrawalRequest; +import com.ceos.bankids.domain.Challenge; +import com.ceos.bankids.domain.ChallengeUser; +import com.ceos.bankids.domain.Family; import com.ceos.bankids.domain.FamilyUser; import com.ceos.bankids.domain.User; +import com.ceos.bankids.dto.ChallengeCompleteDeleteByKidMapperDTO; +import com.ceos.bankids.dto.KidBackupDTO; import com.ceos.bankids.dto.KidDTO; import com.ceos.bankids.dto.LoginDTO; import com.ceos.bankids.dto.MyPageDTO; import com.ceos.bankids.dto.OptInDTO; +import com.ceos.bankids.dto.ParentBackupDTO; import com.ceos.bankids.dto.ParentDTO; import com.ceos.bankids.dto.TokenDTO; import com.ceos.bankids.dto.UserDTO; import com.ceos.bankids.exception.BadRequestException; -import com.ceos.bankids.controller.request.ExpoRequest; -import com.ceos.bankids.controller.request.UserTypeRequest; -import com.ceos.bankids.controller.request.WithdrawalRequest; import com.ceos.bankids.service.ChallengeServiceImpl; import com.ceos.bankids.service.ChallengeUserServiceImpl; import com.ceos.bankids.service.ExpoNotificationServiceImpl; @@ -29,6 +35,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; +import java.util.List; import java.util.Optional; import kotlin.jvm.internal.SerializedIr; import lombok.RequiredArgsConstructor; @@ -130,53 +137,55 @@ public UserDTO updateUserLogout(User user) { } @Transactional - public UserDTO deleteUserAccount(User user, WithdrawalRequest withdrawalRequest) { + public void deleteFamilyUserIfExists(User user) { Optional familyUser = familyUserService.findByUserNullable(user); -// if (familyUser.isPresent()) { -// Family family = familyUser.get().getFamily(); -// List familyUserList = familyUserService.getFamilyUserListExclude(family, -// user); -// FamilyRequest familyRequest = new FamilyRequest(family.getCode()); - -// if (user.getIsKid()) { -// List challengeList = challengeUserService.getAllChallengeUserList( -// user); -// challengeUserService.deleteAllChallengeUser(user); -// ChallengeCompleteDeleteByKidMapperDTO challengeCompleteDeleteByKidMapperDTO = challengeService.challengeCompleteDeleteByKid( -// challengeList); -// kidService.updateInitKid(user); -// parentService.updateParentForDeleteFamilyUserByKid(familyUserList, -// challengeCompleteDeleteByKidMapperDTO); -// } else { -// List challengeUserList = challengeUserService.getChallengeUserListByContractUser( -// user); -// kidService.updateKidForDeleteFamilyUserByParent(challengeUserList); -// parentService.updateInitParent(user); -// challengeService.challengeCompleteDeleteByParent(challengeUserList); -// } -// -// familyUserService.deleteFamilyUser(familyUser.get()); -// if (familyUserList.size() == 0) { -// familyService.deleteFamily(family); -// } -// } -// -// if (user.getIsKid()) { -// KidBackupDTO kidBackupDTO = kidBackupService.backupKidUser(user); -// slackService.sendWithdrawalMessage("KidBackup ", kidBackupDTO.getId(), -// withdrawalRequest.getMessage()); -// kidService.deleteKid(user); -// } else { -// ParentBackupDTO parentBackupDTO = parentBackupService.backupParentUser(user); -// slackService.sendWithdrawalMessage("ParentBackup ", parentBackupDTO.getId(), -// withdrawalRequest.getMessage()); -// parentService.deleteParent(user); -// } -// notificationService.deleteAllNotification(user); -// UserDTO userDTO = userService.deleteUser(user); - -// return userDTO; - return null; + if (familyUser.isPresent()) { + Family family = familyUser.get().getFamily(); + List familyUserList = familyUserService.getFamilyUserListExclude(family, + user); + + if (user.getIsKid()) { + List challengeList = challengeUserService.readAllChallengeUserListToChallengeList( + user); + challengeUserService.deleteAllChallengeUserOfUser(user); + ChallengeCompleteDeleteByKidMapperDTO challengeCompleteDeleteByKidMapperDTO = challengeService.challengeCompleteDeleteByKid( + challengeList); + kidService.updateInitKid(user); + parentService.updateParentForDeleteFamilyUserByKid(familyUserList, + challengeCompleteDeleteByKidMapperDTO); + } else { + List challengeUserList = challengeUserService.getChallengeUserListByContractUser( + user); + kidService.updateKidForDeleteFamilyUserByParent(challengeUserList); + parentService.updateInitParent(user); + challengeService.challengeCompleteDeleteByParent(challengeUserList); + } + + familyUserService.deleteFamilyUser(familyUser.get()); + if (familyUserList.size() == 0) { + familyService.deleteFamily(family); + } + } + } + + @Transactional + public UserDTO deleteUserAccount(User user, WithdrawalRequest withdrawalRequest) { + if (user.getIsKid()) { + KidBackupDTO kidBackupDTO = kidBackupService.backupKidUser(user); + slackService.sendWithdrawalMessage("KidBackup ", kidBackupDTO.getId(), + withdrawalRequest.getMessage()); + kidService.deleteKid(user); + } else { + ParentBackupDTO parentBackupDTO = parentBackupService.backupParentUser(user); + slackService.sendWithdrawalMessage("ParentBackup ", parentBackupDTO.getId(), + withdrawalRequest.getMessage()); + parentService.deleteParent(user); + } + + notificationService.deleteAllNotification(user); + userService.deleteUser(user); + + return new UserDTO(user); } @Transactional diff --git a/src/main/java/com/ceos/bankids/service/UserService.java b/src/main/java/com/ceos/bankids/service/UserService.java index 70220cd7..c87021e1 100644 --- a/src/main/java/com/ceos/bankids/service/UserService.java +++ b/src/main/java/com/ceos/bankids/service/UserService.java @@ -1,10 +1,10 @@ package com.ceos.bankids.service; +import com.ceos.bankids.controller.request.ExpoRequest; +import com.ceos.bankids.controller.request.UserTypeRequest; import com.ceos.bankids.domain.User; import com.ceos.bankids.dto.OptInDTO; import com.ceos.bankids.dto.UserDTO; -import com.ceos.bankids.controller.request.ExpoRequest; -import com.ceos.bankids.controller.request.UserTypeRequest; import java.util.List; import java.util.Optional; import org.springframework.stereotype.Service; @@ -22,7 +22,7 @@ public interface UserService { public void updateUserLogout(User user); - public UserDTO deleteUser(User user); + public void deleteUser(User user); public void updateUserExpoToken(User user, ExpoRequest expoRequest); diff --git a/src/main/java/com/ceos/bankids/service/UserServiceImpl.java b/src/main/java/com/ceos/bankids/service/UserServiceImpl.java index 89e61d81..0a04b9f3 100644 --- a/src/main/java/com/ceos/bankids/service/UserServiceImpl.java +++ b/src/main/java/com/ceos/bankids/service/UserServiceImpl.java @@ -1,10 +1,10 @@ package com.ceos.bankids.service; +import com.ceos.bankids.controller.request.ExpoRequest; +import com.ceos.bankids.controller.request.UserTypeRequest; import com.ceos.bankids.domain.User; import com.ceos.bankids.dto.OptInDTO; import com.ceos.bankids.dto.UserDTO; -import com.ceos.bankids.controller.request.ExpoRequest; -import com.ceos.bankids.controller.request.UserTypeRequest; import com.ceos.bankids.repository.UserRepository; import java.util.List; import java.util.Optional; @@ -71,11 +71,8 @@ public void updateUserLogout(User user) { @Override @Transactional - public UserDTO deleteUser(User user) { - UserDTO userDTO = new UserDTO(user); + public void deleteUser(User user) { userRepository.delete(user); - - return userDTO; } @Override