Skip to content

Commit 95b20e1

Browse files
committed
refactor : memo에 groupId 추가
1 parent 8486973 commit 95b20e1

File tree

6 files changed

+45
-8
lines changed

6 files changed

+45
-8
lines changed

src/main/java/com/dnd/reevserver/domain/memo/controller/MemoController.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,26 @@
1919
public class MemoController {
2020
private final MemoService memoService;
2121

22+
@Operation(summary = "메모 단일 조회, 그룹이 없을 경우 groupId가 0으로 표시됩니다.")
2223
@GetMapping("/{memoId}")
2324
public ResponseEntity<MemoResponseDto> findMemoById(@PathVariable Long memoId) {
2425
return ResponseEntity.ok(memoService.findMemoById(memoId));
2526
}
2627

27-
@Operation(summary = "유저의 전체 메모 조회")
28+
@Operation(summary = "유저의 전체 메모 조회, 그룹이 없을 경우 groupId가 0으로 표시됩니다.")
2829
@GetMapping
2930
public ResponseEntity<List<MemoResponseDto>> findMemosByUserId(@AuthenticationPrincipal String userId) {
3031
List<MemoResponseDto> memos = memoService.findMemosByUserId(userId);
3132
return ResponseEntity.ok(memos);
3233
}
3334

35+
@Operation(summary = "유저와 그룹으로 메모들 조회")
36+
@GetMapping("/group/{groupId}")
37+
public ResponseEntity<List<MemoResponseDto>> findMemosByUserIdAndGroupId(@AuthenticationPrincipal String userId,
38+
@PathVariable Long groupId) {
39+
return ResponseEntity.ok(memoService.findMemosByUserIdAndGroupId(userId, groupId));
40+
}
41+
3442
@Operation(summary = "유저의 메모 수 조회")
3543
@GetMapping("/count")
3644
public ResponseEntity<Integer> countMemosByUserId(@AuthenticationPrincipal String userId) {

src/main/java/com/dnd/reevserver/domain/memo/dto/request/CreateMemoRequestDto.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@
22

33
import java.util.List;
44

5-
public record CreateMemoRequestDto(String title, String content, String templateName, List<String> categoriesName) {
5+
public record CreateMemoRequestDto(String title, String content, String templateName,
6+
List<String> categoriesName, Long groupId) {
67
}

src/main/java/com/dnd/reevserver/domain/memo/dto/response/MemoResponseDto.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@
55
import java.util.List;
66

77
@Builder
8-
public record MemoResponseDto(Long memoId, String userId, String title, String content, String templateName, List<String> categories){
8+
public record MemoResponseDto(Long memoId, String userId, String title,
9+
String content, String templateName, List<String> categories, Long groupId){
910
}

src/main/java/com/dnd/reevserver/domain/memo/entity/Memo.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.dnd.reevserver.domain.category.entity.MemoCategory;
44
import com.dnd.reevserver.domain.member.entity.Member;
5+
import com.dnd.reevserver.domain.team.entity.Team;
56
import com.dnd.reevserver.domain.template.entity.Template;
67
import com.dnd.reevserver.global.common.entity.BaseEntity;
78
import jakarta.persistence.*;
@@ -38,4 +39,8 @@ public class Memo extends BaseEntity {
3839

3940
@OneToMany(mappedBy = "memo", cascade = CascadeType.REMOVE, orphanRemoval = true)
4041
private List<MemoCategory> memoCategories = new ArrayList<>();
42+
43+
@ManyToOne(fetch = FetchType.LAZY)
44+
@JoinColumn(name = "group_id")
45+
private Team team;
4146
}

src/main/java/com/dnd/reevserver/domain/memo/repository/MemoRepository.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,15 @@ public interface MemoRepository extends JpaRepository<Memo, Long> {
1111
@Query("SELECT m FROM Memo m " +
1212
"JOIN FETCH m.member " +
1313
"JOIN FETCH m.template " +
14+
"JOIN FETCH m.team "+
1415
"WHERE m.member.userId = :userId")
1516
List<Memo> findMemosByMemberUserId(@Param("userId") String userId);
17+
18+
@Query("SELECT m FROM Memo m " +
19+
"JOIN FETCH m.member " +
20+
"JOIN FETCH m.template " +
21+
"JOIN FETCH m.team "+
22+
"WHERE m.member.userId = :userId " +
23+
"AND m.team.groupId = :groupId")
24+
List<Memo> findMemosByMemberUserIdAndGroupId(@Param("userId") String userId, @Param("groupId") Long groupId);
1625
}

src/main/java/com/dnd/reevserver/domain/memo/service/MemoService.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import com.dnd.reevserver.domain.memo.entity.Memo;
1212
import com.dnd.reevserver.domain.memo.exception.MemoNotFoundException;
1313
import com.dnd.reevserver.domain.memo.repository.MemoRepository;
14+
import com.dnd.reevserver.domain.team.service.TeamService;
1415
import com.dnd.reevserver.domain.template.entity.Template;
1516
import com.dnd.reevserver.domain.template.service.TemplateService;
1617
import lombok.RequiredArgsConstructor;
@@ -29,6 +30,7 @@ public class MemoService {
2930
private final MemoCategoryRepository memoCategoryRepository;
3031
private final CategoryRepository categoryRepository;
3132
private final MemoCategoryBatchRepository memoCategoryBatchRepository;
33+
private final TeamService teamService;
3234

3335
public Memo findById(Long id) {
3436
return memoRepository.findById(id).orElseThrow(MemoNotFoundException::new);
@@ -46,6 +48,13 @@ public List<MemoResponseDto> findMemosByUserId(String userId){
4648
.collect(Collectors.toList());
4749
}
4850

51+
// 유저의 그룹에 있는 메모들 조회
52+
public List<MemoResponseDto> findMemosByUserIdAndGroupId(String userId, Long groupId){
53+
return memoRepository.findMemosByMemberUserIdAndGroupId(userId, groupId).stream()
54+
.map(this::convertToDto)
55+
.collect(Collectors.toList());
56+
}
57+
4958
// 유저의 메모 수 조회
5059
public Integer countMemosByUserId(String userId){
5160
return memoRepository.findMemosByMemberUserId(userId).size();
@@ -56,11 +65,12 @@ public Integer countMemosByUserId(String userId){
5665
public void createMemo(String userId, CreateMemoRequestDto dto){
5766
Template template = templateService.findByName(dto.templateName());
5867
Memo memo = Memo.builder()
59-
.member(memberService.findById(userId))
60-
.title(dto.title())
61-
.content(dto.content())
62-
.template(template) // null 가능
63-
.build();
68+
.member(memberService.findById(userId))
69+
.title(dto.title())
70+
.content(dto.content())
71+
.template(template) // null 가능
72+
.team(dto.groupId() == null ? null : teamService.findById(dto.groupId())) // null 가능
73+
.build();
6474
// 메모-태그 생성
6575
memoRepository.save(memo);
6676
List<Category> categories = categoryRepository.findByCategoryNameIn(dto.categoriesName());
@@ -90,6 +100,9 @@ private MemoResponseDto convertToDto(Memo memo){
90100
.map(mc -> mc.getCategory().getCategoryName())
91101
.toList()
92102
)
103+
.groupId(
104+
memo.getTeam() == null ? 0 : memo.getTeam().getGroupId()
105+
)
93106
.build();
94107
}
95108
}

0 commit comments

Comments
 (0)