Browse Source

qna url 수정

pull/12/head
지대한 11 months ago
parent
commit
49c2798356
  1. 10
      pav-server/src/main/java/com/palnet/biz/api/cns/faq/service/CnsFaqService.java
  2. 177
      pav-server/src/main/java/com/palnet/biz/api/cns/qna/controller/CnsQnaController.java
  3. 5
      pav-server/src/main/java/com/palnet/biz/api/cns/qna/service/CnsQnaService.java
  4. 4
      pav-server/src/main/java/com/palnet/biz/api/comn/file/service/ComnFileService.java
  5. 16
      pav-server/src/main/java/com/palnet/biz/jpa/entity/CnsQnaBas.java
  6. 6
      pav-server/src/main/java/com/palnet/biz/jpa/repository/cns/CnsFaqQueryRepository.java

10
pav-server/src/main/java/com/palnet/biz/api/cns/faq/service/CnsFaqService.java

@ -36,12 +36,10 @@ public class CnsFaqService {
}
public FaqListModel getFaqDetail(int sno){
CnsFaqBas findEntity = cnsFaqBasRepository.findById(sno).orElseThrow(() -> new CustomException(ErrorCode.DATA_NO));
findEntity.setViewCnt(findEntity.getViewCnt() + 1);
CnsFaqBas updateEntity = cnsFaqBasRepository.save(findEntity);
return CnsFaqMapper.MAPPER.toModel(updateEntity);
cnsFaqBasRepository.updateViewCnt(sno);
FaqListModel result = query.getFaqDetail(sno);
if(result == null) throw new CustomException(ErrorCode.DATA_NO);
return result;
}
@Transactional

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

