|
|
@ -1,6 +1,7 @@ |
|
|
|
package com.palnet.biz.api.cns.qna.service; |
|
|
|
package com.palnet.biz.api.cns.qna.service; |
|
|
|
|
|
|
|
|
|
|
|
import java.time.Instant; |
|
|
|
import java.time.Instant; |
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.List; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
|
|
|
|
import javax.transaction.Transactional; |
|
|
|
import javax.transaction.Transactional; |
|
|
@ -10,12 +11,15 @@ import org.springframework.web.multipart.MultipartFile; |
|
|
|
|
|
|
|
|
|
|
|
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil; |
|
|
|
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil; |
|
|
|
import com.palnet.biz.api.cns.qna.model.QnaBasModel; |
|
|
|
import com.palnet.biz.api.cns.qna.model.QnaBasModel; |
|
|
|
|
|
|
|
import com.palnet.biz.api.cns.qna.model.QnaDetailRSModel; |
|
|
|
import com.palnet.biz.api.cns.qna.model.QnaInsertRQModel; |
|
|
|
import com.palnet.biz.api.cns.qna.model.QnaInsertRQModel; |
|
|
|
import com.palnet.biz.api.cns.qna.model.QnaSelectListRQ; |
|
|
|
import com.palnet.biz.api.cns.qna.model.QnaSelectListRQ; |
|
|
|
import com.palnet.biz.api.comn.file.service.ComnFileService; |
|
|
|
import com.palnet.biz.api.comn.file.service.ComnFileService; |
|
|
|
import com.palnet.biz.jpa.entity.CnsQnaBas; |
|
|
|
import com.palnet.biz.jpa.entity.CnsQnaBas; |
|
|
|
|
|
|
|
import com.palnet.biz.jpa.entity.ComFileBas; |
|
|
|
import com.palnet.biz.jpa.repository.cns.CnsQnaBasRepository; |
|
|
|
import com.palnet.biz.jpa.repository.cns.CnsQnaBasRepository; |
|
|
|
import com.palnet.biz.jpa.repository.cns.CnsQnaQueryRepository; |
|
|
|
import com.palnet.biz.jpa.repository.cns.CnsQnaQueryRepository; |
|
|
|
|
|
|
|
import com.palnet.biz.jpa.repository.com.ComFileBasRepository; |
|
|
|
|
|
|
|
|
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
@ -25,25 +29,80 @@ import lombok.extern.slf4j.Slf4j; |
|
|
|
@RequiredArgsConstructor |
|
|
|
@RequiredArgsConstructor |
|
|
|
public class CnsQnaService { |
|
|
|
public class CnsQnaService { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final ComnFileService comnFileService; |
|
|
|
private final ComnFileService comnFileService; |
|
|
|
|
|
|
|
|
|
|
|
private final CnsQnaBasRepository cnsQnaBasRepository; |
|
|
|
private final CnsQnaBasRepository cnsQnaBasRepository; |
|
|
|
|
|
|
|
|
|
|
|
private final CnsQnaQueryRepository cnsQnaQueryRepository; |
|
|
|
private final CnsQnaQueryRepository cnsQnaQueryRepository; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final ComFileBasRepository comFileBasRepository; |
|
|
|
|
|
|
|
|
|
|
|
private final JwtTokenUtil jwtTokenUtil; |
|
|
|
private final JwtTokenUtil jwtTokenUtil; |
|
|
|
|
|
|
|
|
|
|
|
public List<QnaBasModel> selectQnaList(QnaSelectListRQ rq){ |
|
|
|
|
|
|
|
log.warn("CnsQnaService - selectQnaList()"); |
|
|
|
|
|
|
|
log.warn("rq -> {}", rq); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<QnaBasModel> result = cnsQnaQueryRepository.getQnaList(rq.getCategory(), rq.getCategory()); |
|
|
|
/** |
|
|
|
|
|
|
|
* Qna 상세불러오기 |
|
|
|
|
|
|
|
* @param qnaSno |
|
|
|
|
|
|
|
* @return |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
public List<QnaDetailRSModel> getQnaDetail(int qnaSno){ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QnaBasModel qnaBasModel = cnsQnaQueryRepository.getQnaDetail(qnaSno).get(0); |
|
|
|
|
|
|
|
List<ComFileBas> files = null; |
|
|
|
|
|
|
|
if(qnaBasModel.getFileGroupNo() != 0) files = comFileBasRepository.findByFileGroupNo(qnaBasModel.getFileGroupNo()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QnaDetailRSModel node = new QnaDetailRSModel(); |
|
|
|
|
|
|
|
node.setQnaSno(qnaSno); |
|
|
|
|
|
|
|
node.setTargetSno(qnaBasModel.getTargetSno()); |
|
|
|
|
|
|
|
node.setCategory(qnaBasModel.getCategory()); |
|
|
|
|
|
|
|
node.setTitle(qnaBasModel.getTitle()); |
|
|
|
|
|
|
|
node.setContent(qnaBasModel.getContent()); |
|
|
|
|
|
|
|
node.setViewCnt(qnaBasModel.getViewCnt()); |
|
|
|
|
|
|
|
node.setCreateUserId(qnaBasModel.getCreateUserId()); |
|
|
|
|
|
|
|
node.setCreateDt(qnaBasModel.getCreateDt()); |
|
|
|
|
|
|
|
node.setUpdateUserId(qnaBasModel.getUpdateUserId()); |
|
|
|
|
|
|
|
node.setUpdateDt(qnaBasModel.getUpdateDt()); |
|
|
|
|
|
|
|
node.setFiles(files); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int targetSno = qnaSno; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<QnaDetailRSModel> result = new ArrayList<>(); |
|
|
|
|
|
|
|
result.add(node); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 대댓글 불러오기
|
|
|
|
|
|
|
|
while(true){ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CnsQnaBas cnsQnaBas = cnsQnaBasRepository.findFirstByTargetSno(targetSno); |
|
|
|
|
|
|
|
if(cnsQnaBas == null) break; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QnaDetailRSModel detailNode = new QnaDetailRSModel(); |
|
|
|
|
|
|
|
detailNode.setQnaSno(cnsQnaBas.getQnaSno()); |
|
|
|
|
|
|
|
detailNode.setTargetSno(cnsQnaBas.getTargetSno()); |
|
|
|
|
|
|
|
detailNode.setCategory(cnsQnaBas.getCategory()); |
|
|
|
|
|
|
|
detailNode.setTitle(cnsQnaBas.getTitle()); |
|
|
|
|
|
|
|
detailNode.setContent(cnsQnaBas.getContent()); |
|
|
|
|
|
|
|
detailNode.setCreateUserId(cnsQnaBas.getCreateUserId()); |
|
|
|
|
|
|
|
detailNode.setCreateDt(cnsQnaBas.getCreateDt()); |
|
|
|
|
|
|
|
detailNode.setUpdateUserId(cnsQnaBas.getUpdateUserId()); |
|
|
|
|
|
|
|
detailNode.setUpdateDt(cnsQnaBas.getUpdateDt()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
result.add(detailNode); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
targetSno = cnsQnaBas.getQnaSno(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return result; |
|
|
|
return result; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* Qna리스트 조회 |
|
|
|
|
|
|
|
* @param rq |
|
|
|
|
|
|
|
* @return |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
public List<QnaBasModel> selectQnaList(QnaSelectListRQ rq){ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return cnsQnaQueryRepository.getQnaList(rq.getCategory(), rq.getCategory()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* QnaInsert |
|
|
|
* QnaInsert |
|
|
@ -53,8 +112,9 @@ public class CnsQnaService { |
|
|
|
@Transactional |
|
|
|
@Transactional |
|
|
|
public boolean insertQna(QnaInsertRQModel rq){ |
|
|
|
public boolean insertQna(QnaInsertRQModel rq){ |
|
|
|
|
|
|
|
|
|
|
|
List<MultipartFile> files = rq.getFiles(); |
|
|
|
List<MultipartFile> files = rq.getFiles(); |
|
|
|
int fileGroupNo = comnFileService.fileUpload(files); // File 업로드
|
|
|
|
Integer fileGroupNo = null; |
|
|
|
|
|
|
|
if(files != null && files.size() > 0) fileGroupNo = comnFileService.fileUpload(files); // File 업로드
|
|
|
|
|
|
|
|
|
|
|
|
String userId = jwtTokenUtil.getUserIdByToken(); |
|
|
|
String userId = jwtTokenUtil.getUserIdByToken(); |
|
|
|
|
|
|
|
|
|
|
@ -64,12 +124,13 @@ public class CnsQnaService { |
|
|
|
cnsQnaBas.setCategory(rq.getCategory()); |
|
|
|
cnsQnaBas.setCategory(rq.getCategory()); |
|
|
|
cnsQnaBas.setTitle(rq.getTitle()); |
|
|
|
cnsQnaBas.setTitle(rq.getTitle()); |
|
|
|
cnsQnaBas.setContent(rq.getContent()); |
|
|
|
cnsQnaBas.setContent(rq.getContent()); |
|
|
|
cnsQnaBas.setFileGroupNo(fileGroupNo); |
|
|
|
|
|
|
|
cnsQnaBas.setCreateDt(Instant.now()); |
|
|
|
cnsQnaBas.setCreateDt(Instant.now()); |
|
|
|
cnsQnaBas.setCreateUserId(userId); |
|
|
|
cnsQnaBas.setCreateUserId(userId); |
|
|
|
cnsQnaBas.setUpdateDt(Instant.now()); |
|
|
|
cnsQnaBas.setUpdateDt(Instant.now()); |
|
|
|
cnsQnaBas.setUpdateUserId(userId); |
|
|
|
cnsQnaBas.setUpdateUserId(userId); |
|
|
|
|
|
|
|
cnsQnaBas.setExpsrYn("Y"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(fileGroupNo != null) cnsQnaBas.setFileGroupNo(fileGroupNo); |
|
|
|
if(rq.getTargetSno() != null) cnsQnaBas.setTargetSno(rq.getTargetSno()); |
|
|
|
if(rq.getTargetSno() != null) cnsQnaBas.setTargetSno(rq.getTargetSno()); |
|
|
|
|
|
|
|
|
|
|
|
cnsQnaBasRepository.save(cnsQnaBas); |
|
|
|
cnsQnaBasRepository.save(cnsQnaBas); |
|
|
|