Skip to content

Commit

Permalink
Merge pull request #117 from IRECIPE/fix/113
Browse files Browse the repository at this point in the history
[FIX] 회원 탈퇴, 정보 수정
  • Loading branch information
longrunBiin authored Feb 19, 2024
2 parents 992bb01 + 8d3e4a5 commit 4a4e87d
Show file tree
Hide file tree
Showing 9 changed files with 103 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ public static class fixMemberInfoDto{
Integer gender;
@NotNull
Integer age;
String imageUrl;
Boolean important;
Boolean activity;
Boolean event;
Expand Down
16 changes: 15 additions & 1 deletion src/main/java/umc/IRECIPE_Server/entity/Member.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public class Member extends BaseEntity {
private Age age;

// 회원 고유 id
@Column(updatable = false, unique = true, nullable = false)
@Column(unique = true, nullable = false)
private String personalId;

// 중요 알림 온오프여부
Expand Down Expand Up @@ -117,4 +117,18 @@ public void updateMember(String name, String nickname, Integer gender, Integer a
public void updateUrl(String url){
this.profileImage = url;
}

public void delMember(){
this.name = null;
this.nickname = null;
this.age = null;
this.gender = null;
this.important = null;
this.event = null;
this.activity = null;
this.memberAllergyList = null;
this.personalId = "deleted";
this.role = null;
this.profileImage = null;
}
}
2 changes: 1 addition & 1 deletion src/main/java/umc/IRECIPE_Server/entity/Post.java
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public class Post extends BaseEntity {
@Enumerated(EnumType.STRING)
private Level level;

// 임시저장, 등록
// 임시저장, 등록, 삭제
@Enumerated(EnumType.STRING)
private Status status;

Expand Down
1 change: 1 addition & 0 deletions src/main/java/umc/IRECIPE_Server/jwt/JwtProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ public MemberResponseDTO.JoinResultDto generateTokenDto(String personalId) {
.build();
}


public Authentication getAuthentication(String accessToken) {

Claims claims = parseClaims(accessToken);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package umc.IRECIPE_Server.repository;

import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import umc.IRECIPE_Server.entity.Member;
import umc.IRECIPE_Server.entity.Qna;

import java.util.List;

public interface QnaRepository extends JpaRepository<Qna, Long> {
List<Qna> findAllByMember(Member member);

List<Qna> findAllByPost_IdAndParentId(Long postId, Long parentId);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import umc.IRECIPE_Server.entity.Member;
import umc.IRECIPE_Server.entity.Post;
import umc.IRECIPE_Server.entity.Review;

Expand All @@ -13,6 +14,8 @@ public interface ReviewRepository extends JpaRepository<Review, Long> {
// 게시글 리뷰 조회 (0번 페이지부터 10개씩 최신순으로 조회)
Page<Review> findAllByPost(Post past, Pageable pageable);

List<Review> findAllByMember(Member member);

// 게시글의 리뷰 개수 조회
int countByPost_Id(Long postId);
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package umc.IRECIPE_Server.repository;

import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;

import umc.IRECIPE_Server.entity.Member;
import umc.IRECIPE_Server.entity.StoredRecipe;


public interface StoredRecipeRepository extends JpaRepository<StoredRecipe, Long> {
List<StoredRecipe> findAllByMember(Member member);
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,6 @@ public interface MemberService {

void checkNickname(String nickname);

MemberAllergy findMemberAllergy(Long memberId, Long allergyId);

Member joinMember(MemberRequestDTO.JoinDto request, String url);

Member signup(MemberRequestDTO.JoinDto request, String url);
Expand All @@ -44,7 +42,6 @@ public interface MemberService {

Member updateMemberById(MemberRequestDTO.fixMemberInfoDto request, String personalId);

void deleteMemberAllergy(Long memberId, Long allergyId);

Member login(MemberLoginRequestDTO.JoinLoginDto request);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,17 +28,27 @@
import umc.IRECIPE_Server.dto.response.MemberResponseDTO;
import umc.IRECIPE_Server.dto.request.MemberLoginRequestDTO;
import umc.IRECIPE_Server.entity.Allergy;
import umc.IRECIPE_Server.entity.DislikedFood;
import umc.IRECIPE_Server.entity.Ingredient;
import umc.IRECIPE_Server.entity.Member;
import umc.IRECIPE_Server.entity.MemberAllergy;
import umc.IRECIPE_Server.entity.MemberLikes;
import umc.IRECIPE_Server.entity.Post;
import umc.IRECIPE_Server.entity.Qna;
import umc.IRECIPE_Server.entity.RefreshToken;
import umc.IRECIPE_Server.entity.Review;
import umc.IRECIPE_Server.entity.StoredRecipe;
import umc.IRECIPE_Server.jwt.JwtProvider;
import umc.IRECIPE_Server.repository.AllergyRepository;
import umc.IRECIPE_Server.repository.DislikedFoodRepository;
import umc.IRECIPE_Server.repository.IngredientRepository;
import umc.IRECIPE_Server.repository.MemberAllergyRepository;
import umc.IRECIPE_Server.repository.MemberLikesRepository;
import umc.IRECIPE_Server.repository.MemberRepository;
import umc.IRECIPE_Server.repository.PostRepository;
import umc.IRECIPE_Server.repository.QnaRepository;
import umc.IRECIPE_Server.repository.ReviewRepository;
import umc.IRECIPE_Server.repository.StoredRecipeRepository;
import umc.IRECIPE_Server.repository.TokenRepository;
import java.util.List;
import java.util.stream.Collectors;
Expand All @@ -53,7 +63,12 @@ public class MemberServiceImpl implements MemberService{
private final MemberAllergyRepository memberAllergyRepository;
private final TokenRepository tokenRepository;
private final PostRepository postRepository;
private final IngredientRepository ingredientRepository;
private final MemberLikesRepository memberLikesRepository;
private final QnaRepository qnaRepository;
private final ReviewRepository reviewRepository;
private final StoredRecipeRepository storedRecipeRepository;
private final DislikedFoodRepository dislikedFoodRepository;
private final JwtProvider jwtProvider;
private final S3Service s3Service;

Expand All @@ -77,11 +92,6 @@ public void checkNickname(String nickname) {
throw new MemberHandler(ErrorStatus.NICKNAME_ALREADY_EXIST);
}

public MemberAllergy findMemberAllergy(Long memberId, Long allergyId){
return memberAllergyRepository
.findByAllergy_IdAndMember_Id(memberId, allergyId);
}

@Transactional
public Member joinMember(MemberRequestDTO.JoinDto request, String url){
Member newMem = MemberConverter.toMember(request, url);
Expand Down Expand Up @@ -121,6 +131,7 @@ public Member signup(MemberRequestDTO.JoinDto request, String url) {
return member;
}

//프로필 이미지 수정
@Transactional
public Member updateProfileById(MultipartFile file, String personalId) throws IOException {
Member member = memberRepository.findByPersonalId(personalId)
Expand All @@ -130,42 +141,44 @@ public Member updateProfileById(MultipartFile file, String personalId) throws IO
return member;
}

//회원 정보 수정
@Transactional
public Member updateMemberById(MemberRequestDTO.fixMemberInfoDto request, String personalId) {
Member member = memberRepository.findByPersonalId(personalId)
.orElseThrow(() -> new MemberHandler(ErrorStatus.MEMBER_NOT_FOUND));
.orElseThrow(() -> new MemberHandler(ErrorStatus.MEMBER_NOT_FOUND));

// 저장되어 있던 알러지 리스트
List<MemberAllergy> memberAllergyList = member.getMemberAllergyList();
List<Long> allergyIds = memberAllergyList.stream()
.map(MemberAllergy::getId)
.toList(); // 저장되어 있던 알러지 리스트

//새로 입력된 알러지 리스트
List<Long> allergyList = request.getAllergyList();
.toList();

//원래 있던건 삭제
for(Long ids : allergyIds){
deleteMemberAllergy(member.getId(), ids);
for (Long ids : allergyIds) {
memberAllergyRepository.deleteById(ids);
}

//새로 입력된 알러지 리스트
List<Long> allergyList = request.getAllergyList();

List<Allergy> allergies = allergyList.stream()
.map(allergy -> {
return allergyRepository.findById(allergy).orElseThrow(() -> new AllergyHandler(ErrorStatus.ALLERGY_NOT_FOUND));
}).toList();
.map(allergy -> {
return allergyRepository.findById(allergy)
.orElseThrow(() -> new AllergyHandler(ErrorStatus.ALLERGY_NOT_FOUND));
}).toList();
List<MemberAllergy> memberAllergies = MemberAllergyConverter.toMemberAllergyList(allergies);
memberAllergies.forEach(memberAllergy -> {memberAllergy.setMember(member);});
memberAllergies.forEach(memberAllergy -> {
memberAllergy.setMember(member);
});

member.updateMember(request.getName(), request.getNickname(), request.getGender(), request.getAge(), request.getImportant(), request.getEvent(), request.getActivity(), memberAllergies);
member.updateMember(request.getName(), request.getNickname(), request.getGender(), request.getAge(),
request.getImportant(), request.getEvent(), request.getActivity(), memberAllergies);
log.info("[fix] 멤버 정보를 수정했습니다.");
return memberRepository.save(member);
}

@Transactional
public void deleteMemberAllergy(Long memberId, Long allergyId) {
MemberAllergy memberAllergy = findMemberAllergy(memberId, allergyId);
memberAllergyRepository.delete(memberAllergy);
}

//로그인
@Transactional
public Member login(MemberLoginRequestDTO.JoinLoginDto request){
Member member = memberRepository.findByPersonalId(request.getPersonalId())
Expand All @@ -188,6 +201,8 @@ public Member login(MemberLoginRequestDTO.JoinLoginDto request){
return member;
}


//회원이 작성한 글 보기
@Transactional
public ApiResponse<?> getWrittenPostList(String personalId, Integer page) {
Page<Post> postPage;
Expand Down Expand Up @@ -277,7 +292,47 @@ public void deleteMember(String personalId){
}
Member member1 = member.get();
RefreshToken refreshToken = tokenRepository.findByMember(member1);

//재료 삭제
List<Ingredient> ingredients = ingredientRepository.findNamesByMember_PersonalId(member1.getPersonalId());
for(Ingredient ingredient : ingredients){
ingredientRepository.deleteById(ingredient.getIngredientId());
}

//포스트 상태 변경
List<Post> posts = postRepository.findAllByMember(member1);
for(Post post : posts){
post.updateStatus(Status.TEMP);
}

//QNA 삭제
List<Qna> qnas = qnaRepository.findAllByMember(member1);
for(Qna qna : qnas){
qnaRepository.deleteById(qna.getId());
}

//리뷰 삭제
List<Review> reviews = reviewRepository.findAllByMember(member1);
for(Review review : reviews){
reviewRepository.deleteById(review.getId());
}

//stored recipe 삭제
List<StoredRecipe> storedRecipes = storedRecipeRepository.findAllByMember(member1);
for(StoredRecipe storedRecipe : storedRecipes){
storedRecipeRepository.deleteById(storedRecipe.getId());
}

//싫어하는 음식 삭제
List<DislikedFood> dislikedFoods = dislikedFoodRepository.findAllByMember_Id(member1.getId());
for(DislikedFood dislikedFood : dislikedFoods){
dislikedFoodRepository.deleteById(dislikedFood.getId());
}

//token 삭제
tokenRepository.delete(refreshToken);

//멤버 삭제
memberRepository.delete(member1);
}

Expand Down

0 comments on commit 4a4e87d

Please sign in to comment.