-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #25 from Hackathon0704/feat/21
[feat/21] 친구 공유글 생성, 조회 API 구현
- Loading branch information
Showing
5 changed files
with
163 additions
and
0 deletions.
There are no files selected for viewing
35 changes: 35 additions & 0 deletions
35
src/main/java/com/umc/dream/controller/FriendPostController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
package com.umc.dream.controller; | ||
|
||
import com.umc.dream.apiPayload.ApiResponse; | ||
import com.umc.dream.converter.FriendPostConverter; | ||
import com.umc.dream.domain.Post; | ||
import com.umc.dream.dto.FriendRequestDTO; | ||
import com.umc.dream.dto.FriendResponseDTO; | ||
import com.umc.dream.service.FriendService; | ||
import io.swagger.v3.oas.annotations.Operation; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.web.bind.annotation.*; | ||
|
||
import java.util.List; | ||
|
||
@RestController | ||
@RequiredArgsConstructor | ||
@RequestMapping("/posts/following") | ||
public class FriendPostController { | ||
|
||
private final FriendService friendService; | ||
|
||
@Operation(summary = "친구 게시물 생성 API") | ||
@PostMapping | ||
public ApiResponse<FriendResponseDTO.CreateResultDTO> createFriendPost(@RequestBody FriendRequestDTO.CreateFriendRequestDTO request){ | ||
Post post = friendService.createFriendPost(request); | ||
return ApiResponse.onSuccess(FriendPostConverter.toFriendPostResultDTO(post)); | ||
} | ||
|
||
@Operation(summary = "친구 전체 게시물 조회 API") | ||
@GetMapping | ||
public ApiResponse<FriendResponseDTO.FriendPostListDTO> getAllFriendPostList(@RequestParam(name = "userId") Long userId) { | ||
List<Post> posts = friendService.getAllFriendPostList(userId); | ||
return ApiResponse.onSuccess(FriendPostConverter.toFriendPostListDTO(posts)); | ||
} | ||
} |
44 changes: 44 additions & 0 deletions
44
src/main/java/com/umc/dream/converter/FriendPostConverter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
package com.umc.dream.converter; | ||
|
||
import com.umc.dream.domain.Post; | ||
import com.umc.dream.domain.User; | ||
import com.umc.dream.domain.enums.Type; | ||
import com.umc.dream.dto.FriendRequestDTO; | ||
import com.umc.dream.dto.FriendResponseDTO; | ||
|
||
import java.util.List; | ||
import java.util.stream.Collectors; | ||
|
||
public class FriendPostConverter { | ||
public static Post toFriendPost(FriendRequestDTO.CreateFriendRequestDTO request, User writer) { | ||
return Post.builder() | ||
.title(request.getTitle()) | ||
.content(request.getContent()) | ||
.type(Type.FRIENDS) | ||
.writer(writer) | ||
.build(); | ||
} | ||
|
||
public static FriendResponseDTO.CreateResultDTO toFriendPostResultDTO(Post post) { | ||
return FriendResponseDTO.CreateResultDTO.builder() | ||
.name(post.getWriter().getName()) | ||
.postId(post.getId()) | ||
.title(post.getTitle()) | ||
.content(post.getContent()) | ||
.createdAt(post.getCreatedDate()) | ||
.build(); | ||
} | ||
|
||
public static FriendResponseDTO.FriendPostListDTO toFriendPostListDTO(List<Post> posts) { | ||
List<FriendResponseDTO.CreateResultDTO> postDTOs = posts.stream() | ||
.map(post -> FriendResponseDTO.CreateResultDTO.builder() | ||
.name(post.getWriter().getName()) | ||
.postId(post.getId()) | ||
.title(post.getTitle()) | ||
.content(post.getContent()) | ||
.createdAt(post.getCreatedDate()) | ||
.build()) | ||
.collect(Collectors.toList()); | ||
return new FriendResponseDTO.FriendPostListDTO(postDTOs); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
package com.umc.dream.dto; | ||
|
||
import lombok.Getter; | ||
|
||
public class FriendRequestDTO { | ||
|
||
@Getter | ||
public static class CreateFriendRequestDTO { | ||
Long userId; // 유저 id | ||
String title; | ||
String content; | ||
} | ||
|
||
@Getter | ||
public static class GetAllProPostRequestDTO { | ||
Long userId; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
package com.umc.dream.dto; | ||
|
||
import lombok.AllArgsConstructor; | ||
import lombok.Builder; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
|
||
import java.time.LocalDateTime; | ||
import java.util.List; | ||
|
||
public class FriendResponseDTO { | ||
@Builder | ||
@Getter | ||
@NoArgsConstructor | ||
@AllArgsConstructor | ||
public static class CreateResultDTO { | ||
String name; // 유저 이름 | ||
Long postId; | ||
String title; | ||
String content; | ||
LocalDateTime createdAt; | ||
} | ||
|
||
@Builder | ||
@Getter | ||
@NoArgsConstructor | ||
@AllArgsConstructor | ||
public static class FriendPostListDTO { | ||
private List<FriendResponseDTO.CreateResultDTO> posts; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
package com.umc.dream.service; | ||
|
||
import com.umc.dream.apiPayload.code.status.ErrorStatus; | ||
import com.umc.dream.apiPayload.exception.GeneralException; | ||
import com.umc.dream.converter.FriendPostConverter; | ||
import com.umc.dream.domain.Post; | ||
import com.umc.dream.domain.User; | ||
import com.umc.dream.domain.enums.Type; | ||
import com.umc.dream.dto.FriendRequestDTO; | ||
import com.umc.dream.repository.PostRepository; | ||
import com.umc.dream.repository.UserRepository; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.stereotype.Service; | ||
|
||
import java.util.List; | ||
|
||
@Service | ||
@RequiredArgsConstructor | ||
public class FriendService { | ||
|
||
private final UserRepository userRepository; | ||
private final PostRepository postRepository; | ||
|
||
public Post createFriendPost(FriendRequestDTO.CreateFriendRequestDTO request) { | ||
User writer = userRepository.findById(request.getUserId()) | ||
.orElseThrow(() -> new GeneralException(ErrorStatus._BAD_REQUEST)); | ||
Post post = FriendPostConverter.toFriendPost(request, writer); | ||
return postRepository.save(post); | ||
} | ||
|
||
public List<Post> getAllFriendPostList(Long userId) { | ||
return postRepository.findAllByWriterIdAndType(userId, Type.FRIENDS); | ||
} | ||
|
||
} |