Skip to content

Commit

Permalink
[Release] 골룸 대시보드 내의 노드 반환 데이터 추가 및 골룸 목록 조회 시 모든 상태의 골룸을 조회하도록 수정한다. (
Browse files Browse the repository at this point in the history
…#188)

* feat: 골룸 노드 목록 조회 시 노드 설명과 이미지 반환하도록 수정

* [feat/CK-227] 로드맵 골룸 조회 시 최신순일때는 모든 상태를, 마감임박 순일 땐 모집 중인 상태만 반환한다 (#185)

* chore: 패키지 경로 수정

* feat: 조건에 따른 로드맵 골룸 조회 시 쿼리 수정

* refactor: 1:N 문제 방지를 위해 @batchsize 설정

* feat: 로드맵 골룸 응답에 골룸 상태 추가

* chore: 서브모듈 업데이트

* chore: 패키지 경로 수정

* refactor: 메서드 네이밍 수정

---------

Co-authored-by: Ohjintaek <[email protected]>
  • Loading branch information
miseongk and Ohjintaek authored Oct 19, 2023
1 parent 3705207 commit 7088f17
Show file tree
Hide file tree
Showing 52 changed files with 307 additions and 199 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package co.kirikiri.common.interceptor;

import co.kirikiri.exception.AuthenticationException;
import co.kirikiri.service.AuthService;
import co.kirikiri.service.auth.AuthService;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package co.kirikiri.common.resolver;

import co.kirikiri.exception.AuthenticationException;
import co.kirikiri.service.AuthService;
import co.kirikiri.service.auth.AuthService;
import lombok.RequiredArgsConstructor;
import org.springframework.core.MethodParameter;
import org.springframework.http.HttpHeaders;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package co.kirikiri.controller;

import co.kirikiri.service.AuthService;
import co.kirikiri.service.NaverOauthService;
import co.kirikiri.service.auth.AuthService;
import co.kirikiri.service.auth.NaverOauthService;
import co.kirikiri.service.dto.auth.OauthRedirectResponse;
import co.kirikiri.service.dto.auth.request.LoginRequest;
import co.kirikiri.service.dto.auth.request.ReissueTokenRequest;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import co.kirikiri.common.interceptor.Authenticated;
import co.kirikiri.common.resolver.MemberIdentifier;
import co.kirikiri.service.GoalRoomCreateService;
import co.kirikiri.service.GoalRoomReadService;
import co.kirikiri.service.goalroom.GoalRoomCreateService;
import co.kirikiri.service.goalroom.GoalRoomReadService;
import co.kirikiri.service.dto.goalroom.GoalRoomMemberSortTypeDto;
import co.kirikiri.service.dto.goalroom.request.CheckFeedRequest;
import co.kirikiri.service.dto.goalroom.request.GoalRoomCreateRequest;
Expand All @@ -13,12 +13,14 @@
import co.kirikiri.service.dto.goalroom.response.GoalRoomCheckFeedResponse;
import co.kirikiri.service.dto.goalroom.response.GoalRoomMemberResponse;
import co.kirikiri.service.dto.goalroom.response.GoalRoomResponse;
import co.kirikiri.service.dto.goalroom.response.GoalRoomRoadmapNodeResponse;
import co.kirikiri.service.dto.goalroom.response.GoalRoomRoadmapNodeDetailResponse;
import co.kirikiri.service.dto.goalroom.response.GoalRoomToDoCheckResponse;
import co.kirikiri.service.dto.goalroom.response.GoalRoomTodoResponse;
import co.kirikiri.service.dto.member.response.MemberGoalRoomForListResponse;
import co.kirikiri.service.dto.member.response.MemberGoalRoomResponse;
import jakarta.validation.Valid;
import java.net.URI;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
Expand All @@ -31,8 +33,6 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.net.URI;
import java.util.List;

@RestController
@RequestMapping("/goal-rooms")
Expand Down Expand Up @@ -162,12 +162,12 @@ public ResponseEntity<List<GoalRoomTodoResponse>> findAllTodos(

@Authenticated
@GetMapping("/{goalRoomId}/nodes")
public ResponseEntity<List<GoalRoomRoadmapNodeResponse>> findAllNodes(
public ResponseEntity<List<GoalRoomRoadmapNodeDetailResponse>> findAllNodes(
@PathVariable final Long goalRoomId,
@MemberIdentifier final String identifier
) {
final List<GoalRoomRoadmapNodeResponse> nodeResponses = goalRoomReadService.findAllGoalRoomNodes(goalRoomId,
identifier);
final List<GoalRoomRoadmapNodeDetailResponse> nodeResponses = goalRoomReadService.findAllGoalRoomNodes(
goalRoomId, identifier);
return ResponseEntity.ok(nodeResponses);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import co.kirikiri.common.interceptor.Authenticated;
import co.kirikiri.common.resolver.MemberIdentifier;
import co.kirikiri.service.MemberService;
import co.kirikiri.service.member.MemberService;
import co.kirikiri.service.dto.member.request.MemberJoinRequest;
import co.kirikiri.service.dto.member.response.MemberInformationForPublicResponse;
import co.kirikiri.service.dto.member.response.MemberInformationResponse;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import co.kirikiri.common.interceptor.Authenticated;
import co.kirikiri.common.resolver.MemberIdentifier;
import co.kirikiri.service.RoadmapCreateService;
import co.kirikiri.service.RoadmapReadService;
import co.kirikiri.service.roadmap.RoadmapCreateService;
import co.kirikiri.service.roadmap.RoadmapReadService;
import co.kirikiri.service.dto.CustomScrollRequest;
import co.kirikiri.service.dto.roadmap.RoadmapGoalRoomsOrderTypeDto;
import co.kirikiri.service.dto.roadmap.request.RoadmapCategorySaveRequest;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
import jakarta.persistence.OneToMany;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.BatchSize;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
Expand All @@ -19,6 +21,7 @@ public class GoalRoomMembers {

private static final int MIN_SIZE_TO_FIND_NEXT_LEADER = 1;

@BatchSize(size = 20)
@OneToMany(fetch = FetchType.LAZY,
cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE},
orphanRemoval = true, mappedBy = "goalRoom")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
import jakarta.persistence.OneToMany;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.BatchSize;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
Expand All @@ -19,6 +21,7 @@ public class GoalRoomPendingMembers {

private static final int MIN_SIZE_TO_FIND_NEXT_LEADER = 1;

@BatchSize(size = 20)
@OneToMany(fetch = FetchType.LAZY,
cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE},
orphanRemoval = true, mappedBy = "goalRoom")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ public interface GoalRoomQueryRepository {

Optional<GoalRoom> findByIdWithContentAndTodos(final Long goalRoomId);

List<GoalRoom> findGoalRoomsWithPendingMembersByRoadmapAndCond(final Roadmap roadmap,
final RoadmapGoalRoomsOrderType filterType,
final Long lastId,
final int pageSize);
List<GoalRoom> findGoalRoomsByRoadmapAndCond(final Roadmap roadmap,
final RoadmapGoalRoomsOrderType filterType,
final Long lastId,
final int pageSize);

Optional<GoalRoom> findByIdWithTodos(final Long goalRoomId);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@
import static co.kirikiri.domain.goalroom.QGoalRoomPendingMember.goalRoomPendingMember;
import static co.kirikiri.domain.goalroom.QGoalRoomRoadmapNode.goalRoomRoadmapNode;
import static co.kirikiri.domain.goalroom.QGoalRoomToDo.goalRoomToDo;
import static co.kirikiri.domain.member.QMember.member;
import static co.kirikiri.domain.member.QMemberProfile.memberProfile;
import static co.kirikiri.domain.roadmap.QRoadmapContent.roadmapContent;

import co.kirikiri.domain.goalroom.GoalRoom;
Expand Down Expand Up @@ -50,21 +48,15 @@ public Optional<GoalRoom> findByIdWithContentAndTodos(final Long goalRoomId) {
}

@Override
public List<GoalRoom> findGoalRoomsWithPendingMembersByRoadmapAndCond(final Roadmap roadmap,
final RoadmapGoalRoomsOrderType orderType,
final Long lastId,
final int pageSize) {
public List<GoalRoom> findGoalRoomsByRoadmapAndCond(final Roadmap roadmap,
final RoadmapGoalRoomsOrderType orderType,
final Long lastId,
final int pageSize) {
return selectFrom(goalRoom)
.innerJoin(goalRoom.roadmapContent, roadmapContent)
.on(roadmapContent.roadmap.eq(roadmap))
.innerJoin(goalRoom.goalRoomPendingMembers.values, goalRoomPendingMember)
.fetchJoin()
.innerJoin(goalRoomPendingMember.member, member)
.fetchJoin()
.innerJoin(member.memberProfile, memberProfile)
.fetchJoin()
.where(
statusCond(GoalRoomStatus.RECRUITING),
statusCond(orderType),
lessThanLastId(lastId, orderType),
roadmapCond(roadmap))
.limit(pageSize + LIMIT_OFFSET)
Expand Down Expand Up @@ -107,6 +99,8 @@ public Optional<GoalRoom> findByIdWithNodes(final Long goalRoomId) {
return Optional.ofNullable(selectFrom(goalRoom)
.innerJoin(goalRoom.goalRoomRoadmapNodes.values, goalRoomRoadmapNode)
.fetchJoin()
.innerJoin(goalRoom.roadmapContent, roadmapContent)
.fetchJoin()
.where(goalRoomIdCond(goalRoomId))
.fetchOne());
}
Expand Down Expand Up @@ -135,6 +129,13 @@ private BooleanExpression statusCond(final GoalRoomStatus status) {
return goalRoom.status.eq(status);
}

private BooleanExpression statusCond(final RoadmapGoalRoomsOrderType orderType) {
if (orderType == RoadmapGoalRoomsOrderType.CLOSE_TO_DEADLINE) {
return statusCond(GoalRoomStatus.RECRUITING);
}
return null;
}

private OrderSpecifier<?> sortCond(final RoadmapGoalRoomsOrderType orderType) {
if (orderType == RoadmapGoalRoomsOrderType.CLOSE_TO_DEADLINE) {
return goalRoom.startDate.asc();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package co.kirikiri.service;
package co.kirikiri.service.auth;

import co.kirikiri.domain.auth.EncryptedToken;
import co.kirikiri.domain.auth.RefreshToken;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package co.kirikiri.service;
package co.kirikiri.service.auth;

import co.kirikiri.exception.AuthenticationException;
import io.jsonwebtoken.Claims;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package co.kirikiri.service;
package co.kirikiri.service.auth;

import co.kirikiri.domain.member.Member;
import co.kirikiri.service.OauthNetworkService;
import co.kirikiri.persistence.member.MemberRepository;
import co.kirikiri.service.dto.auth.NaverMemberProfileDto;
import co.kirikiri.service.dto.auth.NaverMemberProfileResponseDto;
Expand All @@ -10,6 +11,7 @@
import co.kirikiri.service.dto.member.OauthMemberJoinDto;
import co.kirikiri.service.dto.member.request.GenderType;
import co.kirikiri.service.mapper.OauthMapper;
import co.kirikiri.service.member.MemberService;
import lombok.RequiredArgsConstructor;
import org.springframework.core.env.Environment;
import org.springframework.http.HttpHeaders;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package co.kirikiri.service;
package co.kirikiri.service.auth;

import java.time.LocalDateTime;
import java.util.Map;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package co.kirikiri.service.dto.goalroom;

import java.time.LocalDate;
import java.util.List;

public record GoalRoomRoadmapNodeDetailDto(
Long id,
String title,
String description,
List<String> imageUrls,
LocalDate startDate,
LocalDate endDate,
Integer checkCount
) {

}
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package co.kirikiri.service.dto.goalroom;

import co.kirikiri.domain.goalroom.GoalRoomStatus;
import co.kirikiri.service.dto.member.MemberDto;

import java.time.LocalDate;
import java.time.LocalDateTime;

public record RoadmapGoalRoomDto(
Long goalRoomId,
String name,
GoalRoomStatus status,
Integer currentMemberCount,
Integer limitedMemberCount,
LocalDateTime createdAt,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package co.kirikiri.service.dto.goalroom.response;

import java.time.LocalDate;
import java.util.List;

public record GoalRoomRoadmapNodeDetailResponse(
Long id,
String title,
String description,
List<String> imageUrls,
LocalDate startDate,
LocalDate endDate,
Integer checkCount
) {

}
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package co.kirikiri.service.dto.roadmap.response;

import co.kirikiri.domain.goalroom.GoalRoomStatus;
import co.kirikiri.service.dto.member.response.MemberResponse;
import java.time.LocalDate;
import java.time.LocalDateTime;

public record RoadmapGoalRoomResponse(
Long goalRoomId,
String name,
GoalRoomStatus status,
Integer currentMemberCount,
Integer limitedMemberCount,
LocalDateTime createdAt,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package co.kirikiri.service;
package co.kirikiri.service.goalroom;

import co.kirikiri.domain.ImageContentType;
import co.kirikiri.domain.goalroom.CheckFeed;
Expand All @@ -23,6 +23,9 @@
import co.kirikiri.persistence.goalroom.GoalRoomToDoCheckRepository;
import co.kirikiri.persistence.member.MemberRepository;
import co.kirikiri.persistence.roadmap.RoadmapContentRepository;
import co.kirikiri.service.FilePathGenerator;
import co.kirikiri.service.FileService;
import co.kirikiri.service.ImageDirType;
import co.kirikiri.service.dto.FileInformation;
import co.kirikiri.service.dto.goalroom.GoalRoomCreateDto;
import co.kirikiri.service.dto.goalroom.GoalRoomRoadmapNodeDto;
Expand Down
Loading

0 comments on commit 7088f17

Please sign in to comment.