Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions src/main/java/com/petmatz/api/pet/PetController.java
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ public Response<PetInfoResponse> fetchPetInfo(@RequestBody PetRegisterNoRequest
})
public Response<S3ImgDataResponse> registerPet(@RequestBody PetRequest request) throws MalformedURLException {
Long userId = jwtExtractProvider.findIdFromJwt();
User user = userUtils.findUser(userId);
System.out.println("userId :: " + userId);
User user = userUtils.findIdUser(userId);
S3ImgDataInfo petSaveInfo = petService.savePet(user, request.of());
return Response.success(S3ImgDataResponse.of(petSaveInfo));
}
Expand All @@ -86,7 +87,7 @@ public Response<S3ImgDataResponse> registerPet(@RequestBody PetRequest request)
})
public Response<S3ImgDataResponse> updatePet(@PathVariable Long id, @RequestBody PetUpdateRequest petUpdateRequest) throws MalformedURLException {
Long userId = jwtExtractProvider.findIdFromJwt();
User user = userUtils.findUser(userId);
User user = userUtils.findIdUser(userId);
S3ImgDataInfo petSaveInfo = petService.updatePet(id, user, petUpdateRequest.of());
return Response.success(S3ImgDataResponse.of(petSaveInfo));
}
Expand All @@ -97,7 +98,7 @@ public Response<S3ImgDataResponse> updatePet(@PathVariable Long id, @RequestBody
@Parameter(name = "id", description = "반려동물 ID", example = "1")
public Response<Void> deletePet(@PathVariable Long id) {
Long userId = jwtExtractProvider.findIdFromJwt();
User user = userUtils.findUser(userId);
User user = userUtils.findIdUser(userId);
petService.deletePet(id, user);
return Response.success("댕댕이 정보가 성공적으로 삭제되었습니다.");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ public interface PetRepository extends JpaRepository<Pet, Long> {
@Query("select p from Pet p where p.id IN :petList")
List<Pet> findPetListByPetId(@Param("petList") List<String> petList);


List<Pet> findAllByUserId(Long userId);

void deleteByUserId(Long userId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ public PetMissionData insertPetMission(PetMissionInfo petMissionInfo, Long careI
.map(user -> UserToPetMissionEntity.of(user, petMissionEntity, careId))
.toList();

petMissionAppend.insertPetMission(petMissionEntity);
userToPetMissionAppend.insertUserToPetMission(userToPetMissionEntities);
return PetMissionData.of(chatRoomId, petMissionEntity);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.petmatz.domain.petmission.component;

import com.petmatz.domain.petmission.entity.PetMissionAnswerEntity;
import com.petmatz.domain.petmission.entity.PetMissionEntity;
import com.petmatz.domain.petmission.repository.PetMissionAnswerRepository;
import com.petmatz.domain.petmission.repository.PetMissionRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

Expand All @@ -10,11 +12,16 @@
public class PetMissionAppend {

private final PetMissionAnswerRepository petMissionAnswerRepository;
private final PetMissionRepository petMissionRepository;

public PetMissionAnswerEntity insertPetMissionAnswer(PetMissionAnswerEntity petMissionAnswerEntity) {
return petMissionAnswerRepository.save(petMissionAnswerEntity);
}

public void insertPetMission(PetMissionEntity petMission) {
petMissionRepository.save(petMission);
}



}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public class PetMissionAskEntity {

private String comment;

@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "pet_mission_id", nullable = false) // 외래 키
private PetMissionEntity petMission;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public class UserToPetMissionEntity {
@JoinColumn(name = "user_id", nullable = false)
private User user;

@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "pet_mission_id", nullable = false)
private PetMissionEntity petMission;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,7 @@ public interface SosBoardRepository extends JpaRepository<SosBoard, Long> {
Page<SosBoard> findByUserRegion(@Param("region") String region, Pageable pageable);

Page<SosBoard> findByUserNickname(String nickname, Pageable pageable);

void deleteByUserId(Long id);
}

32 changes: 4 additions & 28 deletions src/main/java/com/petmatz/domain/sosboard/SosBoardService.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.petmatz.domain.pet.entity.Pet;
import com.petmatz.domain.pet.repository.PetRepository;
import com.petmatz.domain.sosboard.component.SosBoardAppend;
import com.petmatz.domain.sosboard.component.SosBoardDelete;
import com.petmatz.domain.sosboard.component.SosBoardReader;
import com.petmatz.domain.sosboard.dto.*;
import com.petmatz.domain.sosboard.entity.PetSosBoard;
Expand All @@ -28,7 +29,7 @@ public class SosBoardService {
private final SosBoardAppend sosBoardAppend;
private final PetReader petReader;

private final SosBoardRepository sosBoardRepository;
private final SosBoardDelete sosBoardDelete;
private final UserRepository userRepository;
private final PetRepository petRepository;

Expand Down Expand Up @@ -89,11 +90,7 @@ public SpecificSosBoardInfo updateSosBoard(Long boardId, UpdateSosBoardInfo upda
//게시글 삭제
public void deleteSosBoard(Long boardId, User user) {
SosBoard sosBoard = sosBoardReader.selectSosBoard(boardId);

//사용자 권한 확인
sosBoard.checkUserId(user.getId());

sosBoardRepository.delete(sosBoard);
sosBoardDelete.deleteSosBoard(sosBoard, user);
}

// User의 Pet 정보 불러오기
Expand All @@ -110,28 +107,7 @@ public List<PetResponse> getUserPets(Long userId) {

// 해당 닉네임에 해당하는 글 불러오기
public PageResponse<LegercySosBoardInfo> getUserSosBoardsByNickname(String nickname, int page, int size) {
Pageable pageable = PageRequest.of(page, size, Sort.by(Sort.Direction.DESC, "id"));

Page<SosBoard> sosBoardPage = sosBoardRepository.findByUserNickname(nickname, pageable);

// SosBoard → SosBoardServiceDto 변환
List<LegercySosBoardInfo> serviceDtos = sosBoardPage.getContent().stream()
.map(sosBoard -> {
List<PetResponse> petResponses = sosBoard.getPetSosBoards().stream()
.map(PetSosBoard::getPet)
.map(PetResponse::of)
.collect(Collectors.toList());
return LegercySosBoardInfo.from(sosBoard, petResponses);
})
.collect(Collectors.toList());

// PageResponseDto 생성
return new PageResponse<>(
serviceDtos,
sosBoardPage.getTotalElements(),
sosBoardPage.getTotalPages(),
page + 1
);
return sosBoardReader.getUserSosBoardsByNickname(nickname, page, size);
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.petmatz.domain.sosboard.component;

import com.petmatz.domain.sosboard.SosBoardRepository;
import com.petmatz.domain.sosboard.entity.SosBoard;
import com.petmatz.domain.user.entity.User;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

@Component
@RequiredArgsConstructor
public class SosBoardDelete {

private final SosBoardRepository sosBoardRepository;

//게시글 삭제
public void deleteSosBoard(SosBoard sosBoard, User user) {
//사용자 권한 확인
sosBoard.checkUserId(user.getId());
sosBoardRepository.delete(sosBoard);
}

public void deleteSosBoardByUser(Long userId) {
sosBoardRepository.deleteByUserId(userId);
}

}
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
package com.petmatz.domain.sosboard.component;

import com.petmatz.api.pet.dto.PetResponse;
import com.petmatz.domain.sosboard.SosBoardRepository;
import com.petmatz.domain.sosboard.dto.LegercySosBoardInfo;
import com.petmatz.domain.sosboard.dto.PageResponse;
import com.petmatz.domain.sosboard.dto.SosBoardInfoList;
import com.petmatz.domain.sosboard.entity.PetSosBoard;
import com.petmatz.domain.sosboard.entity.SosBoard;
import com.petmatz.domain.sosboard.exception.SosBoardErrorCode;
import com.petmatz.domain.sosboard.exception.SosBoardServiceException;
Expand All @@ -10,6 +14,7 @@
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.stream.Collectors;

@Component
@RequiredArgsConstructor
Expand Down Expand Up @@ -44,4 +49,29 @@ private Slice<SosBoard> checkRegin(String region, Pageable pageable) {
return sosBoardRepository.findByUserRegion(region, pageable);
}
}

public PageResponse<LegercySosBoardInfo> getUserSosBoardsByNickname(String nickname, int page, int size) {
Pageable pageable = PageRequest.of(page, size, Sort.by(Sort.Direction.DESC, "id"));

Page<SosBoard> sosBoardPage = sosBoardRepository.findByUserNickname(nickname, pageable);

// SosBoard → SosBoardServiceDto 변환
List<LegercySosBoardInfo> serviceDtos = sosBoardPage.getContent().stream()
.map(sosBoard -> {
List<PetResponse> petResponses = sosBoard.getPetSosBoards().stream()
.map(PetSosBoard::getPet)
.map(PetResponse::of)
.collect(Collectors.toList());
return LegercySosBoardInfo.from(sosBoard, petResponses);
})
.collect(Collectors.toList());

// PageResponseDto 생성
return new PageResponse<>(
serviceDtos,
sosBoardPage.getTotalElements(),
sosBoardPage.getTotalPages(),
page + 1
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ public void emailCertification(EmailCertificationRequestDto dto) {

// 인증 번호 생성 및 이메일 전송
String certificationNumber = CertificationNumberProvider.generateNumber();
System.out.println("certificationNumber :: " + certificationNumber);
emailProvider.sendVerificationEmail(accountId, certificationNumber);

emailComponent.saveCertification(accountId, certificationNumber);
Expand Down
18 changes: 15 additions & 3 deletions src/main/java/com/petmatz/domain/user/service/UserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.petmatz.common.security.jwt.JwtExtractProvider;
import com.petmatz.domain.pet.entity.Pet;
import com.petmatz.domain.pet.repository.PetRepository;
import com.petmatz.domain.sosboard.component.SosBoardDelete;
import com.petmatz.domain.user.component.PasswordComponent;
import com.petmatz.domain.user.component.UserUtils;
import com.petmatz.domain.user.entity.User;
Expand All @@ -29,6 +30,7 @@ public class UserService {
private final UserRepository userRepository;
private final PetRepository petRepository;

private final SosBoardDelete sosBoardDelete;

private final CertificationRepository certificationRepository;
private final JwtExtractProvider jwtExtractProvider;
Expand All @@ -44,12 +46,22 @@ public void deleteId(DeleteIdRequestDto dto) {
String password = dto.getPassword();
String encodedPassword = user.getPassword();

//패스워드 검증
passwordComponent.validatePassword(password, encodedPassword);

//인증번호 관련 전부 삭제
//TODO 인증 번호를 굳이 DB에서 관리해야 하나?
certificationRepository.deleteById(userId);
// 사용자 삭제
List<Pet> pets = petRepository.findAllByUserId(user.getId()); // Pet 엔티티에서 User를 참조하는 기준으로 조회

//sos보드 삭제
sosBoardDelete.deleteSosBoardByUser(userId);

//채팅방 삭제

// 명시적으로 Pet 삭제
petRepository.deleteAll(pets);
// petRepository.deleteAll(pets);
petRepository.deleteByUserId(userId);

userRepository.delete(user);
}

Expand Down