From a8a0b6c7a72793fb3fcfacfc8e5f190c2b9b30ef Mon Sep 17 00:00:00 2001 From: changkyu choi Date: Wed, 2 Oct 2024 11:01:12 +0900 Subject: [PATCH] =?UTF-8?q?Canvas=20=EC=83=81=ED=83=9C=20Api=20Exception?= =?UTF-8?q?=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../canvasStatus/CanvasStatusController.java | 11 ++- .../biz/canvasStatus/CanvasStatusMapper.java | 7 +- .../biz/canvasStatus/CanvasStatusService.java | 71 ++++++++++++++----- .../canvasStatus/canvasStatusMapper.xml | 11 +++ 4 files changed, 74 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusController.java b/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusController.java index c4af0807..eac5b83f 100644 --- a/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusController.java +++ b/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusController.java @@ -2,7 +2,6 @@ package com.interplug.qcast.biz.canvasStatus; import com.interplug.qcast.biz.canvasStatus.dto.CanvasStatus; import com.interplug.qcast.biz.canvasStatus.dto.CanvasStatusResponse; -import com.interplug.qcast.config.Exception.CanvasStatusException; import com.interplug.qcast.config.Exception.QcastException; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -20,26 +19,26 @@ public class CanvasStatusController { @Operation(description = "계정에 해당하는 전체 견적서를 조회 한다.") @GetMapping("/canvas-statuses/{userId}") - public List selectAllCanvasStatus(@PathVariable String userId) { + public List selectAllCanvasStatus(@PathVariable String userId) throws QcastException { return canvasStatusService.selectAllCanvasStatus(userId); } @Operation(description = "견적서를 조회 한다.") @GetMapping("/canvas-statuses/by-object/{objectNo}/{userId}") - public List selectObjectNoCanvasStatus(@PathVariable String objectNo, @PathVariable String userId) { + public List selectObjectNoCanvasStatus(@PathVariable String objectNo, @PathVariable String userId) throws QcastException { return canvasStatusService.selectObjectNoCanvasStatus(objectNo, userId); } @Operation(description = "견적서를 등록 한다.") @PostMapping("/canvas-statuses") @ResponseStatus(HttpStatus.CREATED) - public Integer insertCanvasStatus(@RequestBody CanvasStatus cs) throws CanvasStatusException { + public Integer insertCanvasStatus(@RequestBody CanvasStatus cs) throws QcastException { return canvasStatusService.insertCanvasStatus(cs); } @Operation(description = "견적서를 수정 한다.") @PutMapping("/canvas-statuses") - public void updateCanvasStatus(@RequestBody CanvasStatus cs) throws CanvasStatusException { + public void updateCanvasStatus(@RequestBody CanvasStatus cs) throws QcastException { canvasStatusService.updateCanvasStatus(cs); } @@ -53,7 +52,7 @@ public class CanvasStatusController { @Operation(description = "견적서의 이미지(템플릿)를 삭제 한다.") @DeleteMapping("/canvas-statuses/by-id/{id}") @ResponseStatus(HttpStatus.NO_CONTENT) - public void deleteIdCanvasStatus(@PathVariable Integer id) { + public void deleteIdCanvasStatus(@PathVariable Integer id) throws QcastException { canvasStatusService.deleteIdCanvasStatus(id); } diff --git a/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusMapper.java b/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusMapper.java index b70f863a..c76b892e 100644 --- a/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusMapper.java +++ b/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusMapper.java @@ -17,9 +17,9 @@ public interface CanvasStatusMapper { public CanvasStatus getCanvasStatusImageAdd(String objectNo); // 전체 견적서 조회 - public List selectAllCanvasStatus(String userId); + public List selectAllCanvasStatus(String userId); - // 견적서 조회(objectNo) + // 견적서 조회(objectNo/userId) public List selectObjectNoCanvasStatus(String objectNo, String userId); // 견적서 조회(Max id) @@ -28,6 +28,9 @@ public interface CanvasStatusMapper { // 견적서 조회(id별) public List getIdCanvasStatus(Integer id); + // 견적서 조회(objectNo) + public List getObjectNoCanvasStatus(String objectNo); + // 견적서 등록 public void insertCanvasStatus(CanvasStatus cs); diff --git a/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusService.java b/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusService.java index 06807321..3f8cefc3 100644 --- a/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusService.java +++ b/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusService.java @@ -2,31 +2,47 @@ package com.interplug.qcast.biz.canvasStatus; import com.interplug.qcast.biz.canvasStatus.dto.CanvasStatus; import com.interplug.qcast.biz.canvasStatus.dto.CanvasStatusResponse; -import com.interplug.qcast.config.Exception.CanvasStatusException; +import com.interplug.qcast.config.Exception.ErrorCode; +import com.interplug.qcast.config.Exception.QcastException; import lombok.RequiredArgsConstructor; import java.util.List; -import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor public class CanvasStatusService { - private final CanvasStatusMapper canvasStatusMapper; + private final CanvasStatusMapper canvasStatusMapper; - // 전체 견적서 조회 - public List selectAllCanvasStatus(String userId) { - return canvasStatusMapper.selectAllCanvasStatus(userId); - } + // 전체 견적서 조회 + public List selectAllCanvasStatus(String userId) throws QcastException { + List result = null; + + if (userId != null && !userId.trim().isEmpty()) { + result = canvasStatusMapper.selectAllCanvasStatus(userId); + } else { + throw new QcastException (ErrorCode.INVALID_INPUT_VALUE ,"올바르지 않은 입력값입니다."); + } + + return result; + } // 견적서 조회(objectNo) - public List selectObjectNoCanvasStatus(String objectNo, String userId) { - return canvasStatusMapper.selectObjectNoCanvasStatus(objectNo, userId); + public List selectObjectNoCanvasStatus(String objectNo, String userId) throws QcastException { + List result = null; + + if (objectNo != null && !objectNo.trim().isEmpty() && userId != null && !userId.trim().isEmpty()) { + result = canvasStatusMapper.selectObjectNoCanvasStatus(objectNo, userId); + } else { + throw new QcastException (ErrorCode.INVALID_INPUT_VALUE ,"올바르지 않은 입력값입니다."); + } + + return result; } // 견적서 등록 - public Integer insertCanvasStatus(CanvasStatus cs) throws CanvasStatusException { + public Integer insertCanvasStatus(CanvasStatus cs) throws QcastException { Integer id = 0; @@ -39,16 +55,19 @@ public class CanvasStatusService { id = maxId.get(0).getId(); } catch (Exception e) { - throw new CanvasStatusException("견적서 등록 중 오류 발생"); + throw new QcastException (ErrorCode.INVALID_INPUT_VALUE ,"견적서 등록 중 오류 발생"); } // 생성된 id 반환 return id; - } // 견적서 수정 - public void updateCanvasStatus(CanvasStatus cs) throws CanvasStatusException { + public void updateCanvasStatus(CanvasStatus cs) throws QcastException { + + if (cs.getId() == null) { + throw new QcastException (ErrorCode.INVALID_INPUT_VALUE ,"올바르지 않은 입력값입니다."); + } // 먼저 데이터가 존재하는지 확인 List existingStatus = canvasStatusMapper.getIdCanvasStatus(cs.getId()); @@ -57,20 +76,36 @@ public class CanvasStatusService { if (existingStatus.size() > 0) { canvasStatusMapper.updateCanvasStatus(cs); } else { - throw new CanvasStatusException("수정할 견적서가 존재하지 않습니다."); + throw new QcastException (ErrorCode.NOT_FOUND ,"수정할 견적서가 존재하지 않습니다."); } } // 전체 견적서 삭제 - public void deleteObjectNoCanvasStatus(String objectNo) { + public void deleteObjectNoCanvasStatus(String objectNo) throws QcastException { - canvasStatusMapper.deleteObjectNoCanvasStatus(objectNo); + if (objectNo == null || objectNo.trim().isEmpty()) { + throw new QcastException (ErrorCode.INVALID_INPUT_VALUE ,"올바르지 않은 입력값입니다."); + } + + // 먼저 데이터가 존재하는지 확인 + List existingStatus = canvasStatusMapper.getObjectNoCanvasStatus(objectNo); + + // 데이터가 존재하지 않으면 수정하지 않고 예외를 던짐 + if (existingStatus.size() > 0) { + canvasStatusMapper.deleteObjectNoCanvasStatus(objectNo); + } else { + throw new QcastException (ErrorCode.NOT_FOUND ,"삭제할 견적서가 존재하지 않습니다."); + } } // 이미지(템플릿) 삭제 - public void deleteIdCanvasStatus(Integer id) { + public void deleteIdCanvasStatus(Integer id) throws QcastException { + + if (id == null) { + throw new QcastException (ErrorCode.INVALID_INPUT_VALUE ,"올바르지 않은 입력값입니다."); + } // 먼저 데이터가 존재하는지 확인 List existingStatus = canvasStatusMapper.getIdCanvasStatus(id); @@ -79,7 +114,7 @@ public class CanvasStatusService { if (existingStatus.size() > 0) { canvasStatusMapper.deleteIdCanvasStatus(id); } else { - throw new IllegalArgumentException("삭제할 견적서가 존재하지 않습니다."); + throw new QcastException (ErrorCode.NOT_FOUND ,"삭제할 견적서가 존재하지 않습니다."); } } diff --git a/src/main/resources/mappers/canvasStatus/canvasStatusMapper.xml b/src/main/resources/mappers/canvasStatus/canvasStatusMapper.xml index d236b9f5..14a551bf 100644 --- a/src/main/resources/mappers/canvasStatus/canvasStatusMapper.xml +++ b/src/main/resources/mappers/canvasStatus/canvasStatusMapper.xml @@ -45,7 +45,9 @@ , last_edit_datetime FROM TB_CANVAS_STATUS WHERE object_no = #{objectNo} + AND user_id = #{userId} + /* sqlid : com.interplug.qcast.canvasStatus.getIdCanvasStatus 견적서 조회(id별) */ @@ -64,6 +67,14 @@ WHERE id = #{id} + + /* sqlid : com.interplug.qcast.canvasStatus.insertCanvasStatus 견적서 등록 */ INSERT INTO TB_CANVAS_STATUS