Skip to content

Commit 38572ac

Browse files
authored
Merge pull request #102 from FixLog/develop
Develop
2 parents 2b856bc + a0dcef5 commit 38572ac

File tree

11 files changed

+149
-118
lines changed

11 files changed

+149
-118
lines changed

src/main/java/com/example/FixLog/controller/PostController.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.example.FixLog.controller;
22

3-
import com.example.FixLog.dto.post.NewPostRequestDto;
43
import com.example.FixLog.dto.post.PostRequestDto;
54
import com.example.FixLog.dto.Response;
65
import com.example.FixLog.dto.post.PostResponseDto;
@@ -34,8 +33,8 @@ public Response<String> uploadImage(@RequestPart("imageFile") MultipartFile imag
3433
// 게시글 수정하기
3534
@PatchMapping("/{postId}/edit")
3635
public Response<Object> editPost(@PathVariable("postId") Long postId,
37-
@RequestBody NewPostRequestDto newPostRequestDto){
38-
postService.editPost(postId, newPostRequestDto);
36+
@RequestBody PostRequestDto postRequestDto){
37+
postService.editPost(postId, postRequestDto);
3938
return Response.success("게시글 수정 성공.", null);
4039
}
4140

src/main/java/com/example/FixLog/domain/tag/Tag.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,15 @@ public class Tag {
2121
@Column(length = 20, nullable = false)
2222
private String tagName;
2323

24-
@Column(nullable = false)
2524
private String tagInfo;
2625

26+
public static Tag of(TagCategory tagCategory, String tagName) {
27+
Tag tag = new Tag();
28+
tag.tagCategory = tagCategory;
29+
tag.tagName = tagName;
30+
return tag;
31+
}
32+
2733
public static Tag of(TagCategory tagCategory, String tagName, String tagInfo) {
2834
Tag tag = new Tag();
2935
tag.tagCategory = tagCategory;

src/main/java/com/example/FixLog/dto/post/MyPostPageResponseDto.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,31 @@ public class MyPostPageResponseDto {
2323
private int likeCount;
2424
private int forkCount;
2525
private String nickname;
26+
private String profileImageUrl;
27+
28+
// 이미지 null일 때 default 사진으로 변경 - 프로필 사진
29+
public static String getDefaultProfile(String image){
30+
String imageUrl = (image == null || image.isBlank())
31+
? "https://fixlog-bucket.s3.ap-northeast-2.amazonaws.com/default/profile.png" : image;
32+
System.out.println(imageUrl);
33+
return imageUrl;
34+
}
35+
// 이미지 null일 때 default 사진으로 변경 - 썸네일
36+
public static String getDefaultCover(String image){
37+
String imageUrl = (image == null || image.isBlank())
38+
? "https://fixlogsmwubucket.s3.ap-northeast-2.amazonaws.com/default/DefaulThumnail.png" : image;
39+
System.out.println(imageUrl);
40+
return imageUrl;
41+
}
2642

2743
public static MyPostPageResponseDto from(Post post, int forkCount) {
2844
return MyPostPageResponseDto.builder()
2945
.postId(post.getPostId())
3046
.nickname(post.getUserId().getNickname())
3147
.postTitle(post.getPostTitle())
3248
.postSummary(generateSummary(post.getProblem()))
33-
.imageUrl(post.getCoverImage())
49+
.imageUrl(getDefaultCover(post.getCoverImage()))
50+
.profileImageUrl(getDefaultProfile(post.getUserId().getProfileImageUrl()))
3451
.tags(post.getPostTags().stream().map(tag -> tag.getTagId().getTagName()).toList())
3552
.createdAt(post.getCreatedAt())
3653
.likeCount(post.getPostLikes().size())

src/main/java/com/example/FixLog/dto/post/NewPostRequestDto.java

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/main/java/com/example/FixLog/dto/post/PostRequestDto.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@ public class PostRequestDto {
1717
private String referenceLink;
1818
private String extraContent;
1919

20-
private List<Long> tags;
20+
private List<String> tags;
2121
}

src/main/java/com/example/FixLog/exception/CustomException.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,16 @@
44
import lombok.RequiredArgsConstructor;
55

66
@Getter
7-
@RequiredArgsConstructor
87
public class CustomException extends RuntimeException {
98
private final ErrorCode errorCode;
9+
10+
public CustomException(ErrorCode errorCode) {
11+
super(errorCode.getMessage());
12+
this.errorCode = errorCode;
13+
}
14+
15+
public CustomException(ErrorCode errorCode, String detailMessage) {
16+
super(detailMessage);
17+
this.errorCode = errorCode;
18+
}
1019
}

src/main/java/com/example/FixLog/exception/ErrorCode.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public enum ErrorCode {
2424
TAG_NOT_FOUND(HttpStatus.NOT_FOUND, "없는 태그 번호입니다."),
2525
SORT_NOT_EXIST(HttpStatus.BAD_REQUEST, "사용할 수 없는 정렬입니다."),
2626
INVALID_PASSWORD(HttpStatus.UNAUTHORIZED, "비밀번호가 일치하지 않습니다."),
27+
POST_UPDATE_FORBIDDEN(HttpStatus.FORBIDDEN, "본인 게시글만 수정할 수 있습니다."),
2728
REQUIRED_TAGS_MISSING(HttpStatus.BAD_REQUEST, "태그를 선택해주세요."),
2829
REQUIRED_CONTENT_MISSING(HttpStatus.BAD_REQUEST, "필수 본문이 입력되지 않았습니다."),
2930
SAME_AS_OLD_PASSWORD(HttpStatus.BAD_REQUEST, "다른 비밀번호 입력 바랍니다."),

src/main/java/com/example/FixLog/mock/TagMockDataInitializer.java

Lines changed: 34 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -32,45 +32,46 @@ public void run(String... args) {
3232
List<Tag> tagsToInsert = new ArrayList<>();
3333

3434
// BIG_CATEGORY
35-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(BIG_CATEGORY, "백엔드", "backend"));
36-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(BIG_CATEGORY, "머신러닝", "machine learning"));
37-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(BIG_CATEGORY, "프론트엔드", "frontend"));
35+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(BIG_CATEGORY, "backend"));
36+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(BIG_CATEGORY, "machine-learning"));
37+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(BIG_CATEGORY, "frontend"));
3838

3939
// MAJOR_CATEGORY
40-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MAJOR_CATEGORY, "장고", "django"));
41-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MAJOR_CATEGORY, "스프링부트", "spring-boot"));
42-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MAJOR_CATEGORY, "넥스트", "next.js"));
43-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MAJOR_CATEGORY, "케라스", "keras"));
44-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MAJOR_CATEGORY, "파이토치", "pytorch"));
45-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MAJOR_CATEGORY, "사이킷런", "scikit-learn"));
46-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MAJOR_CATEGORY, "노드", "node.js"));
47-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MAJOR_CATEGORY, "리액트", "react"));
48-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MAJOR_CATEGORY, "리액트 네이티브", "react-native"));
40+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MAJOR_CATEGORY, "django"));
41+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MAJOR_CATEGORY, "spring-boot"));
42+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MAJOR_CATEGORY, "next.js"));
43+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MAJOR_CATEGORY, "keras"));
44+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MAJOR_CATEGORY, "pytorch"));
45+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MAJOR_CATEGORY, "scikit-learn"));
46+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MAJOR_CATEGORY, "node.js"));
47+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MAJOR_CATEGORY, "react"));
48+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MAJOR_CATEGORY, "react-native"));
4949

