Skip to content

Commit

Permalink
Merge branch 'develop' into Improve/정우진
Browse files Browse the repository at this point in the history
  • Loading branch information
woojin065 authored Mar 15, 2024
2 parents 357ee38 + 1261507 commit fa7366c
Show file tree
Hide file tree
Showing 18 changed files with 407 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.example.jsgamesbackendmain.Bean.ReportLogBean;

import com.example.jsgamesbackendmain.Bean.SmallBean.LogBean.LogGetByIdSmallBean;
import com.example.jsgamesbackendmain.Bean.SmallBean.ReportLogBean.ReportLogSaveSmallBean;
import com.example.jsgamesbackendmain.Bean.SmallBean.UserBean.UserGetByIdSmallBean;
import com.example.jsgamesbackendmain.Model.DAO.LogDAO;
import com.example.jsgamesbackendmain.Model.DAO.ReportLogDAO;
import com.example.jsgamesbackendmain.Model.DAO.UserDAO;
import com.example.jsgamesbackendmain.Model.DTO.ReportLog.Request.ReportLogRequestDTO;
import com.example.jsgamesbackendmain.Model.DTO.ReportLog.Response.ReportLogResponseDTO;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

@Component
@RequiredArgsConstructor
public class ReportLogSaveBean {
private final UserGetByIdSmallBean userGetByIdSmallBean;
private final LogGetByIdSmallBean logGetByIdSmallBean;
private final ReportLogSaveSmallBean reportLogSaveSmallBean;

public ReportLogResponseDTO exec(ReportLogRequestDTO request) {
// 사용자있는지 확인
UserDAO reporter = userGetByIdSmallBean.exec(request.getReporterId());
// 신고당한 로그가 있는지 확인
LogDAO reportedLog = logGetByIdSmallBean.exec(request.getReportedLogId());

// 신고 로그 저장
ReportLogDAO savedReportLog = reportLogSaveSmallBean.exec(reportedLog, reporter);
return ReportLogResponseDTO.of(savedReportLog);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.example.jsgamesbackendmain.Bean.ReportReviewBean;

import com.example.jsgamesbackendmain.Bean.SmallBean.ReportReviewBean.ReportReviewSaveSmallBean;
import com.example.jsgamesbackendmain.Bean.SmallBean.ReviewBean.ReviewGetByIdSmallBean;
import com.example.jsgamesbackendmain.Bean.SmallBean.UserBean.UserGetByIdSmallBean;
import com.example.jsgamesbackendmain.Model.DAO.ReportReviewDAO;
import com.example.jsgamesbackendmain.Model.DAO.ReviewDAO;
import com.example.jsgamesbackendmain.Model.DAO.UserDAO;
import com.example.jsgamesbackendmain.Model.DTO.ReportReview.Request.ReportReviewPostRequestDTO;
import com.example.jsgamesbackendmain.Model.DTO.ReportReview.Response.ReportReviewPostResponseDTO;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

@Component
@RequiredArgsConstructor
public class ReportReviewSaveBean {

private final UserGetByIdSmallBean userGetByIdSmallBean;
private final ReviewGetByIdSmallBean reviewGetByIdSmallBean;
private final ReportReviewSaveSmallBean reportReviewSaveSmallBean;

public ReportReviewPostResponseDTO exec(ReportReviewPostRequestDTO requestDTO) {
// 사용자있는지 확인
UserDAO reporter = userGetByIdSmallBean.exec(requestDTO.getReporterId());
// 신고당한 리뷰가 있는지 확인
ReviewDAO reportedReview = reviewGetByIdSmallBean.exec(requestDTO.getReportedReviewId());
// 신고 리뷰 저장
ReportReviewDAO savedReportReview = reportReviewSaveSmallBean.exec(reportedReview, reporter);
return ReportReviewPostResponseDTO.of(savedReportReview);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.example.jsgamesbackendmain.Bean.SmallBean.LogBean;

import com.example.jsgamesbackendmain.Model.DAO.LogDAO;
import com.example.jsgamesbackendmain.Repository.LogRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

import java.util.Optional;

@Component
@RequiredArgsConstructor
public class LogGetByIdSmallBean {
private final LogRepository logRepository;

public LogDAO exec(Long logId) {
Optional<LogDAO> logOpt = logRepository.findById(logId);
if (!logOpt.isPresent()) {
throw new RuntimeException("Log not found for this LogId :: " + logId);
} else {
return logOpt.get();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.example.jsgamesbackendmain.Bean.SmallBean.ReportLogBean;


import com.example.jsgamesbackendmain.Controller.ExceptionControll.InvalidException;
import com.example.jsgamesbackendmain.Model.DAO.LogDAO;
import com.example.jsgamesbackendmain.Model.DAO.ReportLogDAO;
import com.example.jsgamesbackendmain.Model.DAO.UserDAO;
import com.example.jsgamesbackendmain.Repository.ReportLogRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

import java.util.Optional;

@Component
@RequiredArgsConstructor
public class ReportLogSaveSmallBean {
private final ReportLogRepository reportLogRepository;

public ReportLogDAO exec(LogDAO reportedLog, UserDAO reporter) {
Optional<ReportLogDAO> reportLogOpt = reportLogRepository.findByReportedLogAndReporter(reportedLog, reporter);

if(reportLogOpt.isPresent()) {
throw new InvalidException("이미 신고한 기록 입니다.");
}

ReportLogDAO newReportLog = ReportLogDAO.builder()
.reporter(reporter)
.reportedLog(reportedLog)
.build();

return reportLogRepository.save(newReportLog);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.example.jsgamesbackendmain.Bean.SmallBean.ReportReviewBean;

import com.example.jsgamesbackendmain.Controller.ExceptionControll.InvalidException;
import com.example.jsgamesbackendmain.Model.DAO.ReportReviewDAO;
import com.example.jsgamesbackendmain.Model.DAO.ReviewDAO;
import com.example.jsgamesbackendmain.Model.DAO.UserDAO;
import com.example.jsgamesbackendmain.Repository.ReportReviewRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

import java.util.Optional;

@Component
@RequiredArgsConstructor
public class ReportReviewSaveSmallBean {
private final ReportReviewRepository reportReviewRepository;

public ReportReviewDAO exec(ReviewDAO review, UserDAO userDAO) {
Optional<ReportReviewDAO> reportReviewOpt =
reportReviewRepository.findByReportedReviewAndReporter(review, userDAO);

if (reportReviewOpt.isPresent()) {
throw new InvalidException("이미 신고한 리뷰입니다.");
}

ReportReviewDAO reportReview = ReportReviewDAO.builder()
.reporter(userDAO)
.reportedReview(review)
.build();

return reportReviewRepository.save(reportReview);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.example.jsgamesbackendmain.Controller;

import com.example.jsgamesbackendmain.Model.DTO.ReportLog.Request.ReportLogRequestDTO;
import com.example.jsgamesbackendmain.Model.DTO.ReportLog.Response.ReportLogResponseDTO;
import com.example.jsgamesbackendmain.Service.ReportLogService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

@RestController
@RequiredArgsConstructor
@RequestMapping("/report")
@CrossOrigin("*")
public class ReportLogController {
private final ReportLogService reportLogService;

@PostMapping("/log")
public ReportLogResponseDTO reportLog(
@RequestBody ReportLogRequestDTO request
) {
return reportLogService.reportLog(request);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.example.jsgamesbackendmain.Controller;

import com.example.jsgamesbackendmain.Model.DTO.ReportReview.Request.ReportReviewPostRequestDTO;
import com.example.jsgamesbackendmain.Model.DTO.ReportReview.Response.ReportReviewPostResponseDTO;
import com.example.jsgamesbackendmain.Service.ReportReviewService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

@RestController
@RequiredArgsConstructor
@RequestMapping("/report")
@CrossOrigin("*")
public class ReportReviewController {
private final ReportReviewService reportReviewService;

@PostMapping("/review")
public ReportReviewPostResponseDTO reportReview(
@RequestBody ReportReviewPostRequestDTO request
) {
return reportReviewService.reportReview(request);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.example.jsgamesbackendmain.Model.DAO;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.CreationTimestamp;

import javax.persistence.*;
import java.time.LocalDateTime;

@Entity
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Getter
@Table(name = "report_log")
public class ReportLogDAO {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long reportLogId;

// 신고한 유저
@OneToOne(fetch = FetchType.LAZY)
private UserDAO reporter;

// 신고당한 LogDAO
@OneToOne(fetch = FetchType.LAZY)
private LogDAO reportedLog;

@CreationTimestamp
@Column(updatable = false)
private LocalDateTime createdAt;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.example.jsgamesbackendmain.Model.DAO;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.CreationTimestamp;

import javax.persistence.*;
import java.time.LocalDateTime;

@Entity
@AllArgsConstructor
@Getter
@NoArgsConstructor
@Builder
@Table(name = "report_review")
public class ReportReviewDAO {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long reportReviewId;

// 신고당한 리뷰
@OneToOne(fetch = FetchType.LAZY)
private ReviewDAO reportedReview;

// 신고한 유저
@OneToOne(fetch = FetchType.LAZY)
private UserDAO reporter;

@CreationTimestamp
@Column(updatable = false)
private LocalDateTime createdAt;
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ public void setRefreshToken(RefreshTokenDTO refreshToken) {
this.refreshToken = refreshToken.getRefreshToken();
}

@Column(length = 512)
private String refreshToken;

@Builder.Default
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.example.jsgamesbackendmain.Model.DTO.ReportLog.Request;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
public class ReportLogRequestDTO {
private Long reportedLogId;
private String reporterId;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.example.jsgamesbackendmain.Model.DTO.ReportLog.Response;

import com.example.jsgamesbackendmain.Model.DAO.ReportLogDAO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Builder
@NoArgsConstructor
@AllArgsConstructor
@Getter
public class ReportLogResponseDTO {
private Long reportLogId;
private LocalDateTime createAt;

public static ReportLogResponseDTO of(ReportLogDAO reportLog){
return ReportLogResponseDTO.builder()
.reportLogId(reportLog.getReportLogId())
.createAt(reportLog.getCreatedAt())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.example.jsgamesbackendmain.Model.DTO.ReportReview.Request;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@AllArgsConstructor
@NoArgsConstructor
@Builder
@Getter
public class ReportReviewPostRequestDTO {
private Long reportedReviewId;
private String reporterId;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.example.jsgamesbackendmain.Model.DTO.ReportReview.Response;

import com.example.jsgamesbackendmain.Model.DAO.ReportReviewDAO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Builder
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class ReportReviewPostResponseDTO {
private Long reportReviewId;
private LocalDateTime createAt;

public static ReportReviewPostResponseDTO of(ReportReviewDAO reportReview){
return ReportReviewPostResponseDTO.builder()
.reportReviewId(reportReview.getReportReviewId())
.createAt(reportReview.getCreatedAt())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.example.jsgamesbackendmain.Repository;

import com.example.jsgamesbackendmain.Model.DAO.LogDAO;
import com.example.jsgamesbackendmain.Model.DAO.ReportLogDAO;
import com.example.jsgamesbackendmain.Model.DAO.UserDAO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.Optional;

@Repository
public interface ReportLogRepository extends JpaRepository<ReportLogDAO, Long> {

Optional<ReportLogDAO> findByReportedLogAndReporter(LogDAO log, UserDAO reporter);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.example.jsgamesbackendmain.Repository;

import com.example.jsgamesbackendmain.Model.DAO.ReportReviewDAO;
import com.example.jsgamesbackendmain.Model.DAO.ReviewDAO;
import com.example.jsgamesbackendmain.Model.DAO.UserDAO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.Optional;

@Repository
public interface ReportReviewRepository extends JpaRepository<ReportReviewDAO, Long> {

Optional<ReportReviewDAO> findByReportedReviewAndReporter(ReviewDAO reviewDAO, UserDAO userDAO);
}
Loading

0 comments on commit fa7366c

Please sign in to comment.