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
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ ResponseEntity<RetrospectCreateResponse> createRetrospect(@PathVariable("spaceId
ResponseEntity<RetrospectListGetResponse> getRetrospects(@PathVariable("spaceId") Long spaceId,
@MemberId Long memberId);

@Operation(summary = "모든 회고 목록 조회", description = "특정 유저의 모든 회고 목록을 보는 기능입니다.")
ResponseEntity<RetrospectListGetResponse> getAllRetrospects(@MemberId Long memberId);

@Operation(summary = "회고 수정", description = "특정 팀 스페이스에서 작성했던 회고를 수정하는 기능입니다.")
ResponseEntity<RetrospectListGetResponse> updateRetrospect(@PathVariable("spaceId") Long spaceId,
@PathVariable("retrospectId") Long retrospectId, @RequestBody @Valid RetrospectUpdateRequest request, @MemberId Long memberId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,12 @@

@RestController
@RequiredArgsConstructor
@RequestMapping("/space/{spaceId}/retrospect")
public class RetrospectController implements RetrospectApi {

private final RetrospectService retrospectService;

@Override
@PostMapping
@PostMapping("/space/{spaceId}/retrospect")
public ResponseEntity<RetrospectCreateResponse> createRetrospect(
@PathVariable("spaceId") Long spaceId,
@RequestBody @Valid RetrospectCreateRequest request,
Expand All @@ -32,15 +31,22 @@ public ResponseEntity<RetrospectCreateResponse> createRetrospect(
}

@Override
@GetMapping
@GetMapping("/space/{spaceId}/retrospect")
public ResponseEntity<RetrospectListGetResponse> getRetrospects(@PathVariable("spaceId") Long spaceId,
@MemberId Long memberId) {

return ResponseEntity.ok().body(retrospectService.getRetrospects(spaceId, memberId));
}

@Override
@PatchMapping("/{retrospectId}")
@GetMapping("/retrospects")
public ResponseEntity<RetrospectListGetResponse> getAllRetrospects(@MemberId Long memberId) {

return ResponseEntity.ok().body(retrospectService.getAllRetrospects(memberId));
}

@Override
@PatchMapping("/space/{spaceId}/retrospect/{retrospectId}")
public ResponseEntity<RetrospectListGetResponse> updateRetrospect(@PathVariable("spaceId") Long spaceId,
@PathVariable("retrospectId") Long retrospectId, @RequestBody @Valid RetrospectUpdateRequest request,
@MemberId Long memberId) {
Expand All @@ -50,7 +56,7 @@ public ResponseEntity<RetrospectListGetResponse> updateRetrospect(@PathVariable(
}

@Override
@DeleteMapping("/{retrospectId}")
@DeleteMapping("/space/{spaceId}/retrospect/{retrospectId}")
public ResponseEntity<RetrospectListGetResponse> deleteRetrospect(@PathVariable("spaceId") Long spaceId,
@PathVariable("retrospectId") Long retrospectId, @MemberId Long memberId) {

Expand All @@ -59,7 +65,7 @@ public ResponseEntity<RetrospectListGetResponse> deleteRetrospect(@PathVariable(
}

@Override
@PatchMapping("/{retrospectId}/close")
@PatchMapping("/space/{spaceId}/retrospect/{retrospectId}/close")
public ResponseEntity<Void> closeRetrospect(
@PathVariable("spaceId") Long spaceId,
@PathVariable("retrospectId") Long retrospectId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

import org.layer.domain.retrospect.dto.SpaceMemberCount;
import org.layer.domain.space.entity.MemberSpaceRelation;
import org.layer.event.ai.AIAnalyzeStartEvent;
import org.layer.domain.answer.entity.Answers;
import org.layer.domain.answer.repository.AnswerRepository;
Expand Down Expand Up @@ -35,7 +37,9 @@
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;

@Service
@RequiredArgsConstructor
Expand Down Expand Up @@ -145,6 +149,34 @@ public RetrospectListGetResponse getRetrospects(Long spaceId, Long memberId) {
return RetrospectListGetResponse.of(retrospects.size(), retrospectDtos);
}

public RetrospectListGetResponse getAllRetrospects(Long memberId) {

List<MemberSpaceRelation> msrList = memberSpaceRelationRepository.findAllByMemberId(memberId);
List<Long> spaceIds = msrList.stream().map(m -> m.getSpace().getId()).toList();

Map<Long, Long> spaceMemberCountMap = memberSpaceRelationRepository.countMembersBySpaceIds(spaceIds)
.stream().collect(Collectors.toMap(SpaceMemberCount::getSpaceId, SpaceMemberCount::getMemberCount));

List<Retrospect> retrospects = retrospectRepository.findAllBySpaceIdIn(spaceIds);
List<Long> retrospectIds = retrospects.stream().map(Retrospect::getId).toList();
Answers answers = new Answers(answerRepository.findAllByRetrospectIdIn(retrospectIds));

List<RetrospectGetResponse> retrospectDtos = retrospects.stream()
.map(r -> {
long writeCount = spaceMemberCountMap.get(r.getSpaceId());
if (r.getRetrospectStatus().equals(RetrospectStatus.DONE)) {
writeCount = answers.getWriteCount(r.getId());
}

return RetrospectGetResponse.of(r.getId(), r.getTitle(), r.getIntroduction(),
answers.getWriteStatus(memberId, r.getId()), r.getRetrospectStatus(), r.getAnalysisStatus(),
answers.getWriteCount(r.getId()), writeCount, r.getCreatedAt(), r.getDeadline());
})
.toList();

return RetrospectListGetResponse.of(retrospects.size(), retrospectDtos);
}

private List<Question> getQuestions(List<QuestionCreateRequest> questions, Long savedRetrospectId, Long formId) {
AtomicInteger index = new AtomicInteger(1);

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.layer.domain.retrospect.dto;

import lombok.Getter;

@Getter
public class SpaceMemberCount {
private final Long spaceId;
private final Long memberCount;

public SpaceMemberCount(Long spaceId, Long memberCount) {
this.spaceId = spaceId;
this.memberCount = memberCount;
}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,11 @@
import java.util.List;
import java.util.Optional;

public interface RetrospectRepository extends JpaRepository<Retrospect, Long>, RetrospectCustomRepository {
public interface RetrospectRepository extends JpaRepository<Retrospect, Long> {
List<Retrospect> findAllBySpaceId(Long spaceId);

List<Retrospect> findAllBySpaceIdIn(List<Long> spaceIds);

List<Retrospect> findAllByDeadlineBeforeAndRetrospectStatus(LocalDateTime now, RetrospectStatus retrospectStatus);

default Retrospect findByIdOrThrow(Long retrospectId) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.layer.domain.space.repository;


import org.layer.domain.retrospect.dto.SpaceMemberCount;
import org.layer.domain.space.entity.MemberSpaceRelation;
import org.layer.domain.space.entity.Space;
import org.springframework.data.jpa.repository.JpaRepository;
Expand All @@ -18,6 +19,12 @@ public interface MemberSpaceRelationRepository extends JpaRepository<MemberSpace

List<MemberSpaceRelation> findAllBySpaceId(Long spaceId);

@Query("SELECT new org.layer.domain.retrospect.dto.SpaceMemberCount(m.space.id, COUNT(m)) " +
"FROM MemberSpaceRelation m " +
"WHERE m.space.id IN :spaceIds " +
"GROUP BY m.space.id")
List<SpaceMemberCount> countMembersBySpaceIds(@Param("spaceIds") List<Long> spaceIds);

@Modifying(clearAutomatically = true)
@Query("DELETE FROM MemberSpaceRelation m where m.space.id = :spaceId")
void deleteAllBySpaceIdInBatch(Long spaceId);
Expand Down
Loading