diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/bean/AqUserSaveBean.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/bean/AqUserSaveBean.java new file mode 100644 index 0000000..33ce55f --- /dev/null +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/bean/AqUserSaveBean.java @@ -0,0 +1,35 @@ +package HalfFifty.HalfFifty_BE.FAQ.bean; + +import HalfFifty.HalfFifty_BE.FAQ.bean.small.CreateAqUserDAOBean; +import HalfFifty.HalfFifty_BE.FAQ.bean.small.SaveAqUserDAOBean; +import HalfFifty.HalfFifty_BE.FAQ.domain.AqDAO; +import HalfFifty.HalfFifty_BE.FAQ.domain.DTO.RequestAqUserSaveDTO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.UUID; + +@Component +public class AqUserSaveBean { + CreateAqUserDAOBean createAqUserDAOBean; + SaveAqUserDAOBean saveAqUserDAOBean; + + @Autowired + public AqUserSaveBean(CreateAqUserDAOBean createAqUserDAOBean, SaveAqUserDAOBean saveAqUserDAOBean) { + this.createAqUserDAOBean = createAqUserDAOBean; + this.saveAqUserDAOBean = saveAqUserDAOBean; + } + + // AQ 등록 + public UUID exec(RequestAqUserSaveDTO requestAqUserSaveDTO) { + // AQ 객체 생성 + AqDAO aqDAO = createAqUserDAOBean.exec(requestAqUserSaveDTO); + if(aqDAO == null) return null; + + // 생성한 객체 저장 + saveAqUserDAOBean.exec(aqDAO); + + // 키값 반환 + return aqDAO.getAqId(); + } +} diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/bean/small/CreateAqUserDAOBean.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/bean/small/CreateAqUserDAOBean.java new file mode 100644 index 0000000..7e21162 --- /dev/null +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/bean/small/CreateAqUserDAOBean.java @@ -0,0 +1,21 @@ +package HalfFifty.HalfFifty_BE.FAQ.bean.small; + +import HalfFifty.HalfFifty_BE.FAQ.domain.AqDAO; +import HalfFifty.HalfFifty_BE.FAQ.domain.DTO.RequestAqUserSaveDTO; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; + +@Component +public class CreateAqUserDAOBean { + + // AQ 유저 객체 생성 + public AqDAO exec(RequestAqUserSaveDTO requestAqUserSaveDTO) { + return AqDAO.builder() + .userId(requestAqUserSaveDTO.getUserId()) + .question(requestAqUserSaveDTO.getQuestion()) + .questionCreatedAt(LocalDateTime.now()) + .isAnswer(Boolean.FALSE) + .build(); + } +} diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/bean/small/SaveAqUserDAOBean.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/bean/small/SaveAqUserDAOBean.java new file mode 100644 index 0000000..e26af00 --- /dev/null +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/bean/small/SaveAqUserDAOBean.java @@ -0,0 +1,21 @@ +package HalfFifty.HalfFifty_BE.FAQ.bean.small; + +import HalfFifty.HalfFifty_BE.FAQ.domain.AqDAO; +import HalfFifty.HalfFifty_BE.FAQ.repository.AqRepositoryJPA; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class SaveAqUserDAOBean { + AqRepositoryJPA aqRepositoryJPA; + + @Autowired + public SaveAqUserDAOBean(AqRepositoryJPA aqRepositoryJPA) { + this.aqRepositoryJPA = aqRepositoryJPA; + } + + // AQ 객체 저장 + public void exec(AqDAO aqDAO) { + aqRepositoryJPA.save(aqDAO); + } +} diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/controller/AqController.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/controller/AqController.java new file mode 100644 index 0000000..64dfca9 --- /dev/null +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/controller/AqController.java @@ -0,0 +1,42 @@ +package HalfFifty.HalfFifty_BE.FAQ.controller; + +import HalfFifty.HalfFifty_BE.FAQ.domain.DTO.RequestAqUserSaveDTO; +import HalfFifty.HalfFifty_BE.FAQ.service.AqService; +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("/AQ") +public class AqController { + AqService aqService; + + @Autowired + public AqController(AqService aqService) { + this.aqService = aqService; + } + + @PostMapping + public ResponseEntity> saveUserAq(@RequestBody RequestAqUserSaveDTO requestAqUserSaveDTO) { + // AQ 유저 등록 service + UUID AqId = aqService.saveUserAq(requestAqUserSaveDTO); + + // AQ 유저 등록 성공 여부 + Boolean success = AqId != null; + + // Map을 통해 메시지와 list 값 json 데이터로 변환 + Map requestMap = new HashMap<>(); + requestMap.put("success", success); + requestMap.put("message", success ? "AQ 유저 등록 성공" : "AQ 유저 등록 실패"); + requestMap.put("AQId", AqId); + + // status, body 값 설정해서 응답 리턴 + return ResponseEntity.status(HttpStatus.OK).body(requestMap); + } +} diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/domain/AqDAO.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/domain/AqDAO.java new file mode 100644 index 0000000..b582a82 --- /dev/null +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/domain/AqDAO.java @@ -0,0 +1,28 @@ +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 AqDAO { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + UUID aqId; + UUID userId; + String question; + String answer; + Boolean isAnswer; + LocalDateTime questionCreatedAt; + LocalDateTime answerCreatedAt; +} diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/domain/DTO/RequestAqUserSaveDTO.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/domain/DTO/RequestAqUserSaveDTO.java new file mode 100644 index 0000000..4f5cd83 --- /dev/null +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/domain/DTO/RequestAqUserSaveDTO.java @@ -0,0 +1,11 @@ +package HalfFifty.HalfFifty_BE.FAQ.domain.DTO; + +import lombok.Data; + +import java.util.UUID; + +@Data +public class RequestAqUserSaveDTO { + UUID userId; + String question; +} diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/repository/AqRepositoryJPA.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/repository/AqRepositoryJPA.java new file mode 100644 index 0000000..d05800b --- /dev/null +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/repository/AqRepositoryJPA.java @@ -0,0 +1,11 @@ +package HalfFifty.HalfFifty_BE.FAQ.repository; + +import HalfFifty.HalfFifty_BE.FAQ.domain.AqDAO; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.UUID; + +@Repository +public interface AqRepositoryJPA extends JpaRepository { +} diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/service/AqService.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/service/AqService.java new file mode 100644 index 0000000..61574d5 --- /dev/null +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/FAQ/service/AqService.java @@ -0,0 +1,23 @@ +package HalfFifty.HalfFifty_BE.FAQ.service; + +import HalfFifty.HalfFifty_BE.FAQ.bean.AqUserSaveBean; +import HalfFifty.HalfFifty_BE.FAQ.domain.DTO.RequestAqUserSaveDTO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.UUID; + +@Service +public class AqService { + AqUserSaveBean aqUserSaveBean; + + @Autowired + public AqService(AqUserSaveBean aqUserSaveBean) { + this.aqUserSaveBean = aqUserSaveBean; + } + + // AQ 유저 등록 + public UUID saveUserAq(RequestAqUserSaveDTO requestAqUserSaveDTO) { + return aqUserSaveBean.exec(requestAqUserSaveDTO); + } +}