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 5fcb6f6..01b69e3 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 @@ -59,7 +59,7 @@ public class CnsQnaController { @GetMapping @Tag(name = "QNA", description = "QNA 관련 API") @ApiOperation(value = "QnA 리스트 조회-관리자") - public ResponseEntity selectQna(QnaSelectListRQ rq) { + public ResponseEntity selectQna(QnaListAdminRQ rq) { List result = new ArrayList<>(); try { diff --git a/pav-server/src/main/java/com/palnet/biz/api/cns/qna/model/QnaBasModel.java b/pav-server/src/main/java/com/palnet/biz/api/cns/qna/model/QnaBasModel.java index 1f180c6..2bae43a 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/cns/qna/model/QnaBasModel.java +++ b/pav-server/src/main/java/com/palnet/biz/api/cns/qna/model/QnaBasModel.java @@ -25,16 +25,18 @@ public class QnaBasModel { private String anserStatus; - private int fileGroupNo; + private Integer fileGroupNo; private String expsrYn; - private String delYn; +// private String delYn; private int viewCnt; + private String createUserNm; + private String createUserId; - + private Instant createDt; private String updateUserId; diff --git a/pav-server/src/main/java/com/palnet/biz/api/cns/qna/model/QnaDetailRSModel.java b/pav-server/src/main/java/com/palnet/biz/api/cns/qna/model/QnaDetailRSModel.java index 17a36ec..71466d4 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/cns/qna/model/QnaDetailRSModel.java +++ b/pav-server/src/main/java/com/palnet/biz/api/cns/qna/model/QnaDetailRSModel.java @@ -1,13 +1,11 @@ package com.palnet.biz.api.cns.qna.model; -import java.time.Instant; -import java.util.List; - import com.palnet.biz.api.comn.file.model.ComnFileModel; -import com.palnet.biz.jpa.entity.ComFileBas; - import lombok.Data; +import java.time.Instant; +import java.util.List; + @Data public class QnaDetailRSModel { @@ -21,8 +19,22 @@ public class QnaDetailRSModel { private String content; + private String anserContent; + + private String anserUserNm; + + private Instant anserProcDt; + + private String anserStatus; + private Integer viewCnt; + private Integer fileGroupNo; + + private String expsrYn; + + private String createUserNm; + private String createUserId; private Instant createDt; diff --git a/pav-server/src/main/java/com/palnet/biz/api/cns/qna/model/QnaListAdminRQ.java b/pav-server/src/main/java/com/palnet/biz/api/cns/qna/model/QnaListAdminRQ.java new file mode 100644 index 0000000..30c4dd2 --- /dev/null +++ b/pav-server/src/main/java/com/palnet/biz/api/cns/qna/model/QnaListAdminRQ.java @@ -0,0 +1,15 @@ +package com.palnet.biz.api.cns.qna.model; + +import lombok.Data; + +@Data +public class QnaListAdminRQ { + + // 문의유형 + private String category; + // 답변상태 + private String anserStatus; + // 작성자 + private String createUserNm; + +} 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 a717bd5..9d3abe9 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 @@ -1,12 +1,18 @@ package com.palnet.biz.api.cns.qna.service; +import com.palnet.biz.api.acnt.jwt.model.JwtUserModel; import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil; import com.palnet.biz.api.cns.qna.model.*; import com.palnet.biz.api.comn.file.model.ComnFileModel; import com.palnet.biz.api.comn.file.service.ComnFileService; import com.palnet.biz.jpa.entity.CnsQnaBas; +import com.palnet.biz.jpa.entity.PtyCstmrBas; +import com.palnet.biz.jpa.entity.PtyCstmrDtl; 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.biz.jpa.repository.pty.PtyCstmrBasRepository; +import com.palnet.biz.jpa.repository.pty.PtyCstmrDtlRepository; import com.palnet.comn.code.ErrorCode; import com.palnet.comn.exception.CustomException; import lombok.RequiredArgsConstructor; @@ -17,6 +23,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.transaction.Transactional; import java.time.Instant; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; @Service @@ -27,6 +34,9 @@ public class CnsQnaService { private final CnsQnaBasRepository cnsQnaBasRepository; private final CnsQnaQueryRepository cnsQnaQueryRepository; + private final PtyCstmrBasRepository ptyCstmrBasRepository; + private final PtyCstmrDtlRepository ptyCstmrDtlRepository; + private final ComFileBasRepository comFileBasRepository; private final ComnFileService comnFileService; @@ -103,12 +113,18 @@ public class CnsQnaService { cnsQnaBasRepository.pulsViewCount(qnaSno); - CnsQnaBas qnaBasModel = cnsQnaBasRepository.findFirstByQnaSnoAndTargetSnoAndDelYnAndExpsrYn(qnaSno, 0, "N", "Y"); + CnsQnaBas entity = cnsQnaBasRepository.findFirstByQnaSnoAndTargetSnoAndDelYnAndExpsrYn(qnaSno, 0, "N", "Y"); List files = null; - if (qnaBasModel.getFileGroupNo() != null && qnaBasModel.getFileGroupNo() != 0) - files = comnFileService.getNormalFileListByGroupNo(qnaBasModel.getFileGroupNo()); + if (entity.getFileGroupNo() != null && entity.getFileGroupNo() != 0) + files = comnFileService.getNormalFileListByGroupNo(entity.getFileGroupNo()); + + QnaDetailRSModel model = CnsQnaMapper.MAPPER.toModel(entity); + JwtUserModel user = ptyCstmrBasRepository.findByUserId(entity.getCreateUserId()).orElse(null); + if (user != null) { + PtyCstmrDtl ptyCstmrDtl = ptyCstmrDtlRepository.findById(user.getCstmrSno()).orElse(null); + if (ptyCstmrDtl != null) model.setCreateUserNm(ptyCstmrDtl.getMemberName()); + } - QnaDetailRSModel model = CnsQnaMapper.MAPPER.toModel(qnaBasModel); model.setFiles(files); @@ -121,7 +137,7 @@ public class CnsQnaService { * @param rq * @return */ - public List selectQnaList(QnaSelectListRQ rq) { + public List selectQnaList(QnaListAdminRQ rq) { return cnsQnaQueryRepository.getQnaList(rq); } diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/repository/cns/CnsQnaQueryRepository.java b/pav-server/src/main/java/com/palnet/biz/jpa/repository/cns/CnsQnaQueryRepository.java index dd54123..a91aa2d 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/repository/cns/CnsQnaQueryRepository.java +++ b/pav-server/src/main/java/com/palnet/biz/jpa/repository/cns/CnsQnaQueryRepository.java @@ -2,7 +2,10 @@ package com.palnet.biz.jpa.repository.cns; import java.util.List; +import com.palnet.biz.api.cns.qna.model.QnaListAdminRQ; import com.palnet.biz.api.cns.qna.model.QnaSelectListRQ; +import com.palnet.biz.jpa.entity.QPtyCstmrBas; +import com.palnet.biz.jpa.entity.QPtyCstmrDtl; import org.springframework.stereotype.Repository; import com.palnet.biz.api.cns.qna.model.QnaBasModel; @@ -27,8 +30,10 @@ public class CnsQnaQueryRepository { * @param rq * @return */ - public List getQnaList(QnaSelectListRQ rq) { + public List getQnaList(QnaListAdminRQ rq) { QCnsQnaBas bas = QCnsQnaBas.cnsQnaBas; + QPtyCstmrBas cBas = QPtyCstmrBas.ptyCstmrBas; + QPtyCstmrDtl cDtl = QPtyCstmrDtl.ptyCstmrDtl; BooleanBuilder builder = new BooleanBuilder(); builder.and(bas.delYn.eq("N")); @@ -40,10 +45,16 @@ public class CnsQnaQueryRepository { builder.and(bas.category.eq(rq.getCategory())); } - if (rq.getWord() != null) { - if ("TITLE".equals(rq.getSearchType())) builder.and(bas.title.contains(rq.getWord())); - else if ("CONTENT".equals(rq.getSearchType())) builder.and(bas.content.contains(rq.getWord())); - else builder.and(bas.title.contains(rq.getWord()).or(bas.content.contains(rq.getWord()))); +// if (rq.getWord() != null) { +// if ("TITLE".equals(rq.getSearchType())) builder.and(bas.title.contains(rq.getWord())); +// else if ("CONTENT".equals(rq.getSearchType())) builder.and(bas.content.contains(rq.getWord())); +// else builder.and(bas.title.contains(rq.getWord()).or(bas.content.contains(rq.getWord()))); +// } + if (rq.getCreateUserNm() != null) { + builder.and(cDtl.memberName.contains(rq.getCreateUserNm())); + } + if (rq.getAnserStatus() != null) { + builder.and(bas.anserStatus.eq(rq.getAnserStatus())); } } @@ -61,9 +72,12 @@ public class CnsQnaQueryRepository { bas.createUserId, bas.createDt, bas.updateUserId, - bas.updateDt + bas.updateDt, + cDtl.memberName.as("createUserNm") )) .from(bas) + .leftJoin(cBas).on(bas.createUserId.eq(cBas.userId)) + .leftJoin(cDtl).on(cBas.cstmrSno.eq(cDtl.cstmrSno)) .where(builder) .orderBy(bas.createDt.desc()) .fetch(); @@ -73,6 +87,8 @@ public class CnsQnaQueryRepository { public List getQnaListForUser(QnaSelectListRQ rq, String userId) { QCnsQnaBas bas = QCnsQnaBas.cnsQnaBas; + QPtyCstmrBas cBas = QPtyCstmrBas.ptyCstmrBas; + QPtyCstmrDtl cDtl = QPtyCstmrDtl.ptyCstmrDtl; BooleanBuilder builder = new BooleanBuilder(); builder.and(bas.delYn.eq("N")); @@ -106,9 +122,12 @@ public class CnsQnaQueryRepository { bas.createUserId, bas.createDt, bas.updateUserId, - bas.updateDt + bas.updateDt, + cDtl.memberName.as("createUserNm") )) .from(bas) + .leftJoin(cBas).on(bas.createUserId.eq(cBas.userId)) + .leftJoin(cDtl).on(cBas.cstmrSno.eq(cDtl.cstmrSno)) .where(builder) .orderBy(bas.createDt.desc()) .fetch();