From 8ff94c33936114b0b3c73f62bb1cfd505d7f46d1 Mon Sep 17 00:00:00 2001 From: bikooju Date: Sat, 11 Jan 2025 21:13:41 +0900 Subject: [PATCH] =?UTF-8?q?=EC=84=B8=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springboot/config/SwaggerConfig.java | 4 +- .../banban/springboot/domain/entity/News.java | 45 +++++++++++++++++++ .../banban/springboot/domain/entity/User.java | 22 +++++++++ .../domain/enums/NewsCategories.java | 5 +++ .../springboot/domain/enums/UserEnums.java | 4 -- .../springboot/repository/NewsRepository.java | 14 ++++++ .../springboot/repository/UserRepository.java | 10 ++++- .../springboot/service/NewsService.java | 12 +++++ .../web/dto/request/NewsRequestDTO.java | 34 ++++++++++++++ .../web/dto/request/UserRequestDTO.java | 14 ++++++ .../web/dto/response/NewsResponseDTO.java | 19 ++++++++ .../web/dto/response/UserResponseDTO.java | 11 +++++ 12 files changed, 187 insertions(+), 7 deletions(-) create mode 100644 src/main/java/banban/springboot/domain/entity/News.java create mode 100644 src/main/java/banban/springboot/domain/enums/NewsCategories.java delete mode 100644 src/main/java/banban/springboot/domain/enums/UserEnums.java create mode 100644 src/main/java/banban/springboot/repository/NewsRepository.java create mode 100644 src/main/java/banban/springboot/service/NewsService.java create mode 100644 src/main/java/banban/springboot/web/dto/request/NewsRequestDTO.java create mode 100644 src/main/java/banban/springboot/web/dto/response/NewsResponseDTO.java diff --git a/src/main/java/banban/springboot/config/SwaggerConfig.java b/src/main/java/banban/springboot/config/SwaggerConfig.java index 2e633e3..c520572 100644 --- a/src/main/java/banban/springboot/config/SwaggerConfig.java +++ b/src/main/java/banban/springboot/config/SwaggerConfig.java @@ -12,8 +12,8 @@ public class SwaggerConfig { @Bean public OpenAPI UMCstudyAPI() { Info info = new Info() - .title("UMC Server WorkBook API") - .description("UMC Server WorkBook API 명세서") + .title("반반 서버 API") + .description("반반 서버 API 명세서") .version("1.0.0"); String jwtSchemeName = "JWT TOKEN"; diff --git a/src/main/java/banban/springboot/domain/entity/News.java b/src/main/java/banban/springboot/domain/entity/News.java new file mode 100644 index 0000000..f6324ad --- /dev/null +++ b/src/main/java/banban/springboot/domain/entity/News.java @@ -0,0 +1,45 @@ +package banban.springboot.domain.entity; + +import banban.springboot.domain.enums.NewsCategories; +import jakarta.persistence.*; +import lombok.*; +import org.hibernate.annotations.ColumnDefault; + +import java.time.LocalDateTime; +import java.util.List; + +@Entity +@Getter +@Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class News { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false, length = 30) + private String headline;; + + @Column(nullable = false, length = 1000) + private String content; + + @Enumerated(EnumType.STRING) + private NewsCategories newsCategories; //긍정,부정 + + @ColumnDefault("0") + @Column(name = "like_count", nullable = false) + private Integer likes; + + @ElementCollection + private List thumbnail_URL; + + @Column(nullable = false) + private boolean isBreakingNews; + + @Column(nullable = false) + private LocalDateTime createdAt = LocalDateTime.now(); + +} diff --git a/src/main/java/banban/springboot/domain/entity/User.java b/src/main/java/banban/springboot/domain/entity/User.java index 131e1b2..f65cf2d 100644 --- a/src/main/java/banban/springboot/domain/entity/User.java +++ b/src/main/java/banban/springboot/domain/entity/User.java @@ -1,4 +1,26 @@ package banban.springboot.domain.entity; +import jakarta.persistence.*; +import lombok.*; + +import java.util.ArrayList; +import java.util.List; + +@Entity +@Getter +@Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor public class User { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false, length = 20) + private String userid; + + @OneToMany(mappedBy = "user", cascade = CascadeType.ALL) + private List NewsList = new ArrayList<>(); } diff --git a/src/main/java/banban/springboot/domain/enums/NewsCategories.java b/src/main/java/banban/springboot/domain/enums/NewsCategories.java new file mode 100644 index 0000000..4b4db6d --- /dev/null +++ b/src/main/java/banban/springboot/domain/enums/NewsCategories.java @@ -0,0 +1,5 @@ +package banban.springboot.domain.enums; + +public enum NewsCategories { + POSITIVE, NEGATIVE +} diff --git a/src/main/java/banban/springboot/domain/enums/UserEnums.java b/src/main/java/banban/springboot/domain/enums/UserEnums.java deleted file mode 100644 index 87a22f3..0000000 --- a/src/main/java/banban/springboot/domain/enums/UserEnums.java +++ /dev/null @@ -1,4 +0,0 @@ -package banban.springboot.domain.enums; - -public class UserEnums { -} diff --git a/src/main/java/banban/springboot/repository/NewsRepository.java b/src/main/java/banban/springboot/repository/NewsRepository.java new file mode 100644 index 0000000..d55d98a --- /dev/null +++ b/src/main/java/banban/springboot/repository/NewsRepository.java @@ -0,0 +1,14 @@ +package banban.springboot.repository; + +import banban.springboot.domain.entity.News; +import banban.springboot.domain.enums.NewsCategories; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface NewsRepository extends JpaRepository { + List findByIsBreakingNewsTrue(); // 속보 뉴스 조회 + List findByNewsCategories(NewsCategories newsCategories); // 긍정/부정 뉴스 조회 +} diff --git a/src/main/java/banban/springboot/repository/UserRepository.java b/src/main/java/banban/springboot/repository/UserRepository.java index 7546b39..ea4020f 100644 --- a/src/main/java/banban/springboot/repository/UserRepository.java +++ b/src/main/java/banban/springboot/repository/UserRepository.java @@ -1,4 +1,12 @@ package banban.springboot.repository; -public interface UserRepository { +import org.apache.catalina.User; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface UserRepository extends JpaRepository { + List findByUsername(String userId); } diff --git a/src/main/java/banban/springboot/service/NewsService.java b/src/main/java/banban/springboot/service/NewsService.java new file mode 100644 index 0000000..7311439 --- /dev/null +++ b/src/main/java/banban/springboot/service/NewsService.java @@ -0,0 +1,12 @@ +package banban.springboot.service; + +import banban.springboot.repository.NewsRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class NewsService { + + @Autowired + private NewsRepository newsRepository; +} diff --git a/src/main/java/banban/springboot/web/dto/request/NewsRequestDTO.java b/src/main/java/banban/springboot/web/dto/request/NewsRequestDTO.java new file mode 100644 index 0000000..dc90431 --- /dev/null +++ b/src/main/java/banban/springboot/web/dto/request/NewsRequestDTO.java @@ -0,0 +1,34 @@ +package banban.springboot.web.dto.request; + +import banban.springboot.domain.enums.NewsCategories; +import jakarta.persistence.GeneratedValue; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Getter; +import lombok.Setter; +import org.springframework.web.multipart.MultipartFile; + +import java.time.LocalDateTime; +import java.util.List; + +@Getter +@Setter +public class NewsRequestDTO { + @NotBlank + @Size(max = 30, message = "뉴스 헤드라인은 최대 30자입니다.") + private String headline; + + @NotBlank + @Size(max = 1000, message = "뉴스 본문은 최대 1000자입니다.") + private String content; + + private List images; // 사용자가 업로드한 이미지 + + private boolean isBreakingNews; // 속보 여부 + + @NotNull(message = "긍정인지 부정인지 작성해주세요") + private NewsCategories newsCategories; + + private LocalDateTime createdAt = LocalDateTime.now(); +} diff --git a/src/main/java/banban/springboot/web/dto/request/UserRequestDTO.java b/src/main/java/banban/springboot/web/dto/request/UserRequestDTO.java index a6c16cf..5d1caca 100644 --- a/src/main/java/banban/springboot/web/dto/request/UserRequestDTO.java +++ b/src/main/java/banban/springboot/web/dto/request/UserRequestDTO.java @@ -1,4 +1,18 @@ package banban.springboot.web.dto.request; +import jakarta.validation.constraints.Max; +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Builder public class UserRequestDTO { + private String id; + @Max(20) + private String userId; + + @Max(20) + private String password; } diff --git a/src/main/java/banban/springboot/web/dto/response/NewsResponseDTO.java b/src/main/java/banban/springboot/web/dto/response/NewsResponseDTO.java new file mode 100644 index 0000000..0c36da9 --- /dev/null +++ b/src/main/java/banban/springboot/web/dto/response/NewsResponseDTO.java @@ -0,0 +1,19 @@ +package banban.springboot.web.dto.response; + +import lombok.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@Builder +@AllArgsConstructor +public class NewsResponseDTO { + private Long id; + private String headline; + private String content; + private List images; + private boolean isBreakingNews; +} diff --git a/src/main/java/banban/springboot/web/dto/response/UserResponseDTO.java b/src/main/java/banban/springboot/web/dto/response/UserResponseDTO.java index efb9a79..a62da0c 100644 --- a/src/main/java/banban/springboot/web/dto/response/UserResponseDTO.java +++ b/src/main/java/banban/springboot/web/dto/response/UserResponseDTO.java @@ -1,4 +1,15 @@ package banban.springboot.web.dto.response; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Builder +@Getter +@NoArgsConstructor +@AllArgsConstructor public class UserResponseDTO { + private String userId; + private String password; }