diff --git a/pav-server/src/main/java/com/palnet/biz/api/cns/qna/controller/CnsQnaController.java b/pav-server/src/main/java/com/palnet/biz/api/cns/qna/controller/CnsQnaController.java index a5afd614..525a3ae3 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/cns/qna/controller/CnsQnaController.java +++ b/pav-server/src/main/java/com/palnet/biz/api/cns/qna/controller/CnsQnaController.java @@ -36,7 +36,6 @@ public class CnsQnaController { @Tag(name = "QNA", description = "QNA 관련 API") @ApiOperation(value = "QnA 등록[답변추가]") public ResponseEntity insertQna(QnaInsertRQModel rq){ - log.warn("CnsFaqController - insertQna()"); boolean success = cnsQnaService.insertQna(rq); @@ -48,8 +47,7 @@ public class CnsQnaController { @GetMapping("/select") @Tag(name = "QNA", description = "QNA 관련 API") @ApiOperation(value = "QnA 리스트 조회") - public ResponseEntity> selectQna(QnaSelectListRQ rq){ - log.warn("CnsFaqController - selectQna()"); + public ResponseEntity> selectQna(QnaSelectListRQ rq){ List result = cnsQnaService.selectQnaList(rq); @@ -58,9 +56,7 @@ public class CnsQnaController { @GetMapping("/{qnaSno}/detail") - public ResponseEntity detailQna(@PathVariable int qnaSno){ - log.warn("CnsFaqController - selectQna()"); - log.warn("rq -> {}", qnaSno); + public ResponseEntity> detailQna(@PathVariable int qnaSno){ List reulst = cnsQnaService.getQnaDetail(qnaSno); @@ -68,12 +64,13 @@ public class CnsQnaController { } @PostMapping("/{qnaSno}/update") - public ResponseEntity updateQna(@RequestBody QnaInsertRQModel rq){ + public ResponseEntity updateQna(@PathVariable int qnaSno,@RequestBody QnaInsertRQModel rq){ log.warn("CnsFaqController - updateQna()"); - log.warn("rq -> {}", rq); + log.warn("qnaSno -> {} rq -> {}", qnaSno, rq); + boolean result = cnsQnaService.updateQna(qnaSno, rq); - return ResponseEntity.ok().body(null); + return ResponseEntity.ok().body(result); } @GetMapping("/{qnaSno}/delete") diff --git a/pav-server/src/main/java/com/palnet/biz/api/cns/qna/model/QnaInsertRQModel.java b/pav-server/src/main/java/com/palnet/biz/api/cns/qna/model/QnaInsertRQModel.java index 78f5d214..a07315d0 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/cns/qna/model/QnaInsertRQModel.java +++ b/pav-server/src/main/java/com/palnet/biz/api/cns/qna/model/QnaInsertRQModel.java @@ -9,6 +9,8 @@ import lombok.Data; @Data public class QnaInsertRQModel { + private Integer qnaSno; + private Integer targetSno; // 상위 Qna 번호 private String category; diff --git a/pav-server/src/main/java/com/palnet/biz/api/cns/qna/service/CnsQnaService.java b/pav-server/src/main/java/com/palnet/biz/api/cns/qna/service/CnsQnaService.java index be99fa7d..398743b1 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/cns/qna/service/CnsQnaService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/cns/qna/service/CnsQnaService.java @@ -7,6 +7,7 @@ import java.util.List; import javax.transaction.Transactional; import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.multipart.MultipartFile; import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil; @@ -20,6 +21,8 @@ import com.palnet.biz.jpa.entity.ComFileBas; import com.palnet.biz.jpa.repository.cns.CnsQnaBasRepository; import com.palnet.biz.jpa.repository.cns.CnsQnaQueryRepository; import com.palnet.biz.jpa.repository.com.ComFileBasRepository; +import com.palnet.comn.code.ErrorCode; +import com.palnet.comn.exception.CustomException; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -40,13 +43,39 @@ public class CnsQnaService { private final JwtTokenUtil jwtTokenUtil; + + + /** + * Qna 업데이트하기 + * @param qnaSno + * @param rq + * @return + */ + @Transactional + public boolean updateQna(int qnaSno, QnaInsertRQModel rq){ + + CnsQnaBas entity = cnsQnaBasRepository.findById(qnaSno).orElse(null); + if(entity == null) throw new CustomException(ErrorCode.DATA_NOTFIND); + + if(rq.getCategory() != null) entity.setCategory(rq.getCategory()); + if(rq.getContent() != null) entity.setContent(rq.getContent()); + if(rq.getTitle() != null) entity.setTitle(rq.getTitle()); + + cnsQnaBasRepository.save(entity); + + return true; + } + /** * Qna 상세불러오기 * @param qnaSno * @return */ + @Transactional // 조회수 증가하기떄문 public List getQnaDetail(int qnaSno){ + cnsQnaBasRepository.pulsViewCount(qnaSno); + QnaBasModel qnaBasModel = cnsQnaQueryRepository.getQnaDetail(qnaSno).get(0); List files = null; if(qnaBasModel.getFileGroupNo() != 0) files = comFileBasRepository.findByFileGroupNo(qnaBasModel.getFileGroupNo()); @@ -89,7 +118,7 @@ public class CnsQnaService { result.add(detailNode); targetSno = cnsQnaBas.getQnaSno(); - } + } return result; } diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/repository/cns/CnsQnaBasRepository.java b/pav-server/src/main/java/com/palnet/biz/jpa/repository/cns/CnsQnaBasRepository.java index 42b104d5..f596ac05 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/repository/cns/CnsQnaBasRepository.java +++ b/pav-server/src/main/java/com/palnet/biz/jpa/repository/cns/CnsQnaBasRepository.java @@ -1,10 +1,9 @@ package com.palnet.biz.jpa.repository.cns; -import java.util.List; - -import javax.persistence.Id; - import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import com.palnet.biz.jpa.entity.CnsQnaBas; @@ -13,4 +12,8 @@ import com.palnet.biz.jpa.entity.CnsQnaBas; public interface CnsQnaBasRepository extends JpaRepository{ CnsQnaBas findFirstByTargetSno(int targetSno); + + @Modifying + @Query("UPDATE CnsQnaBas q SET q.viewCnt = q.viewCnt + 1 WHERE q.qnaSno = :qnaSno") + void pulsViewCount(@Param("qnaSno")int qnaSno); }