5050
// MIDDLE_CATEGORY
51-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MIDDLE_CATEGORY, "CSS", "css"));
52-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MIDDLE_CATEGORY, "자바스크립트", "javascript"));
53-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MIDDLE_CATEGORY, "R", "r"));
54-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MIDDLE_CATEGORY, "JSON", "json"));
55-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MIDDLE_CATEGORY, "자바", "java"));
56-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MIDDLE_CATEGORY, "Haskell", "haskell"));
57-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MIDDLE_CATEGORY, "파이썬", "python"));
58-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MIDDLE_CATEGORY, "C", "c"));
51+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MIDDLE_CATEGORY, "css"));
52+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MIDDLE_CATEGORY, "javascript"));
53+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MIDDLE_CATEGORY, "r"));
54+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MIDDLE_CATEGORY, "json"));
55+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MIDDLE_CATEGORY, "java"));
56+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MIDDLE_CATEGORY, "haskell"));
57+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MIDDLE_CATEGORY, "python"));
58+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MIDDLE_CATEGORY, "c"));
5959

6060
// MINOR_CATEGORY
61-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "NullPointerException", "null-pointer-exception"));
62-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "500 Internal Server Error", "500-error"));
63-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "CORS 정책 오류", "cors-error"));
64-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "Database connection timeout", "db-timeout"));
65-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "ClassNotFoundException", "class-not-found"));
66-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "Cannot read property of undefined", "undefined-property"));
67-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "상태(state) 업데이트 누락", "state-missing"));
68-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "HTTP 에러", "http-error"));
69-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "렌더링 무한 루프", "render-loop"));
70-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "스타일 깨짐", "style-break"));
71-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "404 Not Found", "404-error"));
72-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "Permission Error", "permission-error"));
73-
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "OutOfMemoryError", "out-of-memory"));
61+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "null-pointer-exception", "NullPointerException"));
62+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "500-error", "500 Internal Server Error"));
63+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "cors-error", "CORS 정책 오류"));
64+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "db-timeout", "Database connection timeout"));
65+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "class-not-found", "ClassNotFoundException"));
66+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "undefined-property", "Cannot read property of undefined"));
67+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "state-missing", "상태(state) 업데이트 누락"));
68+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "http-error", "HTTP 에러"));
69+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "render-loop", "렌더링 무한 루프"));
70+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "style-break", "스타일 깨짐"));
71+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "404-error", "404 Not Found"));
72+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "permission-error", "Permission Error"));
73+
addIfNotExist(tagsToInsert, existingTagNames, Tag.of(MINOR_CATEGORY, "out-of-memory", "OutOfMemoryError"));
74+
7475

