Skip to content

Commit

Permalink
refactor: 유저 탈퇴, 가족 나가기 api 매퍼 리팩토링 #238
Browse files Browse the repository at this point in the history
  • Loading branch information
ozzing committed Sep 26, 2022
1 parent 72d7a14 commit bd247fa
Show file tree
Hide file tree
Showing 7 changed files with 96 additions and 94 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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")
Expand Down Expand Up @@ -89,7 +87,6 @@ public CommonResponse<FamilyDTO> deleteFamilyUser(@AuthenticationPrincipal User
log.info("api = 가족 나가기, user = {}", authUser.getUsername());

FamilyDTO familyDTO = familyMapper.deleteFamilyUser(authUser, familyRequest);
challengeMapper.deleteChallengeInFamily(authUser, familyRequest);

return CommonResponse.onSuccess(familyDTO);
}
Expand Down
7 changes: 4 additions & 3 deletions src/main/java/com/ceos/bankids/controller/UserController.java
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -89,6 +89,7 @@ public CommonResponse<UserDTO> deleteUserAccount(@AuthenticationPrincipal User a

log.info("api = 유저 탈퇴, user = {}", authUser.getUsername());

userMapper.deleteFamilyUserIfExists(authUser);
UserDTO userDTO = userMapper.deleteUserAccount(authUser, withdrawalRequest);

return CommonResponse.onSuccess(userDTO);
Expand Down
30 changes: 0 additions & 30 deletions src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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<FamilyUser> familyUserList = familyUserService.getFamilyUserListExclude(family,
user);

if (user.getIsKid()) {
List<Challenge> challengeList = challengeUserService.readAllChallengeUserListToChallengeList(
user);
challengeUserService.deleteAllChallengeUserOfUser(user);
ChallengeCompleteDeleteByKidMapperDTO challengeCompleteDeleteByKidMapperDTO = challengeService.challengeCompleteDeleteByKid(
challengeList);
kidService.updateInitKid(user);
parentService.updateParentForDeleteFamilyUserByKid(familyUserList,
challengeCompleteDeleteByKidMapperDTO);
} else {
List<ChallengeUser> challengeUserList = challengeUserService.getChallengeUserListByContractUser(
user);
kidService.updateKidForDeleteFamilyUserByParent(challengeUserList);
parentService.updateInitParent(user);
challengeService.challengeCompleteDeleteByParent(challengeUserList);
}
}

// 일요일 처리 validation
private void sundayValidation() {
LocalDateTime now = LocalDateTime.now();
Expand Down
28 changes: 28 additions & 0 deletions src/main/java/com/ceos/bankids/mapper/FamilyMapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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) {
Expand Down Expand Up @@ -120,6 +131,23 @@ public FamilyDTO deleteFamilyUser(User user, FamilyRequest familyRequest) {
List<FamilyUser> familyUserList = familyUserService.getFamilyUserListExclude(family,
user);

if (user.getIsKid()) {
List<Challenge> challengeList = challengeUserService.readAllChallengeUserListToChallengeList(
user);
challengeUserService.deleteAllChallengeUserOfUser(user);
ChallengeCompleteDeleteByKidMapperDTO challengeCompleteDeleteByKidMapperDTO = challengeService.challengeCompleteDeleteByKid(
challengeList);
kidService.updateInitKid(user);
parentService.updateParentForDeleteFamilyUserByKid(familyUserList,
challengeCompleteDeleteByKidMapperDTO);
} else {
List<ChallengeUser> challengeUserList = challengeUserService.getChallengeUserListByContractUser(
user);
kidService.updateKidForDeleteFamilyUserByParent(challengeUserList);
parentService.updateInitParent(user);
challengeService.challengeCompleteDeleteByParent(challengeUserList);
}

familyUserService.deleteFamilyUser(familyUser);
if (familyUserList.size() == 0) {
familyService.deleteFamily(family);
Expand Down
107 changes: 58 additions & 49 deletions src/main/java/com/ceos/bankids/mapper/UserMapper.java
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -130,53 +137,55 @@ public UserDTO updateUserLogout(User user) {
}

@Transactional
public UserDTO deleteUserAccount(User user, WithdrawalRequest withdrawalRequest) {
public void deleteFamilyUserIfExists(User user) {
Optional<FamilyUser> familyUser = familyUserService.findByUserNullable(user);
// if (familyUser.isPresent()) {
// Family family = familyUser.get().getFamily();
// List<FamilyUser> familyUserList = familyUserService.getFamilyUserListExclude(family,
// user);
// FamilyRequest familyRequest = new FamilyRequest(family.getCode());

// if (user.getIsKid()) {
// List<Challenge> challengeList = challengeUserService.getAllChallengeUserList(
// user);
// challengeUserService.deleteAllChallengeUser(user);
// ChallengeCompleteDeleteByKidMapperDTO challengeCompleteDeleteByKidMapperDTO = challengeService.challengeCompleteDeleteByKid(
// challengeList);
// kidService.updateInitKid(user);
// parentService.updateParentForDeleteFamilyUserByKid(familyUserList,
// challengeCompleteDeleteByKidMapperDTO);
// } else {
// List<ChallengeUser> 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<FamilyUser> familyUserList = familyUserService.getFamilyUserListExclude(family,
user);

if (user.getIsKid()) {
List<Challenge> challengeList = challengeUserService.readAllChallengeUserListToChallengeList(
user);
challengeUserService.deleteAllChallengeUserOfUser(user);
ChallengeCompleteDeleteByKidMapperDTO challengeCompleteDeleteByKidMapperDTO = challengeService.challengeCompleteDeleteByKid(
challengeList);
kidService.updateInitKid(user);
parentService.updateParentForDeleteFamilyUserByKid(familyUserList,
challengeCompleteDeleteByKidMapperDTO);
} else {
List<ChallengeUser> 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
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/com/ceos/bankids/service/UserService.java
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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);

Expand Down
9 changes: 3 additions & 6 deletions src/main/java/com/ceos/bankids/service/UserServiceImpl.java
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit bd247fa

Please sign in to comment.