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
7 changes: 7 additions & 0 deletions src/main/java/com/example/be/repository/PostRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.example.be.repository;

import com.example.be.domain.Post;
import org.springframework.data.jpa.repository.JpaRepository;

public interface PostRepository extends JpaRepository<Post, Long> {
}
58 changes: 58 additions & 0 deletions src/main/java/com/example/be/service/PostServiceImpl.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package com.example.be.service;


import com.example.be.apiPayload.ApiResponse;
import com.example.be.apiPayload.code.status.ErrorStatus;
import com.example.be.apiPayload.exception.handler.UserHandler;
import com.example.be.domain.Post;
import com.example.be.domain.User;
import com.example.be.repository.PostRepository;
import com.example.be.repository.UserRepository;
import com.example.be.web.dto.CommonDTO;
import com.example.be.web.dto.PostDTO;
import com.example.be.web.dto.UserDTO;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.UUID;


@Service
@RequiredArgsConstructor
public class PostServiceImpl {
private final JwtUtilServiceImpl jwtUtilService;
private final UserRepository userRepository;
private final PostRepository postRepository;

public CommonDTO.IsSuccessDTO write(PostDTO.postRequestDTO request, HttpServletRequest req) {

String accessToken = jwtUtilService.extractTokenFromCookie(req, "accessToken");

// 토큰이 없는 경우 처리
if(accessToken == null) {
throw new UserHandler(ErrorStatus._NOT_FOUND_USER);
}

// 토큰에서 사용자 ID 추출
String userId = jwtUtilService.getUserIdFromToken(accessToken);

// 사용자 정보 조회
User user = userRepository.findByUserId(UUID.fromString(userId))
.orElseThrow(() -> new UserHandler(ErrorStatus._NOT_FOUND_USER));

Post post = Post.builder()
.title(request.getTitle())
.content(request.getContent())
.user(user)
.createDate(LocalDateTime.now())
.build();

postRepository.save(post);


return CommonDTO.IsSuccessDTO.builder().isSuccess(true).build();
}
}
2 changes: 2 additions & 0 deletions src/main/java/com/example/be/service/UserServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,8 @@ public UserDTO.UserResponseDto getUserInfo(String accessToken) {
.loginType(user.getProvider())
.build();
}


public CommonDTO.IsSuccessDTO logout(HttpServletResponse response, HttpServletRequest request) {
Cookie[] cookies = request.getCookies();

Expand Down
32 changes: 32 additions & 0 deletions src/main/java/com/example/be/web/controller/PostController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.example.be.web.controller;

import com.example.be.apiPayload.ApiResponse;
import com.example.be.apiPayload.code.status.ErrorStatus;
import com.example.be.apiPayload.exception.handler.UserHandler;
import com.example.be.domain.User;
import com.example.be.repository.UserRepository;
import com.example.be.service.JwtUtilServiceImpl;
import com.example.be.service.PostServiceImpl;
import com.example.be.web.dto.CommonDTO;
import com.example.be.web.dto.PostDTO;
import com.example.be.web.dto.UserDTO;
import io.swagger.v3.oas.annotations.Operation;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/post")
@RequiredArgsConstructor
public class PostController {

private final PostServiceImpl postService;

@PostMapping("/write")
@Operation(summary = "게시글 작성 API")
public ApiResponse<CommonDTO.IsSuccessDTO> write(@RequestBody PostDTO.postRequestDTO request, HttpServletRequest req) {

return ApiResponse.onSuccess(postService.write(request, req));
}

}
41 changes: 41 additions & 0 deletions src/main/java/com/example/be/web/dto/PostDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.example.be.web.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDate;
import java.util.Date;
import java.util.List;

public class PostDTO {
@Builder
@Getter
@NoArgsConstructor
@AllArgsConstructor
public static class postRequestDTO{
String title;
String content;
}

@Builder
@Getter
@NoArgsConstructor
@AllArgsConstructor
public static class postResponseDTO {
String title;
String content;
String user;
LocalDate date;
}

@Builder
@Getter
@NoArgsConstructor
@AllArgsConstructor
public static class postListResponseDTO{
List<postResponseDTO> postList;
}
}