Skip to content

Commit 83cf8bb

Browse files
authored
Merge pull request #26 from generation-it-gi/feat/read-details-#10
[Feature] 판매 게시글 세부 조회 close #10
2 parents adab666 + e49821e commit 83cf8bb

5 files changed

Lines changed: 53 additions & 0 deletions

File tree

src/main/java/kr/warmlink/application/article/dto/ArticleDto.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package kr.warmlink.application.article.dto;
22

33
import io.swagger.v3.oas.annotations.media.Schema;
4+
import kr.warmlink.domain.article.entity.Article;
45
import kr.warmlink.domain.auth.entity.User;
56
import lombok.AllArgsConstructor;
67
import lombok.Builder;
78
import lombok.Getter;
89
import lombok.NoArgsConstructor;
910

11+
import java.time.LocalDateTime;
1012
import java.util.List;
1113
import java.util.stream.Collectors;
1214

@@ -60,4 +62,31 @@ public static List<Overview> from(User user) {
6062
.collect(Collectors.toUnmodifiableList());
6163
}
6264
}
65+
66+
@Getter
67+
@Builder
68+
@AllArgsConstructor
69+
@Schema(name = "ArticleDto.DetailResponse", description = "게시글 세부 조회 응답 DTO")
70+
public static class DetailResponse {
71+
@Schema(description = "게시글 제목", example = "초상화 그려드립니다.")
72+
private String title;
73+
74+
@Schema(description = "게시글 내용", example = "1장에 8천원 이상, 택배비 별도 부담하셔야 합니다.")
75+
private String content;
76+
77+
@Schema(description = "작성자", example = "홍길동")
78+
private String name;
79+
80+
@Schema(description = "작성일", example = "2025-06-26")
81+
private LocalDateTime createdAt;
82+
83+
public static DetailResponse from(Article article, User user) {
84+
return DetailResponse.builder()
85+
.title(article.getTitle())
86+
.content(article.getContent())
87+
.name(user.getName())
88+
.createdAt(article.getCreatedAt())
89+
.build();
90+
}
91+
}
6392
}

src/main/java/kr/warmlink/common/entity/BaseEntity.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import jakarta.persistence.GenerationType;
77
import jakarta.persistence.Id;
88
import jakarta.persistence.MappedSuperclass;
9+
import lombok.Getter;
910
import org.hibernate.annotations.SQLDelete;
1011
import org.hibernate.annotations.SQLRestriction;
1112
import org.springframework.data.annotation.CreatedDate;
@@ -14,6 +15,7 @@
1415

1516
import java.time.LocalDateTime;
1617

18+
@Getter
1719
@MappedSuperclass
1820
@EntityListeners(AuditingEntityListener.class)
1921
@SQLDelete(sql = "UPDATE #{entityName} SET deleted_at = NOW() WHERE id = ?")

src/main/java/kr/warmlink/domain/article/service/ArticleService.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,13 @@ public ArticleDto.Response delete(HttpServletRequest request, Long id) {
8383
return ArticleDto.Response.of(message);
8484
}
8585

86+
@Transactional
87+
public ArticleDto.DetailResponse detail(HttpServletRequest request, Long id) {
88+
String accessToken = jwtProvider.resolveToken(request);
89+
String email = jwtProvider.getEmail(accessToken);
90+
91+
Article article = read(id);
92+
93+
return ArticleDto.DetailResponse.from(article, article.getUser());
94+
}
8695
}

src/main/java/kr/warmlink/presentation/api/ArticleApi.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,11 @@ public interface ArticleApi {
4040
})
4141
ResponseEntity<?> delete(HttpServletRequest request, @PathVariable Long id);
4242

43+
@Operation(summary = "판매글 세부 조회", description = "사용자의 판매 게시글을 내용까지 조회하기 위한 API")
44+
@ApiResponses({
45+
@ApiResponse(responseCode = "200", description = "판매글 세부 조회 성공"),
46+
@ApiResponse(responseCode = "400", description = "판매글 세부 조회 실패")
47+
})
48+
ResponseEntity<?> detail(HttpServletRequest request, @PathVariable Long id);
49+
4350
}

src/main/java/kr/warmlink/presentation/controller/ArticleController.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,10 @@ public ResponseEntity<?> delete(HttpServletRequest request, Long id) {
4343
return ResponseEntity.ok(articleService.delete(request, id));
4444
}
4545

46+
@Override
47+
@GetMapping("/{id}")
48+
public ResponseEntity<?> detail(HttpServletRequest request, Long id) {
49+
return ResponseEntity.ok(articleService.detail(request, id));
50+
}
51+
4652
}

0 commit comments

Comments
 (0)