Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/#2 map letter 기능 구현 #27

Merged
merged 80 commits into from
Nov 29, 2024
Merged
Show file tree
Hide file tree
Changes from 74 commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
e934d24
feat: #2 위치 기반으로 모든 사용자가 볼 수 있는 편지 보내기 기능 추가
kahyun0255 Nov 22, 2024
0c94879
fix: #2 지도 편지 에러 처리 오류 수정
kahyun0255 Nov 22, 2024
21c393a
feat: #2 타겟 편지 생성 기능 추가
kahyun0255 Nov 22, 2024
eaf505b
fix: #2 에러 핸들링시 에러 코드 수정
kahyun0255 Nov 22, 2024
19553f7
fix: #2 타겟 편지 테스트용 PathVariable 삭제
kahyun0255 Nov 22, 2024
c9d8e83
test: #2 퍼블릭 편지 생성 성공 테스트 추가
kahyun0255 Nov 24, 2024
c7bc828
test: #2 타겟 편지 생성 성공 테스트 추가
kahyun0255 Nov 24, 2024
f38047a
feat: #2 편지 상세 조회 기능 구현
kahyun0255 Nov 25, 2024
41e86fd
refactor: #2 패키지 구조 수정. service interface 삭제
kahyun0255 Nov 25, 2024
f0d8e3e
fix: #2 편지 상세 조회 api 엔드포인트 수정
kahyun0255 Nov 25, 2024
4f2fcff
refactor: #2 편지지, 라벨 url(String)으로 저장
kahyun0255 Nov 25, 2024
9a347fe
feat: #2 편지지 전체조회 기능 구현
kahyun0255 Nov 25, 2024
d114e02
feat: #2 지도 퍼블릭 편지 삭제 기능 구현
kahyun0255 Nov 25, 2024
868e454
fix: #2 타겟 편지도 삭제할 수 있도록 수정
kahyun0255 Nov 25, 2024
07b22ef
fix: #2 테스트용 코드 삭제
kahyun0255 Nov 25, 2024
1efe773
test: #2 public 편지 상세조회 성공 테스트 추가
kahyun0255 Nov 25, 2024
6c8ac26
fix: #2 편지 상세조회시 라벨 이미지 추가
kahyun0255 Nov 25, 2024
089118a
test: #2 타겟 편지 상세 조회 성공, 실패 테스트 추가
kahyun0255 Nov 25, 2024
f4e9768
test: #2 편지 삭제 테스트 추가
kahyun0255 Nov 25, 2024
4854891
test: #2 테스트코드 메서드명 변경
kahyun0255 Nov 25, 2024
fed9a80
test: #2 패키지 구조 변경에 따른 테스트코드 위치 변경
kahyun0255 Nov 25, 2024
316e349
test: #2 편지지 조회 테스트 추가
kahyun0255 Nov 25, 2024
edc8d49
test: #2 MapLetter 도메인 테스트 추가
kahyun0255 Nov 25, 2024
fd74dce
feat: #2 보낸 지도 편지 전체 조회
kahyun0255 Nov 25, 2024
9b97f83
test: #2 보낸 지도편지 조회 성공 테스트 추가
kahyun0255 Nov 25, 2024
5aa40ea
fix: #2 테스트용 PathVariable 삭제
kahyun0255 Nov 25, 2024
d129e7f
feat: #2 받은 지도 편지 조회 기능 추가
kahyun0255 Nov 25, 2024
08e7316
test: #2 클래스명 수정에 따른 코드 수정
kahyun0255 Nov 25, 2024
486d784
test: #2 보낸 지도 편지 조회 테스트에서 로그인 한 유저가 아닌 다른 유저가 만든 편지 추가
kahyun0255 Nov 25, 2024
1a8d762
test: #2 받은 지도 편지 조회 성공 테스트 추가
kahyun0255 Nov 25, 2024
a42737d
fix: #2 soft delete로 변경
kahyun0255 Nov 26, 2024
3369b1a
fix: #2 타겟 편지 상세보기 편지를 작성 한 유저도 볼 수 있도록 수정
kahyun0255 Nov 26, 2024
0beaf07
test: #2 soft delete 변경에 따른 기존 테스트 코드 수정
kahyun0255 Nov 26, 2024
5469442
fix: #2 편지 상세조회 편지 볼 수 있는 권한 수정
kahyun0255 Nov 26, 2024
4e07b40
test: #2 편지 상세보기 권한 수정에 따른 테스트 코드 수정
kahyun0255 Nov 26, 2024
fe5bd57
fix: #2 편지 상세보기 권한 수정
kahyun0255 Nov 26, 2024
c258964
test: #2 테스트 h2 DB 생성, 편지 조회 query문 테스트
kahyun0255 Nov 26, 2024
c2a40fa
feat: #2 주변 편지 조회 기능 구현
kahyun0255 Nov 26, 2024
811683f
test: #2 주변 편지 조회 서비스 테스트 추가
kahyun0255 Nov 26, 2024
f72ea0d
test: #2 주변 편지 조회 쿼리 테스트
kahyun0255 Nov 26, 2024
e41702a
fix: #2 편지 생성시 위치 설명하도록 수정
kahyun0255 Nov 26, 2024
3221941
test: #2 편지 생성시 장소 설명 추가에 따른 테스트코드 수정
kahyun0255 Nov 26, 2024
5063e6c
fix: #2 편지 상세조회시 편지 위치 설명도 같이 주도록 수정
kahyun0255 Nov 26, 2024
a417f27
test: #2 편지 상세조회시 장소 설명 나오도록 테스트 수정
kahyun0255 Nov 26, 2024
43dc166
fix: #2 보낸 지도 편지 조회시 위치 설명하고 타겟 유저 닉네임 같이 주도록 수정
kahyun0255 Nov 26, 2024
50809b5
test: #2 보낸 지도 편지 조회 테스트에서 장소 설명 테스트 추가
kahyun0255 Nov 27, 2024
a8c8068
fix: #2 편지 리스트로 받아서 한 번에 삭제되도록 수정
kahyun0255 Nov 27, 2024
b373661
fix: #2 주변 편지 조회시 위치 설명도 같이 주도록 수정, 한 달간의 편지만 보도록 설정
kahyun0255 Nov 27, 2024
938dca3
feat: #2 지도 편지 답장 생성 기능 추가
kahyun0255 Nov 27, 2024
f732470
fix: #2 받은 지도 편지 조회시 내가 쓴 편지에 대한 답장도 조회하도록 수정
kahyun0255 Nov 27, 2024
5eec272
feat: #2 편지별 받은 답장 전체 조회 기능 추가
kahyun0255 Nov 27, 2024
dc91265
rename: #2 dto 이름 변경
kahyun0255 Nov 27, 2024
94b84fb
fix: #2 답장 편지 생성시 편지 내용이 안들어가는 오류 해결
kahyun0255 Nov 27, 2024
29a1e99
feat: #2 답장 편지 상세조회 기능 추가
kahyun0255 Nov 27, 2024
51d73a6
feat: #2 편지 보관 기능 추가
kahyun0255 Nov 27, 2024
036197d
feat: #2 보관한 편지 조회 기능 추가
kahyun0255 Nov 27, 2024
11f0040
feat: #2 편지 보관 취소 기능 추가
kahyun0255 Nov 27, 2024
43a1f8e
fix: #2 보관한 편지 조회시 보관 id도 같이 주도록 수정
kahyun0255 Nov 27, 2024
1217a2e
fix: #2 편지 보관 중복 로직 처리
kahyun0255 Nov 27, 2024
a6fa394
fix: #2 테스트용 PathVariable 삭제
kahyun0255 Nov 27, 2024
925343c
fix: #2 지도 편지 답장 생성시 이미 답장을 보냈으면 보내지 못하도록 수정
kahyun0255 Nov 28, 2024
910e8c4
feat: #2 유저가 해당 편지에 답장을 보냈는지 확인하는 기능 추가
kahyun0255 Nov 28, 2024
7fcf9f0
refactor: #2 리턴타입 수정
kahyun0255 Nov 28, 2024
c8b8dca
feat: #2 편지 블락 기능 추가
kahyun0255 Nov 28, 2024
aae77bb
fix: #2 편지 보관 기능 유저가 저정한 편지만 보도록 수정
kahyun0255 Nov 28, 2024
816f409
refector: #2 Optional 관련 리팩토링
kahyun0255 Nov 28, 2024
662b17d
feat: #2 답장 편지 삭제 기능 추가
kahyun0255 Nov 28, 2024
63077ee
refector: #2 Transactional 설정
kahyun0255 Nov 28, 2024
b01d5d6
fix: #2 엔티티 테이블명 변경
kahyun0255 Nov 28, 2024
2e7d96d
refector: #2 Transactional Service로 이동
kahyun0255 Nov 28, 2024
88072f1
fix: #2 테이블명 변경에 따른 쿼리문 변경
kahyun0255 Nov 28, 2024
0771528
style: #2 코드 스타일 변경 및 사용하지 않는 import 삭제
kahyun0255 Nov 28, 2024
63a6144
style: #2 코드 끝 줄 처리
kahyun0255 Nov 28, 2024
2e45a44
style: #2 코드 끝 줄 처리
kahyun0255 Nov 28, 2024
d63629c
style: #2 코드 끝 줄 처리
kahyun0255 Nov 28, 2024
bd85f3b
fix: #2 오타 수정
kahyun0255 Nov 28, 2024
081fa92
fix: #2 편지 상세보기시 15m 안에 있는 편지만 조회할 수 있도록 수정
kahyun0255 Nov 28, 2024
ad82bd5
fix: #2 리뷰 반영해서 코드 수정
kahyun0255 Nov 28, 2024
c89d7b7
merge: #2 충돌 해결
kahyun0255 Nov 29, 2024
5abff47
test: #2 테스트 코드 수정, 주석처리
kahyun0255 Nov 29, 2024
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
13 changes: 5 additions & 8 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,17 +36,14 @@ out/
### VS Code ###
.vscode/

