Browse Source

Qna 삭제 추가

pull/9/head
lkd9125 11 months ago
parent
commit
6e3e83d04e
  1. 18
      pav-server/src/main/java/com/palnet/biz/api/cns/qna/controller/CnsQnaController.java
  2. 47
      pav-server/src/main/java/com/palnet/biz/api/cns/qna/service/CnsQnaService.java
  3. 19
      pav-server/src/main/java/com/palnet/biz/api/comn/file/service/ComnFileService.java
  4. 2
      pav-server/src/main/java/com/palnet/biz/jpa/repository/cns/CnsQnaBasRepository.java
  5. 42
      pav-server/src/main/java/com/palnet/biz/jpa/repository/cns/CnsQnaQueryRepository.java

18
pav-server/src/main/java/com/palnet/biz/api/cns/qna/controller/CnsQnaController.java

@ -56,6 +56,8 @@ public class CnsQnaController {
@GetMapping("/{qnaSno}/detail")
@Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 상세보기")
public ResponseEntity<List<QnaDetailRSModel>> detailQna(@PathVariable int qnaSno){
List<QnaDetailRSModel> reulst = cnsQnaService.getQnaDetail(qnaSno);
@ -64,9 +66,9 @@ public class CnsQnaController {
}
@PostMapping("/{qnaSno}/update")
public ResponseEntity<Object> updateQna(@PathVariable int qnaSno,@RequestBody QnaInsertRQModel rq){
log.warn("CnsFaqController - updateQna()");
log.warn("qnaSno -> {} rq -> {}", qnaSno, rq);
@Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 업데이트")
public ResponseEntity<Boolean> updateQna(@PathVariable int qnaSno,@RequestBody QnaInsertRQModel rq){
boolean result = cnsQnaService.updateQna(qnaSno, rq);
@ -74,10 +76,14 @@ public class CnsQnaController {
}
@GetMapping("/{qnaSno}/delete")
public ResponseEntity<Object> deleteQna(@RequestBody QnaBasModel rq){
@Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 삭제하기")
public ResponseEntity<Boolean> deleteQna(@PathVariable int qnaSno){
log.warn("CnsFaqController - deleteQna()");
log.warn("rq -> {}", rq);
log.warn("rq -> {}", qnaSno);
return ResponseEntity.ok().body(null);
boolean result = cnsQnaService.deleteQna(qnaSno);
return ResponseEntity.ok().body(result);
}
}

47
pav-server/src/main/java/com/palnet/biz/api/cns/qna/service/CnsQnaService.java

@ -7,7 +7,6 @@ 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;
@ -43,10 +42,46 @@ public class CnsQnaService {
private final JwtTokenUtil jwtTokenUtil;
/**
* Qna 삭제하기, file들도 모두 논리삭제함.
* @param qnaSno
* @return
*/
@Transactional
public boolean deleteQna(int qnaSno){
CnsQnaBas entity = cnsQnaBasRepository.findFirstByQnaSnoAndTargetSno(qnaSno, 0);
if(entity == null) throw new CustomException(ErrorCode.DATA_NOTFIND);
boolean fileDelete = comnFileService.deleteFiles(entity.getFileGroupNo());
entity.setDelYn("Y");
List<CnsQnaBas> deleteList = new ArrayList<>();
deleteList.add(entity);
int targetSno = qnaSno;
// 대댓글 불러오기
while(true){
CnsQnaBas cnsQnaBas = cnsQnaBasRepository.findFirstByTargetSno(targetSno);
if(cnsQnaBas == null) break;
cnsQnaBas.setDelYn("Y");
deleteList.add(cnsQnaBas);
targetSno = cnsQnaBas.getQnaSno();
}
deleteList = cnsQnaBasRepository.saveAll(deleteList);
return deleteList != null && fileDelete;
}
/**
* Qna 업데이트하기
* Qna 업데이트하기 TODO :: File 업데이트 기능 아직 구현안함
* @param qnaSno
* @param rq
* @return
@ -54,7 +89,7 @@ public class CnsQnaService {
@Transactional
public boolean updateQna(int qnaSno, QnaInsertRQModel rq){
CnsQnaBas entity = cnsQnaBasRepository.findById(qnaSno).orElse(null);
CnsQnaBas entity = cnsQnaBasRepository.findFirstByQnaSnoAndTargetSno(qnaSno, 0);
if(entity == null) throw new CustomException(ErrorCode.DATA_NOTFIND);
if(rq.getCategory() != null) entity.setCategory(rq.getCategory());
@ -76,7 +111,7 @@ public class CnsQnaService {
cnsQnaBasRepository.pulsViewCount(qnaSno);
QnaBasModel qnaBasModel = cnsQnaQueryRepository.getQnaDetail(qnaSno).get(0);
CnsQnaBas qnaBasModel = cnsQnaBasRepository.findFirstByQnaSnoAndTargetSno(qnaSno, 0);
List<ComFileBas> files = null;
if(qnaBasModel.getFileGroupNo() != 0) files = comFileBasRepository.findByFileGroupNo(qnaBasModel.getFileGroupNo());
@ -93,11 +128,11 @@ public class CnsQnaService {
node.setUpdateDt(qnaBasModel.getUpdateDt());
node.setFiles(files);
int targetSno = qnaSno;
List<QnaDetailRSModel> result = new ArrayList<>();
result.add(node);
int targetSno = qnaSno;
// 대댓글 불러오기
while(true){

19
pav-server/src/main/java/com/palnet/biz/api/comn/file/service/ComnFileService.java

@ -327,5 +327,24 @@ public class ComnFileService {
return fileGroupNo;
}
@Transactional
public boolean deleteFiles(int fileGroupNo){
List<ComFileBas> files = comFileBasRepository.findByFileGroupNo(fileGroupNo);
String userId = jwtTokenUtil.getUserIdByToken();
if (userId == null) userId = "NONE";
for(ComFileBas file : files){
file.setDelYn("Y");
file.setDelUserId(userId);
file.setDelDt(Instant.now());
}
comFileBasRepository.saveAll(files);
return true;
}
}

2
pav-server/src/main/java/com/palnet/biz/jpa/repository/cns/CnsQnaBasRepository.java

@ -13,6 +13,8 @@ public interface CnsQnaBasRepository extends JpaRepository<CnsQnaBas, Integer>{
CnsQnaBas findFirstByTargetSno(int targetSno);
CnsQnaBas findFirstByQnaSnoAndTargetSno(int qnaSno, int targetSno);
@Modifying
@Query("UPDATE CnsQnaBas q SET q.viewCnt = q.viewCnt + 1 WHERE q.qnaSno = :qnaSno")
void pulsViewCount(@Param("qnaSno")int qnaSno);

42
pav-server/src/main/java/com/palnet/biz/jpa/repository/cns/CnsQnaQueryRepository.java

@ -66,46 +66,4 @@ public class CnsQnaQueryRepository {
return r;
}
/**
* 상세보기 검색, target번호가 있으면 안됨
* @param qnaSno
* @return
*/
public List<QnaBasModel> getQnaDetail(int qnaSno){
QCnsQnaBas qCnsQnaBas = QCnsQnaBas.cnsQnaBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(qCnsQnaBas.qnaSno.eq(qnaSno));
builder.and(qCnsQnaBas.targetSno.eq(0));
List<QnaBasModel> result = query.select(
Projections.bean(
QnaBasModel.class,
qCnsQnaBas.qnaSno,
qCnsQnaBas.targetSno,
qCnsQnaBas.category,
qCnsQnaBas.title,
qCnsQnaBas.content,
qCnsQnaBas.fileGroupNo,
qCnsQnaBas.viewCnt,
qCnsQnaBas.expsrYn,
qCnsQnaBas.delYn,
qCnsQnaBas.createUserId,
qCnsQnaBas.createDt,
qCnsQnaBas.updateUserId,
qCnsQnaBas.updateDt
))
.from(qCnsQnaBas)
.where(builder)
.fetch();
log.warn("result -> {}", result);
if(result == null || result.size() < 1) throw new CustomException(ErrorCode.NON_VALID_PARAMETER);
return result;
}
}

Loading…
Cancel
Save