@ -1,30 +1,30 @@
package com.palnet.biz.api.cns.qna.controller;
import java.util.List;
import org.springframework.http.ResponseEntity;
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.QnaDetailRSModel;
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 com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.biz.api.comn.response.SuccessResponse;
import com.palnet.comn.exception.CustomException;
import io.swagger.annotations.ApiOperation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@Slf4j
@Tag(name = "QNA", description = "QNA 관련 API")
@RequiredArgsConstructor
@RequestMapping("/api/cns/qna")
public class CnsQnaController {
@ -32,55 +32,123 @@ public class CnsQnaController {
private final CnsQnaService cnsQnaService;
@PostMapping(value = "/insert", consumes = "multipart/form-data")
// TODO json 가능 여부
@PostMapping(consumes = "multipart/form-data")
@Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 등록[답변추가]")
public ResponseEntity<Boolean> insertQna(QnaInsertRQModel rq){
boolean result = cnsQnaService.insertQna(rq);
return ResponseEntity.ok().body(result);
public ResponseEntity<? extends BasicResponse> insertQna(QnaInsertRQModel rq){
boolean result = false;
try {
result = cnsQnaService.insertQna(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("/select")
@GetMapping
@Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 리스트 조회")
public ResponseEntity<List<QnaBasModel>> selectQna(QnaSelectListRQ rq){
List<QnaBasModel> result = cnsQnaService.selectQnaList(rq);
return ResponseEntity.ok().body(result);
public ResponseEntity<? extends BasicResponse> selectQna(QnaSelectListRQ rq){
List<QnaBasModel> result = new ArrayList<>();
try {
result = cnsQnaService.selectQnaList(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}/detail")
@GetMapping("/{qnaSno}")
@Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 상세보기")
public ResponseEntity<List<QnaDetailRSModel>> detailQna(@PathVariable int qnaSno){
List<QnaDetailRSModel> reulst = cnsQnaService.getQnaDetail(qnaSno);
return ResponseEntity.ok().body(reulst);
public ResponseEntity<? extends BasicResponse> detailQna(@PathVariable int qnaSno){
List<QnaDetailRSModel> result = null;
try {
result = cnsQnaService.getQnaDetail(qnaSno);
} 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));
}
@PostMapping("/{qnaSno}/update")
@PutMapping
@Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 업데이트")
public ResponseEntity<Boolean> updateQna(@PathVariable int qnaSno, QnaInsertRQModel rq){
boolean result = cnsQnaService.updateQna(qnaSno, rq);
return ResponseEntity.ok().body(result);
public ResponseEntity<? extends BasicResponse> updateQna(QnaInsertRQModel rq){
boolean result = false;
try {
result = cnsQnaService.updateQna(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}/delete")
@DeleteMapping("/{qnaSno}")
@Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 삭제하기")
public ResponseEntity<Boolean> deleteQna(@PathVariable int qnaSno){
boolean result = cnsQnaService.deleteQna(qnaSno);
return ResponseEntity.ok().body(result);
public ResponseEntity<? extends BasicResponse> deleteQna(@PathVariable int qnaSno){
boolean result = false;
try {
result = cnsQnaService.deleteQna(qnaSno);
} 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));
}
/**
@ -89,14 +157,29 @@ public class CnsQnaController {
* @param fileSno
* @return
*/
@GetMapping("/{qnaSno}/{fileSno}/delete")
@DeleteMapping("/file/{qnaSno}/{fileSno}")
@Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 파일 개별삭제")
public ResponseEntity<Boolean> deleteQnaFile(@PathVariable int qnaSno, @PathVariable int fileSno){
public ResponseEntity<? extends BasicResponse> deleteQnaFile(@PathVariable int qnaSno, @PathVariable int fileSno){
log.warn("CnsQnaController - deleteQnaFile()");
boolean result = cnsQnaService.deleteQnaFile(fileSno);
boolean result = false;
try {
result = cnsQnaService.deleteQnaFile(fileSno);
} 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));
return ResponseEntity.ok().body(result);
}
}

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

@ -89,14 +89,13 @@ public class CnsQnaService {
/**
* Qna 업데이트하기 TODO :: File 업데이트 기능 아직 구현안함
* @param qnaSno
* @param rq
* @return
*/
@Transactional
public boolean updateQna(int qnaSno, QnaInsertRQModel rq){
public boolean updateQna(QnaInsertRQModel rq){
CnsQnaBas entity = cnsQnaBasRepository.findFirstByQnaSnoAndTargetSnoAndDelYnAndExpsrYn(qnaSno, 0, "N", "Y");
CnsQnaBas entity = cnsQnaBasRepository.findFirstByQnaSnoAndTargetSnoAndDelYnAndExpsrYn(rq.getQnaSno(), 0, "N", "Y");
if(entity == null) throw new CustomException(ErrorCode.DATA_NOTFIND);
List<MultipartFile> files = rq.getFiles();

4
pav-server/src/main/java/com/palnet/biz/api/comn/file/service/ComnFileService.java

@ -359,8 +359,8 @@ public class ComnFileService {
file.setDelYn("Y");
file.setDelUserId(userId);
file.setDelDt(Instant.now());
file.setDelDt(Instant.now());
comFileBasRepository.save(file);
return true;

16
pav-server/src/main/java/com/palnet/biz/jpa/entity/CnsQnaBas.java

@ -1,12 +1,12 @@
package com.palnet.biz.jpa.entity;
import java.io.Serializable;
import java.time.Instant;
import lombok.Data;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
import javax.persistence.*;
import lombok.Builder;
import lombok.Data;
import java.io.Serializable;
import java.time.Instant;
@Entity
@Data
@ -48,13 +48,15 @@ public class CnsQnaBas implements Serializable {
@Column(name="CREATE_USER_ID")
private String createUserId;
@Column(name="CREATE_DT")
@CreationTimestamp
@Column(name="CREATE_DT", columnDefinition = "TIMESTAMP", updatable = false)
private Instant createDt;
@Column(name="UPDATE_USER_ID")
private String updateUserId;
@Column(name="UPDATE_DT")
@UpdateTimestamp
@Column(name="UPDATE_DT", columnDefinition = "TIMESTAMP")
private Instant updateDt;
}

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

@ -45,7 +45,6 @@ public class CnsFaqQueryRepository {
bas.content,
bas.viewCnt,
bas.expsrYn,
bas.delYn,
bas.createUserId,
bas.createDt,
bas.updateUserId,
@ -65,7 +64,9 @@ public class CnsFaqQueryRepository {
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.faqSno.eq(sno));
builder.and(bas.expsrYn.eq("Y"));
builder.and(bas.delYn.eq("N"));
FaqListModel r = query
.select(Projections.bean(
FaqListModel.class,
@ -75,7 +76,6 @@ public class CnsFaqQueryRepository {
bas.content,
bas.viewCnt,
bas.expsrYn,
bas.delYn,
bas.createUserId,
bas.createDt,
bas.updateUserId,

Loading…
Cancel
Save