### yml ###
applicaion.yml
./applicaion.yml
./src/main/resources/applicaion.yml
*/applicaion.yml
*.yml
src/main/resources/applicaion.yml

### ds_store ###
.DS_Store
._.DS_Store
**/.DS_Store
**/._.DS_Store

### env value ###
.env

application-test.yml
src/main/resources/application-test.yml
2 changes: 2 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ dependencies {
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
implementation 'org.springframework.boot:spring-boot-starter-validation'
testImplementation 'com.h2database:h2:2.2.220'
}

tasks.named('test') {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,23 @@
public enum ErrorStatus {
// 공통 에러
INVALID_LOGIN(HttpStatus.BAD_REQUEST, "COMMON400"),
FORBIDDEN(HttpStatus.FORBIDDEN, "COMMON403");
FORBIDDEN(HttpStatus.FORBIDDEN, "COMMON403"),

// 지도 편지 에러
MAP_LETTER_NOT_FOUND(HttpStatus.NOT_FOUND, "MAP4000"),
LOCATION_NOT_FOUND(HttpStatus.BAD_REQUEST, "MAP4001"),
EMPTY_MAP_LETTER_CONTENT(HttpStatus.BAD_REQUEST, "MAP4002"),
EMPTY_MAP_LETTER_TITLE(HttpStatus.BAD_REQUEST, "MAP4003"),
EMPTY_MAP_LETTER_TARGET(HttpStatus.BAD_REQUEST, "MAP4004"),
MAP_LETTER_ALREADY_DELETED(HttpStatus.BAD_REQUEST, "MAP4005"),
EMPTY_MAP_LETTER_DESCRIPTION(HttpStatus.BAD_REQUEST, "MAP4006"),
EMPTY_REPLY_MAP_LETTER_SOURCE(HttpStatus.BAD_REQUEST, "MAP4007"),
SOURCE_MAP_LETTER_NOT_FOUND(HttpStatus.BAD_REQUEST, "MAP4008"),
LETTER_ALREADY_ARCHIVED(HttpStatus.BAD_REQUEST, "MAP4009"),
LETTER_ALREADY_REPLY(HttpStatus.BAD_REQUEST, "MAP40010"),

;


private final HttpStatus httpStatus;
private final String code;
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,162 @@
package postman.bottler.mapletter.controller;

import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import postman.bottler.global.response.ApiResponse;
import postman.bottler.mapletter.dto.request.*;
import postman.bottler.mapletter.dto.response.*;
import postman.bottler.mapletter.exception.*;
import postman.bottler.mapletter.service.MapLetterService;

import java.math.BigDecimal;
import java.util.List;

@RestController
@RequestMapping("/map")
@RequiredArgsConstructor
public class MapLetterController {

private final MapLetterService mapLetterService;

@PostMapping("/public")
public ApiResponse<?> createMapLetter(
@Valid @RequestBody CreatePublicMapLetterRequestDTO createPublicMapLetterRequestDTO,
BindingResult bindingResult, Long userId) {
if (bindingResult.hasErrors()) {
bindingResult.getFieldErrors().forEach(error -> {
if ("title".equals(error.getField())) {
throw new EmptyMapLetterTitleException(error.getDefaultMessage());
} else if ("content".equals(error.getField())) {
throw new EmptyMapLetterContentException(error.getDefaultMessage());
} else if ("description".equals(error.getField())) {
throw new EmptyMapLetterDescriptionException(error.getDefaultMessage());
}
});

throw new IllegalArgumentException(bindingResult.getAllErrors().get(0).getDefaultMessage()); //기타 오류
}
mapLetterService.createPublicMapLetter(createPublicMapLetterRequestDTO, userId);
return ApiResponse.onCreateSuccess("지도 편지 생성이 성공되었습니다.");
}

@PostMapping("/target")
public ApiResponse<?> createTargetLetter(
@Valid @RequestBody CreateTargetMapLetterRequestDTO createTargetMapLetterRequestDTO,
BindingResult bindingResult, Long userId) {
if (bindingResult.hasErrors()) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

어차피 bindingResult를 넘기니까
위의 처리랑 묶어서 메서드 처리 가능할거 같아요

validateMapLetterRequest(bindingResult) {
    if(bindingResult.hasError()) {
         bindingResult.getFiedlErrors().forEach(error -> {
             switch(error.getField()) {
                 case "title":
                     thorw~
                 default:
                     throw~ Ilegal~
             }
        });
    }
}

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오호랏 수정하겠습니다 🪼

bindingResult.getFieldErrors().forEach(error -> {
if ("title".equals(error.getField())) {
throw new EmptyMapLetterTitleException(error.getDefaultMessage());
} else if ("content".equals(error.getField())) {
throw new EmptyMapLetterContentException(error.getDefaultMessage());
} else if ("target".equals(error.getField())) {
throw new EmptyMapLetterTargetException(error.getDefaultMessage());
} else if ("description".equals(error.getField())) {
throw new EmptyMapLetterDescriptionException(error.getDefaultMessage());
}
});

throw new IllegalArgumentException(bindingResult.getAllErrors().get(0).getDefaultMessage()); //기타 오류
}
mapLetterService.createTargetMapLetter(createTargetMapLetterRequestDTO, userId);
return ApiResponse.onCreateSuccess("타겟 편지 생성이 성공되었습니다.");
}

@GetMapping("/{letterId}")
public ApiResponse<OneLetterResponseDTO> findOneMapLetter(@PathVariable Long letterId, Long userId) {
return ApiResponse.onSuccess(mapLetterService.findOneMepLetter(letterId, userId));
}

@DeleteMapping
public ApiResponse<?> deleteMapLetter(@RequestBody DeleteMapLettersRequestDTO letters, Long userId) {
mapLetterService.deleteMapLetter(letters.letterIds(), userId);
return ApiResponse.onDeleteSuccess(letters);
}

@GetMapping("/sent")
public ApiResponse<List<FindMapLetterResponseDTO>> findSentMapLetters(Long userId) {
return ApiResponse.onSuccess(mapLetterService.findSentMapLetters(userId));
}

@GetMapping("/received")
public ApiResponse<List<FindReceivedMapLetterResponseDTO>> findReceivedMapLetters(Long userId) {
return ApiResponse.onSuccess(mapLetterService.findReceivedMapLetters(userId));
}

@GetMapping
public ApiResponse<List<FindNearbyLettersResponseDTO>> findNearbyMapLetters(@RequestParam String latitude,
@RequestParam String longitude,
Long userId) {
BigDecimal lat = BigDecimal.ZERO;
BigDecimal lon = BigDecimal.ZERO;
try {
lat = new BigDecimal(latitude);
lon = new BigDecimal(longitude);
} catch (Exception e) {
throw new LocationNotFoundException("해당 위치를 찾을 수 없습니다.");
}

return ApiResponse.onSuccess(mapLetterService.findNearByMapLetters(lat, lon, userId));
}

@PostMapping("/reply")
public ApiResponse<?> createReplyMapLetter(
@Valid @RequestBody CreateReplyMapLetterRequestDTO createReplyMapLetterRequestDTO,
BindingResult bindingResult, Long userId) {
if (bindingResult.hasErrors()) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

위의 메서드를 쓰면 이것도 줄일 수 있을 것 같아요

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

넴~~

bindingResult.getFieldErrors().forEach(error -> {
if ("content".equals(error.getField())) {
throw new EmptyMapLetterContentException(error.getDefaultMessage());
} else if ("sourceLetter".equals(error.getField())) {
throw new EmptyReplyMapLetterSourceException(error.getDefaultMessage());
}
});

throw new IllegalArgumentException(bindingResult.getAllErrors().get(0).getDefaultMessage()); //기타 오류
}
mapLetterService.createReplyMapLetter(createReplyMapLetterRequestDTO, userId);
return ApiResponse.onCreateSuccess("답장 편지 생성이 성공되었습니다.");
}

@GetMapping("/{letterId}/reply")
public ApiResponse<List<FindAllReplyMapLettersResponseDTO>> findAllReplyMapLetter(@PathVariable Long letterId,
Long userId) {
return ApiResponse.onSuccess(mapLetterService.findAllReplyMapLetter(letterId, userId));
}

@GetMapping("/reply/{letterId}")
public ApiResponse<OneReplyLetterResponseDTO> findOneReplyMapLetter(@PathVariable Long letterId, Long userId) {
return ApiResponse.onSuccess(mapLetterService.findOneReplyMapLetter(letterId, userId));
}

@PostMapping("/{letterId}")
public ApiResponse<?> mapLetterArchive(@PathVariable Long letterId, Long userId) {
mapLetterService.mapLetterArchive(letterId, userId);
return ApiResponse.onCreateSuccess("편지 저장이 성공되었습니다.");
}

@GetMapping("/archived")
public ApiResponse<List<FindAllArchiveLetters>> findArchiveLetters(Long userId) {
return ApiResponse.onSuccess(mapLetterService.findArchiveLetters(userId));
}

@DeleteMapping("/archived")
public ApiResponse<?> archiveLetter(@RequestBody DeleteArchivedLettersRequestDTO deleteArchivedLettersRequestDTO
, Long userId) {
mapLetterService.deleteArchivedLetter(deleteArchivedLettersRequestDTO, userId);
return ApiResponse.onDeleteSuccess(deleteArchivedLettersRequestDTO);
}

@GetMapping("/reply/check/{letterId}")
public ApiResponse<CheckReplyMapLetterResponseDTO> checkReplyMapLetter(@PathVariable Long letterId, Long userId) {
return ApiResponse.onSuccess(mapLetterService.checkReplyMapLetter(letterId, userId));
}

@DeleteMapping("/reply")
public ApiResponse<?> deleteReplyMapLetter(@RequestBody DeleteMapLettersRequestDTO letters, Long userId) {
mapLetterService.deleteReplyMapLetter(letters.letterIds(), userId);
return ApiResponse.onDeleteSuccess(letters);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package postman.bottler.mapletter.controller;

import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import postman.bottler.global.response.ApiResponse;
import postman.bottler.mapletter.dto.PaperDTO;
import postman.bottler.mapletter.service.PaperService;

import java.util.List;

@RestController
@RequestMapping("/paper")
@RequiredArgsConstructor
public class PaperController {
private final PaperService paperService;

@GetMapping
public ApiResponse<List<PaperDTO>> findPapers() {
return ApiResponse.onSuccess(paperService.findPapers());
}
}
88 changes: 88 additions & 0 deletions src/main/java/postman/bottler/mapletter/domain/MapLetter.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,92 @@
package postman.bottler.mapletter.domain;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import postman.bottler.mapletter.dto.request.CreatePublicMapLetterRequestDTO;
import postman.bottler.mapletter.dto.request.CreateTargetMapLetterRequestDTO;
import postman.bottler.mapletter.dto.response.OneLetterResponseDTO;

@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Getter
public class MapLetter {
private Long id;
private String title;
private String content;
private BigDecimal latitude;
private BigDecimal longitude;
private String font;
private String paper;
private String label;
private String description;
private MapLetterType type;
private Long targetUserId;
private Long createUserId;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
private boolean isDeleted;
private boolean isBlocked;

public static MapLetter createPublicMapLetter(CreatePublicMapLetterRequestDTO createPublicMapLetterRequestDTO,
Long userId) {
return MapLetter.builder()
.title(createPublicMapLetterRequestDTO.title())
.content(createPublicMapLetterRequestDTO.content())
.latitude(createPublicMapLetterRequestDTO.latitude())
.longitude(createPublicMapLetterRequestDTO.longitude())
.font(createPublicMapLetterRequestDTO.font())
.paper(createPublicMapLetterRequestDTO.paper())
.label(createPublicMapLetterRequestDTO.label())
.type(MapLetterType.PUBLIC)
.createUserId(userId)
.createdAt(LocalDateTime.now())
.updatedAt(LocalDateTime.now())
.isDeleted(false)
.isBlocked(false)
.description(createPublicMapLetterRequestDTO.description())
.build();
}

public static MapLetter createTargetMapLetter(CreateTargetMapLetterRequestDTO createTargetMapLetterRequestDTO,
Long userId) {
return MapLetter.builder()
.title(createTargetMapLetterRequestDTO.title())
.content(createTargetMapLetterRequestDTO.content())
.latitude(createTargetMapLetterRequestDTO.latitude())
.longitude(createTargetMapLetterRequestDTO.longitude())
.font(createTargetMapLetterRequestDTO.font())
.paper(createTargetMapLetterRequestDTO.paper())
.label(createTargetMapLetterRequestDTO.label())
.type(MapLetterType.PRIVATE)
.createUserId(userId)
.targetUserId(createTargetMapLetterRequestDTO.target())
.createdAt(LocalDateTime.now())
.updatedAt(LocalDateTime.now())
.isDeleted(false)
.isBlocked(false)
.description(createTargetMapLetterRequestDTO.description())
.build();
}

public static OneLetterResponseDTO toOneLetterResponse(MapLetter mapLetter) {
return OneLetterResponseDTO.builder()
.title(mapLetter.getTitle())
.content(mapLetter.getContent())
.font(mapLetter.getFont())
.paper(mapLetter.getPaper())
.label(mapLetter.getLabel())
.createdAt(mapLetter.getCreatedAt())
.description(mapLetter.getDescription())
.build();
}

public void updateDelete(boolean deleted) {
this.isDeleted = deleted;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package postman.bottler.mapletter.domain;

import lombok.*;

@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Getter
public class MapLetterArchive {
private Long mapLetterArchiveId;
private Long mapLetterId;
private Long userId;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package postman.bottler.mapletter.domain;

public enum MapLetterType {
PUBLIC,
PRIVATE,
}
17 changes: 17 additions & 0 deletions src/main/java/postman/bottler/mapletter/domain/Paper.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package postman.bottler.mapletter.domain;

import lombok.*;
import postman.bottler.mapletter.dto.PaperDTO;

@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Getter
public class Paper {
Long paperId;
String paperUrl;

public static PaperDTO toPaperDTO(Paper paper) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저는 이 부분을 DTO에 from으로 넣어서 스스로 DTO를 만들도록 했는데 어떤 방식이 좋은지 몰라서
의견 나눠보고 싶어요!

return new PaperDTO(paper.paperId, paper.paperUrl);
}
}
Loading