From 9ec33203b69276146287423f35b043cc5322cce2 Mon Sep 17 00:00:00 2001 From: wsh096 Date: Wed, 28 Feb 2024 22:57:51 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat=20:=20diary=20=EB=93=B1=EB=A1=9D=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit moodmeterentity 제거 예정 diary 로 일괄관리 --- .../diary/controller/DiaryController.java | 16 ++++++++++++++-- .../java/com/backend/diary/model/DiaryDto.java | 11 ++++++++++- .../com/backend/diary/model/DiaryEntity.java | 10 +++------- .../com/backend/diary/service/DiaryService.java | 4 ++-- .../backend/diary/service/DiaryServiceImpl.java | 15 ++++++++++++--- 5 files changed, 41 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/backend/diary/controller/DiaryController.java b/src/main/java/com/backend/diary/controller/DiaryController.java index e14b17b..3419b34 100644 --- a/src/main/java/com/backend/diary/controller/DiaryController.java +++ b/src/main/java/com/backend/diary/controller/DiaryController.java @@ -1,17 +1,29 @@ package com.backend.diary.controller; +import com.backend.diary.model.DiaryDto; import com.backend.diary.service.DiaryService; import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @RestController("/api/mood-meter") @RequiredArgsConstructor public class DiaryController { - private final DiaryService moodMeterService; + private final DiaryService diaryService; + /* CRUD Read : List 값 가져오기 */ - + @PostMapping("/diaries") + public ResponseEntity postDiary(@RequestBody DiaryDto diaryDto){ + String result = diaryService.setDiary(diaryDto); + if(!result.equals("success")) + return new ResponseEntity<>(result, HttpStatus.BAD_REQUEST); + return new ResponseEntity<>(result, HttpStatus.OK); + } } diff --git a/src/main/java/com/backend/diary/model/DiaryDto.java b/src/main/java/com/backend/diary/model/DiaryDto.java index 9f76f89..0ea46f3 100644 --- a/src/main/java/com/backend/diary/model/DiaryDto.java +++ b/src/main/java/com/backend/diary/model/DiaryDto.java @@ -1,5 +1,14 @@ package com.backend.diary.model; -public class DiaryDto { +import com.backend.moodmeter.config.MoodMeterColor; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +@Getter +@Builder +public class DiaryDto { + private String title; + private String description; + private MoodMeterColor mood; } diff --git a/src/main/java/com/backend/diary/model/DiaryEntity.java b/src/main/java/com/backend/diary/model/DiaryEntity.java index d2023f4..8dd07c2 100644 --- a/src/main/java/com/backend/diary/model/DiaryEntity.java +++ b/src/main/java/com/backend/diary/model/DiaryEntity.java @@ -2,14 +2,11 @@ import com.backend.global.domain.BaseEntity; -import com.backend.moodmeter.model.MoodMeterEntity; +import com.backend.moodmeter.config.MoodMeterColor; import jakarta.persistence.Entity; -import jakarta.persistence.FetchType; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.OneToOne; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Builder; @@ -32,9 +29,8 @@ public class DiaryEntity extends BaseEntity { @NonNull private String title; private String description; - @OneToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "mood_meter_id") // 외래 키 컬럼의 이름 - private MoodMeterEntity moodMeterEntity; // MoodMeterEntity를 참조하는 필드 + + private MoodMeterColor mood; // Mood entity 관리 x @Builder.Default private boolean deletedAt = false; } diff --git a/src/main/java/com/backend/diary/service/DiaryService.java b/src/main/java/com/backend/diary/service/DiaryService.java index ae8ba52..19774d1 100644 --- a/src/main/java/com/backend/diary/service/DiaryService.java +++ b/src/main/java/com/backend/diary/service/DiaryService.java @@ -1,6 +1,6 @@ package com.backend.diary.service; -import com.backend.moodmeter.config.MoodMeterColor; +import com.backend.diary.model.DiaryDto; import com.backend.moodmeter.model.MoodMeterDto; import java.util.List; @@ -8,7 +8,7 @@ public interface DiaryService { //매개변수 생각해 보기 - void setMoodMeter(MoodMeterColor moodMeterColor); + String setDiary(DiaryDto diaryDto); List getMoodMeterList(); diff --git a/src/main/java/com/backend/diary/service/DiaryServiceImpl.java b/src/main/java/com/backend/diary/service/DiaryServiceImpl.java index 2434b09..7cb1953 100644 --- a/src/main/java/com/backend/diary/service/DiaryServiceImpl.java +++ b/src/main/java/com/backend/diary/service/DiaryServiceImpl.java @@ -1,5 +1,6 @@ package com.backend.diary.service; +import com.backend.diary.model.DiaryDto; import com.backend.diary.model.DiaryEntity; import com.backend.diary.model.DiaryRepository; import com.backend.moodmeter.config.MoodMeterColor; @@ -21,9 +22,17 @@ public class DiaryServiceImpl implements DiaryService { //Todo UserID, DiaryID와 같이 저장 되어야 함 @Override - public void setMoodMeter(MoodMeterColor moodMeterColor) { - MoodMeterEntity mood = MoodMeterEntity.builder().mood(moodMeterColor).build(); - diaryRepository.save(DiaryEntity.builder().moodMeterEntity(mood).build()); + public String setDiary(DiaryDto diaryDto) { + DiaryEntity diary = DiaryEntity.builder() + .title(diaryDto.getTitle()) + .description(diaryDto.getDescription()) + .mood(diaryDto.getMood()).build(); + diaryRepository.save(diary); + return "success"; + } + + private MoodMeterEntity setMoodMeter(MoodMeterColor moodMeterColor) { + } //Read From 7d95e4bd4d9087b0db92a37c79fda05750634c23 Mon Sep 17 00:00:00 2001 From: "DESKTOP-DB74U1N\\user" Date: Wed, 6 Mar 2024 21:06:07 +0900 Subject: [PATCH 2/2] =?UTF-8?q?feat=20:=20FEATURE=5Fdiary=20controller=20?= =?UTF-8?q?=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8/=EC=82=AD=EC=A0=9C=20?= =?UTF-8?q?=EC=A0=9C=EC=9E=91,=20list=EB=8A=94=20user=20=EC=A0=9C=EC=9E=91?= =?UTF-8?q?=20=ED=9B=84=20=EC=A0=9C=EC=9E=91=20=EC=98=88=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../diary/controller/DiaryController.java | 50 +++++++++++-- .../backend/diary/service/DiaryService.java | 13 ++-- .../diary/service/DiaryServiceImpl.java | 75 +++++++++++++------ 3 files changed, 105 insertions(+), 33 deletions(-) diff --git a/src/main/java/com/backend/diary/controller/DiaryController.java b/src/main/java/com/backend/diary/controller/DiaryController.java index 3419b34..a1d0bee 100644 --- a/src/main/java/com/backend/diary/controller/DiaryController.java +++ b/src/main/java/com/backend/diary/controller/DiaryController.java @@ -1,14 +1,18 @@ package com.backend.diary.controller; -import com.backend.diary.model.DiaryDto; -import com.backend.diary.service.DiaryService; -import lombok.RequiredArgsConstructor; +import java.util.List; + import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import com.backend.diary.model.DiaryDto; +import com.backend.diary.service.DiaryService; + +import lombok.RequiredArgsConstructor; + @RestController("/api/mood-meter") @RequiredArgsConstructor public class DiaryController { @@ -16,14 +20,46 @@ public class DiaryController { private final DiaryService diaryService; /* - CRUD - Read : List 값 가져오기 + * CRUD + * Read : List 값 가져오기 */ + // TODO UserId 를 받아 해당 권한의 사람에게 매핑되게 저장 @PostMapping("/diaries") - public ResponseEntity postDiary(@RequestBody DiaryDto diaryDto){ + public ResponseEntity postDiary(@RequestBody DiaryDto diaryDto) { String result = diaryService.setDiary(diaryDto); - if(!result.equals("success")) + if (!result.equals("success")) return new ResponseEntity<>(result, HttpStatus.BAD_REQUEST); return new ResponseEntity<>(result, HttpStatus.OK); } + + // TODO getList + @Getmapping("/diaries") + public ResponseEntity getDiary(@RequestParam long UserId) { + + List result = diaryService.getDiaryList(bookId, diaryDto); + if (result.isEmpty()) + return new ResponseEntity<>(result, HttpStatus.BAD_REQUEST); + return new ResponseEntity<>(result, HttpStatus.OK); + } + + // TODO UserId 를 받아 적절한 권한을 가진 사람이 수정하는지 확인 + @PutMapping("/diaries/{bookId}") + public ResponseEntity putDiary(@PathVariable long bookId, @RequestBody DiaryDto diaryDto) { + + String result = diaryService.updateDiary(bookId, diaryDto); + if (!result.equals("success")) + return new ResponseEntity<>(result, HttpStatus.BAD_REQUEST); + return new ResponseEntity<>(result, HttpStatus.OK); + } + + // TODO UserId 를 받아 적절한 권한을 가진 사람이 수정하는지 확인 + @DeleteMapping("/diaries/{bookId}") + public ResponseEntity deleteDiary(@PathVariable long bookId, @RequestParam long UserId) { + + String result = diaryService.deletedeleteDiary(bookId, UserId); + if (!result.equals("success")) + return new ResponseEntity<>(result, HttpStatus.BAD_REQUEST); + + return new ResponseEntity<>(result, HttpStatus.OK); + } } diff --git a/src/main/java/com/backend/diary/service/DiaryService.java b/src/main/java/com/backend/diary/service/DiaryService.java index 19774d1..5789731 100644 --- a/src/main/java/com/backend/diary/service/DiaryService.java +++ b/src/main/java/com/backend/diary/service/DiaryService.java @@ -1,17 +1,20 @@ package com.backend.diary.service; -import com.backend.diary.model.DiaryDto; -import com.backend.moodmeter.model.MoodMeterDto; import java.util.List; +import com.backend.diary.model.DiaryDto; +import com.backend.diary.model.DiaryEntity; + //Todo public interface DiaryService { - //매개변수 생각해 보기 + // 매개변수 생각해 보기 String setDiary(DiaryDto diaryDto); - List getMoodMeterList(); + String updateDiary(long bookId, DiaryDto diaryDto); + + List getDiaryList(long UserId); - void deleteMoodMeter(long bookId, long UserId); + String deleteDiary(long bookId, long UserId); } diff --git a/src/main/java/com/backend/diary/service/DiaryServiceImpl.java b/src/main/java/com/backend/diary/service/DiaryServiceImpl.java index 7cb1953..729c5a2 100644 --- a/src/main/java/com/backend/diary/service/DiaryServiceImpl.java +++ b/src/main/java/com/backend/diary/service/DiaryServiceImpl.java @@ -1,15 +1,15 @@ package com.backend.diary.service; +import java.util.List; +import java.util.Optional; + +import org.springframework.stereotype.Service; + import com.backend.diary.model.DiaryDto; import com.backend.diary.model.DiaryEntity; import com.backend.diary.model.DiaryRepository; -import com.backend.moodmeter.config.MoodMeterColor; -import com.backend.moodmeter.model.MoodMeterDto; -import com.backend.moodmeter.model.MoodMeterEntity; -import com.backend.moodmeter.model.MoodMeterRepository; -import java.util.List; + import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; //Todo @Service @@ -17,35 +17,68 @@ public class DiaryServiceImpl implements DiaryService { private final DiaryRepository diaryRepository; - //CRUD - //Create + // CRUD + // Create - //Todo UserID, DiaryID와 같이 저장 되어야 함 + // Todo UserID, DiaryID와 같이 저장 되어야 함 @Override public String setDiary(DiaryDto diaryDto) { - DiaryEntity diary = DiaryEntity.builder() - .title(diaryDto.getTitle()) - .description(diaryDto.getDescription()) - .mood(diaryDto.getMood()).build(); + DiaryEntity diary = DiaryEntity.builder() + .title(diaryDto.getTitle()) + .description(diaryDto.getDescription()) + .mood(diaryDto.getMood()).build(); diaryRepository.save(diary); return "success"; } - private MoodMeterEntity setMoodMeter(MoodMeterColor moodMeterColor) { + @Override + public String setDiary(DiaryDto diaryDto) { + DiaryEntity diary = DiaryEntity.builder() + .title(diaryDto.getTitle()) + .description(diaryDto.getDescription()) + .mood(diaryDto.getMood()).build(); + diaryRepository.save(diary); + return "success"; + } + @Override + public String updateDiary(long bookId, DiaryDto diaryDto) { + Optional optionalDiary = diaryRepository.findById(bookId); + if (optionalDiary.isEmpty()) { + return "fail"; + } else { + DiaryEntity diary = optionalDiary.get(); + if (diaryDto.getTitle() != null) { + diary.setTitle(diaryDto.getTitle()); + } + if (diaryDto.getDescription() != null) { + diary.setDescription(diaryDto.getDescription()); + } + diaryRepository.save(diary); + } + return "success"; } - //Read - //UserId에 맞춰서 해당 월의 무드미터 정보를 가지고 와야 함. + // Read + // UserId에 맞춰서 해당 월의 무드미터 정보를 가지고 와야 함. + // TODO Make user @Override - public List getMoodMeterList() { + public List getDiaryList(long UserId) { + return null; } - //Delete 삭제_일기 삭제 시 함께 삭제. 복원 가능 + // Delete 삭제_일기 삭제 시 함께 삭제. 복원 가능 @Override - public void deleteMoodMeter(long bookId, long UserId) { - //Todo mapping BookId, userId DeletedAt + public String deletedeleteDiary(long bookId, long UserId) { + Optional optionalDiary = diaryRepository.findById(bookId); + if (optionalDiary.isEmpty()) { + return "fail"; + } else { + DiaryEntity diary = optionalDiary.get(); + diary.setDeletedAt(true); + diaryRepository.save(diary); + } + return "success"; } - }