Browse Source

FAQ, QnA 생성일시 최근일 순으로 정렬

pull/12/head
지대한 11 months ago
parent
commit
c978a9171a
  1. 29
      pav-server/src/main/java/com/palnet/biz/api/cns/qna/controller/CnsQnaController.java
  2. 7
      pav-server/src/main/java/com/palnet/biz/api/cns/qna/service/CnsQnaService.java
  3. 13
      pav-server/src/main/java/com/palnet/biz/jpa/repository/cns/CnsFaqQueryRepository.java
  4. 46
      pav-server/src/main/java/com/palnet/biz/jpa/repository/cns/CnsQnaQueryRepository.java

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

@ -58,7 +58,7 @@ public class CnsQnaController {
@GetMapping
@Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 리스트 조회")
@ApiOperation(value = "QnA 리스트 조회-관리자")
public ResponseEntity<? extends BasicResponse> selectQna(QnaSelectListRQ rq) {
List<QnaBasModel> result = new ArrayList<>();
@ -81,6 +81,31 @@ public class CnsQnaController {
}
@GetMapping("/user")
@Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 리스트 조회-사용자")
public ResponseEntity<? extends BasicResponse> selectQnaForUser(QnaSelectListRQ rq) {
List<QnaBasModel> result = new ArrayList<>();
try {
result = cnsQnaService.selectQnaForUser(rq);
} catch (CustomException e) {
Map<String, Object> resultMap = new HashMap<>();
log.error("IGNORE : ", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
resultMap.put("errorMessage", e.getMessage());
return ResponseEntity.ok().body(new SuccessResponse<>(resultMap));
} catch (Exception e) {
log.error("IGNORE : ", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<>(result));
}
@GetMapping("/{qnaSno}")
@Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 상세보기")
@ -127,6 +152,8 @@ public class CnsQnaController {
return ResponseEntity.ok().body(new SuccessResponse<>(result));
}
@DeleteMapping("/{qnaSno}")
@Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 삭제하기")

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

@ -125,6 +125,11 @@ public class CnsQnaService {
return cnsQnaQueryRepository.getQnaList(rq);
}
public List<QnaBasModel> selectQnaForUser(QnaSelectListRQ rq) {
String userId = jwtTokenUtil.getUserIdByToken();
return cnsQnaQueryRepository.getQnaListForUser(rq, userId);
}
/**
* QnaInsert
*
@ -174,4 +179,6 @@ public class CnsQnaService {
cnsQnaBasRepository.save(entity);
return true;
}
}

13
pav-server/src/main/java/com/palnet/biz/jpa/repository/cns/CnsFaqQueryRepository.java

@ -1,17 +1,15 @@
package com.palnet.biz.jpa.repository.cns;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.palnet.biz.api.cns.faq.model.FaqListModel;
import com.palnet.biz.jpa.entity.QCnsFaqBas;
import com.querydsl.core.BooleanBuilder;
import com.querydsl.core.types.Projections;
import com.querydsl.jpa.impl.JPAQueryFactory;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository;
import java.util.List;
@Slf4j
@Repository
@ -28,11 +26,11 @@ public class CnsFaqQueryRepository {
builder.and(bas.delYn.eq("N"));
builder.and(bas.expsrYn.eq("Y"));
if(category != null) {
if (category != null) {
builder.and(bas.category.eq(category));
}
if(word != null) {
if (word != null) {
builder.and(bas.title.contains(word));
}
@ -52,6 +50,7 @@ public class CnsFaqQueryRepository {
))
.from(bas)
.where(builder)
.orderBy(bas.createDt.desc())
.fetch();

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

@ -65,6 +65,52 @@ public class CnsQnaQueryRepository {
))
.from(bas)
.where(builder)
.orderBy(bas.createDt.desc())
.fetch();
return r;
}
public List<QnaBasModel> getQnaListForUser(QnaSelectListRQ rq, String userId) {
QCnsQnaBas bas = QCnsQnaBas.cnsQnaBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.delYn.eq("N"));
builder.and(bas.expsrYn.eq("Y"));
builder.and(bas.createUserId.eq(userId));
if (rq != null) {
if (rq.getCategory() != null) {
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())));
}
}
List<QnaBasModel> r = query
.select(Projections.bean(
QnaBasModel.class,
bas.qnaSno,
bas.category,
bas.title,
bas.content,
bas.fileGroupNo,
bas.viewCnt,
bas.expsrYn,
bas.delYn,
bas.createUserId,
bas.createDt,
bas.updateUserId,
bas.updateDt
))
.from(bas)
.where(builder)
.orderBy(bas.createDt.desc())
.fetch();
return r;

Loading…
Cancel
Save