diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/bean/FaqSaveBean.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/bean/FaqSaveBean.java new file mode 100644 index 0000000..1cd00ad --- /dev/null +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/bean/FaqSaveBean.java @@ -0,0 +1,35 @@ +package HalfFifty.HalfFifty_BE.FAQ.bean; + +import HalfFifty.HalfFifty_BE.FAQ.bean.small.CreateFaqDAOBean; +import HalfFifty.HalfFifty_BE.FAQ.bean.small.SaveFaqDAOBean; +import HalfFifty.HalfFifty_BE.FAQ.domain.DTO.RequestFaqSaveDTO; +import HalfFifty.HalfFifty_BE.FAQ.domain.FaqDAO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.UUID; + +@Component +public class FaqSaveBean { + CreateFaqDAOBean createFaqDAOBean; + SaveFaqDAOBean saveFaqDAOBean; + + @Autowired + public FaqSaveBean(CreateFaqDAOBean createFaqDAOBean, SaveFaqDAOBean saveFaqDAOBean) { + this.createFaqDAOBean = createFaqDAOBean; + this.saveFaqDAOBean = saveFaqDAOBean; + } + + // FAQ 저장 + public UUID exec(RequestFaqSaveDTO requestFaqSaveDTO) { + // FAQ 객체 생성 + FaqDAO faqDAO = createFaqDAOBean.exec(requestFaqSaveDTO); + if(faqDAO == null) return null; + + // 생성한 객체 저장 + saveFaqDAOBean.exec(faqDAO); + + // 키값 반환 + return faqDAO.getFAQId(); + } +} diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/bean/small/CreateFaqDAOBean.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/bean/small/CreateFaqDAOBean.java new file mode 100644 index 0000000..2bfd805 --- /dev/null +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/bean/small/CreateFaqDAOBean.java @@ -0,0 +1,20 @@ +package HalfFifty.HalfFifty_BE.FAQ.bean.small; + +import HalfFifty.HalfFifty_BE.FAQ.domain.DTO.RequestFaqSaveDTO; +import HalfFifty.HalfFifty_BE.FAQ.domain.FaqDAO; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; + +@Component +public class CreateFaqDAOBean { + + // Faq 객체 생성 + public FaqDAO exec(RequestFaqSaveDTO requestFaqSaveDTO) { + return FaqDAO.builder() + .question(requestFaqSaveDTO.getQuestion()) + .answer(requestFaqSaveDTO.getAnswer()) + .createdAt(LocalDateTime.now()) + .build(); + } +} diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/bean/small/SaveFaqDAOBean.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/bean/small/SaveFaqDAOBean.java new file mode 100644 index 0000000..7d56db9 --- /dev/null +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/bean/small/SaveFaqDAOBean.java @@ -0,0 +1,21 @@ +package HalfFifty.HalfFifty_BE.FAQ.bean.small; + +import HalfFifty.HalfFifty_BE.FAQ.domain.FaqDAO; +import HalfFifty.HalfFifty_BE.FAQ.repository.FaqRepositoryJPA; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class SaveFaqDAOBean { + FaqRepositoryJPA faqRepositoryJPA; + + @Autowired + public SaveFaqDAOBean(FaqRepositoryJPA faqRepositoryJPA) { + this.faqRepositoryJPA = faqRepositoryJPA; + } + + // Faq 객체 저장 + public void exec(FaqDAO faqDAO) { + faqRepositoryJPA.save(faqDAO); + } +} diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/controller/FaqController.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/controller/FaqController.java new file mode 100644 index 0000000..2143cfb --- /dev/null +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/controller/FaqController.java @@ -0,0 +1,43 @@ +package HalfFifty.HalfFifty_BE.FAQ.controller; + +import HalfFifty.HalfFifty_BE.FAQ.domain.DTO.RequestFaqSaveDTO; +import HalfFifty.HalfFifty_BE.FAQ.service.FaqService; +import HalfFifty.HalfFifty_BE.keyword.domain.DTO.ResponseKeywordGetDTO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +@RestController +@CrossOrigin("*") +@RequestMapping("/FAQ") +public class FaqController { + FaqService faqService; + + @Autowired + public FaqController(FaqService faqService) { + this.faqService = faqService; + } + + @PostMapping + public ResponseEntity> saveFaq(@RequestBody RequestFaqSaveDTO requestFaqSaveDTO) { + // Faq 저장 service + UUID FaqId = faqService.saveFaq(requestFaqSaveDTO); + + // Faq 저장 여부 + boolean success = FaqId != null; + + // Map을 통해 메시지와 list 값 json 데이터로 변환 + Map requestMap = new HashMap<>(); + requestMap.put("success", success); + requestMap.put("message", success ? "FAQ 저장 성공" : "FAQ 저장 실패"); + requestMap.put("FAQId", FaqId); + + // status, body 설정해서 응답 리턴 + return ResponseEntity.status(HttpStatus.OK).body(requestMap); + } +} diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/domain/DTO/RequestFaqSaveDTO.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/domain/DTO/RequestFaqSaveDTO.java new file mode 100644 index 0000000..dd5a41b --- /dev/null +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/domain/DTO/RequestFaqSaveDTO.java @@ -0,0 +1,9 @@ +package HalfFifty.HalfFifty_BE.FAQ.domain.DTO; + +import lombok.Data; + +@Data +public class RequestFaqSaveDTO { + String question; + String answer; +} diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/domain/FaqDAO.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/domain/FaqDAO.java new file mode 100644 index 0000000..76270ce --- /dev/null +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/domain/FaqDAO.java @@ -0,0 +1,25 @@ +package HalfFifty.HalfFifty_BE.FAQ.domain; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import lombok.*; + +import java.time.LocalDateTime; +import java.util.UUID; + +@Entity +@NoArgsConstructor +@AllArgsConstructor +@Getter +@Setter +@Builder +public class FaqDAO { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + UUID FAQId; + String question; + String answer; + LocalDateTime createdAt; +} diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/repository/FaqRepositoryJPA.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/repository/FaqRepositoryJPA.java new file mode 100644 index 0000000..d5f2ed5 --- /dev/null +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/repository/FaqRepositoryJPA.java @@ -0,0 +1,11 @@ +package HalfFifty.HalfFifty_BE.FAQ.repository; + +import HalfFifty.HalfFifty_BE.FAQ.domain.FaqDAO; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.UUID; + +@Repository +public interface FaqRepositoryJPA extends JpaRepository { +} diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/service/FaqService.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/service/FaqService.java new file mode 100644 index 0000000..1c1faa4 --- /dev/null +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/service/FaqService.java @@ -0,0 +1,23 @@ +package HalfFifty.HalfFifty_BE.FAQ.service; + +import HalfFifty.HalfFifty_BE.FAQ.bean.FaqSaveBean; +import HalfFifty.HalfFifty_BE.FAQ.domain.DTO.RequestFaqSaveDTO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.UUID; + +@Service +public class FaqService { + FaqSaveBean faqSaveBean; + + @Autowired + public FaqService(FaqSaveBean faqSaveBean) { + this.faqSaveBean = faqSaveBean; + } + + // Faq 저장 (관리자용) + public UUID saveFaq(RequestFaqSaveDTO requestFaqSaveDTO) { + return faqSaveBean.exec(requestFaqSaveDTO); + } +}