From 13a73bf0ea81e0a3b7ba8bf7036cfeb955bc0062 Mon Sep 17 00:00:00 2001 From: JeonHaeseung <414catherine@gmail.com> Date: Wed, 1 May 2024 19:22:15 +0900 Subject: [PATCH 1/3] =?UTF-8?q?[feat]=20=EC=8A=A4=EC=BC=80=EC=A5=B4=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD(update)=20API=20=EA=B0=9C=EB=B0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/category/CategoryRepository.java | 10 +++++ .../entity/Category.java | 3 +- .../domain/schedule/ScheduleController.java | 34 +++++++-------- .../domain/schedule/ScheduleService.java | 18 ++++++++ .../schedule/dto/request/PutScheduleDto.java | 42 +++++++++++++++++++ .../domain/schedule/entity/Schedule.java | 9 ++++ 6 files changed, 95 insertions(+), 21 deletions(-) create mode 100644 src/main/java/Ness/Backend/domain/category/CategoryRepository.java rename src/main/java/Ness/Backend/domain/{schedule => category}/entity/Category.java (79%) create mode 100644 src/main/java/Ness/Backend/domain/schedule/dto/request/PutScheduleDto.java diff --git a/src/main/java/Ness/Backend/domain/category/CategoryRepository.java b/src/main/java/Ness/Backend/domain/category/CategoryRepository.java new file mode 100644 index 0000000..6b86cf5 --- /dev/null +++ b/src/main/java/Ness/Backend/domain/category/CategoryRepository.java @@ -0,0 +1,10 @@ +package Ness.Backend.domain.category; + +import Ness.Backend.domain.category.entity.Category; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface CategoryRepository extends JpaRepository { + Category findCategoryById(Long id); +} diff --git a/src/main/java/Ness/Backend/domain/schedule/entity/Category.java b/src/main/java/Ness/Backend/domain/category/entity/Category.java similarity index 79% rename from src/main/java/Ness/Backend/domain/schedule/entity/Category.java rename to src/main/java/Ness/Backend/domain/category/entity/Category.java index 13a692c..2a082fd 100644 --- a/src/main/java/Ness/Backend/domain/schedule/entity/Category.java +++ b/src/main/java/Ness/Backend/domain/category/entity/Category.java @@ -1,5 +1,6 @@ -package Ness.Backend.domain.schedule.entity; +package Ness.Backend.domain.category.entity; +import Ness.Backend.domain.schedule.entity.Schedule; import jakarta.persistence.*; import lombok.Getter; diff --git a/src/main/java/Ness/Backend/domain/schedule/ScheduleController.java b/src/main/java/Ness/Backend/domain/schedule/ScheduleController.java index b02712c..4b9649a 100644 --- a/src/main/java/Ness/Backend/domain/schedule/ScheduleController.java +++ b/src/main/java/Ness/Backend/domain/schedule/ScheduleController.java @@ -3,6 +3,7 @@ import Ness.Backend.domain.member.entity.Member; import Ness.Backend.domain.schedule.dto.request.PostScheduleDto; import Ness.Backend.domain.schedule.dto.request.PostScheduleTimeDto; +import Ness.Backend.domain.schedule.dto.request.PutScheduleDto; import Ness.Backend.domain.schedule.dto.response.GetOneMonthSchedulesDto; import Ness.Backend.global.auth.AuthUser; import io.swagger.v3.oas.annotations.Operation; @@ -19,25 +20,25 @@ public class ScheduleController { private final ScheduleService scheduleService; - @GetMapping("/dev") - @Operation(summary = "개발 테스트용 특정 사용자의 한달치 스케쥴 내역", description = "&month=2024-01 와 같은 형식으로 데이터가 전달됩니다.") - public ResponseEntity getUserSchedule(@RequestParam String month){ - GetOneMonthSchedulesDto oneUserMonthSchedules = scheduleService.getOneMonthUserSchedule(1L, month); + @GetMapping("") + @Operation(summary = "특정 사용자의 한달치 스케쥴 내역", description = "&month=2024-01 와 같은 형식으로 데이터가 전달됩니다.") + public ResponseEntity getUserSchedule(@AuthUser Member member, @RequestParam String month){ + GetOneMonthSchedulesDto oneUserMonthSchedules = scheduleService.getOneMonthUserSchedule(member.getId(), month); return new ResponseEntity<>(oneUserMonthSchedules, HttpStatusCode.valueOf(200)); } - @PostMapping("/new/dev") - @Operation(summary = "개발 테스트용 새로운 스케쥴 내역", description = "새로운 스케쥴 내역 저장하는 API 입니다.") - public ResponseEntity postUserSchedule(@RequestBody PostScheduleDto postScheduleDto){ - Long userId = scheduleService.postNewUserSchedule(1L, postScheduleDto); + @PostMapping("") + @Operation(summary = "새로운 스케쥴 생성", description = "새로운 스케쥴 내역 저장하는 API 입니다.") + public ResponseEntity postUserSchedule(@AuthUser Member member, @RequestBody PostScheduleDto postScheduleDto){ + Long userId = scheduleService.postNewUserSchedule(member.getId(), postScheduleDto); return new ResponseEntity<>(userId, HttpStatusCode.valueOf(201)); } - @GetMapping("") - @Operation(summary = "특정 사용자의 한달치 스케쥴 내역", description = "&month=2024-01 와 같은 형식으로 데이터가 전달됩니다.") - public ResponseEntity getUserSchedule(@AuthUser Member member, @RequestParam String month){ - GetOneMonthSchedulesDto oneUserMonthSchedules = scheduleService.getOneMonthUserSchedule(member.getId(), month); - return new ResponseEntity<>(oneUserMonthSchedules, HttpStatusCode.valueOf(200)); + @PutMapping("") + @Operation(summary = "하나의 스케쥴 변경", description = "하나의 스케쥴의 정보를 변경하는 API로 스케쥴, 위치, 사람, 시간 모두 PUT으로 처리합니다.") + public ResponseEntity putUserSchedule(@AuthUser Member member, @RequestBody PutScheduleDto putScheduleDto){ + Long userId = scheduleService.changeSchedule(member.getId(), putScheduleDto); + return new ResponseEntity<>(userId, HttpStatusCode.valueOf(200)); } @PostMapping("/time") @@ -46,11 +47,4 @@ public ResponseEntity postUserScheduleTime(@AuthUser Member member, @RequestB scheduleService.changeScheduleTime(member.getId(), postScheduleTimeDto); return new ResponseEntity<>(HttpStatusCode.valueOf(200)); } - - @PostMapping("/new") - @Operation(summary = "새로운 스케쥴 내역", description = "새로운 스케쥴 내역 저장하는 API 입니다.") - public ResponseEntity postUserSchedule(@AuthUser Member member, @RequestBody PostScheduleDto postScheduleDto){ - Long userId = scheduleService.postNewUserSchedule(member.getId(), postScheduleDto); - return new ResponseEntity<>(userId, HttpStatusCode.valueOf(201)); - } } \ No newline at end of file diff --git a/src/main/java/Ness/Backend/domain/schedule/ScheduleService.java b/src/main/java/Ness/Backend/domain/schedule/ScheduleService.java index f26d61a..497b958 100644 --- a/src/main/java/Ness/Backend/domain/schedule/ScheduleService.java +++ b/src/main/java/Ness/Backend/domain/schedule/ScheduleService.java @@ -1,10 +1,13 @@ package Ness.Backend.domain.schedule; +import Ness.Backend.domain.category.CategoryRepository; +import Ness.Backend.domain.category.entity.Category; import Ness.Backend.domain.member.MemberRepository; import Ness.Backend.domain.member.entity.Member; import Ness.Backend.domain.schedule.dto.request.PostFastApiScheduleDto; import Ness.Backend.domain.schedule.dto.request.PostScheduleDto; import Ness.Backend.domain.schedule.dto.request.PostScheduleTimeDto; +import Ness.Backend.domain.schedule.dto.request.PutScheduleDto; import Ness.Backend.domain.schedule.dto.response.GetOneMonthSchedulesDto; import Ness.Backend.domain.schedule.dto.response.GetScheduleDetailDto; import Ness.Backend.domain.schedule.dto.response.GetScheduleDto; @@ -28,6 +31,7 @@ public class ScheduleService { private final ScheduleRepository scheduleRepository; private final MemberRepository memberRepository; + private final CategoryRepository categoryRepository; private final FastApiScheduleApi fastApiScheduleApi; @Transactional(readOnly = true) @@ -63,6 +67,20 @@ public void changeScheduleTime(Long id, PostScheduleTimeDto postScheduleTimeDto) schedule.changeTime(postScheduleTimeDto.getStartTime(), postScheduleTimeDto.getEndTime()); } + @Transactional + public Long changeSchedule(Long id, PutScheduleDto putScheduleDto){ + Schedule schedule = scheduleRepository.findScheduleById(putScheduleDto.getId()); + Category category = categoryRepository.findCategoryById(putScheduleDto.getCategoryNum()); + schedule.changeSchedule( + putScheduleDto.getInfo(), + putScheduleDto.getLocation(), + putScheduleDto.getPerson(), + putScheduleDto.getStartTime(), + putScheduleDto.getEndTime(), + category); + return schedule.getId(); + } + public Long postNewUserSchedule(Long id, PostScheduleDto postScheduleDto){ log.info("postNewUserSchedule called by "+ id); Member memberEntity = memberRepository.findMemberById(id); diff --git a/src/main/java/Ness/Backend/domain/schedule/dto/request/PutScheduleDto.java b/src/main/java/Ness/Backend/domain/schedule/dto/request/PutScheduleDto.java new file mode 100644 index 0000000..683182b --- /dev/null +++ b/src/main/java/Ness/Backend/domain/schedule/dto/request/PutScheduleDto.java @@ -0,0 +1,42 @@ +package Ness.Backend.domain.schedule.dto.request; + + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.ZonedDateTime; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class PutScheduleDto { + @Schema(description = "스케쥴의 DB 기본키", example = "1") + @JsonProperty("id") + private Long id; + + @Schema(description = "스케쥴 텍스트 내용", example = "AI 공부") + @JsonProperty("title") + private String info; + + @Schema(description = "스케쥴 위치", example = "이화여대 ECC") + private String location; + + @Schema(description = "스케쥴 사람", example = "영희") + private String person; + + @Schema(description = "스케쥴 시작 시간", example = "2024-03-08T15:07:27.056103+09:00") + @JsonProperty("start") + private ZonedDateTime startTime; + + @Schema(description = "스케쥴 끝 시간", example = "2024-03-08T15:07:27.056103+09:00") + @JsonProperty("end") + private ZonedDateTime endTime; + + @Schema(description = "스케쥴 카테고리 DB 넘버", example = "공부") + private Long categoryNum; +} \ No newline at end of file diff --git a/src/main/java/Ness/Backend/domain/schedule/entity/Schedule.java b/src/main/java/Ness/Backend/domain/schedule/entity/Schedule.java index 4b244c8..31795f1 100644 --- a/src/main/java/Ness/Backend/domain/schedule/entity/Schedule.java +++ b/src/main/java/Ness/Backend/domain/schedule/entity/Schedule.java @@ -1,5 +1,6 @@ package Ness.Backend.domain.schedule.entity; +import Ness.Backend.domain.category.entity.Category; import Ness.Backend.domain.chat.entity.Chat; import Ness.Backend.domain.member.entity.Member; import jakarta.persistence.*; @@ -59,4 +60,12 @@ public void changeTime(ZonedDateTime startTime, ZonedDateTime endTime){ this.endTime = endTime; } + public void changeSchedule(String info, String location, String person, ZonedDateTime startTime, ZonedDateTime endTime, Category category){ + this.info = info; + this.location = location; + this.person = person; + this.startTime = startTime; + this.endTime = endTime; + this.category = category; + } } From 3a473b2365f7f6e3c0fd220607723e939c4511da Mon Sep 17 00:00:00 2001 From: JeonHaeseung <414catherine@gmail.com> Date: Wed, 1 May 2024 19:24:11 +0900 Subject: [PATCH 2/3] =?UTF-8?q?[refactor]=20=EC=8B=9C=EA=B0=84=EB=A7=8C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=ED=95=98=EB=8A=94=20API=20=EC=82=AD=EC=A0=9C?= =?UTF-8?q?,=20=EC=A0=84=EC=B2=B4=20PUT=EC=9C=BC=EB=A1=9C=20=ED=86=B5?= =?UTF-8?q?=ED=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/schedule/ScheduleController.java | 8 ------ .../domain/schedule/ScheduleService.java | 6 ---- .../dto/request/PostScheduleTimeDto.java | 28 ------------------- .../domain/schedule/entity/Schedule.java | 5 ---- 4 files changed, 47 deletions(-) delete mode 100644 src/main/java/Ness/Backend/domain/schedule/dto/request/PostScheduleTimeDto.java diff --git a/src/main/java/Ness/Backend/domain/schedule/ScheduleController.java b/src/main/java/Ness/Backend/domain/schedule/ScheduleController.java index 4b9649a..6ae3fe7 100644 --- a/src/main/java/Ness/Backend/domain/schedule/ScheduleController.java +++ b/src/main/java/Ness/Backend/domain/schedule/ScheduleController.java @@ -2,7 +2,6 @@ import Ness.Backend.domain.member.entity.Member; import Ness.Backend.domain.schedule.dto.request.PostScheduleDto; -import Ness.Backend.domain.schedule.dto.request.PostScheduleTimeDto; import Ness.Backend.domain.schedule.dto.request.PutScheduleDto; import Ness.Backend.domain.schedule.dto.response.GetOneMonthSchedulesDto; import Ness.Backend.global.auth.AuthUser; @@ -40,11 +39,4 @@ public ResponseEntity putUserSchedule(@AuthUser Member member, @RequestBod Long userId = scheduleService.changeSchedule(member.getId(), putScheduleDto); return new ResponseEntity<>(userId, HttpStatusCode.valueOf(200)); } - - @PostMapping("/time") - @Operation(summary = "특정 스케쥴의 시간을 바꾸는 API입니다.", description = "&month=2024-01 와 같은 형식으로 데이터가 전달됩니다.") - public ResponseEntity postUserScheduleTime(@AuthUser Member member, @RequestBody PostScheduleTimeDto postScheduleTimeDto){ - scheduleService.changeScheduleTime(member.getId(), postScheduleTimeDto); - return new ResponseEntity<>(HttpStatusCode.valueOf(200)); - } } \ No newline at end of file diff --git a/src/main/java/Ness/Backend/domain/schedule/ScheduleService.java b/src/main/java/Ness/Backend/domain/schedule/ScheduleService.java index 497b958..5009b05 100644 --- a/src/main/java/Ness/Backend/domain/schedule/ScheduleService.java +++ b/src/main/java/Ness/Backend/domain/schedule/ScheduleService.java @@ -6,7 +6,6 @@ import Ness.Backend.domain.member.entity.Member; import Ness.Backend.domain.schedule.dto.request.PostFastApiScheduleDto; import Ness.Backend.domain.schedule.dto.request.PostScheduleDto; -import Ness.Backend.domain.schedule.dto.request.PostScheduleTimeDto; import Ness.Backend.domain.schedule.dto.request.PutScheduleDto; import Ness.Backend.domain.schedule.dto.response.GetOneMonthSchedulesDto; import Ness.Backend.domain.schedule.dto.response.GetScheduleDetailDto; @@ -62,11 +61,6 @@ public GetOneMonthSchedulesDto getOneMonthUserSchedule(Long id, String date){ return new GetOneMonthSchedulesDto(getScheduleDtos); } - public void changeScheduleTime(Long id, PostScheduleTimeDto postScheduleTimeDto){ - Schedule schedule = scheduleRepository.findScheduleById(postScheduleTimeDto.getId()); - schedule.changeTime(postScheduleTimeDto.getStartTime(), postScheduleTimeDto.getEndTime()); - } - @Transactional public Long changeSchedule(Long id, PutScheduleDto putScheduleDto){ Schedule schedule = scheduleRepository.findScheduleById(putScheduleDto.getId()); diff --git a/src/main/java/Ness/Backend/domain/schedule/dto/request/PostScheduleTimeDto.java b/src/main/java/Ness/Backend/domain/schedule/dto/request/PostScheduleTimeDto.java deleted file mode 100644 index 673c21a..0000000 --- a/src/main/java/Ness/Backend/domain/schedule/dto/request/PostScheduleTimeDto.java +++ /dev/null @@ -1,28 +0,0 @@ -package Ness.Backend.domain.schedule.dto.request; - -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.time.ZonedDateTime; - -@Data -@NoArgsConstructor -@AllArgsConstructor -@Builder -public class PostScheduleTimeDto { - @Schema(description = "스케쥴의 DB 기본키", example = "1") - @JsonProperty("id") - private Long id; - - @Schema(description = "스케쥴 시작 시간", example = "2024-03-08T15:07:27.056103+09:00") - @JsonProperty("start") - private ZonedDateTime startTime; - - @Schema(description = "스케쥴 끝 시간", example = "2024-03-08T15:07:27.056103+09:00") - @JsonProperty("end") - private ZonedDateTime endTime; -} diff --git a/src/main/java/Ness/Backend/domain/schedule/entity/Schedule.java b/src/main/java/Ness/Backend/domain/schedule/entity/Schedule.java index 31795f1..a6b7b9b 100644 --- a/src/main/java/Ness/Backend/domain/schedule/entity/Schedule.java +++ b/src/main/java/Ness/Backend/domain/schedule/entity/Schedule.java @@ -55,11 +55,6 @@ public Schedule(Long id, String info, String location, String person, ZonedDateT this.chat = chat; } - public void changeTime(ZonedDateTime startTime, ZonedDateTime endTime){ - this.startTime = startTime; - this.endTime = endTime; - } - public void changeSchedule(String info, String location, String person, ZonedDateTime startTime, ZonedDateTime endTime, Category category){ this.info = info; this.location = location; From 93c64a806074ac57a7c07968e4ebf77492777b89 Mon Sep 17 00:00:00 2001 From: JeonHaeseung <414catherine@gmail.com> Date: Wed, 1 May 2024 19:28:50 +0900 Subject: [PATCH 3/3] =?UTF-8?q?[feat]=20=EC=9D=BC=EC=A0=95=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20API=20=EA=B0=9C=EB=B0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Backend/domain/schedule/ScheduleController.java | 11 +++++++++-- .../Ness/Backend/domain/schedule/ScheduleService.java | 6 ++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/java/Ness/Backend/domain/schedule/ScheduleController.java b/src/main/java/Ness/Backend/domain/schedule/ScheduleController.java index 6ae3fe7..502185b 100644 --- a/src/main/java/Ness/Backend/domain/schedule/ScheduleController.java +++ b/src/main/java/Ness/Backend/domain/schedule/ScheduleController.java @@ -28,15 +28,22 @@ public ResponseEntity getUserSchedule(@AuthUser Member @PostMapping("") @Operation(summary = "새로운 스케쥴 생성", description = "새로운 스케쥴 내역 저장하는 API 입니다.") - public ResponseEntity postUserSchedule(@AuthUser Member member, @RequestBody PostScheduleDto postScheduleDto){ + public ResponseEntity postOneSchedule(@AuthUser Member member, @RequestBody PostScheduleDto postScheduleDto){ Long userId = scheduleService.postNewUserSchedule(member.getId(), postScheduleDto); return new ResponseEntity<>(userId, HttpStatusCode.valueOf(201)); } @PutMapping("") @Operation(summary = "하나의 스케쥴 변경", description = "하나의 스케쥴의 정보를 변경하는 API로 스케쥴, 위치, 사람, 시간 모두 PUT으로 처리합니다.") - public ResponseEntity putUserSchedule(@AuthUser Member member, @RequestBody PutScheduleDto putScheduleDto){ + public ResponseEntity putOneSchedule(@AuthUser Member member, @RequestBody PutScheduleDto putScheduleDto){ Long userId = scheduleService.changeSchedule(member.getId(), putScheduleDto); return new ResponseEntity<>(userId, HttpStatusCode.valueOf(200)); } + + @DeleteMapping("") + @Operation(summary = "하나의 스케쥴 삭제", description = "하나의 스케쥴의 정보를 변경하는 API로 스케쥴, 위치, 사람, 시간 모두 PUT으로 처리합니다.") + public ResponseEntity deleteOneSchedule(@AuthUser Member member, @RequestParam Long id){ + scheduleService.deleteSchedule(id); + return new ResponseEntity<>(HttpStatusCode.valueOf(200)); + } } \ No newline at end of file diff --git a/src/main/java/Ness/Backend/domain/schedule/ScheduleService.java b/src/main/java/Ness/Backend/domain/schedule/ScheduleService.java index 5009b05..e66898d 100644 --- a/src/main/java/Ness/Backend/domain/schedule/ScheduleService.java +++ b/src/main/java/Ness/Backend/domain/schedule/ScheduleService.java @@ -75,6 +75,12 @@ public Long changeSchedule(Long id, PutScheduleDto putScheduleDto){ return schedule.getId(); } + @Transactional + public void deleteSchedule(Long id){ + Schedule schedule = scheduleRepository.findScheduleById(id); + scheduleRepository.delete(schedule); + } + public Long postNewUserSchedule(Long id, PostScheduleDto postScheduleDto){ log.info("postNewUserSchedule called by "+ id); Member memberEntity = memberRepository.findMemberById(id);