Browse Source

QnaList 조회 추가

pull/9/head
lkd9125 11 months ago
parent
commit
5c282da7d8
  1. 34
      pav-server/src/main/java/com/palnet/biz/api/cns/qna/controller/CnsQnaController.java
  2. 27
      pav-server/src/main/java/com/palnet/biz/api/cns/qna/model/QnaRSModel.java
  3. 11
      pav-server/src/main/java/com/palnet/biz/api/cns/qna/model/QnaSelectListRQ.java
  4. 31
      pav-server/src/main/java/com/palnet/biz/api/cns/qna/service/CnsQnaService.java
  5. 58
      pav-server/src/main/java/com/palnet/biz/jpa/repository/cns/CnsQnaQueryRepository.java

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

@ -1,16 +1,20 @@
package com.palnet.biz.api.cns.qna.controller;
import org.springframework.http.MediaType;
import java.util.List;
import org.springframework.http.ResponseEntity;
import org.springframework.util.MimeType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.palnet.biz.api.cns.qna.model.QnaBasModel;
import com.palnet.biz.api.cns.qna.model.QnaInsertRQModel;
import com.palnet.biz.api.cns.qna.model.QnaRSModel;
import com.palnet.biz.api.cns.qna.model.QnaSelectListRQ;
import com.palnet.biz.api.cns.qna.service.CnsQnaService;
import io.swagger.annotations.ApiOperation;
@ -30,25 +34,39 @@ public class CnsQnaController {
@PostMapping(value = "/insert", consumes = "multipart/form-data")
@Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 등록[답변추가]")
public ResponseEntity<Object> insertQna(QnaInsertRQModel rq){
public ResponseEntity<QnaRSModel> insertQna(QnaInsertRQModel rq){
log.warn("CnsFaqController - insertQna()");
boolean success = cnsQnaService.insertQna(rq);
boolean success = cnsQnaService.insertQna(rq);
QnaRSModel rs = new QnaRSModel(success);
return ResponseEntity.ok().body(success);
return ResponseEntity.ok().body(rs);
}
@GetMapping("/select")
public ResponseEntity<Object> selectQna(@RequestBody QnaBasModel rq){
@Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 리스트 조회")
public ResponseEntity<Object> selectQna(QnaSelectListRQ rq){
log.warn("CnsFaqController - selectQna()");
List<QnaBasModel> result = cnsQnaService.selectQnaList(rq);
return ResponseEntity.ok().body(result);
}
@GetMapping("/detail/{qnaSno}")
public ResponseEntity<Object> detailQna(@PathVariable int qnaSno){
log.warn("CnsFaqController - selectQna()");
log.warn("rq -> {}", rq);
log.warn("rq -> {}", qnaSno);
return ResponseEntity.ok().body(null);
}
@PostMapping("/update")
public ResponseEntity<Object> updateQna(@RequestBody QnaBasModel rq){
public ResponseEntity<Object> updateQna(@RequestBody QnaInsertRQModel rq){
log.warn("CnsFaqController - updateQna()");
log.warn("rq -> {}", rq);

27
pav-server/src/main/java/com/palnet/biz/api/cns/qna/model/QnaRSModel.java

@ -3,6 +3,31 @@ package com.palnet.biz.api.cns.qna.model;
import lombok.Data;
@Data
public class QnaRSModel {
public class QnaRSModel{
private int code;
private String desc;
private Object body;
public QnaRSModel() {
this.code = 200;
}
public QnaRSModel(Object body){
this.code = 200;
this.body = body;
}
public QnaRSModel(int code, Object body){
this.code = code;
this.body = body;
}
public QnaRSModel(int code, String desc, Object body){
this.code = code;
this.desc = desc;
this.body = body;
}
}

11
pav-server/src/main/java/com/palnet/biz/api/cns/qna/model/QnaSelectListRQ.java

@ -0,0 +1,11 @@
package com.palnet.biz.api.cns.qna.model;
import lombok.Data;
@Data
public class QnaSelectListRQ {
private String word;
private String category;
}

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

@ -3,14 +3,19 @@ package com.palnet.biz.api.cns.qna.service;
import java.time.Instant;
import java.util.List;
import javax.transaction.Transactional;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
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.QnaInsertRQModel;
import com.palnet.biz.api.cns.qna.model.QnaSelectListRQ;
import com.palnet.biz.api.comn.file.service.ComnFileService;
import com.palnet.biz.jpa.entity.CnsQnaBas;
import com.palnet.biz.jpa.repository.cns.CnsQnaBasRepository;
import com.palnet.biz.jpa.repository.cns.CnsQnaQueryRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -25,16 +30,34 @@ public class CnsQnaService {
private final CnsQnaBasRepository cnsQnaBasRepository;
private final CnsQnaQueryRepository cnsQnaQueryRepository;
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());
return result;
}
/**
* QnaInsert
* @param rq
* @return
*/
@Transactional
public boolean insertQna(QnaInsertRQModel rq){
log.warn("CnsQnaService - insertQna()");
List<MultipartFile> files = rq.getFiles();
int fileGroupNo = comnFileService.fileUpload(files);
String userId = jwtTokenUtil.getUserIdByToken();
int fileGroupNo = comnFileService.fileUpload(files); // File 업로드
String userId = jwtTokenUtil.getUserIdByToken();
if (userId == null) userId = "NONE";
CnsQnaBas cnsQnaBas = new CnsQnaBas();
@ -53,4 +76,6 @@ public class CnsQnaService {
return true;
}
}

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

@ -1,5 +1,63 @@
package com.palnet.biz.jpa.repository.cns;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.palnet.biz.api.cns.faq.model.FaqListRSModel;
import com.palnet.biz.api.cns.qna.model.QnaBasModel;
import com.palnet.biz.jpa.entity.QCnsFaqBas;
import com.palnet.biz.jpa.entity.QCnsQnaBas;
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;
@Slf4j
@Repository
@RequiredArgsConstructor
public class CnsQnaQueryRepository {
private final JPAQueryFactory query;
public List<QnaBasModel> getQnaList(String category, String word) {
QCnsQnaBas bas = QCnsQnaBas.cnsQnaBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.delYn.eq("N"));
builder.and(bas.expsrYn.eq("Y"));
if(category != null) {
builder.and(bas.category.eq(category));
}
if(word != null) {
builder.and(bas.title.contains(word));
}
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)
.fetch();
return r;
}
}

Loading…
Cancel
Save