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

회고 서비스 작성 #22

Closed
wants to merge 24 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
fec9315
Refactor(#21): import 대상 변경
sjhjack Sep 15, 2024
e84f5d6
Refactor(#21): Object -> ReviewContent 변경
sjhjack Sep 15, 2024
ad21587
Refactor(#21): Schedule 컬럼 추가
sjhjack Sep 15, 2024
6e2f53e
Feat(#21): starter-web 추가
sjhjack Sep 15, 2024
f2ee49e
Chore(#21): SpringBootApplication 위치 변경
sjhjack Sep 15, 2024
9a54021
Chore(#21): Repository 어노테이션 추가
sjhjack Sep 15, 2024
4f7d11e
Chore(#21): wypl-core에 도메인 추가
sjhjack Sep 15, 2024
06e1f2b
Feat(#21): review request dto 추가
sjhjack Sep 15, 2024
db46347
Feat(#21): review response dto 추가
sjhjack Sep 15, 2024
f7f6b41
Feat(#21): review service interface 추가
sjhjack Sep 15, 2024
2e68e0b
Chore(#21): domain 단에서 web 제거
sjhjack Sep 15, 2024
9a835d0
Refactor(#21): Member Entity에 Getter 추가 및 import 스타일 변경
sjhjack Sep 21, 2024
02a7cfa
Feat(#21): Review Entity에 of, updateTitle 메서드 추가
sjhjack Sep 21, 2024
f894c6f
Feat(#21): ReviewContents Document에 of, updateContents 메서드 추가
sjhjack Sep 21, 2024
d2975f0
Refactor(#21): 파라미터 id값 타입 int -> long 변경
sjhjack Sep 21, 2024
1308d6e
Refactor(#21): ReviewResponse의 썸네일 타입 Object -> ReviewContent 변경
sjhjack Sep 21, 2024
e728b56
Refactor(#21): ReviewController 위치 변경
sjhjack Sep 21, 2024
e11edb9
Feat(#21): ReviewException 추가
sjhjack Sep 21, 2024
b514883
Feat(#21): Review Service, Repository 추가(MemberSchedule 제거)
sjhjack Sep 21, 2024
bf8f5cd
Refactor(#21): ReviewDetailResponse의 members 제거
sjhjack Sep 21, 2024
6ebb67c
Refactor(#21): ReviewServiceImpl에 ReviewUtils 적용
sjhjack Sep 21, 2024
1ed48db
Refactor(#21): getReviewsByScheduleId 내부 로직 수정
sjhjack Sep 21, 2024
ae5ae80
Chore(#21): 필요 없는 주석 삭제
sjhjack Sep 22, 2024
ec2de39
Refactor(#21): ReviewException의 파라미터를 ServerErrorCode -> ReviewErrorC…
sjhjack Sep 22, 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
6 changes: 6 additions & 0 deletions application/wypl-core/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,10 @@ java {

dependencies {
implementation project(':application:application-common')
implementation project(':domain:jpa-common')
implementation project(':domain:mongo-common')
implementation project(':domain:jpamongo-review-domain')
implementation project(':domain:jpa-calendar-domain')
implementation project(':domain:jpa-member-domain')
implementation project(':common')
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.wypl;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;

@SpringBootApplication
@EnableJpaRepositories(basePackages = {"com.wypl"})
@EnableMongoRepositories(basePackages = {"com.wypl"})
public class WyplCoreApplication {

public static void main(String[] args) {
SpringApplication.run(WyplCoreApplication.class, args);
}

}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.wypl.wyplcore.review.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import lombok.RequiredArgsConstructor;

@RestController
@RequiredArgsConstructor
@RequestMapping("/review")
public class ReviewController {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.wypl.wyplcore.review.data.request;

import java.util.List;
import java.util.Map;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.wypl.jpamongoreviewdomain.reviewcontents.domain.ReviewContent;

import lombok.Builder;

@Builder
public record ReviewCreateRequest(

String title,

@JsonProperty("schedule_id")
int scheduleId,

List<Map<String, ReviewContent>> contents

) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.wypl.wyplcore.review.data.request;

public enum ReviewType {
NEWEST,

OLDEST
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.wypl.wyplcore.review.data.request;

import java.util.List;
import java.util.Map;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.wypl.jpamongoreviewdomain.reviewcontents.domain.ReviewContent;

public record ReviewUpdateRequest(
String title,

@JsonProperty("schedule_id")
int scheduleId,

List<Map<String, ReviewContent>> contents
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.wypl.wyplcore.review.data.response;

import java.util.List;
import java.util.Map;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.wypl.jpacalendardomain.schedule.domain.Schedule;
import com.wypl.jpamongoreviewdomain.review.domain.Review;
import com.wypl.jpamongoreviewdomain.reviewcontents.domain.ReviewContent;

import lombok.Builder;

@Builder
public record ReviewDetailResponse(
@JsonProperty("review_id")
long reviewId,

String title,

// Todo : import 후 주석 해제
// ScheduleResponse schedule,

List<Map<String, ReviewContent>> contents
) {
public static ReviewDetailResponse of(Review review, Schedule schedule,
List<Map<String, ReviewContent>> reviewContents) {
return ReviewDetailResponse.builder()
.reviewId(review.getReviewId())
.title(review.getTitle())
// Todo : import 후 주석 해제
// .schedule(ScheduleResponse.from(schedule))
.contents(reviewContents)
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.wypl.wyplcore.review.data.response;

import com.fasterxml.jackson.annotation.JsonProperty;

public record ReviewIdResponse(
@JsonProperty("review_id")
long reviewId
) {
public static ReviewIdResponse from(long reviewId) {
return new ReviewIdResponse(reviewId);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.wypl.wyplcore.review.data.response;

import java.util.List;

import com.fasterxml.jackson.annotation.JsonProperty;

public record ReviewListResponse(

@JsonProperty("review_count")
int reviewCount,

List<ReviewResponse> reviews) {
public static ReviewListResponse from(List<ReviewResponse> reviews) {
return new ReviewListResponse(reviews.size(), reviews);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.wypl.wyplcore.review.data.response;

import java.time.LocalDateTime;
import java.util.Map;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.wypl.jpamongoreviewdomain.review.domain.Review;
import com.wypl.jpamongoreviewdomain.reviewcontents.domain.ReviewContent;

import lombok.Builder;

@Builder
public record ReviewResponse(
@JsonProperty("review_id")
long reviewId,

@JsonProperty("created_at")
LocalDateTime createdAt,

String title,

@JsonProperty("thumbnail_content")
Map<String, ReviewContent> thumbnailContent
) {
public static ReviewResponse from(Review review, Map<String, ReviewContent> thumbnailContent) {
return ReviewResponse.builder()
.createdAt(LocalDateTime.now())
.reviewId(review.getReviewId())
.title(review.getTitle())
.thumbnailContent(thumbnailContent)
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.wypl.wyplcore.review.exception;

import com.wypl.common.exception.ServerErrorCode;

import lombok.Getter;

@Getter
public enum ReviewErrorCode implements ServerErrorCode {
EMPTY_CONTENTS(500, "REVIEW_001", "작성된 내용이 없습니다."),
INVALID_TITLE(500, "REVIEW_002", "제목의 길이가 올바르지 않습니다."),
NO_SUCH_REVIEW(500, "REVIEW_003", "존재하지 않는 회고입니다.")
;

private final int statusCode;
private final String errorCode;
private final String message;

ReviewErrorCode(int statusCode, String errorCode, String message) {
this.statusCode = statusCode;
this.errorCode = errorCode;
this.message = message;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.wypl.wyplcore.review.exception;

import com.wypl.common.exception.WyplException;

public class ReviewException extends WyplException {
public ReviewException(ReviewErrorCode serverErrorCode) {
super(serverErrorCode);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.wypl.wyplcore.review.service;

import org.springframework.transaction.annotation.Transactional;

import com.wypl.wyplcore.review.data.request.ReviewCreateRequest;
import com.wypl.wyplcore.review.data.request.ReviewUpdateRequest;
import com.wypl.wyplcore.review.data.response.ReviewIdResponse;

public interface ReviewModifyService {
@Transactional
ReviewIdResponse createReview(int memberId, ReviewCreateRequest reviewCreateRequest);

@Transactional
ReviewIdResponse updateReview(int memberId, int reviewId, ReviewUpdateRequest reviewUpdateRequest);

@Transactional
ReviewIdResponse deleteReview(int memberId, int reviewId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.wypl.wyplcore.review.service;

import java.time.LocalDate;

import com.wypl.wyplcore.review.data.request.ReviewType;
import com.wypl.wyplcore.review.data.response.ReviewDetailResponse;
import com.wypl.wyplcore.review.data.response.ReviewListResponse;

public interface ReviewReadService {
ReviewDetailResponse getDetailReview(long memberId, long reviewId);

ReviewListResponse getReviews(long memberId, Long lastReviewId, ReviewType reviewType, LocalDate startDate,
sjhjack marked this conversation as resolved.
Show resolved Hide resolved
LocalDate endDate);

ReviewListResponse getReviewsByScheduleId(long memberId, long scheduleId, ReviewType reviewType);
}
Loading
Loading