qkr7828
7 months ago
12 changed files with 502 additions and 459 deletions
@ -1,30 +1,30 @@
|
||||
//package kr.co.palnet.kac.core.response;
|
||||
//
|
||||
//import io.swagger.v3.oas.annotations.media.Schema;
|
||||
//import lombok.Data;
|
||||
//import lombok.EqualsAndHashCode;
|
||||
//
|
||||
//import java.util.List;
|
||||
//
|
||||
//
|
||||
//@Data
|
||||
//@EqualsAndHashCode(callSuper=false)
|
||||
//public class SuccessResponse<T> extends BasicResponse {
|
||||
//
|
||||
// @Schema(description = "응답 데이터 건수")
|
||||
// private int count;
|
||||
//
|
||||
// @Schema(description = "응답 데이터")
|
||||
// private T data;
|
||||
//
|
||||
// public SuccessResponse(T data) {
|
||||
// this.data = data;
|
||||
// if(data instanceof List) {
|
||||
// this.count = ((List<?>)data).size();
|
||||
// } else {
|
||||
// this.count = 1;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
//}
|
||||
package kr.co.palnet.kac.core.response; |
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import lombok.Data; |
||||
import lombok.EqualsAndHashCode; |
||||
|
||||
import java.util.List; |
||||
|
||||
|
||||
@Data |
||||
@EqualsAndHashCode(callSuper=false) |
||||
public class SuccessResponse<T> extends BasicResponse { |
||||
|
||||
@Schema(description = "응답 데이터 건수") |
||||
private int count; |
||||
|
||||
@Schema(description = "응답 데이터") |
||||
private T data; |
||||
|
||||
public SuccessResponse(T data) { |
||||
this.data = data; |
||||
if(data instanceof List) { |
||||
this.count = ((List<?>)data).size(); |
||||
} else { |
||||
this.count = 1; |
||||
} |
||||
} |
||||
|
||||
|
||||
} |
||||
|
@ -1,9 +1,28 @@
|
||||
package kr.co.palnet.kac.data.cns.repository; |
||||
|
||||
|
||||
import jakarta.transaction.Transactional; |
||||
import kr.co.palnet.kac.data.cns.model.CnsFaqBas; |
||||
import org.springframework.data.jpa.repository.JpaRepository; |
||||
import org.springframework.data.jpa.repository.Modifying; |
||||
import org.springframework.data.jpa.repository.Query; |
||||
import org.springframework.data.repository.query.Param; |
||||
import org.springframework.stereotype.Repository; |
||||
|
||||
|
||||
@Repository |
||||
public interface CnsFaqBasRepository extends JpaRepository<CnsFaqBas, Integer> { |
||||
|
||||
@Modifying |
||||
@Transactional |
||||
@Query("update CnsFaqBas c set c.viewCnt = c.viewCnt + 1" + |
||||
"where c.faqSno = :sno") |
||||
int updateViewCnt(@Param("sno") int sno); |
||||
|
||||
@Modifying |
||||
@Transactional |
||||
@Query("update CnsFaqBas c set c.delYn = 'Y' " + |
||||
"where c.faqSno = :sno") |
||||
int deleteFaq(@Param("sno") int sno); |
||||
|
||||
} |
||||
|
@ -1,279 +1,264 @@
|
||||
//package kr.co.palnet.kac.api.v1.cns.faq.controller;
|
||||
//
|
||||
//
|
||||
//import io.swagger.v3.oas.annotations.Operation;
|
||||
//import io.swagger.v3.oas.annotations.Parameter;
|
||||
//import io.swagger.v3.oas.annotations.enums.ParameterIn;
|
||||
//import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||
//import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
||||
//import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
//import kr.co.palnet.kac.api.v1.cns.faq.model.FaqListDto;
|
||||
//import kr.co.palnet.kac.api.v1.cns.faq.model.FaqListRq;
|
||||
//import kr.co.palnet.kac.api.v1.cns.faq.model.FaqListRs;
|
||||
//import kr.co.palnet.kac.api.v1.cns.faq.model.FaqUpdateDto;
|
||||
//import kr.co.palnet.kac.api.v1.cns.faq.service.CnsFaqService;
|
||||
//import kr.co.palnet.kac.core.exception.BaseException;
|
||||
//import kr.co.palnet.kac.core.response.BasicResponse;
|
||||
//import lombok.RequiredArgsConstructor;
|
||||
//import lombok.extern.slf4j.Slf4j;
|
||||
//import org.springframework.http.HttpStatus;
|
||||
//import org.springframework.http.ResponseEntity;
|
||||
//import org.springframework.web.ErrorResponse;
|
||||
//import org.springframework.web.bind.annotation.*;
|
||||
//
|
||||
//import java.util.HashMap;
|
||||
//import java.util.List;
|
||||
//import java.util.Map;
|
||||
//
|
||||
//@RestController
|
||||
//@Slf4j
|
||||
//@RequiredArgsConstructor
|
||||
//@RequestMapping(value = "/v1/cns/faq")
|
||||
//@Tag(name = "FAQ", description = "FAQ 관련 API")
|
||||
//public class CnsFaqController {
|
||||
//
|
||||
// private final CnsFaqService service;
|
||||
//
|
||||
// /**
|
||||
// * FAQ 목록 조회하는 기능,
|
||||
// * FaqListRQModel 값에 있는 조건값으로 조회함.
|
||||
// * @param model
|
||||
// * @return
|
||||
// */
|
||||
// @GetMapping
|
||||
// @Operation(summary = "FAQ 조회", description = "FAQ를 조회하는 API 입니다.")
|
||||
// public ResponseEntity<? extends BasicResponse> getFaqList(FaqListRq model) {
|
||||
// List<FaqListRs> result = null;
|
||||
// try {
|
||||
// result = service.getFaqList(model); // FaQ 항목들 조회하는 기능
|
||||
// } catch (BaseException e) {
|
||||
// /**
|
||||
// * try{
|
||||
// ...
|
||||
// }
|
||||
// * try 영역 안 코드들중 문제가 생기면 오는 곳.
|
||||
// * CustomException은 개발자가 "의도적으로" 낸 예외처리,
|
||||
// * log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
|
||||
// */
|
||||
// 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) {
|
||||
// /**
|
||||
// * try{
|
||||
// ...
|
||||
// }
|
||||
// * try 영역 안 코드들중 문제가 생기면 오는 곳.
|
||||
// * log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
|
||||
// */
|
||||
// log.error("IGNORE : ", e);
|
||||
// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
// .body(new ErrorResponse("Server Error", "-1"));
|
||||
//
|
||||
// }
|
||||
// return ResponseEntity.ok().body(new SuccessResponse<>(result));
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * FAQ 상세 조회하는 기능,
|
||||
// * 일련번호[sno]로 조회함.
|
||||
// * @param sno
|
||||
// * @return
|
||||
// */
|
||||
// @GetMapping("/{sno}")
|
||||
// @Operation(summary = "FAQ 상세 조회", description = "특정 FAQ만 조회하는 API 입니다. sno 값 : 1, 2, 등 ....")
|
||||
// @ApiResponses(value = {
|
||||
// @ApiResponse(responseCode = "200", description = "성공",
|
||||
// content = {
|
||||
// @io.swagger.v3.oas.annotations.media.Content(mediaType = "application/json",
|
||||
// array = @io.swagger.v3.oas.annotations.media.ArraySchema(
|
||||
// schema = @io.swagger.v3.oas.annotations.media.Schema(implementation = FaqListDto.class)))
|
||||
// })
|
||||
// })
|
||||
// public ResponseEntity<? extends BasicResponse> getFaqDetail(
|
||||
// @Parameter(name="sno", description = "FAQ 시리얼 넘버", in = ParameterIn.PATH, example = "17")@PathVariable int sno) {
|
||||
// FaqListRs result = null;
|
||||
// try {
|
||||
// result = service.getFaqDetail(sno); // 일련번호[sno]로 상세정보를 조회하는 기능
|
||||
// } catch (CustomException e) {
|
||||
// /**
|
||||
// * try{
|
||||
// ...
|
||||
// }
|
||||
// * try 영역 안 코드들중 문제가 생기면 오는 곳.
|
||||
// * CustomException은 개발자가 "의도적으로" 낸 예외처리,
|
||||
// * log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
|
||||
// */
|
||||
// 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) {
|
||||
// /**
|
||||
// * try{
|
||||
// ...
|
||||
// }
|
||||
// * try 영역 안 코드들중 문제가 생기면 오는 곳.
|
||||
// * log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
|
||||
// */
|
||||
// log.error("IGNORE : ", e);
|
||||
// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
// .body(new ErrorResponse("Server Error", "-1"));
|
||||
//
|
||||
// }
|
||||
// return ResponseEntity.ok().body(new SuccessResponse<>(result));
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * FAQ 작성하는 기능,
|
||||
// * FaqListModel모델에 있는 값으로 작성하는 기능.
|
||||
// * @param model
|
||||
// * @return
|
||||
// */
|
||||
// @PostMapping
|
||||
// @Operation(summary = "FAQ 작성", description = "FAQ를 작성하는 API 입니다.")
|
||||
// @ApiResponses(value = {
|
||||
// @ApiResponse(responseCode = "200", description = "성공",
|
||||
// content = {
|
||||
// @io.swagger.v3.oas.annotations.media.Content(mediaType = "application/json",
|
||||
// array = @io.swagger.v3.oas.annotations.media.ArraySchema(
|
||||
// schema = @io.swagger.v3.oas.annotations.media.Schema(implementation = SuccessResponse.class)))
|
||||
// })
|
||||
// })
|
||||
// public ResponseEntity<? extends BasicResponse> insertFaq(@RequestBody FaqListDto model) {
|
||||
// boolean result = false;
|
||||
// try {
|
||||
// result = service.insertFaq(model); // FaQ 추가하는 기능
|
||||
// } catch (CustomException e) {
|
||||
// /**
|
||||
// * try{
|
||||
// ...
|
||||
// }
|
||||
// * try 영역 안 코드들중 문제가 생기면 오는 곳.
|
||||
// * CustomException은 개발자가 "의도적으로" 낸 예외처리,
|
||||
// * log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
|
||||
// */
|
||||
// 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) {
|
||||
// /**
|
||||
// * try{
|
||||
// ...
|
||||
// }
|
||||
// * try 영역 안 코드들중 문제가 생기면 오는 곳.
|
||||
// * log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
|
||||
// */
|
||||
// log.error("IGNORE : ", e);
|
||||
// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
// .body(new ErrorResponse("Server Error", "-1"));
|
||||
//
|
||||
// }
|
||||
// return ResponseEntity.ok().body(new SuccessResponse<>(result));
|
||||
//
|
||||
//
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * FAQ 업데이트 기능,
|
||||
// * FaqListModel 모델에 있는 값으로 업데이트함.
|
||||
// * @param model
|
||||
// * @return
|
||||
// */
|
||||
// @PutMapping
|
||||
// @Operation(summary = "FAQ 수정", description = "FAQ를 수정하는 API 입니다.")
|
||||
// @ApiResponses(value = {
|
||||
// @ApiResponse(responseCode = "200", description = "성공",
|
||||
// content = {
|
||||
// @io.swagger.v3.oas.annotations.media.Content(mediaType = "application/json",
|
||||
// array = @io.swagger.v3.oas.annotations.media.ArraySchema(
|
||||
// schema = @io.swagger.v3.oas.annotations.media.Schema(implementation = SuccessResponse.class)))
|
||||
// })
|
||||
// })
|
||||
// public ResponseEntity<? extends BasicResponse> updateFaq(@RequestBody FaqUpdateDto model) {
|
||||
// boolean result = false;
|
||||
// try {
|
||||
// result = service.updateFaq(model); // FaQ 수정하는 기능
|
||||
// } catch (CustomException e) {
|
||||
// /**
|
||||
// * try{
|
||||
// ...
|
||||
// }
|
||||
// * try 영역 안 코드들중 문제가 생기면 오는 곳.
|
||||
// * CustomException은 개발자가 "의도적으로" 낸 예외처리,
|
||||
// * log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
|
||||
// */
|
||||
// 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) {
|
||||
// /**
|
||||
// * try{
|
||||
// ...
|
||||
// }
|
||||
// * try 영역 안 코드들중 문제가 생기면 오는 곳.
|
||||
// * log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
|
||||
// */
|
||||
// log.error("IGNORE : ", e);
|
||||
// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
// .body(new ErrorResponse("Server Error", "-1"));
|
||||
//
|
||||
// }
|
||||
// return ResponseEntity.ok().body(new SuccessResponse<>(result));
|
||||
//
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * FAQ 삭제하는 기능,
|
||||
// * 일련번호[sno]로 삭제하는 기능.
|
||||
// * @param sno
|
||||
// * @return
|
||||
// */
|
||||
// @DeleteMapping("/{sno}")
|
||||
// @Operation(summary = "FAQ 삭제", description = "특정 FAQ를 논리 삭제하는 API 입니다. sno 예시 : 1, 2, 등 ...")
|
||||
// public ResponseEntity<? extends BasicResponse> deleteFaq(@PathVariable("sno") int sno) {
|
||||
// // TODO 성공/실패 상태값 전송
|
||||
// try {
|
||||
// service.deleteFaq(sno); // 일련번호[sno]로 삭제하는 기능
|
||||
// } catch (CustomException e) {
|
||||
// /**
|
||||
// * try{
|
||||
// ...
|
||||
// }
|
||||
// * try 영역 안 코드들중 문제가 생기면 오는 곳.
|
||||
// * log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
|
||||
// */
|
||||
// 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) {
|
||||
// /**
|
||||
// * try{
|
||||
// ...
|
||||
// }
|
||||
// * try 영역 안 코드들중 문제가 생기면 오는 곳.
|
||||
// * log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
|
||||
// */
|
||||
// log.error("IGNORE : ", e);
|
||||
// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
// .body(new ErrorResponse("Server Error", "-1"));
|
||||
//
|
||||
// }
|
||||
// return ResponseEntity.ok().build();
|
||||
//
|
||||
// }
|
||||
//}
|
||||
package kr.co.palnet.kac.api.v1.cns.faq.controller; |
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.Operation; |
||||
import io.swagger.v3.oas.annotations.Parameter; |
||||
import io.swagger.v3.oas.annotations.enums.ParameterIn; |
||||
import io.swagger.v3.oas.annotations.responses.ApiResponse; |
||||
import io.swagger.v3.oas.annotations.responses.ApiResponses; |
||||
import io.swagger.v3.oas.annotations.tags.Tag; |
||||
import kr.co.palnet.kac.api.v1.cns.faq.model.FaqListDto; |
||||
import kr.co.palnet.kac.api.v1.cns.faq.model.FaqListRq; |
||||
import kr.co.palnet.kac.api.v1.cns.faq.model.FaqListRs; |
||||
import kr.co.palnet.kac.api.v1.cns.faq.model.FaqUpdateDto; |
||||
import kr.co.palnet.kac.api.v1.cns.faq.service.CnsFaqService; |
||||
import kr.co.palnet.kac.core.exception.BaseException; |
||||
import kr.co.palnet.kac.core.response.BasicResponse; |
||||
import kr.co.palnet.kac.core.response.ErrorResponse; |
||||
import kr.co.palnet.kac.core.response.SuccessResponse; |
||||
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.HashMap; |
||||
import java.util.List; |
||||
import java.util.Map; |
||||
|
||||
@RestController |
||||
@Slf4j |
||||
@RequiredArgsConstructor |
||||
@RequestMapping(value = "/v1/cns/faq") |
||||
@Tag(name = "FAQ", description = "FAQ 관련 API") |
||||
public class CnsFaqController { |
||||
|
||||
private final CnsFaqService service; |
||||
|
||||
/** |
||||
* FAQ 목록 조회하는 기능, |
||||
* FaqListRQModel 값에 있는 조건값으로 조회함. |
||||
* @param model |
||||
* @return |
||||
*/ |
||||
@GetMapping |
||||
@Operation(summary = "FAQ 조회", description = "FAQ를 조회하는 API 입니다.") |
||||
public ResponseEntity<? extends BasicResponse> getFaqList(FaqListRq model) { |
||||
List<FaqListRs> result = null; |
||||
try { |
||||
result = service.getFaqList(model); // FaQ 항목들 조회하는 기능
|
||||
} catch (BaseException e) { |
||||
/** |
||||
* try{ |
||||
... |
||||
} |
||||
* try 영역 안 코드들중 문제가 생기면 오는 곳. |
||||
* CustomException은 개발자가 "의도적으로" 낸 예외처리, |
||||
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌 |
||||
*/ |
||||
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) { |
||||
/** |
||||
* try{ |
||||
... |
||||
} |
||||
* try 영역 안 코드들중 문제가 생기면 오는 곳. |
||||
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌 |
||||
*/ |
||||
log.error("IGNORE : ", e); |
||||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) |
||||
.body(new ErrorResponse("Server Error", "-1")); |
||||
|
||||
} |
||||
return ResponseEntity.ok().body(new SuccessResponse<>(result)); |
||||
} |
||||
|
||||
/** |
||||
* FAQ 상세 조회하는 기능, |
||||
* 일련번호[sno]로 조회함. |
||||
* @param sno |
||||
* @return |
||||
*/ |
||||
@GetMapping("/{sno}") |
||||
@Operation(summary = "FAQ 상세 조회", description = "특정 FAQ만 조회하는 API 입니다. sno 값 : 1, 2, 등 ....") |
||||
public ResponseEntity<? extends BasicResponse> getFaqDetail( |
||||
@Parameter(name="sno", description = "FAQ 시리얼 넘버", in = ParameterIn.PATH, example = "3")@PathVariable int sno) { |
||||
FaqListRs result = null; |
||||
try { |
||||
result = service.getFaqDetail(sno); // 일련번호[sno]로 상세정보를 조회하는 기능
|
||||
} catch (BaseException e) { |
||||
/** |
||||
* try{ |
||||
... |
||||
} |
||||
* try 영역 안 코드들중 문제가 생기면 오는 곳. |
||||
* CustomException은 개발자가 "의도적으로" 낸 예외처리, |
||||
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌 |
||||
*/ |
||||
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) { |
||||
/** |
||||
* try{ |
||||
... |
||||
} |
||||
* try 영역 안 코드들중 문제가 생기면 오는 곳. |
||||
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌 |
||||
*/ |
||||
log.error("IGNORE : ", e); |
||||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) |
||||
.body(new ErrorResponse("Server Error", "-1")); |
||||
|
||||
} |
||||
return ResponseEntity.ok().body(new SuccessResponse<>(result)); |
||||
} |
||||
|
||||
/** |
||||
* FAQ 작성하는 기능, |
||||
* FaqListModel모델에 있는 값으로 작성하는 기능. |
||||
* @param model |
||||
* @return |
||||
*/ |
||||
@PostMapping |
||||
@Operation(summary = "FAQ 작성", description = "FAQ를 작성하는 API 입니다.") |
||||
public ResponseEntity<? extends BasicResponse> insertFaq(@RequestBody FaqListDto model) { |
||||
boolean result = false; |
||||
try { |
||||
result = service.insertFaq(model); // FaQ 추가하는 기능
|
||||
} catch (BaseException e) { |
||||
/** |
||||
* try{ |
||||
... |
||||
} |
||||
* try 영역 안 코드들중 문제가 생기면 오는 곳. |
||||
* CustomException은 개발자가 "의도적으로" 낸 예외처리, |
||||
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌 |
||||
*/ |
||||
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) { |
||||
/** |
||||
* try{ |
||||
... |
||||
} |
||||
* try 영역 안 코드들중 문제가 생기면 오는 곳. |
||||
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌 |
||||
*/ |
||||
log.error("IGNORE : ", e); |
||||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) |
||||
.body(new ErrorResponse("Server Error", "-1")); |
||||
|
||||
} |
||||
return ResponseEntity.ok().body(new SuccessResponse<>(result)); |
||||
|
||||
|
||||
} |
||||
|
||||
/** |
||||
* FAQ 업데이트 기능, |
||||
* FaqListModel 모델에 있는 값으로 업데이트함. |
||||
* @param model |
||||
* @return |
||||
*/ |
||||
@PutMapping |
||||
@Operation(summary = "FAQ 수정", description = "FAQ를 수정하는 API 입니다.") |
||||
@ApiResponses(value = { |
||||
@ApiResponse(responseCode = "200", description = "성공", |
||||
content = { |
||||
@io.swagger.v3.oas.annotations.media.Content(mediaType = "application/json", |
||||
array = @io.swagger.v3.oas.annotations.media.ArraySchema( |
||||
schema = @io.swagger.v3.oas.annotations.media.Schema(implementation = SuccessResponse.class))) |
||||
}) |
||||
}) |
||||
public ResponseEntity<? extends BasicResponse> updateFaq(@RequestBody FaqUpdateDto model) { |
||||
boolean result = false; |
||||
try { |
||||
result = service.updateFaq(model); // FaQ 수정하는 기능
|
||||
} catch (BaseException e) { |
||||
/** |
||||
* try{ |
||||
... |
||||
} |
||||
* try 영역 안 코드들중 문제가 생기면 오는 곳. |
||||
* CustomException은 개발자가 "의도적으로" 낸 예외처리, |
||||
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌 |
||||
*/ |
||||
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) { |
||||
/** |
||||
* try{ |
||||
... |
||||
} |
||||
* try 영역 안 코드들중 문제가 생기면 오는 곳. |
||||
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌 |
||||
*/ |
||||
log.error("IGNORE : ", e); |
||||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) |
||||
.body(new ErrorResponse("Server Error", "-1")); |
||||
|
||||
} |
||||
return ResponseEntity.ok().body(new SuccessResponse<>(result)); |
||||
|
||||
} |
||||
|
||||
/** |
||||
* FAQ 삭제하는 기능, |
||||
* 일련번호[sno]로 삭제하는 기능. |
||||
* @param sno |
||||
* @return |
||||
*/ |
||||
@DeleteMapping("/{sno}") |
||||
@Operation(summary = "FAQ 삭제", description = "특정 FAQ를 논리 삭제하는 API 입니다. sno 예시 : 1, 2, 등 ...") |
||||
public ResponseEntity<? extends BasicResponse> deleteFaq(@PathVariable("sno") int sno) { |
||||
// TODO 성공/실패 상태값 전송
|
||||
try { |
||||
service.deleteFaq(sno); // 일련번호[sno]로 삭제하는 기능
|
||||
} catch (BaseException e) { |
||||
/** |
||||
* try{ |
||||
... |
||||
} |
||||
* try 영역 안 코드들중 문제가 생기면 오는 곳. |
||||
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌 |
||||
*/ |
||||
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) { |
||||
/** |
||||
* try{ |
||||
... |
||||
} |
||||
* try 영역 안 코드들중 문제가 생기면 오는 곳. |
||||
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌 |
||||
*/ |
||||
log.error("IGNORE : ", e); |
||||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) |
||||
.body(new ErrorResponse("Server Error", "-1")); |
||||
|
||||
} |
||||
return ResponseEntity.ok().build(); |
||||
|
||||
} |
||||
} |
@ -1,126 +1,129 @@
|
||||
//package kr.co.palnet.kac.api.v1.cns.faq.service;
|
||||
//
|
||||
//
|
||||
//import jakarta.transaction.Transactional;
|
||||
//import kr.co.palnet.kac.api.v1.cns.faq.model.FaqListRq;
|
||||
//import kr.co.palnet.kac.api.v1.cns.faq.model.FaqListRs;
|
||||
//import kr.co.palnet.kac.core.code.ErrorCode;
|
||||
//import kr.co.palnet.kac.core.exception.BaseException;
|
||||
//import kr.co.palnet.kac.data.cns.model.CnsFaqBas;
|
||||
//import kr.co.palnet.kac.data.cns.repository.CnsFaqBasRepository;
|
||||
//import lombok.RequiredArgsConstructor;
|
||||
//import lombok.extern.slf4j.Slf4j;
|
||||
//import org.springframework.stereotype.Service;
|
||||
//
|
||||
//import java.util.ArrayList;
|
||||
//import java.util.List;
|
||||
//
|
||||
//@Slf4j
|
||||
//@Service
|
||||
//@RequiredArgsConstructor
|
||||
//public class CnsFaqService {
|
||||
//
|
||||
// private final CnsFaqQueryRepository query;
|
||||
// private final CnsFaqBasRepository cnsFaqBasRepository;
|
||||
// private final JwtTokenUtil jwtTokenUtil;
|
||||
//
|
||||
// /**
|
||||
// * FaQ 항목들 조회하는 기능.
|
||||
// * @param model
|
||||
// * @return
|
||||
// */
|
||||
// public List<FaqListRs> getFaqList(FaqListRq model){
|
||||
//
|
||||
// List<FaqListRs> result = query.getFaqList(model.getCategory(), model.getWord());
|
||||
//
|
||||
// if(result == null) result = new ArrayList<>();
|
||||
//
|
||||
// return result;
|
||||
//
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 일련번호[sno]로 상세정보를 조회하는 기능.
|
||||
// * @param sno
|
||||
// * @return
|
||||
// */
|
||||
// public FaqListRs getFaqDetail(int sno){
|
||||
// cnsFaqBasRepository.updateViewCnt(sno);
|
||||
// FaqListRs result = query.getFaqDetail(sno);
|
||||
// if(result == null) throw new BaseException(ErrorCode.DATA_NO);
|
||||
// return result;
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * FaQ 추가하는 기능.
|
||||
// * @param model
|
||||
// * @return
|
||||
// */
|
||||
// @Transactional
|
||||
// public boolean insertFaq(FaqListModel model){
|
||||
// String userId = jwtTokenUtil.getUserIdByToken();
|
||||
//
|
||||
// CnsFaqBas bas = new CnsFaqBas();
|
||||
//
|
||||
// bas.setCreateUserId(userId);
|
||||
// bas.setUpdateUserId(userId);
|
||||
//
|
||||
// bas.setCategory(model.getCategory());
|
||||
// bas.setContent(model.getContent());
|
||||
// bas.setExpsrYn(model.getExpsrYn());
|
||||
// bas.setTitle(model.getTitle());
|
||||
//
|
||||
// bas.setDelYn("N");
|
||||
// bas.setViewCnt(0);
|
||||
//
|
||||
// try {
|
||||
// CnsFaqBas saveEntity = cnsFaqBasRepository.save(bas);
|
||||
// if(saveEntity != null) return true;
|
||||
// else return false;
|
||||
// } catch(Exception e) {
|
||||
// // TODO parameter validate...??
|
||||
// throw new CustomException(ErrorCode.NON_VALID_PARAMETER);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * FaQ 수정하는 기능.
|
||||
// * @param model
|
||||
// * @return
|
||||
// */
|
||||
// @Transactional
|
||||
// public boolean updateFaq(FaqUpdateModel model) {
|
||||
// String userId = jwtTokenUtil.getUserIdByToken();
|
||||
//
|
||||
// CnsFaqBas prevData = cnsFaqBasRepository.findById(model.getFaqSno()).orElseThrow(() -> new CustomException(ErrorCode.DATA_NO));
|
||||
//
|
||||
// if(model.getCategory() != null) prevData.setCategory(model.getCategory());
|
||||
// if(model.getTitle() != null) prevData.setTitle(model.getTitle());
|
||||
// if(model.getContent() != null) prevData.setContent(model.getContent());
|
||||
// if(model.getExpsrYn() != null) prevData.setExpsrYn(model.getExpsrYn());
|
||||
// prevData.setUpdateUserId(userId);
|
||||
//
|
||||
//
|
||||
// try {
|
||||
// CnsFaqBas saveEntity = cnsFaqBasRepository.save(prevData);
|
||||
// if(saveEntity != null) return true;
|
||||
// else return false;
|
||||
// } catch(Exception e) {
|
||||
// // TODO parameter validate...??
|
||||
// throw new CustomException(ErrorCode.NON_VALID_PARAMETER);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 일련번호[sno]로 삭제하는 기능.
|
||||
// * @param sno
|
||||
// */
|
||||
// public void deleteFaq(int sno) {
|
||||
//
|
||||
// // TODO 반환값이 실행한 갯수인지 확인 필요
|
||||
// int delCnt = cnsFaqBasRepository.deleteFaq(sno);
|
||||
//
|
||||
// if(delCnt == 0) throw new CustomException(ErrorCode.DATA_NO);
|
||||
//
|
||||
// }
|
||||
//}
|
||||
package kr.co.palnet.kac.api.v1.cns.faq.service; |
||||
|
||||
|
||||
import jakarta.transaction.Transactional; |
||||
import kr.co.palnet.kac.api.v1.cns.faq.model.FaqListDto; |
||||
import kr.co.palnet.kac.api.v1.cns.faq.model.FaqListRq; |
||||
import kr.co.palnet.kac.api.v1.cns.faq.model.FaqListRs; |
||||
import kr.co.palnet.kac.api.v1.cns.faq.model.FaqUpdateDto; |
||||
import kr.co.palnet.kac.config.security.util.SessionHelper; |
||||
import kr.co.palnet.kac.core.exception.BaseErrorCode; |
||||
import kr.co.palnet.kac.core.exception.BaseException; |
||||
import kr.co.palnet.kac.data.cns.model.CnsFaqBas; |
||||
import kr.co.palnet.kac.data.cns.service.CnsFaqDomainService; |
||||
import lombok.RequiredArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
import java.util.List; |
||||
|
||||
@Slf4j |
||||
@Service |
||||
@RequiredArgsConstructor |
||||
public class CnsFaqService { |
||||
|
||||
private final CnsFaqDomainService cnsFaqDomainService; |
||||
|
||||
/** |
||||
* FaQ 항목들 조회하는 기능. |
||||
* @param model |
||||
* @return |
||||
*/ |
||||
public List<FaqListRs> getFaqList(FaqListRq model){ |
||||
|
||||
List<CnsFaqBas> result = cnsFaqDomainService.getFaqList(model.getCategory(), model.getWord()); |
||||
|
||||
if(result == null) return null; |
||||
|
||||
return result.stream().map(FaqListRs::toRs).toList(); |
||||
|
||||
} |
||||
|
||||
/** |
||||
* 일련번호[sno]로 상세정보를 조회하는 기능. |
||||
* @param sno |
||||
* @return |
||||
*/ |
||||
public FaqListRs getFaqDetail(int sno){ |
||||
cnsFaqDomainService.updateViewCnt(sno); |
||||
|
||||
CnsFaqBas result = cnsFaqDomainService.getFaqDetail(sno); |
||||
|
||||
if(result == null) throw new BaseException(BaseErrorCode.DATA_EMPTY); |
||||
|
||||
return FaqListRs.toRs(result); |
||||
} |
||||
|
||||
/** |
||||
* FaQ 추가하는 기능. |
||||
* @param model |
||||
* @return |
||||
*/ |
||||
@Transactional |
||||
public boolean insertFaq(FaqListDto model){ |
||||
String userId = SessionHelper.getUserId() == null ? "test" : SessionHelper.getUserId(); |
||||
|
||||
CnsFaqBas bas = new CnsFaqBas(); |
||||
|
||||
bas.setCreateUserId(userId); |
||||
bas.setUpdateUserId(userId); |
||||
|
||||
bas.setCategory(model.getCategory()); |
||||
bas.setContent(model.getContent()); |
||||
bas.setExpsrYn(model.getExpsrYn()); |
||||
bas.setTitle(model.getTitle()); |
||||
|
||||
bas.setDelYn("N"); |
||||
bas.setViewCnt(0); |
||||
|
||||
try { |
||||
CnsFaqBas saveEntity = cnsFaqDomainService.saveFaqBas(bas); |
||||
if(saveEntity != null) return true; |
||||
else return false; |
||||
} catch(Exception e) { |
||||
// TODO parameter validate...??
|
||||
throw new BaseException(BaseErrorCode.WEB_PARAM_INVALID); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* FaQ 수정하는 기능. |
||||
* @param model |
||||
* @return |
||||
*/ |
||||
@Transactional |
||||
public boolean updateFaq(FaqUpdateDto model) { |
||||
String userId = SessionHelper.getUserId() == null ? "test" : SessionHelper.getUserId(); |
||||
|
||||
CnsFaqBas prevData = cnsFaqDomainService.findById(model.getFaqSno()).orElseThrow(() -> new BaseException(BaseErrorCode.DATA_EMPTY)); |
||||
|
||||
if(model.getCategory() != null) prevData.setCategory(model.getCategory()); |
||||
if(model.getTitle() != null) prevData.setTitle(model.getTitle()); |
||||
if(model.getContent() != null) prevData.setContent(model.getContent()); |
||||
if(model.getExpsrYn() != null) prevData.setExpsrYn(model.getExpsrYn()); |
||||
prevData.setUpdateUserId(userId); |
||||
|
||||
|
||||
try { |
||||
CnsFaqBas saveEntity = cnsFaqDomainService.saveFaqBas(prevData); |
||||
if(saveEntity != null) return true; |
||||
else return false; |
||||
} catch(Exception e) { |
||||
// TODO parameter validate...??
|
||||
throw new BaseException(BaseErrorCode.WEB_PARAM_INVALID); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 일련번호[sno]로 삭제하는 기능. |
||||
* @param sno |
||||
*/ |
||||
public void deleteFaq(int sno) { |
||||
|
||||
// TODO 반환값이 실행한 갯수인지 확인 필요
|
||||
int delCnt = cnsFaqDomainService.deleteFaq(sno); |
||||
|
||||
if(delCnt == 0) throw new BaseException(BaseErrorCode.DATA_EMPTY); |
||||
|
||||
} |
||||
} |
Loading…
Reference in new issue