7576
if (!tagsToInsert.isEmpty()) {
7677
tagRepository.saveAll(tagsToInsert);

src/main/java/com/example/FixLog/repository/tag/TagRepository.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
import org.springframework.data.domain.Pageable;
66
import org.springframework.data.jpa.repository.JpaRepository;
77

8+
import java.util.Optional;
9+
810
public interface TagRepository extends JpaRepository<Tag, Long> {
911
Page<Tag> findAll(Pageable pageable);
12+
Optional<Tag> findByTagName(String tagName);
1013
}

src/main/java/com/example/FixLog/service/MainPageService.java

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,20 @@ public MainPageService(PostRepository postRepository, MemberService memberServic
2727
this.memberService = memberService;
2828
}
2929

30-
// 이미지 null일 때 default 사진으로 변경 (프로필 사진,
31-
public String getDefaultImage(String image){
30+
// 이미지 null일 때 default 사진으로 변경 - 프로필 사진
31+
public String getDefaultProfile(String image){
3232
String imageUrl = (image == null || image.isBlank())
3333
? "https://fixlog-bucket.s3.ap-northeast-2.amazonaws.com/default/profile.png" : image;
3434
System.out.println(imageUrl);
3535
return imageUrl;
3636
}
37+
// 이미지 null일 때 default 사진으로 변경 - 썸네일
38+
public String getDefaultCover(String image){
39+
String imageUrl = (image == null || image.isBlank())
40+
? "https://fixlogsmwubucket.s3.ap-northeast-2.amazonaws.com/default/DefaulThumnail.png" : image;
41+
System.out.println(imageUrl);
42+
return imageUrl;
43+
}
3744

3845
// 메인페이지 보기
3946
public MainPageResponseDto mainPageView(int sort, int size){
@@ -44,9 +51,9 @@ public MainPageResponseDto mainPageView(int sort, int size){
4451
if (optionalMember.isPresent()) {
4552
Member member = optionalMember.get();
4653
String imageUrl = member.getProfileImageUrl();
47-
profileImageUrl = getDefaultImage(imageUrl);
54+
profileImageUrl = getDefaultProfile(imageUrl);
4855
} else {
49-
profileImageUrl = "https://example.com/default-cover-image.png"; // 비로그인 기본 이미지
56+
profileImageUrl = "https://fixlog-bucket.s3.ap-northeast-2.amazonaws.com/default/profile.png"; // 비로그인 기본 이미지
5057
}
5158

5259
// 페이지 (글 12개) 불러오기
@@ -67,11 +74,11 @@ public MainPageResponseDto mainPageView(int sort, int size){
6774
List<MainPagePostResponseDto> postList = posts.stream()
6875
.map(post -> new MainPagePostResponseDto(
6976
post.getPostTitle(),
70-
getDefaultImage(post.getCoverImage()),
77+
getDefaultCover(post.getCoverImage()),
7178
post.getPostTags().stream()
7279
.map(postTag -> postTag.getTagId().getTagName())
7380
.collect(Collectors.toList()),
74-
getDefaultImage(post.getUserId().getProfileImageUrl()),
81+
getDefaultProfile(post.getUserId().getProfileImageUrl()),
7582
post.getUserId().getNickname(),
7683
post.getCreatedAt().toLocalDate(),
7784
post.getPostLikes().size()
@@ -90,9 +97,9 @@ public MainPageResponseDto mainPageFullView(int sort, int page, int size){
9097
if (optionalMember.isPresent()) {
9198
Member member = optionalMember.get();
9299
String imageUrl = member.getProfileImageUrl();
93-
profileImageUrl = getDefaultImage(imageUrl);
100+
profileImageUrl = getDefaultProfile(imageUrl);
94101
} else {
95-
profileImageUrl = "https://example.com/default-cover-image.png"; // 비로그인 기본 이미지
102+
profileImageUrl = "https://fixlog-bucket.s3.ap-northeast-2.amazonaws.com/default/profile.png"; // 비로그인 기본 이미지
96103
}
97104

98105
// 페이지 설정 (한 페이지당 12개)
@@ -109,11 +116,11 @@ public MainPageResponseDto mainPageFullView(int sort, int page, int size){
109116
List<MainPagePostResponseDto> postList = postPage.stream()
110117
.map(post -> new MainPagePostResponseDto(
111118
post.getPostTitle(),
112-
getDefaultImage(post.getCoverImage()),
119+
getDefaultCover(post.getCoverImage()),
113120
post.getPostTags().stream()
114121
.map(postTag -> postTag.getTagId().getTagName())
115122
.collect(Collectors.toList()),
116-
getDefaultImage(post.getUserId().getProfileImageUrl()),
123+
getDefaultProfile(post.getUserId().getProfileImageUrl()),
117124
post.getUserId().getNickname(),
118125
post.getCreatedAt().toLocalDate(),
119126
post.getPostLikes().size()

0 commit comments

Comments
 (0)