From 3c3948c4761d5c7bf59705719b47e8ea52c47301 Mon Sep 17 00:00:00 2001 From: dainshon Date: Tue, 20 Feb 2024 01:43:35 +0900 Subject: [PATCH] =?UTF-8?q?Feat:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=EC=8B=9C=20?= =?UTF-8?q?=EC=9D=BC=EA=B8=B0=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/Login/LogInController.java | 6 ++ .../java/com/kuit/chatdiary/domain/Diary.java | 11 ++- .../com/kuit/chatdiary/domain/DiaryPhoto.java | 5 +- .../com/kuit/chatdiary/domain/DiaryTag.java | 4 + .../java/com/kuit/chatdiary/domain/Photo.java | 8 ++ .../chatdiary/repository/ChatRepository.java | 4 + .../repository/DiaryPhotoRepository.java | 7 ++ .../chatdiary/repository/DiaryRepository.java | 16 +++- .../chatdiary/repository/PhotoRepository.java | 7 ++ .../chatdiary/repository/TagRepository.java | 7 ++ .../repository/diary/DiaryTagRepository.java | 25 +++++- .../kuit/chatdiary/service/LogInService.java | 86 ++++++++++++++++++- 12 files changed, 176 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/kuit/chatdiary/repository/DiaryPhotoRepository.java create mode 100644 src/main/java/com/kuit/chatdiary/repository/PhotoRepository.java create mode 100644 src/main/java/com/kuit/chatdiary/repository/TagRepository.java diff --git a/src/main/java/com/kuit/chatdiary/controller/Login/LogInController.java b/src/main/java/com/kuit/chatdiary/controller/Login/LogInController.java index c52d7782..50c9cd38 100644 --- a/src/main/java/com/kuit/chatdiary/controller/Login/LogInController.java +++ b/src/main/java/com/kuit/chatdiary/controller/Login/LogInController.java @@ -62,6 +62,9 @@ public ResponseEntity login(@RequestParam(value = "code") } Long userId = logInService.getUserId(email); + + logInService.insertData(userId); + KakaoLoginResponseDTO kakaoLoginResponseDTO = new KakaoLoginResponseDTO(jwt, userId, nickname); return ResponseEntity.ok().body(kakaoLoginResponseDTO); } @@ -100,6 +103,9 @@ public ResponseEntity loginLocal(@RequestParam(value = "c } Long userId = logInService.getUserId(email); + + logInService.insertData(userId); + KakaoLoginResponseDTO kakaoLoginResponseDTO = new KakaoLoginResponseDTO(jwt, userId, nickname); return ResponseEntity.ok().body(kakaoLoginResponseDTO); } diff --git a/src/main/java/com/kuit/chatdiary/domain/Diary.java b/src/main/java/com/kuit/chatdiary/domain/Diary.java index 127f6591..4c95a26d 100644 --- a/src/main/java/com/kuit/chatdiary/domain/Diary.java +++ b/src/main/java/com/kuit/chatdiary/domain/Diary.java @@ -1,6 +1,5 @@ package com.kuit.chatdiary.domain; -import jakarta.annotation.Nullable; import jakarta.persistence.*; import lombok.Getter; import lombok.NoArgsConstructor; @@ -48,7 +47,15 @@ public class Diary { @ColumnDefault("'ACTIVE'") private String status; -// @OneToMany(mappedBy = "diary") + public Diary(Member member, Date diaryDate, String title, String content, String status) { + this.member = member; + this.diaryDate = diaryDate; + this.title = title; + this.content = content; + this.status = status; + } + + // @OneToMany(mappedBy = "diary") // private List diaryTagList = new ArrayList<>(); diff --git a/src/main/java/com/kuit/chatdiary/domain/DiaryPhoto.java b/src/main/java/com/kuit/chatdiary/domain/DiaryPhoto.java index 7a42ec03..6008a72e 100644 --- a/src/main/java/com/kuit/chatdiary/domain/DiaryPhoto.java +++ b/src/main/java/com/kuit/chatdiary/domain/DiaryPhoto.java @@ -24,5 +24,8 @@ public class DiaryPhoto { @JoinColumn(name="photo_id") private Photo photo; - + public DiaryPhoto(Diary diary, Photo photo) { + this.diary = diary; + this.photo = photo; + } } diff --git a/src/main/java/com/kuit/chatdiary/domain/DiaryTag.java b/src/main/java/com/kuit/chatdiary/domain/DiaryTag.java index 269e1911..214723b9 100644 --- a/src/main/java/com/kuit/chatdiary/domain/DiaryTag.java +++ b/src/main/java/com/kuit/chatdiary/domain/DiaryTag.java @@ -24,4 +24,8 @@ public class DiaryTag { @JoinColumn(name="tag_id") private Tag tag; + public DiaryTag(Diary diary, Tag tag) { + this.diary = diary; + this.tag = tag; + } } diff --git a/src/main/java/com/kuit/chatdiary/domain/Photo.java b/src/main/java/com/kuit/chatdiary/domain/Photo.java index b8759144..7bfada49 100644 --- a/src/main/java/com/kuit/chatdiary/domain/Photo.java +++ b/src/main/java/com/kuit/chatdiary/domain/Photo.java @@ -5,6 +5,8 @@ import lombok.NoArgsConstructor; import lombok.Setter; +import java.util.Optional; + @Entity(name="photo") @Getter @Setter @@ -21,4 +23,10 @@ public class Photo { @Column(name = "image_url") private String imageUrl; + + public Photo(Chat chat, String imageUrl) { + this.chat = chat; + this.imageUrl = imageUrl; + } + } diff --git a/src/main/java/com/kuit/chatdiary/repository/ChatRepository.java b/src/main/java/com/kuit/chatdiary/repository/ChatRepository.java index c7022ab5..dfa23d3f 100644 --- a/src/main/java/com/kuit/chatdiary/repository/ChatRepository.java +++ b/src/main/java/com/kuit/chatdiary/repository/ChatRepository.java @@ -1,6 +1,10 @@ package com.kuit.chatdiary.repository; import com.kuit.chatdiary.domain.Chat; +import com.kuit.chatdiary.domain.ChatType; +import com.kuit.chatdiary.domain.Member; +import com.kuit.chatdiary.domain.Sender; +import jakarta.persistence.EntityManager; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; diff --git a/src/main/java/com/kuit/chatdiary/repository/DiaryPhotoRepository.java b/src/main/java/com/kuit/chatdiary/repository/DiaryPhotoRepository.java new file mode 100644 index 00000000..fd8e1308 --- /dev/null +++ b/src/main/java/com/kuit/chatdiary/repository/DiaryPhotoRepository.java @@ -0,0 +1,7 @@ +package com.kuit.chatdiary.repository; + +import com.kuit.chatdiary.domain.DiaryPhoto; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface DiaryPhotoRepository extends JpaRepository { +} diff --git a/src/main/java/com/kuit/chatdiary/repository/DiaryRepository.java b/src/main/java/com/kuit/chatdiary/repository/DiaryRepository.java index d01d25bd..3db25acc 100644 --- a/src/main/java/com/kuit/chatdiary/repository/DiaryRepository.java +++ b/src/main/java/com/kuit/chatdiary/repository/DiaryRepository.java @@ -6,16 +6,15 @@ import com.kuit.chatdiary.dto.diary.DiaryModifyRequestDTO; import com.kuit.chatdiary.dto.diary.DiaryShowDetailResponseDTO; import jakarta.persistence.EntityManager; +import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Repository; import org.springframework.web.server.ResponseStatusException; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -234,5 +233,18 @@ public DiaryDeleteResponseDTO deleteDiary(DiaryDeleteRequestDTO diaryDeleteReque } + @Transactional + public Diary insertDiary(Member member) throws ParseException { + //diaryDate + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); + java.util.Date utilDate = dateFormat.parse("20240214"); + java.sql.Date diaryDate = new java.sql.Date(utilDate.getTime()); + Diary diary = new Diary(member, diaryDate, "테니스 첫걸음", "오늘은 테니스의 첫 수업이 있는 날이었다. 아침에 일어나서부터 설레임이 가득했다. 처음이라 그런지 자세부터 배우느라 정말 힘들었다. 선생님이 추가 레슨을 해주셔서 정말 감사했다. 한 시간이 금새 지나갔고 아직은 부족하지만, 얼른 배워서 멋지게 치고 싶은 욕심이 생겼다. 나는 테니스를 경기할 수 있을 정도의 실력을 갖추기 위해 열심히 배우고 싶다는 다짐을 하며 하루를 마무리했다.", "ACTIVE"); + + em.persist(diary); + + return diary; + + } } \ No newline at end of file diff --git a/src/main/java/com/kuit/chatdiary/repository/PhotoRepository.java b/src/main/java/com/kuit/chatdiary/repository/PhotoRepository.java new file mode 100644 index 00000000..237f4227 --- /dev/null +++ b/src/main/java/com/kuit/chatdiary/repository/PhotoRepository.java @@ -0,0 +1,7 @@ +package com.kuit.chatdiary.repository; + +import com.kuit.chatdiary.domain.Photo; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface PhotoRepository extends JpaRepository { +} diff --git a/src/main/java/com/kuit/chatdiary/repository/TagRepository.java b/src/main/java/com/kuit/chatdiary/repository/TagRepository.java new file mode 100644 index 00000000..d30227d4 --- /dev/null +++ b/src/main/java/com/kuit/chatdiary/repository/TagRepository.java @@ -0,0 +1,7 @@ +package com.kuit.chatdiary.repository; + +import com.kuit.chatdiary.domain.Tag; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface TagRepository extends JpaRepository { +} diff --git a/src/main/java/com/kuit/chatdiary/repository/diary/DiaryTagRepository.java b/src/main/java/com/kuit/chatdiary/repository/diary/DiaryTagRepository.java index db124f55..b0f5d67b 100644 --- a/src/main/java/com/kuit/chatdiary/repository/diary/DiaryTagRepository.java +++ b/src/main/java/com/kuit/chatdiary/repository/diary/DiaryTagRepository.java @@ -2,7 +2,12 @@ import com.kuit.chatdiary.domain.Diary; import com.kuit.chatdiary.domain.DiaryTag; +import com.kuit.chatdiary.domain.Member; +import com.kuit.chatdiary.domain.Tag; +import com.kuit.chatdiary.repository.TagRepository; import jakarta.persistence.EntityManager; +import jakarta.transaction.Transactional; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import java.sql.Date; @@ -12,8 +17,12 @@ public class DiaryTagRepository { private final EntityManager em; - public DiaryTagRepository(EntityManager em) { + @Autowired + private final TagRepository tagRepository; + + public DiaryTagRepository(EntityManager em, TagRepository tagRepository) { this.em = em; + this.tagRepository = tagRepository; } public List findTagStatisticsByMember(Long memberId, Date startDate, Date endDate) { @@ -29,4 +38,18 @@ public List findTagStatisticsByMember(Long memberId, Date startDate, D } + @Transactional + public void insertDiaryTag(Diary diary) { + + Tag tag1 = tagRepository.findById(1L) + .orElseThrow(() -> new RuntimeException("Tag not found")); + DiaryTag diaryTag1 = new DiaryTag(diary, tag1); + em.persist(diaryTag1); + + Tag tag2 = tagRepository.findById(8L) + .orElseThrow(() -> new RuntimeException("Tag not found")); + DiaryTag diaryTag2 = new DiaryTag(diary, tag2); + em.persist(diaryTag2); + + } } diff --git a/src/main/java/com/kuit/chatdiary/service/LogInService.java b/src/main/java/com/kuit/chatdiary/service/LogInService.java index 967a46a3..273059d9 100644 --- a/src/main/java/com/kuit/chatdiary/service/LogInService.java +++ b/src/main/java/com/kuit/chatdiary/service/LogInService.java @@ -3,8 +3,9 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; -import com.kuit.chatdiary.domain.Member; -import com.kuit.chatdiary.repository.MemberRepository; +import com.kuit.chatdiary.domain.*; +import com.kuit.chatdiary.repository.*; +import com.kuit.chatdiary.repository.diary.DiaryTagRepository; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.security.Keys; @@ -20,6 +21,7 @@ import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; +import java.text.ParseException; import java.util.Date; import java.util.HashMap; import java.util.Optional; @@ -31,11 +33,34 @@ public class LogInService { @Autowired private final MemberRepository memberRepository; + @Autowired + private final DiaryRepository diaryRepository; + + @Autowired + private final DiaryTagRepository diaryTagRepository; + + @Autowired + private final ChatRepository chatRepository; + + @Autowired + private final PhotoRepository photoRepository; + + @Autowired + private final DiaryPhotoRepository diaryPhotoRepository; + + + + @Value("${KAKAO_API_KEY}") private String kakaoApiKey; - public LogInService(MemberRepository memberRepository) { + public LogInService(MemberRepository memberRepository, DiaryRepository diaryRepository, DiaryTagRepository diaryTagRepository, ChatRepository chatRepository, PhotoRepository photoRepository, DiaryPhotoRepository diaryPhotoRepository) { this.memberRepository = memberRepository; + this.diaryRepository = diaryRepository; + this.diaryTagRepository = diaryTagRepository; + this.chatRepository = chatRepository; + this.photoRepository = photoRepository; + this.diaryPhotoRepository = diaryPhotoRepository; } // AccessToken 발급하는 메서드 @@ -171,7 +196,60 @@ public void saveMember(String nickname, String email) { public Long getUserId(String email){ Long userId = memberRepository.findByEmail(email).get().getUserId(); - // System.out.println("getUserId에서 UserId: "+member.getUserId()); return userId; } + + public void insertData(Long userId) throws ParseException { + + Member member = memberRepository.findById(userId) + .orElseThrow(() -> new RuntimeException("Member not found")); + + // diary + Diary diary = diaryRepository.insertDiary(member); + + + //diarytag + diaryTagRepository.insertDiaryTag(diary); + + + //chat + Chat chat1 = new Chat(member, Sender.USER,"안녕", ChatType.CHAT); + chatRepository.save(chat1); + Chat chat2 = new Chat(member, Sender.DADA,"안녕하세요, 오늘 하루는 어땠어요?", ChatType.CHAT); + chatRepository.save(chat2); + Chat chat3 = new Chat(member, Sender.USER,"오늘 테니스 수업 듣고왔어", ChatType.CHAT); + chatRepository.save(chat3); + Chat chat4 = new Chat(member, Sender.DADA,"우와! 테니스 수업 어땠어요? 재밌었나요?", ChatType.CHAT); + chatRepository.save(chat4); + Chat chat5 = new Chat(member, Sender.USER,"첫 수업이라 자세만 잡았는데 그것도 힘들더라!", ChatType.CHAT); + chatRepository.save(chat5); + Chat chat6 = new Chat(member, Sender.DADA,"처음이라 어색하고 힘들 수도 있어요. 연습하다 보면 점점 나아질 거예요, 힘내요!", ChatType.CHAT); + chatRepository.save(chat6); + Chat chat7 = new Chat(member, Sender.USER,"https://chatdiary-bucket.s3.ap-northeast-2.amazonaws.com/test_images/upload_938f1186-e55f-43f7-bee4-c946816197b1.jpg", ChatType.IMG); + chatRepository.save(chat7); + Chat chat8 = new Chat(member, Sender.DADA,"테니스 코트에서 연습한 흔적이 보이네요! 공도 많고 라켓도 멋있어요. 열심히 하셨나봐요!", ChatType.CHAT); + chatRepository.save(chat8); + Chat chat9 = new Chat(member, Sender.USER,"선생님이 추가 레슨도 해주셔서 1시간 정도 쳤어", ChatType.CHAT); + chatRepository.save(chat9); + Chat chat10 = new Chat(member, Sender.DADA,"와, 선생님께서 추가로 레슨해주시다니 정말 행운이네요! 계속 연습하면 더 잘하게 될 거예요!", ChatType.CHAT); + chatRepository.save(chat10); + Chat chat11 = new Chat(member, Sender.USER,"얼른 배워서 멋있게 치고싶어!", ChatType.CHAT); + chatRepository.save(chat11); + Chat chat12 = new Chat(member, Sender.DADA,"정말 멋진 목표예요! 열심히 연습해서 멋진 플레이어가 될 수 있을 거예요, 화이팅!", ChatType.CHAT); + chatRepository.save(chat12); + Chat chat13 = new Chat(member, Sender.USER,"테니스 경기 할 수 있을 정도로 열심히 배워볼게", ChatType.CHAT); + chatRepository.save(chat13); + Chat chat14 = new Chat(member, Sender.DADA,"그래요! 그 정도 실력이 되면 정말 재밌겠어요! 꼭 목표 달성하시길 바랄게요!", ChatType.CHAT); + chatRepository.save(chat14); + + //photo + Photo photo = new Photo(chat7, "https://chatdiary-bucket.s3.ap-northeast-2.amazonaws.com/test_images/upload_938f1186-e55f-43f7-bee4-c946816197b1.jpg"); + photoRepository.save(photo); + + //diaryphoto + DiaryPhoto diaryPhoto = new DiaryPhoto(diary, photo); + diaryPhotoRepository.save(diaryPhoto); + + + } }