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 bd2ac20a..5716f7a9 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 @@ -83,11 +83,20 @@ public class CnsQnaController { return ResponseEntity.ok().body(result); } + /** + * Qna Files 개별삭제 TODO:: 파일 업데이트의 기획이 어떻게 되는지 모름 + * @param qnaSno + * @param fileSno + * @return + */ @GetMapping("/{qnaSno}/{fileSno}/delete") - public ResponseEntity deleteQnaFile(){ + @Tag(name = "QNA", description = "QNA 관련 API") + @ApiOperation(value = "QnA 파일 개별삭제") + public ResponseEntity deleteQnaFile(@PathVariable int qnaSno, @PathVariable int fileSno){ log.warn("CnsQnaController - deleteQnaFile()"); + boolean result = cnsQnaService.deleteQnaFile(fileSno); - return ResponseEntity.ok().body(null); + return ResponseEntity.ok().body(result); } } 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 2fbe9f6c..63d0b916 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 @@ -29,9 +29,7 @@ import lombok.extern.slf4j.Slf4j; @Service @Slf4j @RequiredArgsConstructor -public class CnsQnaService { - - private final ComnFileService comnFileService; +public class CnsQnaService { private final CnsQnaBasRepository cnsQnaBasRepository; @@ -39,9 +37,18 @@ public class CnsQnaService { private final ComFileBasRepository comFileBasRepository; + private final ComnFileService comnFileService; + private final JwtTokenUtil jwtTokenUtil; + public boolean deleteQnaFile(int fileSno){ + + comnFileService.deleteFile(fileSno); + + return true; + } + /** * Qna 삭제하기, file들도 모두 논리삭제함. * @param qnaSno @@ -50,10 +57,10 @@ public class CnsQnaService { @Transactional public boolean deleteQna(int qnaSno){ - CnsQnaBas entity = cnsQnaBasRepository.findFirstByQnaSnoAndTargetSno(qnaSno, 0); + CnsQnaBas entity = cnsQnaBasRepository.findByQnaSnoAndDelYnAndExpsrYn(qnaSno, "N", "Y"); if(entity == null) throw new CustomException(ErrorCode.DATA_NOTFIND); - boolean fileDelete = comnFileService.deleteFiles(entity.getFileGroupNo()); + if(entity.getFileGroupNo() != null) comnFileService.deleteFiles(entity.getFileGroupNo()); entity.setDelYn("Y"); @@ -65,7 +72,7 @@ public class CnsQnaService { // 대댓글 불러오기 while(true){ - CnsQnaBas cnsQnaBas = cnsQnaBasRepository.findFirstByTargetSno(targetSno); + CnsQnaBas cnsQnaBas = cnsQnaBasRepository.findFirstByTargetSnoAndDelYnAndExpsrYn(targetSno, "N", "Y"); if(cnsQnaBas == null) break; cnsQnaBas.setDelYn("Y"); @@ -77,7 +84,7 @@ public class CnsQnaService { deleteList = cnsQnaBasRepository.saveAll(deleteList); - return deleteList != null && fileDelete; + return true; } /** @@ -89,7 +96,7 @@ public class CnsQnaService { @Transactional public boolean updateQna(int qnaSno, QnaInsertRQModel rq){ - CnsQnaBas entity = cnsQnaBasRepository.findFirstByQnaSnoAndTargetSno(qnaSno, 0); + CnsQnaBas entity = cnsQnaBasRepository.findFirstByQnaSnoAndTargetSnoAndDelYnAndExpsrYn(qnaSno, 0, "N", "Y"); if(entity == null) throw new CustomException(ErrorCode.DATA_NOTFIND); List files = rq.getFiles(); @@ -114,9 +121,9 @@ public class CnsQnaService { cnsQnaBasRepository.pulsViewCount(qnaSno); - CnsQnaBas qnaBasModel = cnsQnaBasRepository.findFirstByQnaSnoAndTargetSno(qnaSno, 0); + CnsQnaBas qnaBasModel = cnsQnaBasRepository.findFirstByQnaSnoAndTargetSnoAndDelYnAndExpsrYn(qnaSno, 0, "N", "Y"); List files = null; - if(qnaBasModel.getFileGroupNo() != 0) files = comFileBasRepository.findByFileGroupNo(qnaBasModel.getFileGroupNo()); + if(qnaBasModel.getFileGroupNo() != 0) files = comFileBasRepository.findByFileGroupNoAndDelYn(qnaBasModel.getFileGroupNo(), "N"); QnaDetailRSModel node = new QnaDetailRSModel(); node.setQnaSno(qnaSno); @@ -139,7 +146,7 @@ public class CnsQnaService { // 대댓글 불러오기 while(true){ - CnsQnaBas cnsQnaBas = cnsQnaBasRepository.findFirstByTargetSno(targetSno); + CnsQnaBas cnsQnaBas = cnsQnaBasRepository.findFirstByTargetSnoAndDelYnAndExpsrYn(targetSno, "N", "Y"); if(cnsQnaBas == null) break; QnaDetailRSModel detailNode = new QnaDetailRSModel(); diff --git a/pav-server/src/main/java/com/palnet/biz/api/comn/file/service/ComnFileService.java b/pav-server/src/main/java/com/palnet/biz/api/comn/file/service/ComnFileService.java index 4dfd56ad..1b6da356 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/comn/file/service/ComnFileService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/comn/file/service/ComnFileService.java @@ -328,7 +328,7 @@ public class ComnFileService { @Transactional public boolean deleteFiles(int fileGroupNo){ - List files = comFileBasRepository.findByFileGroupNo(fileGroupNo); + List files = comFileBasRepository.findByFileGroupNoAndDelYn(fileGroupNo, "N"); String userId = jwtTokenUtil.getUserIdByToken(); @@ -345,4 +345,22 @@ public class ComnFileService { return true; } + @Transactional + public boolean deleteFile(int fileSno){ + + ComFileBas file = comFileBasRepository.findByFileSnoAndDelYn(fileSno, "N"); + + String userId = jwtTokenUtil.getUserIdByToken(); + + if (userId == null) userId = "NONE"; + + file.setDelYn("Y"); + file.setDelUserId(userId); + file.setDelDt(Instant.now()); + + comFileBasRepository.save(file); + + return true; + } + } diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/entity/CnsQnaBas.java b/pav-server/src/main/java/com/palnet/biz/jpa/entity/CnsQnaBas.java index 57ebd1fd..b9fdaafe 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/entity/CnsQnaBas.java +++ b/pav-server/src/main/java/com/palnet/biz/jpa/entity/CnsQnaBas.java @@ -34,7 +34,7 @@ public class CnsQnaBas implements Serializable { private String content; @Column(name="FILE_GROUP_NO") - private int fileGroupNo; + private Integer fileGroupNo; @Column(name="EXPSR_YN") private String expsrYn = "N"; 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 e166ae91..9c569152 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 @@ -11,9 +11,11 @@ import com.palnet.biz.jpa.entity.CnsQnaBas; @Repository public interface CnsQnaBasRepository extends JpaRepository{ - CnsQnaBas findFirstByTargetSno(int targetSno); + CnsQnaBas findFirstByTargetSnoAndDelYnAndExpsrYn(int targetSno, String delYn, String expsrYn); - CnsQnaBas findFirstByQnaSnoAndTargetSno(int qnaSno, int targetSno); + CnsQnaBas findByQnaSnoAndDelYnAndExpsrYn(int qnaSno, String delYn, String expsrYn); + + CnsQnaBas findFirstByQnaSnoAndTargetSnoAndDelYnAndExpsrYn(int qnaSno, int targetSno, String delYn, String expsrYn); @Modifying @Query("UPDATE CnsQnaBas q SET q.viewCnt = q.viewCnt + 1 WHERE q.qnaSno = :qnaSno") diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/repository/com/ComFileBasRepository.java b/pav-server/src/main/java/com/palnet/biz/jpa/repository/com/ComFileBasRepository.java index 6cc4fb22..95a92c70 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/repository/com/ComFileBasRepository.java +++ b/pav-server/src/main/java/com/palnet/biz/jpa/repository/com/ComFileBasRepository.java @@ -14,6 +14,8 @@ public interface ComFileBasRepository extends JpaRepository ComFileBas findFirstByOrderByFileGroupNoDesc(); - List findByFileGroupNo(int fileGroupNo); + List findByFileGroupNoAndDelYn(int fileGroupNo, String delYn); + + ComFileBas findByFileSnoAndDelYn(int fileSno, String delYn); }