From 912420f3b5a18f76191394792bf9ac1f11f34a20 Mon Sep 17 00:00:00 2001 From: youcastle03 Date: Tue, 28 Jan 2025 02:33:30 +0900 Subject: [PATCH 1/8] feat:Group Entity --- .../reevserver/domain/group/entity/Group.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/main/java/com/dnd/reevserver/domain/group/entity/Group.java diff --git a/src/main/java/com/dnd/reevserver/domain/group/entity/Group.java b/src/main/java/com/dnd/reevserver/domain/group/entity/Group.java new file mode 100644 index 0000000..bdc3b25 --- /dev/null +++ b/src/main/java/com/dnd/reevserver/domain/group/entity/Group.java @@ -0,0 +1,32 @@ +package com.dnd.reevserver.domain.group.entity; + +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class Group { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long groupId; + + @Column(name = "group_name", nullable = false, length = 100) + private String groupName; + + @Column(nullable = false, length = 1000) + private String description; + + @Column(name = "is_public", nullable = false) + private Boolean isPublic; + + @Column(name = "max_num", nullable = false) + private Long maxNum; + + + +} From 64795b2278f57378e8fb5b9941f5b7132b4c1084 Mon Sep 17 00:00:00 2001 From: youcastle03 Date: Tue, 28 Jan 2025 04:13:20 +0900 Subject: [PATCH 2/8] =?UTF-8?q?feat:=20=EC=97=B0=EA=B4=80=EA=B4=80?= =?UTF-8?q?=EA=B3=84=20=EB=A7=A4=ED=95=91=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Conflicts: # src/main/java/com/dnd/reevserver/domain/member/entity/Member.java --- .../group/controller/GroupController.java | 15 ++++++++ .../reevserver/domain/group/entity/Group.java | 21 +++++++++-- .../group/repository/GroupRepository.java | 7 ++++ .../domain/group/service/GroupService.java | 12 +++++++ .../domain/member/entity/Member.java | 17 ++++++--- .../memberGroup/entity/MemberGroup.java | 35 +++++++++++++++++++ 6 files changed, 101 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/dnd/reevserver/domain/group/controller/GroupController.java create mode 100644 src/main/java/com/dnd/reevserver/domain/group/repository/GroupRepository.java create mode 100644 src/main/java/com/dnd/reevserver/domain/group/service/GroupService.java create mode 100644 src/main/java/com/dnd/reevserver/domain/memberGroup/entity/MemberGroup.java diff --git a/src/main/java/com/dnd/reevserver/domain/group/controller/GroupController.java b/src/main/java/com/dnd/reevserver/domain/group/controller/GroupController.java new file mode 100644 index 0000000..460b869 --- /dev/null +++ b/src/main/java/com/dnd/reevserver/domain/group/controller/GroupController.java @@ -0,0 +1,15 @@ +package com.dnd.reevserver.domain.group.controller; + +import com.dnd.reevserver.domain.group.service.GroupService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/vi/group") +@RequiredArgsConstructor +public class GroupController { + + private final GroupService groupService; + +} diff --git a/src/main/java/com/dnd/reevserver/domain/group/entity/Group.java b/src/main/java/com/dnd/reevserver/domain/group/entity/Group.java index bdc3b25..a903d20 100644 --- a/src/main/java/com/dnd/reevserver/domain/group/entity/Group.java +++ b/src/main/java/com/dnd/reevserver/domain/group/entity/Group.java @@ -1,11 +1,15 @@ package com.dnd.reevserver.domain.group.entity; +import com.dnd.reevserver.domain.memberGroup.entity.MemberGroup; import jakarta.persistence.*; import lombok.AccessLevel; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; +import java.util.ArrayList; +import java.util.List; + @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @@ -27,6 +31,19 @@ public class Group { @Column(name = "max_num", nullable = false) private Long maxNum; - - + @OneToMany(mappedBy = "group") + private List memberGroups = new ArrayList<>(); + + @Builder + public Group(String groupName, String description, Boolean isPublic, Long maxNum) { + this.groupName = groupName; + this.description = description; + this.isPublic = isPublic; + this.maxNum = maxNum; + } + + public void addMemberGroup(MemberGroup memberGroup) { + memberGroups.add(memberGroup); + memberGroup.setGroup(this); + } } diff --git a/src/main/java/com/dnd/reevserver/domain/group/repository/GroupRepository.java b/src/main/java/com/dnd/reevserver/domain/group/repository/GroupRepository.java new file mode 100644 index 0000000..4d979c9 --- /dev/null +++ b/src/main/java/com/dnd/reevserver/domain/group/repository/GroupRepository.java @@ -0,0 +1,7 @@ +package com.dnd.reevserver.domain.group.repository; + +import com.dnd.reevserver.domain.group.entity.Group; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface GroupRepository extends JpaRepository { +} diff --git a/src/main/java/com/dnd/reevserver/domain/group/service/GroupService.java b/src/main/java/com/dnd/reevserver/domain/group/service/GroupService.java new file mode 100644 index 0000000..695d900 --- /dev/null +++ b/src/main/java/com/dnd/reevserver/domain/group/service/GroupService.java @@ -0,0 +1,12 @@ +package com.dnd.reevserver.domain.group.service; + +import com.dnd.reevserver.domain.group.repository.GroupRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class GroupService { + + private final GroupRepository groupRepository; +} diff --git a/src/main/java/com/dnd/reevserver/domain/member/entity/Member.java b/src/main/java/com/dnd/reevserver/domain/member/entity/Member.java index 2b807fc..9f29bbd 100644 --- a/src/main/java/com/dnd/reevserver/domain/member/entity/Member.java +++ b/src/main/java/com/dnd/reevserver/domain/member/entity/Member.java @@ -1,19 +1,20 @@ package com.dnd.reevserver.domain.member.entity; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.Table; +import com.dnd.reevserver.domain.memberGroup.entity.MemberGroup; +import jakarta.persistence.*; import lombok.*; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.oauth2.core.user.OAuth2User; +import java.util.ArrayList; import java.util.Collection; +import java.util.List; import java.util.Map; @Entity @Table(name = "Member") @Getter +@Setter @Builder @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) @@ -31,6 +32,9 @@ public class Member implements OAuth2User { @Column(name = "role", nullable = false, length = 100) private String role; + @OneToMany(mappedBy = "member") + private List memberGroups = new ArrayList<>(); + @Override public Map getAttributes() { return null; @@ -53,4 +57,9 @@ public void updateNickname(String newNickname) { public void updateProfileUrl(String newProfileUrl) { this.profileUrl = newProfileUrl; } + + public void addUserGroup(MemberGroup memberGroup) { + memberGroups.add(memberGroup); + memberGroup.setMember(this); + } } diff --git a/src/main/java/com/dnd/reevserver/domain/memberGroup/entity/MemberGroup.java b/src/main/java/com/dnd/reevserver/domain/memberGroup/entity/MemberGroup.java new file mode 100644 index 0000000..27c312d --- /dev/null +++ b/src/main/java/com/dnd/reevserver/domain/memberGroup/entity/MemberGroup.java @@ -0,0 +1,35 @@ +package com.dnd.reevserver.domain.memberGroup.entity; + +import com.dnd.reevserver.domain.group.entity.Group; +import com.dnd.reevserver.domain.member.entity.Member; +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class MemberGroup { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long userGroupId; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "member_id", nullable = false) + private Member member; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "group_id", nullable = false) + private Group group; + + public void setMember(Member member) { + this.member = member; + } + + public void setGroup(Group group) { + this.group = group; + } + +} From 912cd98b23feb8f08daf6d8bd03d41efdd42f27d Mon Sep 17 00:00:00 2001 From: youcastle03 Date: Tue, 28 Jan 2025 05:08:23 +0900 Subject: [PATCH 3/8] =?UTF-8?q?feat:group=20=EC=A1=B0=ED=9A=8C=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../group/controller/GroupController.java | 24 +++++++++++++++-- .../dto/request/GroupListRequestDto.java | 7 +++++ .../group/dto/response/GroupResponseDto.java | 8 ++++++ .../exception/GroupNotFoundException.java | 17 ++++++++++++ .../domain/group/service/GroupService.java | 27 +++++++++++++++++++ .../repository/MemberGroupRepository.java | 7 +++++ 6 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/dnd/reevserver/domain/group/dto/request/GroupListRequestDto.java create mode 100644 src/main/java/com/dnd/reevserver/domain/group/dto/response/GroupResponseDto.java create mode 100644 src/main/java/com/dnd/reevserver/domain/group/exception/GroupNotFoundException.java create mode 100644 src/main/java/com/dnd/reevserver/domain/memberGroup/repository/MemberGroupRepository.java diff --git a/src/main/java/com/dnd/reevserver/domain/group/controller/GroupController.java b/src/main/java/com/dnd/reevserver/domain/group/controller/GroupController.java index 460b869..1950f1d 100644 --- a/src/main/java/com/dnd/reevserver/domain/group/controller/GroupController.java +++ b/src/main/java/com/dnd/reevserver/domain/group/controller/GroupController.java @@ -1,9 +1,13 @@ package com.dnd.reevserver.domain.group.controller; +import com.dnd.reevserver.domain.group.dto.response.GroupResponseDto; import com.dnd.reevserver.domain.group.service.GroupService; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.http.ResponseEntity; +import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.web.bind.annotation.*; + +import java.util.List; @RestController @RequestMapping("/api/vi/group") @@ -12,4 +16,20 @@ public class GroupController { private final GroupService groupService; + @GetMapping("/list") + public ResponseEntity getAllGroups(){ + List groups = groupService.getAllGroups(); + return ResponseEntity.ok().body(groups); + } + + @GetMapping("/{groupId}") + public ResponseEntity getGroupById(@PathVariable("groupId") String groupId, @AuthenticationPrincipal String userId){ + GroupResponseDto group = groupService.getGroup(groupId); + } +// +// @PostMapping +// public ResponseEntity addGroup(@RequestBody addGroupRequestDto, @AuthenticationPrincipal String userId){ +// +// } + } diff --git a/src/main/java/com/dnd/reevserver/domain/group/dto/request/GroupListRequestDto.java b/src/main/java/com/dnd/reevserver/domain/group/dto/request/GroupListRequestDto.java new file mode 100644 index 0000000..bdc4918 --- /dev/null +++ b/src/main/java/com/dnd/reevserver/domain/group/dto/request/GroupListRequestDto.java @@ -0,0 +1,7 @@ +package com.dnd.reevserver.domain.group.dto.request; + +import lombok.Builder; + +@Builder +public record GroupListRequestDto(String userId) { +} diff --git a/src/main/java/com/dnd/reevserver/domain/group/dto/response/GroupResponseDto.java b/src/main/java/com/dnd/reevserver/domain/group/dto/response/GroupResponseDto.java new file mode 100644 index 0000000..1edff68 --- /dev/null +++ b/src/main/java/com/dnd/reevserver/domain/group/dto/response/GroupResponseDto.java @@ -0,0 +1,8 @@ +package com.dnd.reevserver.domain.group.dto.response; + +import lombok.Builder; + +@Builder +public record GroupResponseDto(Long groupId, String groupName, String discription) { + +} diff --git a/src/main/java/com/dnd/reevserver/domain/group/exception/GroupNotFoundException.java b/src/main/java/com/dnd/reevserver/domain/group/exception/GroupNotFoundException.java new file mode 100644 index 0000000..cf57e4b --- /dev/null +++ b/src/main/java/com/dnd/reevserver/domain/group/exception/GroupNotFoundException.java @@ -0,0 +1,17 @@ +package com.dnd.reevserver.domain.group.exception; + +import com.dnd.reevserver.global.exception.GeneralException; + +public class GroupNotFoundException extends GeneralException { + private static final String MESSAGE = "GroupId에 해당하는 모임이 존재하지 않습니다."; + + public GroupNotFoundException() { + super(MESSAGE); + } + + @Override + public int getStatusCode() { + return 404; + } + +} diff --git a/src/main/java/com/dnd/reevserver/domain/group/service/GroupService.java b/src/main/java/com/dnd/reevserver/domain/group/service/GroupService.java index 695d900..b674415 100644 --- a/src/main/java/com/dnd/reevserver/domain/group/service/GroupService.java +++ b/src/main/java/com/dnd/reevserver/domain/group/service/GroupService.java @@ -1,12 +1,39 @@ package com.dnd.reevserver.domain.group.service; +import com.dnd.reevserver.domain.group.dto.response.GroupResponseDto; +import com.dnd.reevserver.domain.group.entity.Group; +import com.dnd.reevserver.domain.group.exception.GroupNotFoundException; import com.dnd.reevserver.domain.group.repository.GroupRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.List; + @Service @RequiredArgsConstructor public class GroupService { private final GroupRepository groupRepository; + + public List getAllGroups() { + List groups = groupRepository.findAll(); + List groupList = groups.stream() + .map(group -> GroupResponseDto.builder() + .groupId(group.getGroupId()) + .groupName(group.getGroupName()) + .discription(group.getDescription()) + .build()) + .toList(); + return groupList; + } + + public GroupResponseDto getGroupById(Long groupId) { + Group group = groupRepository.findById(groupId).orElseThrow(GroupNotFoundException::new); + return GroupResponseDto.builder() + .groupId(group.getGroupId()) + .groupName(group.getGroupName()) + .discription(group.getDescription()) + .build(); + } + } diff --git a/src/main/java/com/dnd/reevserver/domain/memberGroup/repository/MemberGroupRepository.java b/src/main/java/com/dnd/reevserver/domain/memberGroup/repository/MemberGroupRepository.java new file mode 100644 index 0000000..e58e9ec --- /dev/null +++ b/src/main/java/com/dnd/reevserver/domain/memberGroup/repository/MemberGroupRepository.java @@ -0,0 +1,7 @@ +package com.dnd.reevserver.domain.memberGroup.repository; + +import com.dnd.reevserver.domain.memberGroup.entity.MemberGroup; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface MemberGroupRepository extends JpaRepository { +} From 25f33431451b05db9197cfb855cc204b6ca0a8a3 Mon Sep 17 00:00:00 2001 From: youcastle03 Date: Wed, 29 Jan 2025 01:14:58 +0900 Subject: [PATCH 4/8] =?UTF-8?q?feat:=20=EC=B5=9C=EA=B7=BC=20=ED=99=9C?= =?UTF-8?q?=EB=8F=99=EC=9D=84=20=EB=82=98=ED=83=80=EB=82=B4=EB=8A=94=20rec?= =?UTF-8?q?entAct=ED=95=84=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/dnd/reevserver/domain/group/entity/Group.java | 5 +++++ .../dnd/reevserver/domain/group/service/GroupService.java | 3 +++ 2 files changed, 8 insertions(+) diff --git a/src/main/java/com/dnd/reevserver/domain/group/entity/Group.java b/src/main/java/com/dnd/reevserver/domain/group/entity/Group.java index a903d20..5458a04 100644 --- a/src/main/java/com/dnd/reevserver/domain/group/entity/Group.java +++ b/src/main/java/com/dnd/reevserver/domain/group/entity/Group.java @@ -7,6 +7,7 @@ import lombok.Getter; import lombok.NoArgsConstructor; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -34,12 +35,16 @@ public class Group { @OneToMany(mappedBy = "group") private List memberGroups = new ArrayList<>(); + @Column(name = "recent_act") + private LocalDateTime recentAct; + @Builder public Group(String groupName, String description, Boolean isPublic, Long maxNum) { this.groupName = groupName; this.description = description; this.isPublic = isPublic; this.maxNum = maxNum; + this.recentAct = LocalDateTime.now(); } public void addMemberGroup(MemberGroup memberGroup) { diff --git a/src/main/java/com/dnd/reevserver/domain/group/service/GroupService.java b/src/main/java/com/dnd/reevserver/domain/group/service/GroupService.java index b674415..83ea5f7 100644 --- a/src/main/java/com/dnd/reevserver/domain/group/service/GroupService.java +++ b/src/main/java/com/dnd/reevserver/domain/group/service/GroupService.java @@ -6,6 +6,7 @@ import com.dnd.reevserver.domain.group.repository.GroupRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -15,6 +16,7 @@ public class GroupService { private final GroupRepository groupRepository; + @Transactional(readOnly = true) public List getAllGroups() { List groups = groupRepository.findAll(); List groupList = groups.stream() @@ -27,6 +29,7 @@ public List getAllGroups() { return groupList; } + @Transactional(readOnly = true) public GroupResponseDto getGroupById(Long groupId) { Group group = groupRepository.findById(groupId).orElseThrow(GroupNotFoundException::new); return GroupResponseDto.builder() From 492fef326a43452f9fd0c9e9c7a846cee9dfbca7 Mon Sep 17 00:00:00 2001 From: youcastle03 Date: Wed, 29 Jan 2025 01:19:50 +0900 Subject: [PATCH 5/8] =?UTF-8?q?feat:=20=EB=AA=A8=EC=9E=84=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EC=82=AD=EC=A0=9C=EB=93=B1=EC=9D=98=20=EA=B6=8C?= =?UTF-8?q?=ED=95=9C=EC=9D=84=20=EC=9C=84=ED=95=9C=20ownerId=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/dnd/reevserver/domain/group/entity/Group.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/dnd/reevserver/domain/group/entity/Group.java b/src/main/java/com/dnd/reevserver/domain/group/entity/Group.java index 5458a04..506b894 100644 --- a/src/main/java/com/dnd/reevserver/domain/group/entity/Group.java +++ b/src/main/java/com/dnd/reevserver/domain/group/entity/Group.java @@ -38,13 +38,17 @@ public class Group { @Column(name = "recent_act") private LocalDateTime recentAct; + @Column(name = "owner_id", nullable = false) + private String ownerId; + @Builder - public Group(String groupName, String description, Boolean isPublic, Long maxNum) { + public Group(String groupName, String description, Boolean isPublic, Long maxNum, String ownerId) { this.groupName = groupName; this.description = description; this.isPublic = isPublic; this.maxNum = maxNum; this.recentAct = LocalDateTime.now(); + this.ownerId = ownerId; } public void addMemberGroup(MemberGroup memberGroup) { From 8641d0537c46d748e5084d53c7baaef91a89b497 Mon Sep 17 00:00:00 2001 From: youcastle03 Date: Wed, 29 Jan 2025 01:41:03 +0900 Subject: [PATCH 6/8] =?UTF-8?q?feat:=20=EB=AA=A8=EC=9E=84=EC=9D=98=20?= =?UTF-8?q?=EC=B5=9C=EA=B7=BC=20=ED=99=9C=EB=8F=99=20=EB=AC=B8=EC=9E=90?= =?UTF-8?q?=EC=97=B4=20=EB=B0=98=ED=99=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../group/controller/GroupController.java | 5 +++-- .../group/dto/response/GroupResponseDto.java | 5 ++++- .../domain/group/service/GroupService.java | 21 +++++++++++++++++++ 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/dnd/reevserver/domain/group/controller/GroupController.java b/src/main/java/com/dnd/reevserver/domain/group/controller/GroupController.java index 1950f1d..8c1c055 100644 --- a/src/main/java/com/dnd/reevserver/domain/group/controller/GroupController.java +++ b/src/main/java/com/dnd/reevserver/domain/group/controller/GroupController.java @@ -23,8 +23,9 @@ public ResponseEntity getAllGroups(){ } @GetMapping("/{groupId}") - public ResponseEntity getGroupById(@PathVariable("groupId") String groupId, @AuthenticationPrincipal String userId){ - GroupResponseDto group = groupService.getGroup(groupId); + public ResponseEntity getGroupById(@PathVariable("groupId") Long groupId, @AuthenticationPrincipal String userId){ + GroupResponseDto group = groupService.getGroupById(groupId); + return ResponseEntity.ok().body(group); } // // @PostMapping diff --git a/src/main/java/com/dnd/reevserver/domain/group/dto/response/GroupResponseDto.java b/src/main/java/com/dnd/reevserver/domain/group/dto/response/GroupResponseDto.java index 1edff68..a3c76c3 100644 --- a/src/main/java/com/dnd/reevserver/domain/group/dto/response/GroupResponseDto.java +++ b/src/main/java/com/dnd/reevserver/domain/group/dto/response/GroupResponseDto.java @@ -2,7 +2,10 @@ import lombok.Builder; +import java.time.LocalDateTime; + @Builder -public record GroupResponseDto(Long groupId, String groupName, String discription) { +public record GroupResponseDto(Long groupId, String groupName, String discription, + int userCount, String recentActString) { } diff --git a/src/main/java/com/dnd/reevserver/domain/group/service/GroupService.java b/src/main/java/com/dnd/reevserver/domain/group/service/GroupService.java index 83ea5f7..cf79064 100644 --- a/src/main/java/com/dnd/reevserver/domain/group/service/GroupService.java +++ b/src/main/java/com/dnd/reevserver/domain/group/service/GroupService.java @@ -8,6 +8,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; import java.util.List; @Service @@ -24,6 +26,8 @@ public List getAllGroups() { .groupId(group.getGroupId()) .groupName(group.getGroupName()) .discription(group.getDescription()) + .userCount(group.getMemberGroups().size()) + .recentActString(getRecentActString(group.getRecentAct())) .build()) .toList(); return groupList; @@ -36,7 +40,24 @@ public GroupResponseDto getGroupById(Long groupId) { .groupId(group.getGroupId()) .groupName(group.getGroupName()) .discription(group.getDescription()) + .userCount(group.getMemberGroups().size()) + .recentActString(getRecentActString(group.getRecentAct())) .build(); } + private String getRecentActString(LocalDateTime recentAct){ + + LocalDateTime now = LocalDateTime.now(); + long timeGap = ChronoUnit.MINUTES.between(recentAct, now); + + if(timeGap < 60){ + return timeGap + "분 전"; + } + if(timeGap < 1440){ + return ChronoUnit.HOURS.between(recentAct, now) + "시간 전"; + } + return ChronoUnit.DAYS.between(recentAct, now) + "일 전"; + + + } } From 37da16a2bb3c759cf4d8ef55705090aa268ea48c Mon Sep 17 00:00:00 2001 From: youcastle03 Date: Wed, 29 Jan 2025 04:04:29 +0900 Subject: [PATCH 7/8] =?UTF-8?q?refactor:group=EC=9D=B4=20=ED=85=8C?= =?UTF-8?q?=EC=9D=B4=EB=B8=94=EB=AA=85=EC=9C=BC=EB=A1=9C=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=20=EB=B6=88=EA=B0=80=EB=8A=A5=EC=9C=BC=EB=A1=9C=20tea?= =?UTF-8?q?m=EC=9C=BC=EB=A1=9C=20=EB=8C=80=EB=8C=80=EC=A0=81=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../group/controller/GroupController.java | 36 ------- .../dto/request/GroupListRequestDto.java | 7 -- .../group/dto/response/GroupResponseDto.java | 11 --- .../exception/GroupNotFoundException.java | 17 ---- .../group/repository/GroupRepository.java | 7 -- .../domain/group/service/GroupService.java | 63 ------------ .../domain/member/entity/Member.java | 18 +++- .../repository/MemberGroupRepository.java | 7 -- .../team/controller/TeamController.java | 38 ++++++++ .../team/dto/request/AddTeamRequestDto.java | 8 ++ .../team/dto/response/AddTeamResponseDto.java | 7 ++ .../team/dto/response/TeamResponseDto.java | 9 ++ .../Group.java => team/entity/Team.java} | 28 +++--- .../team/exception/TeamNotFoundException.java | 17 ++++ .../team/repository/TeamRepository.java | 7 ++ .../domain/team/service/TeamService.java | 95 +++++++++++++++++++ .../entity/UserTeam.java} | 24 +++-- .../repository/UserTeamRepository.java | 7 ++ 18 files changed, 230 insertions(+), 176 deletions(-) delete mode 100644 src/main/java/com/dnd/reevserver/domain/group/controller/GroupController.java delete mode 100644 src/main/java/com/dnd/reevserver/domain/group/dto/request/GroupListRequestDto.java delete mode 100644 src/main/java/com/dnd/reevserver/domain/group/dto/response/GroupResponseDto.java delete mode 100644 src/main/java/com/dnd/reevserver/domain/group/exception/GroupNotFoundException.java delete mode 100644 src/main/java/com/dnd/reevserver/domain/group/repository/GroupRepository.java delete mode 100644 src/main/java/com/dnd/reevserver/domain/group/service/GroupService.java delete mode 100644 src/main/java/com/dnd/reevserver/domain/memberGroup/repository/MemberGroupRepository.java create mode 100644 src/main/java/com/dnd/reevserver/domain/team/controller/TeamController.java create mode 100644 src/main/java/com/dnd/reevserver/domain/team/dto/request/AddTeamRequestDto.java create mode 100644 src/main/java/com/dnd/reevserver/domain/team/dto/response/AddTeamResponseDto.java create mode 100644 src/main/java/com/dnd/reevserver/domain/team/dto/response/TeamResponseDto.java rename src/main/java/com/dnd/reevserver/domain/{group/entity/Group.java => team/entity/Team.java} (58%) create mode 100644 src/main/java/com/dnd/reevserver/domain/team/exception/TeamNotFoundException.java create mode 100644 src/main/java/com/dnd/reevserver/domain/team/repository/TeamRepository.java create mode 100644 src/main/java/com/dnd/reevserver/domain/team/service/TeamService.java rename src/main/java/com/dnd/reevserver/domain/{memberGroup/entity/MemberGroup.java => userTeam/entity/UserTeam.java} (50%) create mode 100644 src/main/java/com/dnd/reevserver/domain/userTeam/repository/UserTeamRepository.java diff --git a/src/main/java/com/dnd/reevserver/domain/group/controller/GroupController.java b/src/main/java/com/dnd/reevserver/domain/group/controller/GroupController.java deleted file mode 100644 index 8c1c055..0000000 --- a/src/main/java/com/dnd/reevserver/domain/group/controller/GroupController.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.dnd.reevserver.domain.group.controller; - -import com.dnd.reevserver.domain.group.dto.response.GroupResponseDto; -import com.dnd.reevserver.domain.group.service.GroupService; -import lombok.RequiredArgsConstructor; -import org.springframework.http.ResponseEntity; -import org.springframework.security.core.annotation.AuthenticationPrincipal; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -@RestController -@RequestMapping("/api/vi/group") -@RequiredArgsConstructor -public class GroupController { - - private final GroupService groupService; - - @GetMapping("/list") - public ResponseEntity getAllGroups(){ - List groups = groupService.getAllGroups(); - return ResponseEntity.ok().body(groups); - } - - @GetMapping("/{groupId}") - public ResponseEntity getGroupById(@PathVariable("groupId") Long groupId, @AuthenticationPrincipal String userId){ - GroupResponseDto group = groupService.getGroupById(groupId); - return ResponseEntity.ok().body(group); - } -// -// @PostMapping -// public ResponseEntity addGroup(@RequestBody addGroupRequestDto, @AuthenticationPrincipal String userId){ -// -// } - -} diff --git a/src/main/java/com/dnd/reevserver/domain/group/dto/request/GroupListRequestDto.java b/src/main/java/com/dnd/reevserver/domain/group/dto/request/GroupListRequestDto.java deleted file mode 100644 index bdc4918..0000000 --- a/src/main/java/com/dnd/reevserver/domain/group/dto/request/GroupListRequestDto.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dnd.reevserver.domain.group.dto.request; - -import lombok.Builder; - -@Builder -public record GroupListRequestDto(String userId) { -} diff --git a/src/main/java/com/dnd/reevserver/domain/group/dto/response/GroupResponseDto.java b/src/main/java/com/dnd/reevserver/domain/group/dto/response/GroupResponseDto.java deleted file mode 100644 index a3c76c3..0000000 --- a/src/main/java/com/dnd/reevserver/domain/group/dto/response/GroupResponseDto.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.dnd.reevserver.domain.group.dto.response; - -import lombok.Builder; - -import java.time.LocalDateTime; - -@Builder -public record GroupResponseDto(Long groupId, String groupName, String discription, - int userCount, String recentActString) { - -} diff --git a/src/main/java/com/dnd/reevserver/domain/group/exception/GroupNotFoundException.java b/src/main/java/com/dnd/reevserver/domain/group/exception/GroupNotFoundException.java deleted file mode 100644 index cf57e4b..0000000 --- a/src/main/java/com/dnd/reevserver/domain/group/exception/GroupNotFoundException.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.dnd.reevserver.domain.group.exception; - -import com.dnd.reevserver.global.exception.GeneralException; - -public class GroupNotFoundException extends GeneralException { - private static final String MESSAGE = "GroupId에 해당하는 모임이 존재하지 않습니다."; - - public GroupNotFoundException() { - super(MESSAGE); - } - - @Override - public int getStatusCode() { - return 404; - } - -} diff --git a/src/main/java/com/dnd/reevserver/domain/group/repository/GroupRepository.java b/src/main/java/com/dnd/reevserver/domain/group/repository/GroupRepository.java deleted file mode 100644 index 4d979c9..0000000 --- a/src/main/java/com/dnd/reevserver/domain/group/repository/GroupRepository.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dnd.reevserver.domain.group.repository; - -import com.dnd.reevserver.domain.group.entity.Group; -import org.springframework.data.jpa.repository.JpaRepository; - -public interface GroupRepository extends JpaRepository { -} diff --git a/src/main/java/com/dnd/reevserver/domain/group/service/GroupService.java b/src/main/java/com/dnd/reevserver/domain/group/service/GroupService.java deleted file mode 100644 index cf79064..0000000 --- a/src/main/java/com/dnd/reevserver/domain/group/service/GroupService.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.dnd.reevserver.domain.group.service; - -import com.dnd.reevserver.domain.group.dto.response.GroupResponseDto; -import com.dnd.reevserver.domain.group.entity.Group; -import com.dnd.reevserver.domain.group.exception.GroupNotFoundException; -import com.dnd.reevserver.domain.group.repository.GroupRepository; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.time.LocalDateTime; -import java.time.temporal.ChronoUnit; -import java.util.List; - -@Service -@RequiredArgsConstructor -public class GroupService { - - private final GroupRepository groupRepository; - - @Transactional(readOnly = true) - public List getAllGroups() { - List groups = groupRepository.findAll(); - List groupList = groups.stream() - .map(group -> GroupResponseDto.builder() - .groupId(group.getGroupId()) - .groupName(group.getGroupName()) - .discription(group.getDescription()) - .userCount(group.getMemberGroups().size()) - .recentActString(getRecentActString(group.getRecentAct())) - .build()) - .toList(); - return groupList; - } - - @Transactional(readOnly = true) - public GroupResponseDto getGroupById(Long groupId) { - Group group = groupRepository.findById(groupId).orElseThrow(GroupNotFoundException::new); - return GroupResponseDto.builder() - .groupId(group.getGroupId()) - .groupName(group.getGroupName()) - .discription(group.getDescription()) - .userCount(group.getMemberGroups().size()) - .recentActString(getRecentActString(group.getRecentAct())) - .build(); - } - - private String getRecentActString(LocalDateTime recentAct){ - - LocalDateTime now = LocalDateTime.now(); - long timeGap = ChronoUnit.MINUTES.between(recentAct, now); - - if(timeGap < 60){ - return timeGap + "분 전"; - } - if(timeGap < 1440){ - return ChronoUnit.HOURS.between(recentAct, now) + "시간 전"; - } - return ChronoUnit.DAYS.between(recentAct, now) + "일 전"; - - - } -} diff --git a/src/main/java/com/dnd/reevserver/domain/member/entity/Member.java b/src/main/java/com/dnd/reevserver/domain/member/entity/Member.java index 9f29bbd..afdfad1 100644 --- a/src/main/java/com/dnd/reevserver/domain/member/entity/Member.java +++ b/src/main/java/com/dnd/reevserver/domain/member/entity/Member.java @@ -1,6 +1,6 @@ package com.dnd.reevserver.domain.member.entity; -import com.dnd.reevserver.domain.memberGroup.entity.MemberGroup; +import com.dnd.reevserver.domain.userTeam.entity.UserTeam; import jakarta.persistence.*; import lombok.*; import org.springframework.security.core.GrantedAuthority; @@ -33,7 +33,7 @@ public class Member implements OAuth2User { private String role; @OneToMany(mappedBy = "member") - private List memberGroups = new ArrayList<>(); + private List userGroups = new ArrayList<>(); @Override public Map getAttributes() { @@ -58,8 +58,16 @@ public void updateProfileUrl(String newProfileUrl) { this.profileUrl = newProfileUrl; } - public void addUserGroup(MemberGroup memberGroup) { - memberGroups.add(memberGroup); - memberGroup.setMember(this); + + public Member(String userId, String nickname, String profileUrl, String role) { + this.userId = userId; + this.nickname = nickname; + this.profileUrl = profileUrl; + this.role = role; + } + + public void addUserGroup(UserTeam userGroup) { + userGroups.add(userGroup); + userGroup.setMember(this); } } diff --git a/src/main/java/com/dnd/reevserver/domain/memberGroup/repository/MemberGroupRepository.java b/src/main/java/com/dnd/reevserver/domain/memberGroup/repository/MemberGroupRepository.java deleted file mode 100644 index e58e9ec..0000000 --- a/src/main/java/com/dnd/reevserver/domain/memberGroup/repository/MemberGroupRepository.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dnd.reevserver.domain.memberGroup.repository; - -import com.dnd.reevserver.domain.memberGroup.entity.MemberGroup; -import org.springframework.data.jpa.repository.JpaRepository; - -public interface MemberGroupRepository extends JpaRepository { -} diff --git a/src/main/java/com/dnd/reevserver/domain/team/controller/TeamController.java b/src/main/java/com/dnd/reevserver/domain/team/controller/TeamController.java new file mode 100644 index 0000000..e759bfa --- /dev/null +++ b/src/main/java/com/dnd/reevserver/domain/team/controller/TeamController.java @@ -0,0 +1,38 @@ +package com.dnd.reevserver.domain.team.controller; + +import com.dnd.reevserver.domain.team.dto.request.AddTeamRequestDto; +import com.dnd.reevserver.domain.team.dto.response.TeamResponseDto; +import com.dnd.reevserver.domain.team.dto.response.AddTeamResponseDto; +import com.dnd.reevserver.domain.team.service.TeamService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api/v1/group") +@RequiredArgsConstructor +public class TeamController { + + private final TeamService groupService; + + @GetMapping("/list") + public ResponseEntity> getAllGroups(){ + List groups = groupService.getAllGroups(); + return ResponseEntity.ok().body(groups); + } + + @GetMapping("/{groupId}") + public ResponseEntity getGroupById(@PathVariable("groupId") Long groupId){ + TeamResponseDto group = groupService.getGroupById(groupId); + return ResponseEntity.ok().body(group); + } + + @PostMapping + public ResponseEntity addGroup(@RequestBody AddTeamRequestDto addGroupRequestDto){ + AddTeamResponseDto response = groupService.addGroup(addGroupRequestDto); + return ResponseEntity.ok().body(response); + } + +} diff --git a/src/main/java/com/dnd/reevserver/domain/team/dto/request/AddTeamRequestDto.java b/src/main/java/com/dnd/reevserver/domain/team/dto/request/AddTeamRequestDto.java new file mode 100644 index 0000000..ef30291 --- /dev/null +++ b/src/main/java/com/dnd/reevserver/domain/team/dto/request/AddTeamRequestDto.java @@ -0,0 +1,8 @@ +package com.dnd.reevserver.domain.team.dto.request; + +import lombok.Builder; + +@Builder +public record AddTeamRequestDto(String userId, String teamName, String description, + boolean isPublic, int maxNum) { +} diff --git a/src/main/java/com/dnd/reevserver/domain/team/dto/response/AddTeamResponseDto.java b/src/main/java/com/dnd/reevserver/domain/team/dto/response/AddTeamResponseDto.java new file mode 100644 index 0000000..dcdb3b4 --- /dev/null +++ b/src/main/java/com/dnd/reevserver/domain/team/dto/response/AddTeamResponseDto.java @@ -0,0 +1,7 @@ +package com.dnd.reevserver.domain.team.dto.response; + +import lombok.Builder; + +@Builder +public record AddTeamResponseDto(Long teamId) { +} diff --git a/src/main/java/com/dnd/reevserver/domain/team/dto/response/TeamResponseDto.java b/src/main/java/com/dnd/reevserver/domain/team/dto/response/TeamResponseDto.java new file mode 100644 index 0000000..ef39941 --- /dev/null +++ b/src/main/java/com/dnd/reevserver/domain/team/dto/response/TeamResponseDto.java @@ -0,0 +1,9 @@ +package com.dnd.reevserver.domain.team.dto.response; + +import lombok.Builder; + +@Builder +public record TeamResponseDto(Long teamId, String teamName, String description, + int userCount, String recentActString) { + +} diff --git a/src/main/java/com/dnd/reevserver/domain/group/entity/Group.java b/src/main/java/com/dnd/reevserver/domain/team/entity/Team.java similarity index 58% rename from src/main/java/com/dnd/reevserver/domain/group/entity/Group.java rename to src/main/java/com/dnd/reevserver/domain/team/entity/Team.java index 506b894..c14da16 100644 --- a/src/main/java/com/dnd/reevserver/domain/group/entity/Group.java +++ b/src/main/java/com/dnd/reevserver/domain/team/entity/Team.java @@ -1,6 +1,6 @@ -package com.dnd.reevserver.domain.group.entity; +package com.dnd.reevserver.domain.team.entity; -import com.dnd.reevserver.domain.memberGroup.entity.MemberGroup; +import com.dnd.reevserver.domain.userTeam.entity.UserTeam; import jakarta.persistence.*; import lombok.AccessLevel; import lombok.Builder; @@ -14,14 +14,14 @@ @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) -public class Group { +public class Team { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long groupId; + private Long teamId; - @Column(name = "group_name", nullable = false, length = 100) - private String groupName; + @Column(name = "team_name", nullable = false, length = 100) + private String teamName; @Column(nullable = false, length = 1000) private String description; @@ -30,10 +30,10 @@ public class Group { private Boolean isPublic; @Column(name = "max_num", nullable = false) - private Long maxNum; + private int maxNum; - @OneToMany(mappedBy = "group") - private List memberGroups = new ArrayList<>(); + @OneToMany(mappedBy = "team") + private List userTeams = new ArrayList<>(); @Column(name = "recent_act") private LocalDateTime recentAct; @@ -42,8 +42,8 @@ public class Group { private String ownerId; @Builder - public Group(String groupName, String description, Boolean isPublic, Long maxNum, String ownerId) { - this.groupName = groupName; + public Team(String teamName, String description, Boolean isPublic, int maxNum, String ownerId) { + this.teamName = teamName; this.description = description; this.isPublic = isPublic; this.maxNum = maxNum; @@ -51,8 +51,8 @@ public Group(String groupName, String description, Boolean isPublic, Long maxNum this.ownerId = ownerId; } - public void addMemberGroup(MemberGroup memberGroup) { - memberGroups.add(memberGroup); - memberGroup.setGroup(this); + public void addUserTeam(UserTeam userTeam) { + userTeams.add(userTeam); + userTeam.setTeam(this); } } diff --git a/src/main/java/com/dnd/reevserver/domain/team/exception/TeamNotFoundException.java b/src/main/java/com/dnd/reevserver/domain/team/exception/TeamNotFoundException.java new file mode 100644 index 0000000..99134ad --- /dev/null +++ b/src/main/java/com/dnd/reevserver/domain/team/exception/TeamNotFoundException.java @@ -0,0 +1,17 @@ +package com.dnd.reevserver.domain.team.exception; + +import com.dnd.reevserver.global.exception.GeneralException; + +public class TeamNotFoundException extends GeneralException { + private static final String MESSAGE = "TeamId에 해당하는 모임이 존재하지 않습니다."; + + public TeamNotFoundException() { + super(MESSAGE); + } + + @Override + public int getStatusCode() { + return 404; + } + +} diff --git a/src/main/java/com/dnd/reevserver/domain/team/repository/TeamRepository.java b/src/main/java/com/dnd/reevserver/domain/team/repository/TeamRepository.java new file mode 100644 index 0000000..e72ea77 --- /dev/null +++ b/src/main/java/com/dnd/reevserver/domain/team/repository/TeamRepository.java @@ -0,0 +1,7 @@ +package com.dnd.reevserver.domain.team.repository; + +import com.dnd.reevserver.domain.team.entity.Team; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface TeamRepository extends JpaRepository { +} diff --git a/src/main/java/com/dnd/reevserver/domain/team/service/TeamService.java b/src/main/java/com/dnd/reevserver/domain/team/service/TeamService.java new file mode 100644 index 0000000..dbaa17a --- /dev/null +++ b/src/main/java/com/dnd/reevserver/domain/team/service/TeamService.java @@ -0,0 +1,95 @@ +package com.dnd.reevserver.domain.team.service; + +import com.dnd.reevserver.domain.team.dto.request.AddTeamRequestDto; +import com.dnd.reevserver.domain.team.dto.response.AddTeamResponseDto; +import com.dnd.reevserver.domain.team.dto.response.TeamResponseDto; +import com.dnd.reevserver.domain.team.entity.Team; +import com.dnd.reevserver.domain.team.exception.TeamNotFoundException; +import com.dnd.reevserver.domain.team.repository.TeamRepository; +import com.dnd.reevserver.domain.member.entity.Member; +import com.dnd.reevserver.domain.member.service.MemberService; +import com.dnd.reevserver.domain.userTeam.entity.UserTeam; +import com.dnd.reevserver.domain.userTeam.repository.UserTeamRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; +import java.util.List; + +@Service +@RequiredArgsConstructor +public class TeamService { + + private final TeamRepository teamRepository; + private final UserTeamRepository userTeamRepository; + private final MemberService memberService; + + @Transactional(readOnly = true) + public List getAllGroups() { + + List groups = teamRepository.findAll(); + List teamList = groups.stream() + .map(team -> TeamResponseDto.builder() + .teamId(team.getTeamId()) + .teamName(team.getTeamName()) + .description(team.getDescription()) + .userCount(team.getUserTeams().size()) + .recentActString(getRecentActString(team.getRecentAct())) + .build()) + .toList(); + return teamList; + } + + @Transactional(readOnly = true) + public TeamResponseDto getGroupById(Long groupId) { + + Team team = teamRepository.findById(groupId).orElseThrow(TeamNotFoundException::new); + return TeamResponseDto.builder() + .teamId(team.getTeamId()) + .teamName(team.getTeamName()) + .description(team.getDescription()) + .userCount(team.getUserTeams().size()) + .recentActString(getRecentActString(team.getRecentAct())) + .build(); + } + + private String getRecentActString(LocalDateTime recentAct){ + + LocalDateTime now = LocalDateTime.now(); + long timeGap = ChronoUnit.MINUTES.between(recentAct, now); + + if(timeGap < 60){ + return timeGap + "분 전"; + } + if(timeGap < 1440){ + return ChronoUnit.HOURS.between(recentAct, now) + "시간 전"; + } + return ChronoUnit.DAYS.between(recentAct, now) + "일 전"; + + } + + + public AddTeamResponseDto addGroup(AddTeamRequestDto addTeamRequestDto) { + Team team = Team.builder().teamName(addTeamRequestDto.teamName()) + .description(addTeamRequestDto.description()) + .maxNum(addTeamRequestDto.maxNum()) + .ownerId(addTeamRequestDto.userId()) + .isPublic(addTeamRequestDto.isPublic()) + .build(); + + teamRepository.save(team); + Member member = memberService.findById(addTeamRequestDto.userId()); + UserTeam userTeam = new UserTeam(member,team); + userTeamRepository.save(userTeam); + + member.addUserGroup(userTeam); + team.addUserTeam(userTeam); + teamRepository.save(team); + userTeamRepository.save(userTeam); + + + return new AddTeamResponseDto(team.getTeamId()); + } +} diff --git a/src/main/java/com/dnd/reevserver/domain/memberGroup/entity/MemberGroup.java b/src/main/java/com/dnd/reevserver/domain/userTeam/entity/UserTeam.java similarity index 50% rename from src/main/java/com/dnd/reevserver/domain/memberGroup/entity/MemberGroup.java rename to src/main/java/com/dnd/reevserver/domain/userTeam/entity/UserTeam.java index 27c312d..20fcdc1 100644 --- a/src/main/java/com/dnd/reevserver/domain/memberGroup/entity/MemberGroup.java +++ b/src/main/java/com/dnd/reevserver/domain/userTeam/entity/UserTeam.java @@ -1,6 +1,6 @@ -package com.dnd.reevserver.domain.memberGroup.entity; +package com.dnd.reevserver.domain.userTeam.entity; -import com.dnd.reevserver.domain.group.entity.Group; +import com.dnd.reevserver.domain.team.entity.Team; import com.dnd.reevserver.domain.member.entity.Member; import jakarta.persistence.*; import lombok.AccessLevel; @@ -10,26 +10,32 @@ @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) -public class MemberGroup { +@Table(name = "user_team") +public class UserTeam { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long userGroupId; + private Long userTeamId; @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "member_id", nullable = false) + @JoinColumn(name = "user_id", nullable = false) private Member member; @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "group_id", nullable = false) - private Group group; + @JoinColumn(name = "team_id", nullable = false) + private Team team; public void setMember(Member member) { this.member = member; } - public void setGroup(Group group) { - this.group = group; + public void setTeam(Team team) { + this.team = team; + } + + public UserTeam(Member member, Team team) { + this.member = member; + this.team = team; } } diff --git a/src/main/java/com/dnd/reevserver/domain/userTeam/repository/UserTeamRepository.java b/src/main/java/com/dnd/reevserver/domain/userTeam/repository/UserTeamRepository.java new file mode 100644 index 0000000..988d0cd --- /dev/null +++ b/src/main/java/com/dnd/reevserver/domain/userTeam/repository/UserTeamRepository.java @@ -0,0 +1,7 @@ +package com.dnd.reevserver.domain.userTeam.repository; + +import com.dnd.reevserver.domain.userTeam.entity.UserTeam; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface UserTeamRepository extends JpaRepository { +} From af0557b7ea40c082eb387c28ec00cc941e1603c8 Mon Sep 17 00:00:00 2001 From: youcastle03 Date: Wed, 29 Jan 2025 14:12:52 +0900 Subject: [PATCH 8/8] =?UTF-8?q?chore:=EA=B0=84=EB=8B=A8=ED=95=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/dnd/reevserver/domain/team/service/TeamService.java | 3 --- .../domain/template/dto/request/CreateTemplateRequestDto.java | 1 + 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/com/dnd/reevserver/domain/team/service/TeamService.java b/src/main/java/com/dnd/reevserver/domain/team/service/TeamService.java index dbaa17a..34f7b90 100644 --- a/src/main/java/com/dnd/reevserver/domain/team/service/TeamService.java +++ b/src/main/java/com/dnd/reevserver/domain/team/service/TeamService.java @@ -28,7 +28,6 @@ public class TeamService { @Transactional(readOnly = true) public List getAllGroups() { - List groups = teamRepository.findAll(); List teamList = groups.stream() .map(team -> TeamResponseDto.builder() @@ -44,7 +43,6 @@ public List getAllGroups() { @Transactional(readOnly = true) public TeamResponseDto getGroupById(Long groupId) { - Team team = teamRepository.findById(groupId).orElseThrow(TeamNotFoundException::new); return TeamResponseDto.builder() .teamId(team.getTeamId()) @@ -56,7 +54,6 @@ public TeamResponseDto getGroupById(Long groupId) { } private String getRecentActString(LocalDateTime recentAct){ - LocalDateTime now = LocalDateTime.now(); long timeGap = ChronoUnit.MINUTES.between(recentAct, now); diff --git a/src/main/java/com/dnd/reevserver/domain/template/dto/request/CreateTemplateRequestDto.java b/src/main/java/com/dnd/reevserver/domain/template/dto/request/CreateTemplateRequestDto.java index a17aa35..44f9fcc 100644 --- a/src/main/java/com/dnd/reevserver/domain/template/dto/request/CreateTemplateRequestDto.java +++ b/src/main/java/com/dnd/reevserver/domain/template/dto/request/CreateTemplateRequestDto.java @@ -1,4 +1,5 @@ package com.dnd.reevserver.domain.template.dto.request; public record CreateTemplateRequestDto(String userId, String templateName, String content) { + }