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. 191
      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 @GetMapping
@Tag(name = "QNA", description = "QNA 관련 API") @Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 리스트 조회") @ApiOperation(value = "QnA 리스트 조회-관리자")
public ResponseEntity<? extends BasicResponse> selectQna(QnaSelectListRQ rq) { public ResponseEntity<? extends BasicResponse> selectQna(QnaSelectListRQ rq) {
List<QnaBasModel> result = new ArrayList<>(); 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}") @GetMapping("/{qnaSno}")
@Tag(name = "QNA", description = "QNA 관련 API") @Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 상세보기") @ApiOperation(value = "QnA 상세보기")
@ -127,6 +152,8 @@ public class CnsQnaController {
return ResponseEntity.ok().body(new SuccessResponse<>(result)); return ResponseEntity.ok().body(new SuccessResponse<>(result));
} }
@DeleteMapping("/{qnaSno}") @DeleteMapping("/{qnaSno}")
@Tag(name = "QNA", description = "QNA 관련 API") @Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 삭제하기") @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); return cnsQnaQueryRepository.getQnaList(rq);
} }
public List<QnaBasModel> selectQnaForUser(QnaSelectListRQ rq) {
String userId = jwtTokenUtil.getUserIdByToken();
return cnsQnaQueryRepository.getQnaListForUser(rq, userId);
}
/** /**
* QnaInsert * QnaInsert
* *
@ -174,4 +179,6 @@ public class CnsQnaService {
cnsQnaBasRepository.save(entity); cnsQnaBasRepository.save(entity);
return true; return true;
} }
} }

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

@ -1,111 +1,110 @@
package com.palnet.biz.jpa.repository.cns; 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.api.cns.faq.model.FaqListModel;
import com.palnet.biz.jpa.entity.QCnsFaqBas; import com.palnet.biz.jpa.entity.QCnsFaqBas;
import com.querydsl.core.BooleanBuilder; import com.querydsl.core.BooleanBuilder;
import com.querydsl.core.types.Projections; import com.querydsl.core.types.Projections;
import com.querydsl.jpa.impl.JPAQueryFactory; import com.querydsl.jpa.impl.JPAQueryFactory;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository;
import java.util.List;
@Slf4j @Slf4j
@Repository @Repository
@RequiredArgsConstructor @RequiredArgsConstructor
public class CnsFaqQueryRepository { public class CnsFaqQueryRepository {
private final JPAQueryFactory query; private final JPAQueryFactory query;
public List<FaqListModel> getFaqList(String category, String word) { public List<FaqListModel> getFaqList(String category, String word) {
QCnsFaqBas bas = QCnsFaqBas.cnsFaqBas; QCnsFaqBas bas = QCnsFaqBas.cnsFaqBas;
BooleanBuilder builder = new BooleanBuilder(); BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.delYn.eq("N")); builder.and(bas.delYn.eq("N"));
builder.and(bas.expsrYn.eq("Y")); builder.and(bas.expsrYn.eq("Y"));
if(category != null) { if (category != null) {
builder.and(bas.category.eq(category)); builder.and(bas.category.eq(category));
} }
if(word != null) { if (word != null) {
builder.and(bas.title.contains(word)); builder.and(bas.title.contains(word));
} }
List<FaqListModel> r = query List<FaqListModel> r = query
.select(Projections.bean( .select(Projections.bean(
FaqListModel.class, FaqListModel.class,
bas.faqSno, bas.faqSno,
bas.category, bas.category,
bas.title, bas.title,
bas.content, bas.content,
bas.viewCnt, bas.viewCnt,
bas.expsrYn, bas.expsrYn,
bas.createUserId, bas.createUserId,
bas.createDt, bas.createDt,
bas.updateUserId, bas.updateUserId,
bas.updateDt bas.updateDt
)) ))
.from(bas) .from(bas)
.where(builder) .where(builder)
.fetch(); .orderBy(bas.createDt.desc())
.fetch();
return r;
} return r;
}
public FaqListModel getFaqDetail(int sno) {
public FaqListModel getFaqDetail(int sno) {
QCnsFaqBas bas = QCnsFaqBas.cnsFaqBas;
QCnsFaqBas bas = QCnsFaqBas.cnsFaqBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.faqSno.eq(sno)); BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.expsrYn.eq("Y")); builder.and(bas.faqSno.eq(sno));
builder.and(bas.delYn.eq("N")); builder.and(bas.expsrYn.eq("Y"));
builder.and(bas.delYn.eq("N"));
FaqListModel r = query
.select(Projections.bean( FaqListModel r = query
FaqListModel.class, .select(Projections.bean(
bas.faqSno, FaqListModel.class,
bas.category, bas.faqSno,
bas.title, bas.category,
bas.content, bas.title,
bas.viewCnt, bas.content,
bas.expsrYn, bas.viewCnt,
bas.createUserId, bas.expsrYn,
bas.createDt, bas.createUserId,
bas.updateUserId, bas.createDt,
bas.updateDt bas.updateUserId,
)) bas.updateDt
.from(bas) ))
.where(builder) .from(bas)
.fetchOne(); .where(builder)
.fetchOne();
return r;
} return r;
}
public void updateFaq(FaqListModel model) {
QCnsFaqBas bas = QCnsFaqBas.cnsFaqBas; public void updateFaq(FaqListModel model) {
QCnsFaqBas bas = QCnsFaqBas.cnsFaqBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.faqSno.eq(model.getFaqSno())); BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.faqSno.eq(model.getFaqSno()));
query.update(bas)
.set(bas.category, model.getCategory()) query.update(bas)
.set(bas.title, model.getTitle()) .set(bas.category, model.getCategory())
.set(bas.content, model.getContent()) .set(bas.title, model.getTitle())
.set(bas.viewCnt, model.getViewCnt()) .set(bas.content, model.getContent())
.set(bas.expsrYn, model.getExpsrYn()) .set(bas.viewCnt, model.getViewCnt())
.set(bas.updateUserId, model.getUpdateUserId()) .set(bas.expsrYn, model.getExpsrYn())
.set(bas.updateDt, model.getUpdateDt()) .set(bas.updateUserId, model.getUpdateUserId())
.where(builder) .set(bas.updateDt, model.getUpdateDt())
.execute(); .where(builder)
.execute();
}
}
} }

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

@ -65,6 +65,52 @@ public class CnsQnaQueryRepository {
)) ))
.from(bas) .from(bas)
.where(builder) .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(); .fetch();
return r; return r;

Loading…
Cancel
Save