From 8e746e9d7d04e3a25be238c36c69e7c355d9102d Mon Sep 17 00:00:00 2001 From: User Date: Mon, 19 Aug 2024 08:23:31 +0900 Subject: [PATCH] canvas thumbnail CRUD --- .../canvasStatus/CanvasStatusController.java | 63 ++++++++++ .../biz/canvasStatus/CanvasStatusMapper.java | 37 ++++++ .../biz/canvasStatus/CanvasStatusService.java | 66 ++++++++++ .../biz/canvasStatus/dto/CanvasStatusDto.java | 20 +++ .../canvasStatus/canvasStatusMapper.xml | 116 ++++++++++++++++++ 5 files changed, 302 insertions(+) create mode 100644 src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusController.java create mode 100644 src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusMapper.java create mode 100644 src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusService.java create mode 100644 src/main/java/com/interplug/qcast/biz/canvasStatus/dto/CanvasStatusDto.java create mode 100644 src/main/resources/mappers/canvasStatus/canvasStatusMapper.xml diff --git a/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusController.java b/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusController.java new file mode 100644 index 00000000..f88e3e3a --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusController.java @@ -0,0 +1,63 @@ +package com.interplug.qcast.biz.canvasStatus; + +import com.interplug.qcast.biz.canvasStatus.dto.CanvasStatusDto; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +@Slf4j +@RestController +@RequestMapping("/api/canvasStatus") +@RequiredArgsConstructor +public class CanvasStatusController { + // @Autowired private CanvasStatusService canvasStatusService; + private final CanvasStatusService canvasStatusService; + + @PostMapping("/v1.0/canvasStatus") + public void canvasStatus(@RequestBody CanvasStatusDto cs) { + log.warn(String.valueOf(log.isDebugEnabled())); + if (log.isDebugEnabled()) { + log.debug("userId : " + cs.getUserId()); + log.debug("objectNo : " + cs.getObjectNo()); + log.debug("imageName : " + cs.getImageName()); + log.debug("canvasStatus : " + cs.getCanvasStatus()); + } + } + + // 전체 견적서 조회 + @GetMapping("/{userId}") + public CanvasStatusDto selectAllCanvasStatus(@RequestBody CanvasStatusDto cs) { + return canvasStatusService.selectAllCanvasStatus(cs); + } + + // 견적서 조회 + @GetMapping("/{objectNo}") + public CanvasStatusDto selectObjectNoCanvasStatus(@RequestBody CanvasStatusDto cs) { + return canvasStatusService.selectObjectNoCanvasStatus(cs); + } + + // 견적서 등록 + @PostMapping + public void insertCanvasStatus(@RequestBody CanvasStatusDto cs) { + canvasStatusService.insertCanvasStatus(cs); + } + + // 견적서 수정 + @PutMapping + public void updateCanvasStatus(@RequestBody CanvasStatusDto cs) { + canvasStatusService.updateCanvasStatus(cs); + } + + // 견적서 삭제 + @DeleteMapping("/{objectNo}") + public void deleteObjectNoCanvasStatus(@PathVariable String objectNo) { + canvasStatusService.deleteObjectNoCanvasStatus(objectNo); + } + + // 이미지(템플릿) 삭제 + @DeleteMapping + public void deleteImageNameCanvasStatus(@RequestBody CanvasStatusDto cs) { + canvasStatusService.deleteImageNameCanvasStatus(cs); + } + +} diff --git a/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusMapper.java b/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusMapper.java new file mode 100644 index 00000000..2de603c1 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusMapper.java @@ -0,0 +1,37 @@ +package com.interplug.qcast.biz.canvasStatus; + +import com.interplug.qcast.biz.canvasStatus.dto.CanvasStatusDto; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +interface CanvasStatusMapper { + + // 견적서(objectNo) 존재 확인 + public CanvasStatusDto getCanvasStatusByObjectNo(String objectNo); + + // 이미지(템플릿) 존재 확인 + public CanvasStatusDto getCanvasStatusByImageName(String objectNo, String imageName); + + // 전체 견적서 조회 + public CanvasStatusDto selectAllCanvasStatus(CanvasStatusDto cs); + + // 견적서 조회 + public CanvasStatusDto selectObjectNoCanvasStatus(CanvasStatusDto cs); + + // 신규 견적서 등록 + public void insertNewCanvasStatus(CanvasStatusDto cs); + + // 이미지(템플릿) 추가 등록 + public void insertImageAddCanvasStatus(CanvasStatusDto cs); + + // 견적서 수정 + public void updateCanvasStatus(CanvasStatusDto cs); + + // 견적서 삭제 + public void deleteObjectNoCanvasStatus(String objectNo); + + // 이미지(템플릿) 삭제 + public void deleteImageNameCanvasStatus(CanvasStatusDto cs); + + +} \ No newline at end of file diff --git a/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusService.java b/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusService.java new file mode 100644 index 00000000..5f8edfc3 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusService.java @@ -0,0 +1,66 @@ +package com.interplug.qcast.biz.canvasStatus; + +import com.interplug.qcast.biz.canvasStatus.dto.CanvasStatusDto; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +@RequiredArgsConstructor +public class CanvasStatusService { + // @Autowired CanvasStatusMapper canvasStatusMapper; + private final CanvasStatusMapper canvasStatusMapper; + + // 전체 견적서 조회 + public CanvasStatusDto selectAllCanvasStatus(CanvasStatusDto cs) { + return canvasStatusMapper.selectAllCanvasStatus(cs); + } + + // 견적서 조회 + public CanvasStatusDto selectObjectNoCanvasStatus(CanvasStatusDto cs) { + return canvasStatusMapper.selectObjectNoCanvasStatus(cs); + } + + // 견적서 등록 + public void insertCanvasStatus(CanvasStatusDto cs) { + + // 견적서(objectNo) 존재 확인 + CanvasStatusDto existingStatus = canvasStatusMapper.getCanvasStatusByObjectNo(cs.getObjectNo()); + + if (existingStatus == null) { + // 견적서(objectNo)가 존재하지 않으면 새로 생성 + canvasStatusMapper.insertNewCanvasStatus(cs); + } else { + // 견적서 이미지 추가 등록 + // 견적서(objectNo)가 존재하면 해당 objectNo Row 추가 후 imageName +1 추가 + canvasStatusMapper.insertImageAddCanvasStatus(cs); + } + } + + // 견적서 수정 + public void updateCanvasStatus(CanvasStatusDto cs) { + + // 이미지(템플릿) 존재 확인 + CanvasStatusDto existingStatus = canvasStatusMapper.getCanvasStatusByImageName(cs.getObjectNo(), cs.getImageName()); + + if (existingStatus == null) { + // 이미지(템플릿)가 존재하지 않으면 새로 생성 + canvasStatusMapper.insertNewCanvasStatus(cs); + } else { + // 이미지(템플릿)가 존재하면 update 처리 + canvasStatusMapper.updateCanvasStatus(cs); + } + } + + // 견적서 삭제 + public void deleteObjectNoCanvasStatus(String objectNo) { + canvasStatusMapper.deleteObjectNoCanvasStatus(objectNo); + } + + // 이미지(템플릿) 삭제 + public void deleteImageNameCanvasStatus(CanvasStatusDto cs) { + canvasStatusMapper.deleteImageNameCanvasStatus(cs); + } + +} diff --git a/src/main/java/com/interplug/qcast/biz/canvasStatus/dto/CanvasStatusDto.java b/src/main/java/com/interplug/qcast/biz/canvasStatus/dto/CanvasStatusDto.java new file mode 100644 index 00000000..a19b25d7 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/canvasStatus/dto/CanvasStatusDto.java @@ -0,0 +1,20 @@ +package com.interplug.qcast.biz.canvasStatus.dto; + +import java.sql.Date; + +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +@Data +@Getter +@Setter +public class CanvasStatusDto { + private int id; //PK ID + private String userId; //사용자 ID + private String objectNo; //견적서 번호 + private String imageName; //이미지명 + private String canvasStatus; //캠버스 상태 + private Date registDatetime; //생성일시 + private Date lastEditDatetime; //수정일시 +} diff --git a/src/main/resources/mappers/canvasStatus/canvasStatusMapper.xml b/src/main/resources/mappers/canvasStatus/canvasStatusMapper.xml new file mode 100644 index 00000000..07b550ed --- /dev/null +++ b/src/main/resources/mappers/canvasStatus/canvasStatusMapper.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + /* sqlid : com.interplug.qcast.canvasStatus.insertNewCanvasStatus 신규 견적서 등록 */ + INSERT INTO TB_CANVAS_STATUS + ( + user_id + , object_no + , image_name + , canvas_status + , regist_datetime + ) + VALUES ( + #{userId} + , ( SELECT #{userId} + FORMAT(GETDATE(), 'yyMMdd') + RIGHT('000' + CAST(ISNULL(MAX(CAST(RIGHT(object_no, 3) AS INT)), 0) + 1 AS VARCHAR(3)), 3) + FROM TB_CANVAS_STATUS + WHERE object_no LIKE #{userId} + FORMAT(GETDATE(), 'yyMMdd') + '%' ) + , 'image01' + , #{canvasStatus} + , GETDATE() + ) + + + + /* sqlid : com.interplug.qcast.canvasStatus.insertImageAddCanvasStatus 이미지(템플릿) 추가 등록 */ + INSERT INTO TB_CANVAS_STATUS + ( + user_id + , object_no + , image_name + , canvas_status + , regist_datetime + ) + VALUES ( + #{userId} + , #{objectNo} + , ( SELECT 'image' + RIGHT('00' + CAST(ISNULL(MAX(CAST(RIGHT(image_name, 2) AS INT)), 0) + 1 AS VARCHAR(2)), 2) + FROM TB_CANVAS_STATUS + WHERE object_no = #{objectNo} ) + , #{canvasStatus} + , GETDATE() + ) + + + + /* sqlid : com.interplug.qcast.canvasStatus.updateCanvasStatus 견적서 수정 */ + UPDATE TB_CANVAS_STATUS + SET canvas_status = #{canvasStatus} + , last_edit_datetime = GETDATE() + WHERE object_no = #{objectNo} + AND image_name = #{imageName} + + + + /* sqlid : com.interplug.qcast.canvasStatus.deleteObjectNoCanvasStatus 견적서 삭제 */ + DELETE FROM TB_CANVAS_STATUS + WHERE object_no = #{objectNo} + + + + /* sqlid : com.interplug.qcast.canvasStatus.deleteImageNameCanvasStatus 이미지(템플릿) 삭제 */ + DELETE FROM TB_CANVAS_STATUS + WHERE object_no = #{objectNo} + AND image_name = #{imageName} + + + \ No newline at end of file