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
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,5 @@ out/
.vscode/

### Database ###
/src/main/resources/application.yaml
/src/main/resources/application.yaml
src/main/java/com/example/koschool/global/ddl.sql
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/member")

public class MemberController {

private final MemberService memberService;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.example.koschool.domain.newsletter;

import com.example.koschool.domain.newsletter.dto.response.NewsletterListResponseDto;
import com.example.koschool.domain.newsletter.dto.response.NewsletterResponseDto;
import com.example.koschool.domain.newsletter.service.NewsletterService;
import com.example.koschool.global.ApiResponse;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/newsletter")
public class NewsletterController {

private final NewsletterService newsletterService;

@GetMapping("/list")
public ApiResponse<List<NewsletterListResponseDto>> getNewsletterList(@RequestParam("category") String category,
@RequestParam("date") LocalDate date) {
return ApiResponse.of(HttpStatus.OK, newsletterService.getNewsLetterList(category, date));
}

@GetMapping("/detail")
public ApiResponse<NewsletterResponseDto> getNewsletter(@RequestParam("newsletterId") String newsletterId) {
return ApiResponse.of(HttpStatus.OK, newsletterService.getNewsLetter(newsletterId));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.example.koschool.domain.newsletter.dto.response;

import lombok.Builder;
import lombok.Getter;

@Getter
public class NewsletterListResponseDto {

private Long newsletterId;
private String title;

@Builder
private NewsletterListResponseDto(Long newsletterId, String title) {
this.newsletterId = newsletterId;
this.title = title;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.example.koschool.domain.newsletter.dto.response;

import com.example.koschool.domain.newsletter.entity.Newsletter;
import java.util.Random;
import lombok.Builder;
import lombok.Getter;

@Getter
public class NewsletterResponseDto {
private String title;
private String summary;
private Integer likes;
private String stockCode;
private String link;

Random random = new Random();

@Builder
private NewsletterResponseDto(String title, String summary, Integer likes, String stockCode, String link) {
this.title = title;
this.summary = summary;
this.likes = random.nextInt(240)+11;
this.stockCode = stockCode;
this.link = link;
}

public static NewsletterResponseDto fromEntityToDto(Newsletter newsletter) {
return NewsletterResponseDto.builder()
.title(newsletter.getTitle())
.summary(newsletter.getSummary())
.likes(newsletter.getLikes())
.stockCode(newsletter.getStockCode())
.link(newsletter.getLink())
.build();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import jakarta.persistence.Id;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import java.time.LocalDate;
import java.util.List;
import lombok.Getter;

Expand All @@ -23,8 +24,8 @@ public class Newsletter {
*/
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "newsletter_id", unique = true)
private Long newsletterId;
@Column(name = "id", unique = true)
private Long id;

/**
* 제목
Expand Down Expand Up @@ -68,4 +69,10 @@ public class Newsletter {
@Column(name = "stock_code")
private String stockCode;

/**
* 날짜
*/
@Column(name = "date")
private LocalDate date;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.example.koschool.domain.newsletter.repository;

import com.example.koschool.domain.newsletter.dto.response.NewsletterListResponseDto;
import com.example.koschool.domain.newsletter.dto.response.NewsletterResponseDto;
import com.example.koschool.domain.newsletter.entity.Newsletter;
import java.time.LocalDate;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

@Repository
public interface NewsletterRepository extends JpaRepository<Newsletter, String> {
@Query("SELECT NEW com.example.koschool.domain.newsletter.dto.response.NewsletterListResponseDto(n.id, n.title)"
+ "FROM Newsletter n "
+ "WHERE n.category = :category AND n.date = :date")
List<NewsletterListResponseDto> findByCategoryAndDate(String category, LocalDate date);

@Query("SELECT NEW com.example.koschool.domain.newsletter.dto.response.NewsletterResponseDto(n.title, n.summary, n.likes, n.stockCode, n.link)"
+ "FROM Newsletter n "
+ "WHERE n.id = :newsletterId")
NewsletterResponseDto findNewsletterByNewsletterId(Long newsletterId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.example.koschool.domain.newsletter.service;

import com.example.koschool.domain.newsletter.dto.response.NewsletterListResponseDto;
import com.example.koschool.domain.newsletter.dto.response.NewsletterResponseDto;
import com.example.koschool.domain.newsletter.entity.Newsletter;
import com.example.koschool.domain.newsletter.repository.NewsletterRepository;
import com.example.koschool.global.exception.CustomException;
import com.example.koschool.global.exception.ErrorCode;
import java.time.LocalDate;
import java.util.List;
import java.util.Optional;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@RequiredArgsConstructor
@Service
@Transactional(readOnly = true)
public class NewsletterService {

private final NewsletterRepository newsletterRepository;

public List<NewsletterListResponseDto> getNewsLetterList(String category, LocalDate date) {
return newsletterRepository.findByCategoryAndDate(category, date);
}

public NewsletterResponseDto getNewsLetter(String newsletterId) {
System.out.println("asdfasdf");
Optional<Newsletter> newsletter = newsletterRepository.findById(newsletterId);
if(newsletter.isEmpty()){
throw new CustomException(ErrorCode.NEWSLETTER_NOT_FOUND);
}
return NewsletterResponseDto.fromEntityToDto(newsletter.get());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public class NewsletterLikes {
* 뉴스레터 고유 id
*/
@ManyToOne
@JoinColumn(referencedColumnName = "newsletter_id", name = "newsletter_id", nullable = false)
@JoinColumn(referencedColumnName = "id", name = "newsletter_id", nullable = false)
private Newsletter newsletter;

/**
Expand Down
12 changes: 12 additions & 0 deletions src/main/java/com/example/koschool/domain/quiz/QuizController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.example.koschool.domain.quiz;

import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/quiz")
public class QuizController {

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
public enum ErrorCode {

MEMBER_LOGINID_DUPLICATED("이미 존재하는 아이디입니다."),
MEMBER_NOT_FOUND("존재하지 않는 회원입니다.");
MEMBER_NOT_FOUND("존재하지 않는 회원입니다."),

NEWSLETTER_NOT_FOUND("존재하지 않는 뉴스레터입니다.");

private final String message;
}