From 7f94f65e9349b43095a3efdd06645566facbfac8 Mon Sep 17 00:00:00 2001 From: RunaNam Date: Mon, 23 Aug 2021 01:02:59 +0900 Subject: [PATCH 1/6] =?UTF-8?q?[fix]=20=C3=AC=EC=97=90=EB=9F=AC=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=A3=BC=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/Dogpaw/api/MessageAllApiController.java | 12 ++++++------ .../java/Dogpaw/repository/MessageRepository.java | 2 +- src/main/java/Dogpaw/service/MessageService.java | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/Dogpaw/api/MessageAllApiController.java b/src/main/java/Dogpaw/api/MessageAllApiController.java index c8706e3..5632560 100644 --- a/src/main/java/Dogpaw/api/MessageAllApiController.java +++ b/src/main/java/Dogpaw/api/MessageAllApiController.java @@ -36,11 +36,11 @@ public ResponseDTO.Delete deleteMessageAll(@RequestBody MessageAllDTO.Delete dto return new ResponseDTO.Delete(true); } - @GetMapping("/messageall") - public ResponseDTO.MessageAllResponse getMessageAll(@RequestBody MessageAllDTO.Get dto) throws NotFoundException { - MessageAll messageAll = messageAllService.findOne(dto.getId()); - List messageList = messageService.getMessageList(dto.getId()); - return new ResponseDTO.MessageAllResponse(true, messageList, messageAll); - } +// @GetMapping("/messageall") +// public ResponseDTO.MessageAllResponse getMessageAll(@RequestBody MessageAllDTO.Get dto) throws NotFoundException { +// MessageAll messageAll = messageAllService.findOne(dto.getId()); +// List messageList = messageService.getMessageList(dto.getId()); +// return new ResponseDTO.MessageAllResponse(true, messageList, messageAll); +// } } diff --git a/src/main/java/Dogpaw/repository/MessageRepository.java b/src/main/java/Dogpaw/repository/MessageRepository.java index c9c8ad0..ddec2a6 100644 --- a/src/main/java/Dogpaw/repository/MessageRepository.java +++ b/src/main/java/Dogpaw/repository/MessageRepository.java @@ -10,5 +10,5 @@ @Repository public interface MessageRepository extends JpaRepository { - List findAllMessage(MessageAll messageAll); +// List findAllByMessageAll(MessageAll messageAll); } diff --git a/src/main/java/Dogpaw/service/MessageService.java b/src/main/java/Dogpaw/service/MessageService.java index ce629f2..56db20e 100644 --- a/src/main/java/Dogpaw/service/MessageService.java +++ b/src/main/java/Dogpaw/service/MessageService.java @@ -50,10 +50,10 @@ public void updateByMessageId(Long id, String text) throws NotFoundException { messageRepository.save(message); } - public List getMessageList(Long id) throws NotFoundException { - MessageAll messageAll = messageAllRepository.findById(id).orElseThrow(() -> new MessageAllService.MessageAllNotFoundException("MessageAll with id : "+ id + "is not valid")); - return messageRepository.findAllMessage(messageAll); - } +// public List getMessageList(Long id) throws NotFoundException { +// MessageAll messageAll = messageAllRepository.findById(id).orElseThrow(() -> new MessageAllService.MessageAllNotFoundException("MessageAll with id : "+ id + "is not valid")); +// return messageRepository.findAllByMessageAll(messageAll); +// } // exception From 51cc8eff05b1b4487628ed719d972762d07b23bb Mon Sep 17 00:00:00 2001 From: RunaNam Date: Mon, 23 Aug 2021 01:46:05 +0900 Subject: [PATCH 2/6] =?UTF-8?q?[feat]=20channel=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/Dogpaw/api/ChannelApiController.java | 32 ++++++++++ .../java/Dogpaw/api/MessageApiController.java | 12 ++-- src/main/java/Dogpaw/domain/Channel.java | 30 ++++++++++ src/main/java/Dogpaw/domain/User.java | 5 ++ src/main/java/Dogpaw/domain/UserChannel.java | 25 ++++++++ src/main/java/Dogpaw/dto/ChannelDTO.java | 24 ++++++++ .../Dogpaw/repository/ChannelRepository.java | 7 +++ .../java/Dogpaw/service/ChannelService.java | 58 +++++++++++++++++++ 8 files changed, 187 insertions(+), 6 deletions(-) create mode 100644 src/main/java/Dogpaw/api/ChannelApiController.java create mode 100644 src/main/java/Dogpaw/domain/Channel.java create mode 100644 src/main/java/Dogpaw/domain/UserChannel.java create mode 100644 src/main/java/Dogpaw/dto/ChannelDTO.java create mode 100644 src/main/java/Dogpaw/repository/ChannelRepository.java create mode 100644 src/main/java/Dogpaw/service/ChannelService.java diff --git a/src/main/java/Dogpaw/api/ChannelApiController.java b/src/main/java/Dogpaw/api/ChannelApiController.java new file mode 100644 index 0000000..0a854c6 --- /dev/null +++ b/src/main/java/Dogpaw/api/ChannelApiController.java @@ -0,0 +1,32 @@ +package Dogpaw.api; + +import Dogpaw.domain.Channel; +import Dogpaw.dto.ChannelDTO; +import Dogpaw.dto.ResponseDTO; +import Dogpaw.service.ChannelService; +import javassist.NotFoundException; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api") +public class ChannelApiController { + @NonNull + private final ChannelService channelService; + + @PostMapping("/channel") + public ResponseDTO.Create createUser(@RequestBody ChannelDTO.Create dto) throws ChannelService.InvalidArgumentException, ChannelService.ArgumentNullException { + Channel channel = new Channel(dto.getName(), dto.getPurpose()); + Long saveId = channelService.saveChannel(channel); + + return new ResponseDTO.Create(saveId, true); + } + + @DeleteMapping("/channel") + public ResponseDTO.Delete createChat(@RequestBody ChannelDTO.Delete dto) throws NotFoundException { + channelService.deleteByChannelId(dto.getId()); + return new ResponseDTO.Delete(true); + } +} diff --git a/src/main/java/Dogpaw/api/MessageApiController.java b/src/main/java/Dogpaw/api/MessageApiController.java index d9cd486..355ec08 100644 --- a/src/main/java/Dogpaw/api/MessageApiController.java +++ b/src/main/java/Dogpaw/api/MessageApiController.java @@ -35,12 +35,12 @@ public ResponseDTO.Create createMessage(@RequestBody MessageDTO.Create dto) thro return new ResponseDTO.Create(saveId, true); } - // ** 업데이트 추가 ** - @PutMapping("/message") - public ResponseDTO.Update updateMessage(@RequestBody MessageDTO.Update dto, String text) throws NotFoundException { - messageService.updateByMessageId(dto.getId(), dto.getText()); - return new ResponseDTO.Update(true); - } +// // ** 업데이트 추가 ** +// @PutMapping("/message") +// public ResponseDTO.Update updateMessage(@RequestBody MessageDTO.Update dto, String text) throws NotFoundException { +// messageService.updateByMessageId(dto.getId(), dto.getText()); +// return new ResponseDTO.Update(true); +// } @DeleteMapping("/message") public ResponseDTO.Delete deleteMessage(@RequestBody MessageDTO.Delete dto) throws NotFoundException { diff --git a/src/main/java/Dogpaw/domain/Channel.java b/src/main/java/Dogpaw/domain/Channel.java new file mode 100644 index 0000000..4932e6d --- /dev/null +++ b/src/main/java/Dogpaw/domain/Channel.java @@ -0,0 +1,30 @@ +package Dogpaw.domain; + +import lombok.*; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.List; + +@Entity +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@RequiredArgsConstructor +public class Channel { + @Id @GeneratedValue (strategy = GenerationType.IDENTITY) + private Long id; + + @NonNull + private String name; + + @NonNull + private String purpose; + + @OneToMany(mappedBy = "channel") + private List users = new ArrayList<>(); + + @OneToOne + @JoinColumn(name = "CHATTING_ID") + private Chatting chatting; + +} diff --git a/src/main/java/Dogpaw/domain/User.java b/src/main/java/Dogpaw/domain/User.java index c2593d8..101c543 100644 --- a/src/main/java/Dogpaw/domain/User.java +++ b/src/main/java/Dogpaw/domain/User.java @@ -3,6 +3,8 @@ import lombok.*; import javax.persistence.*; +import java.util.ArrayList; +import java.util.List; @Entity @Getter @@ -15,4 +17,7 @@ public class User { @NonNull private String name; + + @OneToMany(mappedBy = "user") + private List userChannels = new ArrayList<>(); } diff --git a/src/main/java/Dogpaw/domain/UserChannel.java b/src/main/java/Dogpaw/domain/UserChannel.java new file mode 100644 index 0000000..b309afd --- /dev/null +++ b/src/main/java/Dogpaw/domain/UserChannel.java @@ -0,0 +1,25 @@ +package Dogpaw.domain; + +import lombok.*; + +import javax.persistence.*; + +@Entity +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@RequiredArgsConstructor +public class UserChannel { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne + @JoinColumn(name = "USER_ID") + @NonNull + private User user; + + @ManyToOne + @JoinColumn(name = "CHANNEL_ID") + @NonNull + private Channel channel; +} diff --git a/src/main/java/Dogpaw/dto/ChannelDTO.java b/src/main/java/Dogpaw/dto/ChannelDTO.java new file mode 100644 index 0000000..c364fc1 --- /dev/null +++ b/src/main/java/Dogpaw/dto/ChannelDTO.java @@ -0,0 +1,24 @@ +package Dogpaw.dto; + +import lombok.Data; + +import java.time.LocalDate; +import java.time.LocalTime; + +public class ChannelDTO { + @Data + public static class Create extends Update { + + } + + @Data + public static class Update { + private String name; + private String purpose; + } + + @Data + public static class Delete { + private Long id; + } +} diff --git a/src/main/java/Dogpaw/repository/ChannelRepository.java b/src/main/java/Dogpaw/repository/ChannelRepository.java new file mode 100644 index 0000000..ada3563 --- /dev/null +++ b/src/main/java/Dogpaw/repository/ChannelRepository.java @@ -0,0 +1,7 @@ +package Dogpaw.repository; + +import Dogpaw.domain.Channel; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ChannelRepository extends JpaRepository { +} diff --git a/src/main/java/Dogpaw/service/ChannelService.java b/src/main/java/Dogpaw/service/ChannelService.java new file mode 100644 index 0000000..d65ade6 --- /dev/null +++ b/src/main/java/Dogpaw/service/ChannelService.java @@ -0,0 +1,58 @@ +package Dogpaw.service; + +import Dogpaw.domain.Channel; +import Dogpaw.repository.ChannelRepository; +import javassist.NotFoundException; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +@RequiredArgsConstructor +public class ChannelService { + @NonNull + private final ChannelRepository channelRepository; + + public Long saveChannel (Channel channel) throws ArgumentNullException, InvalidArgumentException { + if(channel == null){ + throw new ArgumentNullException("Channel can't be null"); + } + if(channel.getName().isEmpty() || channel.getPurpose().isEmpty()){ + throw new InvalidArgumentException("Channel Id or URl is null"); + } + Channel save = channelRepository.save(channel); + + return save.getId(); + + } + + public Channel findOne(Long id) throws NotFoundException { + Channel channel = channelRepository.findById(id).orElseThrow(() -> new ChannelNotFoundException("Channel with id : " + id + "is not valid")); + return channel; + } + + + public void deleteByChannelId(Long id) throws NotFoundException { + channelRepository.deleteById(id); + } + + + + public static class ChannelNotFoundException extends NotFoundException { + public ChannelNotFoundException(String msg) { + super(msg); + } + } + + public static class ArgumentNullException extends Throwable { + public ArgumentNullException(String s) { + } + } + + public static class InvalidArgumentException extends Throwable { + public InvalidArgumentException(String s) { + } + } +} From 3ad54b237d0d436310c1f7753f456aa3aaa17b9b Mon Sep 17 00:00:00 2001 From: RunaNam Date: Mon, 23 Aug 2021 02:46:19 +0900 Subject: [PATCH 3/6] =?UTF-8?q?[feat]=20=EB=8C=93=EA=B8=80=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/Dogpaw/api/ChannelApiController.java | 15 +++- .../Dogpaw/api/ChattingApiController.java | 16 +---- .../java/Dogpaw/api/CommentApiController.java | 49 +++++++++++++ src/main/java/Dogpaw/domain/Channel.java | 1 + src/main/java/Dogpaw/domain/Chat.java | 5 ++ src/main/java/Dogpaw/domain/ChatMapping.java | 2 + src/main/java/Dogpaw/domain/Chatting.java | 8 +-- src/main/java/Dogpaw/domain/Comment.java | 38 ++++++++++ .../java/Dogpaw/domain/CommentMapping.java | 11 +++ src/main/java/Dogpaw/dto/CommentDTO.java | 28 ++++++++ src/main/java/Dogpaw/dto/ResponseDTO.java | 2 +- .../Dogpaw/repository/CommentRepository.java | 13 ++++ .../java/Dogpaw/service/ChattingService.java | 8 +-- .../java/Dogpaw/service/CommentService.java | 72 +++++++++++++++++++ 14 files changed, 236 insertions(+), 32 deletions(-) create mode 100644 src/main/java/Dogpaw/api/CommentApiController.java create mode 100644 src/main/java/Dogpaw/domain/Comment.java create mode 100644 src/main/java/Dogpaw/domain/CommentMapping.java create mode 100644 src/main/java/Dogpaw/dto/CommentDTO.java create mode 100644 src/main/java/Dogpaw/repository/CommentRepository.java create mode 100644 src/main/java/Dogpaw/service/CommentService.java diff --git a/src/main/java/Dogpaw/api/ChannelApiController.java b/src/main/java/Dogpaw/api/ChannelApiController.java index 0a854c6..a7291da 100644 --- a/src/main/java/Dogpaw/api/ChannelApiController.java +++ b/src/main/java/Dogpaw/api/ChannelApiController.java @@ -1,9 +1,11 @@ package Dogpaw.api; import Dogpaw.domain.Channel; +import Dogpaw.domain.Chatting; import Dogpaw.dto.ChannelDTO; import Dogpaw.dto.ResponseDTO; import Dogpaw.service.ChannelService; +import Dogpaw.service.ChattingService; import javassist.NotFoundException; import lombok.NonNull; import lombok.RequiredArgsConstructor; @@ -16,9 +18,16 @@ public class ChannelApiController { @NonNull private final ChannelService channelService; + @NonNull + private final ChattingService chattingService; + @PostMapping("/channel") - public ResponseDTO.Create createUser(@RequestBody ChannelDTO.Create dto) throws ChannelService.InvalidArgumentException, ChannelService.ArgumentNullException { - Channel channel = new Channel(dto.getName(), dto.getPurpose()); + public ResponseDTO.Create createUser(@RequestBody ChannelDTO.Create dto) throws ChannelService.InvalidArgumentException, ChannelService.ArgumentNullException, ChattingService.InvalidArgumentException, ChattingService.ArgumentNullException { + Chatting chatting = new Chatting(); + Long saveId2 = chattingService.saveChatting(chatting); + + Channel channel = new Channel(dto.getName(), dto.getPurpose(),chatting); + Long saveId = channelService.saveChannel(channel); return new ResponseDTO.Create(saveId, true); @@ -27,6 +36,8 @@ public ResponseDTO.Create createUser(@RequestBody ChannelDTO.Create dto) throws @DeleteMapping("/channel") public ResponseDTO.Delete createChat(@RequestBody ChannelDTO.Delete dto) throws NotFoundException { channelService.deleteByChannelId(dto.getId()); + chattingService.deleteByChattingId(dto.getId()); + return new ResponseDTO.Delete(true); } } diff --git a/src/main/java/Dogpaw/api/ChattingApiController.java b/src/main/java/Dogpaw/api/ChattingApiController.java index 79393ab..2328c4f 100644 --- a/src/main/java/Dogpaw/api/ChattingApiController.java +++ b/src/main/java/Dogpaw/api/ChattingApiController.java @@ -21,26 +21,12 @@ public class ChattingApiController { private final ChattingService chattingService; private final ChatService chatService; - @PostMapping("/chatting") - public ResponseDTO.Create createChatting (@RequestBody ChattingDTO.Create dto) throws ChattingService.ArgumentNullException, ChattingService.InvalidArgumentException{ - Chatting chatting = new Chatting(dto.getName(), dto.getPurpose()); - - Long saveId = chattingService.saveChatting(chatting); - - return new ResponseDTO.Create(saveId, true); - } - - @DeleteMapping("/chatting") - public ResponseDTO.Delete deleteChatting(@RequestBody ChattingDTO.Delete dto) throws NotFoundException{ - chattingService.deleteByChattingId(dto.getId()); - return new ResponseDTO.Delete(true); - } @GetMapping("/chatting") public ResponseDTO.ChattingResponse getChatting(@RequestBody ChattingDTO.Get dto) throws NotFoundException{ Chatting chatting = chattingService.findOne(dto.getId()); List chatList = chatService.getChatList(dto.getId()); - return new ResponseDTO.ChattingResponse(true, chatList, chatting); + return new ResponseDTO.ChattingResponse(true, chatting, chatList); } diff --git a/src/main/java/Dogpaw/api/CommentApiController.java b/src/main/java/Dogpaw/api/CommentApiController.java new file mode 100644 index 0000000..1dfb7fb --- /dev/null +++ b/src/main/java/Dogpaw/api/CommentApiController.java @@ -0,0 +1,49 @@ +package Dogpaw.api; + +import Dogpaw.domain.Chat; +import Dogpaw.domain.Comment; +import Dogpaw.domain.User; +import Dogpaw.dto.ChatDTO; +import Dogpaw.dto.CommentDTO; +import Dogpaw.dto.ResponseDTO; +import Dogpaw.service.ChatService; +import Dogpaw.service.CommentService; +import Dogpaw.service.UserService; +import javassist.NotFoundException; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api") +public class CommentApiController { + @NonNull + private final ChatService chatService; + @NonNull + private final CommentService commentService; + @NonNull + private final UserService userService; + + + @PostMapping("/comment") + public ResponseDTO.Create createComment(@RequestBody CommentDTO.Create dto) throws NotFoundException, CommentService.InvalidArgumentException, CommentService.ArgumentNullException { + Chat chat = chatService.findOne(dto.getChatId()); + User user = userService.findOne(dto.getUserId()); + + Comment comment = new Comment(user, dto.getText(),dto.getDate(), dto.getTime(), chat); + + Long saveId = commentService.saveComment(comment); + return new ResponseDTO.Create(saveId, true); + } + + + @DeleteMapping("/comment") + public ResponseDTO.Delete deleteComment(@RequestBody CommentDTO.Delete dto) throws NotFoundException { + commentService.deleteByCommentId(dto.getId()); + return new ResponseDTO.Delete(true); + } + + + +} diff --git a/src/main/java/Dogpaw/domain/Channel.java b/src/main/java/Dogpaw/domain/Channel.java index 4932e6d..7c40592 100644 --- a/src/main/java/Dogpaw/domain/Channel.java +++ b/src/main/java/Dogpaw/domain/Channel.java @@ -23,6 +23,7 @@ public class Channel { @OneToMany(mappedBy = "channel") private List users = new ArrayList<>(); + @NonNull @OneToOne @JoinColumn(name = "CHATTING_ID") private Chatting chatting; diff --git a/src/main/java/Dogpaw/domain/Chat.java b/src/main/java/Dogpaw/domain/Chat.java index 292c6e6..363e174 100644 --- a/src/main/java/Dogpaw/domain/Chat.java +++ b/src/main/java/Dogpaw/domain/Chat.java @@ -6,6 +6,8 @@ import javax.persistence.*; import java.time.LocalDate; import java.time.LocalTime; +import java.util.ArrayList; +import java.util.List; @Entity @Setter @@ -35,4 +37,7 @@ public class Chat { @JoinColumn(name = "CHATTING_ID") private Chatting chatting; + @OneToMany(mappedBy = "chat", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY) + private List comments = new ArrayList<>(); + } diff --git a/src/main/java/Dogpaw/domain/ChatMapping.java b/src/main/java/Dogpaw/domain/ChatMapping.java index ddf8b41..61d2d24 100644 --- a/src/main/java/Dogpaw/domain/ChatMapping.java +++ b/src/main/java/Dogpaw/domain/ChatMapping.java @@ -2,10 +2,12 @@ import java.time.LocalDate; import java.time.LocalTime; +import java.util.List; public interface ChatMapping { User getUser(); String getText(); LocalDate getDate(); LocalTime getTime(); + List getComments(); } diff --git a/src/main/java/Dogpaw/domain/Chatting.java b/src/main/java/Dogpaw/domain/Chatting.java index 2d2246b..708e16f 100644 --- a/src/main/java/Dogpaw/domain/Chatting.java +++ b/src/main/java/Dogpaw/domain/Chatting.java @@ -6,14 +6,8 @@ @Entity @Getter -@NoArgsConstructor(access = AccessLevel.PROTECTED) -@RequiredArgsConstructor +@NoArgsConstructor public class Chatting { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - - @NonNull - private String name; - @NonNull - private String purpose; } diff --git a/src/main/java/Dogpaw/domain/Comment.java b/src/main/java/Dogpaw/domain/Comment.java new file mode 100644 index 0000000..0e59f27 --- /dev/null +++ b/src/main/java/Dogpaw/domain/Comment.java @@ -0,0 +1,38 @@ +package Dogpaw.domain; + + +import lombok.*; + +import javax.persistence.*; +import java.time.LocalDate; +import java.time.LocalTime; + +@Entity +@Setter +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@RequiredArgsConstructor +public class Comment { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne + @JoinColumn(name = "USER_ID") + @NonNull + private User user; + + @NonNull + private String text; + + @NonNull + private LocalDate date; + @NonNull + private LocalTime time; + + @NonNull + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "CHAT_ID") + private Chat chat; + +} diff --git a/src/main/java/Dogpaw/domain/CommentMapping.java b/src/main/java/Dogpaw/domain/CommentMapping.java new file mode 100644 index 0000000..a83de8d --- /dev/null +++ b/src/main/java/Dogpaw/domain/CommentMapping.java @@ -0,0 +1,11 @@ +package Dogpaw.domain; + +import java.time.LocalDate; +import java.time.LocalTime; + +public interface CommentMapping { + User getUser(); + String getText(); + LocalDate getDate(); + LocalTime getTime(); +} diff --git a/src/main/java/Dogpaw/dto/CommentDTO.java b/src/main/java/Dogpaw/dto/CommentDTO.java new file mode 100644 index 0000000..2fd889f --- /dev/null +++ b/src/main/java/Dogpaw/dto/CommentDTO.java @@ -0,0 +1,28 @@ +package Dogpaw.dto; + + +import lombok.Data; + +import java.time.LocalDate; +import java.time.LocalTime; + +public class CommentDTO { + + @Data + public static class Create extends Update { + private Long userId; + private Long chatId; + } + + @Data + public static class Update { + private String text; + private LocalDate date; + private LocalTime time; + } + + @Data + public static class Delete { + private Long id; + } +} diff --git a/src/main/java/Dogpaw/dto/ResponseDTO.java b/src/main/java/Dogpaw/dto/ResponseDTO.java index afde49f..a6cacb7 100644 --- a/src/main/java/Dogpaw/dto/ResponseDTO.java +++ b/src/main/java/Dogpaw/dto/ResponseDTO.java @@ -43,8 +43,8 @@ public Delete(Boolean success) { @AllArgsConstructor public static class ChattingResponse { Boolean success; - private List chats; private Chatting chatting; + private List chats; } @Data diff --git a/src/main/java/Dogpaw/repository/CommentRepository.java b/src/main/java/Dogpaw/repository/CommentRepository.java new file mode 100644 index 0000000..854ab3a --- /dev/null +++ b/src/main/java/Dogpaw/repository/CommentRepository.java @@ -0,0 +1,13 @@ +package Dogpaw.repository; + +import Dogpaw.domain.Chat; +import Dogpaw.domain.ChatMapping; +import Dogpaw.domain.Comment; +import Dogpaw.domain.CommentMapping; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface CommentRepository extends JpaRepository { +// List findAllByChat(Chat chat); +} diff --git a/src/main/java/Dogpaw/service/ChattingService.java b/src/main/java/Dogpaw/service/ChattingService.java index 4b544aa..5a1f489 100644 --- a/src/main/java/Dogpaw/service/ChattingService.java +++ b/src/main/java/Dogpaw/service/ChattingService.java @@ -22,11 +22,9 @@ public Long saveChatting (Chatting chatting) throws ArgumentNullException, Inval if(chatting == null){ throw new ArgumentNullException("Chatting can't be null"); } - if(chatting.getName().isEmpty()){ - throw new InvalidArgumentException("Chatting Name is null"); - } Chatting save = chattingRepository.save(chatting); + return save.getId(); } @@ -39,10 +37,6 @@ public Chatting findOne(Long id) throws NotFoundException{ return chatting; } -// public List getChattingList(String User){ -// return chattingRepository.findAllByUserOrderByName(User); -// } - // exception diff --git a/src/main/java/Dogpaw/service/CommentService.java b/src/main/java/Dogpaw/service/CommentService.java new file mode 100644 index 0000000..80258b8 --- /dev/null +++ b/src/main/java/Dogpaw/service/CommentService.java @@ -0,0 +1,72 @@ +package Dogpaw.service; + + +import Dogpaw.domain.Chat; +import Dogpaw.domain.ChatMapping; +import Dogpaw.domain.Chatting; +import Dogpaw.domain.Comment; +import Dogpaw.repository.ChatRepository; +import Dogpaw.repository.ChattingRepository; +import Dogpaw.repository.CommentRepository; +import javassist.NotFoundException; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +@Service +@Transactional +@RequiredArgsConstructor +public class CommentService { + @NonNull + private final ChatRepository chatRepository; + @NonNull + private final CommentRepository commentRepository; + + public Long saveComment (Comment comment) throws ArgumentNullException, InvalidArgumentException { + if(comment == null){ + throw new ArgumentNullException("Chat can't be null"); + } + if(comment.getText().isEmpty()){ + throw new InvalidArgumentException("Chatting text is null"); + } + comment.getChat().getComments().add(comment); + Comment save = commentRepository.save(comment); + + + return save.getId(); + } + + public void deleteByCommentId(Long id) throws NotFoundException{ + commentRepository.deleteById(id); + } + + public Comment findOne(Long id) throws NotFoundException{ + Comment comment = commentRepository.findById(id).orElseThrow(() -> new CommentNotFoundException("Comment with id : " + id + "is not valid")); + return comment; + } + + + + // exception + + public static class CommentNotFoundException extends NotFoundException { + public CommentNotFoundException(String msg) { + super(msg); + } + } + + public static class ArgumentNullException extends Throwable { + public ArgumentNullException(String s) { + } + } + + public static class InvalidArgumentException extends Throwable { + public InvalidArgumentException(String s) { + } + } +} + + From 075e71e59f084ac60ab6a9932860f8744309e02b Mon Sep 17 00:00:00 2001 From: DingDing109 Date: Mon, 23 Aug 2021 02:57:48 +0900 Subject: [PATCH 4/6] [fix] idea --- .../java/Dogpaw/api/IdeaApiController.java | 43 +++++++++++ .../Dogpaw/api/IdeaBoardApiController.java | 47 ++++++++++++ src/main/java/Dogpaw/domain/Idea.java | 38 ++++++++++ src/main/java/Dogpaw/domain/IdeaBoard.java | 22 ++++++ src/main/java/Dogpaw/domain/IdeaMapping.java | 11 +++ src/main/java/Dogpaw/dto/IdeaBoardDTO.java | 26 +++++++ src/main/java/Dogpaw/dto/IdeaDTO.java | 29 ++++++++ src/main/java/Dogpaw/dto/ResponseDTO.java | 12 +++- .../repository/IdeaBoardRepository.java | 8 +++ .../Dogpaw/repository/IdeaRepository.java | 12 ++++ .../java/Dogpaw/service/ChattingService.java | 2 +- .../java/Dogpaw/service/IdeaBoardService.java | 63 ++++++++++++++++ src/main/java/Dogpaw/service/IdeaService.java | 72 +++++++++++++++++++ 13 files changed, 381 insertions(+), 4 deletions(-) create mode 100644 src/main/java/Dogpaw/api/IdeaApiController.java create mode 100644 src/main/java/Dogpaw/api/IdeaBoardApiController.java create mode 100644 src/main/java/Dogpaw/domain/Idea.java create mode 100644 src/main/java/Dogpaw/domain/IdeaBoard.java create mode 100644 src/main/java/Dogpaw/domain/IdeaMapping.java create mode 100644 src/main/java/Dogpaw/dto/IdeaBoardDTO.java create mode 100644 src/main/java/Dogpaw/dto/IdeaDTO.java create mode 100644 src/main/java/Dogpaw/repository/IdeaBoardRepository.java create mode 100644 src/main/java/Dogpaw/repository/IdeaRepository.java create mode 100644 src/main/java/Dogpaw/service/IdeaBoardService.java create mode 100644 src/main/java/Dogpaw/service/IdeaService.java diff --git a/src/main/java/Dogpaw/api/IdeaApiController.java b/src/main/java/Dogpaw/api/IdeaApiController.java new file mode 100644 index 0000000..9d0e96b --- /dev/null +++ b/src/main/java/Dogpaw/api/IdeaApiController.java @@ -0,0 +1,43 @@ +package Dogpaw.api; + +import Dogpaw.domain.Idea; +import Dogpaw.domain.IdeaBoard; +import Dogpaw.domain.User; +import Dogpaw.dto.IdeaDTO; +import Dogpaw.dto.ResponseDTO; +import Dogpaw.service.IdeaService; +import Dogpaw.service.IdeaBoardService; +import Dogpaw.service.UserService; +import javassist.NotFoundException; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api") +public class IdeaApiController { + @NonNull + private final IdeaService IdeaService; + private final IdeaBoardService IdeaBoardService; + private final UserService userService; + + + @PostMapping("/Idea") + public ResponseDTO.Create createIdea(@RequestBody IdeaDTO.Create dto) throws IdeaService.ArgumentNullException, IdeaService.InvalidArgumentException, NotFoundException { + IdeaBoard ideaBoard = IdeaBoardService.findOne(dto.getIdeaBoardId()); + User user = userService.findOne(dto.getUserId()); + + Idea Idea = new Idea(user, dto.getText(),dto.getDate(), dto.getTime(), ideaBoard); + + Long saveId = IdeaService.saveIdea(Idea); + return new ResponseDTO.Create(saveId, true); + } + + + @DeleteMapping("/Idea") + public ResponseDTO.Delete createIdea(@RequestBody IdeaDTO.Delete dto) throws NotFoundException { + IdeaService.deleteByIdeaId(dto.getId()); + return new ResponseDTO.Delete(true); + } +} diff --git a/src/main/java/Dogpaw/api/IdeaBoardApiController.java b/src/main/java/Dogpaw/api/IdeaBoardApiController.java new file mode 100644 index 0000000..84e0024 --- /dev/null +++ b/src/main/java/Dogpaw/api/IdeaBoardApiController.java @@ -0,0 +1,47 @@ +package Dogpaw.api; + +import Dogpaw.domain.IdeaMapping; +import Dogpaw.domain.IdeaBoard; +import Dogpaw.dto.IdeaBoardDTO; +import Dogpaw.dto.ResponseDTO; +import Dogpaw.service.IdeaService; +import Dogpaw.service.IdeaBoardService; +import javassist.NotFoundException; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api") +public class IdeaBoardApiController { + @NonNull + private final IdeaBoardService IdeaBoardService; + private final IdeaService IdeaService; + + @PostMapping("/IdeaBoard") + public ResponseDTO.Create createIdeaBoard (@RequestBody IdeaBoardDTO.Create dto) throws IdeaBoardService.ArgumentNullException, IdeaBoardService.InvalidArgumentException{ + IdeaBoard IdeaBoard = new IdeaBoard(dto.getName(), dto.getPurpose()); + + Long saveId = IdeaBoardService.saveIdeaBoard(IdeaBoard); + + return new ResponseDTO.Create(saveId, true); + } + + @DeleteMapping("/IdeaBoard") + public ResponseDTO.Delete deleteIdeaBoard(@RequestBody IdeaBoardDTO.Delete dto) throws NotFoundException{ + IdeaBoardService.deleteByIdeaBoardId(dto.getId()); + return new ResponseDTO.Delete(true); + } + + @GetMapping("/IdeaBoard") + public ResponseDTO.IdeaBoardResponse getIdeaBoard(@RequestBody IdeaBoardDTO.Get dto) throws NotFoundException{ + IdeaBoard IdeaBoard = IdeaBoardService.findOne(dto.getId()); + List IdeaList = IdeaService.getIdeaList(dto.getId()); + return new ResponseDTO.IdeaBoardResponse(true, IdeaList, IdeaBoard); + + } + +} diff --git a/src/main/java/Dogpaw/domain/Idea.java b/src/main/java/Dogpaw/domain/Idea.java new file mode 100644 index 0000000..ece6fd8 --- /dev/null +++ b/src/main/java/Dogpaw/domain/Idea.java @@ -0,0 +1,38 @@ +package Dogpaw.domain; + + +import lombok.*; + +import javax.persistence.*; +import java.time.LocalDate; +import java.time.LocalTime; + +@Entity +@Setter +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@RequiredArgsConstructor +public class Idea { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne + @JoinColumn(name = "USER_ID") + @NonNull + private User user; + + @NonNull + private String text; + + @NonNull + private LocalDate date; + @NonNull + private LocalTime time; + + @NonNull + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "IdeaBoard_ID") + private IdeaBoard ideaBoard; + +} diff --git a/src/main/java/Dogpaw/domain/IdeaBoard.java b/src/main/java/Dogpaw/domain/IdeaBoard.java new file mode 100644 index 0000000..a269a2f --- /dev/null +++ b/src/main/java/Dogpaw/domain/IdeaBoard.java @@ -0,0 +1,22 @@ +package Dogpaw.domain; + +import lombok.*; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +@Entity +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@RequiredArgsConstructor +public class IdeaBoard { + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @NonNull + private String name; + @NonNull + private String purpose; +} diff --git a/src/main/java/Dogpaw/domain/IdeaMapping.java b/src/main/java/Dogpaw/domain/IdeaMapping.java new file mode 100644 index 0000000..6c0039c --- /dev/null +++ b/src/main/java/Dogpaw/domain/IdeaMapping.java @@ -0,0 +1,11 @@ +package Dogpaw.domain; + +import java.time.LocalDate; +import java.time.LocalTime; + +public interface IdeaMapping { + User getUser(); + String getText(); + LocalDate getDate(); + LocalTime getTime(); +} diff --git a/src/main/java/Dogpaw/dto/IdeaBoardDTO.java b/src/main/java/Dogpaw/dto/IdeaBoardDTO.java new file mode 100644 index 0000000..ec0fd85 --- /dev/null +++ b/src/main/java/Dogpaw/dto/IdeaBoardDTO.java @@ -0,0 +1,26 @@ +package Dogpaw.dto; + +import lombok.Data; + +public class IdeaBoardDTO { + @Data + public static class Create extends Update{ + + } + + @Data + public static class Update { + private String name; + private String purpose; + } + + @Data + public static class Delete { + private Long id; + } + + @Data + public static class Get { + private Long id; + } +} diff --git a/src/main/java/Dogpaw/dto/IdeaDTO.java b/src/main/java/Dogpaw/dto/IdeaDTO.java new file mode 100644 index 0000000..1522f74 --- /dev/null +++ b/src/main/java/Dogpaw/dto/IdeaDTO.java @@ -0,0 +1,29 @@ +package Dogpaw.dto; + + +import lombok.Data; + +import java.time.LocalDate; +import java.time.LocalTime; + +public class IdeaDTO { + + @Data + public static class Create extends Update { + private Long userId; + private Long ideaBoardId; + + } + + @Data + public static class Update { + private String text; + private LocalDate date; + private LocalTime time; + } + + @Data + public static class Delete { + private Long id; + } +} diff --git a/src/main/java/Dogpaw/dto/ResponseDTO.java b/src/main/java/Dogpaw/dto/ResponseDTO.java index 4ebabdd..45b30a5 100644 --- a/src/main/java/Dogpaw/dto/ResponseDTO.java +++ b/src/main/java/Dogpaw/dto/ResponseDTO.java @@ -1,8 +1,6 @@ package Dogpaw.dto; -import Dogpaw.domain.Chat; -import Dogpaw.domain.ChatMapping; -import Dogpaw.domain.Chatting; +import Dogpaw.domain.*; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -42,4 +40,12 @@ public static class ChattingResponse{ private Chatting chatting; } + @Data + @AllArgsConstructor + public static class IdeaBoardResponse{ + Boolean success; + private List ideas; + private IdeaBoard ideaBoard; + } + } diff --git a/src/main/java/Dogpaw/repository/IdeaBoardRepository.java b/src/main/java/Dogpaw/repository/IdeaBoardRepository.java new file mode 100644 index 0000000..f3092bf --- /dev/null +++ b/src/main/java/Dogpaw/repository/IdeaBoardRepository.java @@ -0,0 +1,8 @@ +package Dogpaw.repository; + +import Dogpaw.domain.IdeaBoard; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface IdeaBoardRepository extends JpaRepository { +// List findAllByUserOrderByName(String User); +} diff --git a/src/main/java/Dogpaw/repository/IdeaRepository.java b/src/main/java/Dogpaw/repository/IdeaRepository.java new file mode 100644 index 0000000..8391486 --- /dev/null +++ b/src/main/java/Dogpaw/repository/IdeaRepository.java @@ -0,0 +1,12 @@ +package Dogpaw.repository; + +import Dogpaw.domain.Idea; +import Dogpaw.domain.IdeaMapping; +import Dogpaw.domain.IdeaBoard; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface IdeaRepository extends JpaRepository { + List findAllByIdeaBoard(IdeaBoard ideaBoard); +} diff --git a/src/main/java/Dogpaw/service/ChattingService.java b/src/main/java/Dogpaw/service/ChattingService.java index 4b544aa..91cc679 100644 --- a/src/main/java/Dogpaw/service/ChattingService.java +++ b/src/main/java/Dogpaw/service/ChattingService.java @@ -63,4 +63,4 @@ public InvalidArgumentException(String s) { } } -} +} \ No newline at end of file diff --git a/src/main/java/Dogpaw/service/IdeaBoardService.java b/src/main/java/Dogpaw/service/IdeaBoardService.java new file mode 100644 index 0000000..55bd645 --- /dev/null +++ b/src/main/java/Dogpaw/service/IdeaBoardService.java @@ -0,0 +1,63 @@ +package Dogpaw.service; + +import Dogpaw.domain.IdeaBoard; +import Dogpaw.repository.IdeaBoardRepository; +import javassist.NotFoundException; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +@RequiredArgsConstructor +public class IdeaBoardService { + @NonNull + private final IdeaBoardRepository ideaBoardRepository; + + public Long saveIdeaBoard (IdeaBoard ideaBoard) throws ArgumentNullException, InvalidArgumentException{ + if(ideaBoard == null){ + throw new ArgumentNullException("IdeaBoard can't be null"); + } + if(ideaBoard.getName().isEmpty()){ + throw new InvalidArgumentException("IdeaBoard Name is null"); + } + IdeaBoard save = ideaBoardRepository.save(ideaBoard); + + return save.getId(); + } + + public void deleteByIdeaBoardId(Long id) throws NotFoundException{ + ideaBoardRepository.deleteById(id); + } + + public IdeaBoard findOne(Long id) throws NotFoundException{ + IdeaBoard IdeaBoard = ideaBoardRepository.findById(id).orElseThrow(() -> new IdeaBoardNotFoundException("IdeaBoard with id : "+ id + "is not valid")); + return IdeaBoard; + } + +// public List getIdeaBoardList(String User){ +// return IdeaBoardRepository.findAllByUserOrderByName(User); +// } + + + +// exception + + public static class IdeaBoardNotFoundException extends NotFoundException { + public IdeaBoardNotFoundException(String msg) { + super(msg); + } + } + + public static class ArgumentNullException extends Throwable { + public ArgumentNullException(String s) { + } + } + + public static class InvalidArgumentException extends Throwable { + public InvalidArgumentException(String s) { + } + } + +} \ No newline at end of file diff --git a/src/main/java/Dogpaw/service/IdeaService.java b/src/main/java/Dogpaw/service/IdeaService.java new file mode 100644 index 0000000..a978c83 --- /dev/null +++ b/src/main/java/Dogpaw/service/IdeaService.java @@ -0,0 +1,72 @@ +package Dogpaw.service; + + +import Dogpaw.domain.Idea; +import Dogpaw.domain.IdeaMapping; +import Dogpaw.domain.IdeaBoard; +import Dogpaw.repository.IdeaRepository; +import Dogpaw.repository.IdeaBoardRepository; +import javassist.NotFoundException; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +@Service +@Transactional +@RequiredArgsConstructor +public class IdeaService { + @NonNull + private final IdeaRepository ideaRepository; + private final IdeaBoardRepository ideaBoardRepository; + + public Long saveIdea (Idea idea) throws ArgumentNullException, InvalidArgumentException { + if(idea == null){ + throw new ArgumentNullException("Idea can't be null"); + } + if(idea.getText().isEmpty()){ + throw new InvalidArgumentException("IdeaBoard text is null"); + } + Idea save = ideaRepository.save(idea); + + return save.getId(); + } + + public void deleteByIdeaId(Long id) throws NotFoundException{ + ideaRepository.deleteById(id); + } + + public Idea findOne(Long id) throws NotFoundException{ + Idea idea = ideaRepository.findById(id).orElseThrow(() -> new IdeaNotFoundException("Work space with id : " + id + "is not valid")); + return idea; + } + + public List getIdeaList(Long id) throws NotFoundException{ + IdeaBoard ideaBoard = ideaBoardRepository.findById(id).orElseThrow(() -> new IdeaBoardService.IdeaBoardNotFoundException("IdeaBoard with id : "+ id + "is not valid")); + return ideaRepository.findAllByIdeaBoard(ideaBoard); + } + + + + // exception + + public static class IdeaNotFoundException extends NotFoundException { + public IdeaNotFoundException(String msg) { + super(msg); + } + } + + public static class ArgumentNullException extends Throwable { + public ArgumentNullException(String s) { + } + } + + public static class InvalidArgumentException extends Throwable { + public InvalidArgumentException(String s) { + } + } +} + + From 801f801bf2c3f037cb4308019ba4ddf305a73897 Mon Sep 17 00:00:00 2001 From: DingDing109 Date: Tue, 24 Aug 2021 01:11:41 +0900 Subject: [PATCH 5/6] delete message --- .../Dogpaw/api/MessageAllApiController.java | 46 ------------ .../java/Dogpaw/api/MessageApiController.java | 50 ------------- src/main/java/Dogpaw/domain/Message.java | 36 ---------- src/main/java/Dogpaw/domain/MessageAll.java | 20 ------ .../java/Dogpaw/domain/MessageMapping.java | 11 --- src/main/java/Dogpaw/dto/MessageAllDTO.java | 27 ------- src/main/java/Dogpaw/dto/MessageDTO.java | 29 -------- .../repository/MessageAllRepository.java | 8 --- .../Dogpaw/repository/MessageRepository.java | 14 ---- .../Dogpaw/service/MessageAllService.java | 53 -------------- .../java/Dogpaw/service/MessageService.java | 72 ------------------- 11 files changed, 366 deletions(-) delete mode 100644 src/main/java/Dogpaw/api/MessageAllApiController.java delete mode 100644 src/main/java/Dogpaw/api/MessageApiController.java delete mode 100644 src/main/java/Dogpaw/domain/Message.java delete mode 100644 src/main/java/Dogpaw/domain/MessageAll.java delete mode 100644 src/main/java/Dogpaw/domain/MessageMapping.java delete mode 100644 src/main/java/Dogpaw/dto/MessageAllDTO.java delete mode 100644 src/main/java/Dogpaw/dto/MessageDTO.java delete mode 100644 src/main/java/Dogpaw/repository/MessageAllRepository.java delete mode 100644 src/main/java/Dogpaw/repository/MessageRepository.java delete mode 100644 src/main/java/Dogpaw/service/MessageAllService.java delete mode 100644 src/main/java/Dogpaw/service/MessageService.java diff --git a/src/main/java/Dogpaw/api/MessageAllApiController.java b/src/main/java/Dogpaw/api/MessageAllApiController.java deleted file mode 100644 index 5632560..0000000 --- a/src/main/java/Dogpaw/api/MessageAllApiController.java +++ /dev/null @@ -1,46 +0,0 @@ -package Dogpaw.api; - -import Dogpaw.domain.MessageAll; -import Dogpaw.domain.MessageMapping; -import Dogpaw.dto.MessageAllDTO; -import Dogpaw.dto.ResponseDTO; -import Dogpaw.service.MessageAllService; -import Dogpaw.service.MessageService; -import javassist.NotFoundException; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -@RestController -@RequiredArgsConstructor -@RequestMapping("/api") -public class MessageAllApiController { - @NonNull - private final MessageAllService messageAllService; - private final MessageService messageService; - - @PostMapping("/messageall") - public ResponseDTO.Create createMessageAll (@RequestBody MessageAllDTO.Create dto) throws MessageAllService.ArgumentNullException, MessageAllService.InvalidArgumentException{ - MessageAll messageAll = new MessageAll(dto.getUser()); - - Long saveId = messageAllService.saveMessageAll(messageAll); - - return new ResponseDTO.Create(saveId, true); - } - - @DeleteMapping("/messageall") - public ResponseDTO.Delete deleteMessageAll(@RequestBody MessageAllDTO.Delete dto) throws NotFoundException { - messageService.deleteByMessageId(dto.getId()); - return new ResponseDTO.Delete(true); - } - -// @GetMapping("/messageall") -// public ResponseDTO.MessageAllResponse getMessageAll(@RequestBody MessageAllDTO.Get dto) throws NotFoundException { -// MessageAll messageAll = messageAllService.findOne(dto.getId()); -// List messageList = messageService.getMessageList(dto.getId()); -// return new ResponseDTO.MessageAllResponse(true, messageList, messageAll); -// } - -} diff --git a/src/main/java/Dogpaw/api/MessageApiController.java b/src/main/java/Dogpaw/api/MessageApiController.java deleted file mode 100644 index 355ec08..0000000 --- a/src/main/java/Dogpaw/api/MessageApiController.java +++ /dev/null @@ -1,50 +0,0 @@ -package Dogpaw.api; - -import Dogpaw.domain.Message; -import Dogpaw.domain.MessageAll; -import Dogpaw.domain.User; -import Dogpaw.dto.MessageDTO; -import Dogpaw.dto.ResponseDTO; -import Dogpaw.service.MessageAllService; -import Dogpaw.service.MessageService; -import Dogpaw.service.UserService; -import javassist.NotFoundException; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; - - -@RestController -@RequiredArgsConstructor -@RequestMapping("/api") -public class MessageApiController { - - @NonNull - private final MessageService messageService; - private final MessageAllService messageAllService; - private final UserService userService; - - @PutMapping("/message") - public ResponseDTO.Create createMessage(@RequestBody MessageDTO.Create dto) throws MessageService.ArgumentNullException, MessageService.InvalidArgumentException, NotFoundException { - MessageAll messageAll = messageAllService.findOne(dto.getId()); - - Message message = new Message(dto.getSendBy(), dto.getText(), dto.getDate(), dto.getTime(), messageAll); - - Long saveId = messageService.saveMessage(message); - - return new ResponseDTO.Create(saveId, true); - } - -// // ** 업데이트 추가 ** -// @PutMapping("/message") -// public ResponseDTO.Update updateMessage(@RequestBody MessageDTO.Update dto, String text) throws NotFoundException { -// messageService.updateByMessageId(dto.getId(), dto.getText()); -// return new ResponseDTO.Update(true); -// } - - @DeleteMapping("/message") - public ResponseDTO.Delete deleteMessage(@RequestBody MessageDTO.Delete dto) throws NotFoundException { - messageService.deleteByMessageId(dto.getId()); - return new ResponseDTO.Delete(true); - } -} diff --git a/src/main/java/Dogpaw/domain/Message.java b/src/main/java/Dogpaw/domain/Message.java deleted file mode 100644 index 532f0dc..0000000 --- a/src/main/java/Dogpaw/domain/Message.java +++ /dev/null @@ -1,36 +0,0 @@ -package Dogpaw.domain; - -import lombok.*; - -import javax.persistence.*; -import java.time.LocalDate; -import java.time.LocalTime; - -@Entity -@Getter -@Setter -@NoArgsConstructor(access = AccessLevel.PROTECTED) -@RequiredArgsConstructor -public class Message { - - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - private Long id; - - @NonNull - private byte sendBy; // 내가 보내면 0, 상대가 보내면 1 - - @NonNull - private String text; - - @NonNull - private LocalDate date; - - @NonNull - private LocalTime time; - - @NonNull - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "MESSEAGE_ID") - private MessageAll messageAll; -} diff --git a/src/main/java/Dogpaw/domain/MessageAll.java b/src/main/java/Dogpaw/domain/MessageAll.java deleted file mode 100644 index eb3b2d7..0000000 --- a/src/main/java/Dogpaw/domain/MessageAll.java +++ /dev/null @@ -1,20 +0,0 @@ -package Dogpaw.domain; - -import lombok.*; - -import javax.persistence.*; - -@Entity -@Getter -@NoArgsConstructor(access = AccessLevel.PROTECTED) -@RequiredArgsConstructor -public class MessageAll { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @NonNull - @ManyToOne - @JoinColumn(name = "USER_ID") - private User user; -} diff --git a/src/main/java/Dogpaw/domain/MessageMapping.java b/src/main/java/Dogpaw/domain/MessageMapping.java deleted file mode 100644 index a98ed11..0000000 --- a/src/main/java/Dogpaw/domain/MessageMapping.java +++ /dev/null @@ -1,11 +0,0 @@ -package Dogpaw.domain; - -import java.time.LocalDate; -import java.time.LocalTime; - -public interface MessageMapping { - User getUser(); - String getText(); - LocalDate getDate(); - LocalTime getTime(); -} diff --git a/src/main/java/Dogpaw/dto/MessageAllDTO.java b/src/main/java/Dogpaw/dto/MessageAllDTO.java deleted file mode 100644 index 416e6b2..0000000 --- a/src/main/java/Dogpaw/dto/MessageAllDTO.java +++ /dev/null @@ -1,27 +0,0 @@ -package Dogpaw.dto; - -import Dogpaw.domain.User; -import lombok.Data; - -public class MessageAllDTO { - @Data - public static class Create extends Update { - - } - - @Data - public static class Update { - private User user; - } - - @Data - public static class Delete { - private Long id; - } - - @Data - public static class Get { - private Long id; - } - -} diff --git a/src/main/java/Dogpaw/dto/MessageDTO.java b/src/main/java/Dogpaw/dto/MessageDTO.java deleted file mode 100644 index 84ea931..0000000 --- a/src/main/java/Dogpaw/dto/MessageDTO.java +++ /dev/null @@ -1,29 +0,0 @@ -package Dogpaw.dto; - -import Dogpaw.domain.User; -import lombok.Data; - -import java.time.LocalDate; -import java.time.LocalTime; - -public class MessageDTO { - - @Data - public static class Create extends Update { - - } - - @Data - public static class Update { - private Long id; - private byte sendBy; - private String text; - private LocalDate date; - private LocalTime time; - } - - @Data - public static class Delete { - private Long id; - } -} diff --git a/src/main/java/Dogpaw/repository/MessageAllRepository.java b/src/main/java/Dogpaw/repository/MessageAllRepository.java deleted file mode 100644 index 54f6f08..0000000 --- a/src/main/java/Dogpaw/repository/MessageAllRepository.java +++ /dev/null @@ -1,8 +0,0 @@ -package Dogpaw.repository; - -import Dogpaw.domain.MessageAll; -import org.springframework.data.jpa.repository.JpaRepository; - -public interface MessageAllRepository extends JpaRepository { - -} diff --git a/src/main/java/Dogpaw/repository/MessageRepository.java b/src/main/java/Dogpaw/repository/MessageRepository.java deleted file mode 100644 index ddec2a6..0000000 --- a/src/main/java/Dogpaw/repository/MessageRepository.java +++ /dev/null @@ -1,14 +0,0 @@ -package Dogpaw.repository; - -import Dogpaw.domain.Message; -import Dogpaw.domain.MessageAll; -import Dogpaw.domain.MessageMapping; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; - -@Repository -public interface MessageRepository extends JpaRepository { -// List findAllByMessageAll(MessageAll messageAll); -} diff --git a/src/main/java/Dogpaw/service/MessageAllService.java b/src/main/java/Dogpaw/service/MessageAllService.java deleted file mode 100644 index 995ab8c..0000000 --- a/src/main/java/Dogpaw/service/MessageAllService.java +++ /dev/null @@ -1,53 +0,0 @@ -package Dogpaw.service; - -import Dogpaw.domain.MessageAll; -import Dogpaw.repository.MessageAllRepository; -import javassist.NotFoundException; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -import javax.transaction.Transactional; - -@Service -@Transactional -@RequiredArgsConstructor -public class MessageAllService { - @NonNull - private final MessageAllRepository messageAllRepository; - - public Long saveMessageAll(MessageAll messageAll) throws ArgumentNullException, InvalidArgumentException { - if (messageAll == null) { - throw new ArgumentNullException("MessageAll can't be null"); - } - MessageAll save = messageAllRepository.save(messageAll); - - return save.getId(); - } - - public void deleteByMessageAllId(Long id) throws NotFoundException { - messageAllRepository.deleteById(id); - } - - public MessageAll findOne(Long id) throws NotFoundException { - MessageAll messageAll = messageAllRepository.findById(id).orElseThrow(() -> new MessageAllNotFoundException("MessageAll with id : " + id + "is not valid")); - return messageAll; - } - - // exception - - public static class MessageAllNotFoundException extends NotFoundException { - public MessageAllNotFoundException(String msg) { - super(msg); - } - } - - public static class ArgumentNullException extends Throwable { - public ArgumentNullException(String s) {} - } - - public static class InvalidArgumentException extends Throwable { - public InvalidArgumentException(String s) {} - } - -} diff --git a/src/main/java/Dogpaw/service/MessageService.java b/src/main/java/Dogpaw/service/MessageService.java deleted file mode 100644 index 56db20e..0000000 --- a/src/main/java/Dogpaw/service/MessageService.java +++ /dev/null @@ -1,72 +0,0 @@ -package Dogpaw.service; - -import Dogpaw.domain.Message; -import Dogpaw.domain.MessageAll; -import Dogpaw.domain.MessageMapping; -import Dogpaw.repository.MessageAllRepository; -import Dogpaw.repository.MessageRepository; -import javassist.NotFoundException; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -@Service -@Transactional -@RequiredArgsConstructor -public class MessageService { - - @NonNull - private final MessageRepository messageRepository; - private final MessageAllRepository messageAllRepository; - - public Long saveMessage(Message message) throws ArgumentNullException, InvalidArgumentException { - if(message == null) { - throw new ArgumentNullException("Message can't be null"); - } - if(message.getText().isEmpty()){ - throw new InvalidArgumentException("Message TEXT is null"); - } - Message save = messageRepository.save(message); - - return save.getId(); - } - - public Message findOne(Long id) throws NotFoundException { - Message message = messageRepository.findById(id).orElseThrow(() -> new MessageNotFoundException("Message with id : " + id + "is not valid")); - return message; - } - - public void deleteByMessageId(Long id) throws NotFoundException { - messageRepository.deleteById(id); - } - - // ** 업데이트 추가 ** - public void updateByMessageId(Long id, String text) throws NotFoundException { - Message message = findOne(id); - message.setText(text); - messageRepository.save(message); - } - -// public List getMessageList(Long id) throws NotFoundException { -// MessageAll messageAll = messageAllRepository.findById(id).orElseThrow(() -> new MessageAllService.MessageAllNotFoundException("MessageAll with id : "+ id + "is not valid")); -// return messageRepository.findAllByMessageAll(messageAll); -// } - - - // exception - - public static class MessageNotFoundException extends NotFoundException { - public MessageNotFoundException(String msg) { super(msg); } - } - - public static class ArgumentNullException extends Throwable { - public ArgumentNullException(String s) {} - } - - public static class InvalidArgumentException extends Throwable { - public InvalidArgumentException(String s) {} - } -} From e32957a9092d6afb5c3d4631dfc0bbe94bfd11db Mon Sep 17 00:00:00 2001 From: RunaNam Date: Tue, 24 Aug 2021 01:30:59 +0900 Subject: [PATCH 6/6] [feat] n:m channel, user mapping --- .../java/Dogpaw/api/ChannelApiController.java | 21 +++++++++--- src/main/java/Dogpaw/domain/Channel.java | 1 + src/main/java/Dogpaw/domain/UserChannel.java | 13 ++++++-- .../Dogpaw/domain/UserChannelMapping.java | 7 ++++ src/main/java/Dogpaw/dto/ChannelDTO.java | 8 +++++ src/main/java/Dogpaw/dto/ResponseDTO.java | 7 ++++ .../Dogpaw/repository/ChannelRepository.java | 4 +++ .../repository/UserChannelRepository.java | 13 ++++++++ .../java/Dogpaw/service/ChannelService.java | 33 +++++++++++++++++-- 9 files changed, 97 insertions(+), 10 deletions(-) create mode 100644 src/main/java/Dogpaw/domain/UserChannelMapping.java create mode 100644 src/main/java/Dogpaw/repository/UserChannelRepository.java diff --git a/src/main/java/Dogpaw/api/ChannelApiController.java b/src/main/java/Dogpaw/api/ChannelApiController.java index a7291da..7459a4c 100644 --- a/src/main/java/Dogpaw/api/ChannelApiController.java +++ b/src/main/java/Dogpaw/api/ChannelApiController.java @@ -1,34 +1,37 @@ package Dogpaw.api; -import Dogpaw.domain.Channel; -import Dogpaw.domain.Chatting; +import Dogpaw.domain.*; import Dogpaw.dto.ChannelDTO; import Dogpaw.dto.ResponseDTO; import Dogpaw.service.ChannelService; import Dogpaw.service.ChattingService; +import Dogpaw.service.UserService; import javassist.NotFoundException; import lombok.NonNull; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequiredArgsConstructor @RequestMapping("/api") public class ChannelApiController { @NonNull private final ChannelService channelService; - + @NonNull + private final UserService userService; @NonNull private final ChattingService chattingService; @PostMapping("/channel") - public ResponseDTO.Create createUser(@RequestBody ChannelDTO.Create dto) throws ChannelService.InvalidArgumentException, ChannelService.ArgumentNullException, ChattingService.InvalidArgumentException, ChattingService.ArgumentNullException { + public ResponseDTO.Create createUser(@RequestBody ChannelDTO.Create dto) throws ChannelService.InvalidArgumentException, ChannelService.ArgumentNullException, ChattingService.InvalidArgumentException, ChattingService.ArgumentNullException, UserService.UserNotFoundException { Chatting chatting = new Chatting(); Long saveId2 = chattingService.saveChatting(chatting); Channel channel = new Channel(dto.getName(), dto.getPurpose(),chatting); - Long saveId = channelService.saveChannel(channel); + Long saveId = channelService.saveChannel(channel, dto.getUserId()); return new ResponseDTO.Create(saveId, true); } @@ -40,4 +43,12 @@ public ResponseDTO.Delete createChat(@RequestBody ChannelDTO.Delete dto) throws return new ResponseDTO.Delete(true); } + + @GetMapping("/channel") + public ResponseDTO.ChannelResponse getChatting(@RequestBody ChannelDTO.Get dto) throws NotFoundException{ + User user = userService.findOne(dto.getUserId()); + List channelList = channelService.getChannelList(dto.getUserId()); + return new ResponseDTO.ChannelResponse(true, channelList); + + } } diff --git a/src/main/java/Dogpaw/domain/Channel.java b/src/main/java/Dogpaw/domain/Channel.java index 7c40592..0b5ee19 100644 --- a/src/main/java/Dogpaw/domain/Channel.java +++ b/src/main/java/Dogpaw/domain/Channel.java @@ -20,6 +20,7 @@ public class Channel { @NonNull private String purpose; + @Getter(AccessLevel.NONE) @OneToMany(mappedBy = "channel") private List users = new ArrayList<>(); diff --git a/src/main/java/Dogpaw/domain/UserChannel.java b/src/main/java/Dogpaw/domain/UserChannel.java index b309afd..095f2fd 100644 --- a/src/main/java/Dogpaw/domain/UserChannel.java +++ b/src/main/java/Dogpaw/domain/UserChannel.java @@ -6,20 +6,27 @@ @Entity @Getter +@Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) -@RequiredArgsConstructor public class UserChannel { + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne @JoinColumn(name = "USER_ID") - @NonNull private User user; @ManyToOne @JoinColumn(name = "CHANNEL_ID") - @NonNull private Channel channel; + + @Builder + public UserChannel(User user, Channel channel){ + this.user = user; + this.channel = channel; + } + + } diff --git a/src/main/java/Dogpaw/domain/UserChannelMapping.java b/src/main/java/Dogpaw/domain/UserChannelMapping.java new file mode 100644 index 0000000..22a8cbc --- /dev/null +++ b/src/main/java/Dogpaw/domain/UserChannelMapping.java @@ -0,0 +1,7 @@ +package Dogpaw.domain; + +import java.util.List; + +public interface UserChannelMapping { + Channel getChannel(); +} diff --git a/src/main/java/Dogpaw/dto/ChannelDTO.java b/src/main/java/Dogpaw/dto/ChannelDTO.java index c364fc1..2a2469d 100644 --- a/src/main/java/Dogpaw/dto/ChannelDTO.java +++ b/src/main/java/Dogpaw/dto/ChannelDTO.java @@ -1,9 +1,11 @@ package Dogpaw.dto; +import Dogpaw.domain.User; import lombok.Data; import java.time.LocalDate; import java.time.LocalTime; +import java.util.List; public class ChannelDTO { @Data @@ -15,10 +17,16 @@ public static class Create extends Update { public static class Update { private String name; private String purpose; + private Long userId; } @Data public static class Delete { private Long id; } + + @Data + public static class Get { + private Long userId; + } } diff --git a/src/main/java/Dogpaw/dto/ResponseDTO.java b/src/main/java/Dogpaw/dto/ResponseDTO.java index a6cacb7..208061f 100644 --- a/src/main/java/Dogpaw/dto/ResponseDTO.java +++ b/src/main/java/Dogpaw/dto/ResponseDTO.java @@ -47,6 +47,13 @@ public static class ChattingResponse { private List chats; } + @Data + @AllArgsConstructor + public static class ChannelResponse { + Boolean success; + private List channelList; + } + @Data @AllArgsConstructor public static class MessageAllResponse{ diff --git a/src/main/java/Dogpaw/repository/ChannelRepository.java b/src/main/java/Dogpaw/repository/ChannelRepository.java index ada3563..596de15 100644 --- a/src/main/java/Dogpaw/repository/ChannelRepository.java +++ b/src/main/java/Dogpaw/repository/ChannelRepository.java @@ -1,7 +1,11 @@ package Dogpaw.repository; import Dogpaw.domain.Channel; +import Dogpaw.domain.User; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; + public interface ChannelRepository extends JpaRepository { + } diff --git a/src/main/java/Dogpaw/repository/UserChannelRepository.java b/src/main/java/Dogpaw/repository/UserChannelRepository.java new file mode 100644 index 0000000..cd7083d --- /dev/null +++ b/src/main/java/Dogpaw/repository/UserChannelRepository.java @@ -0,0 +1,13 @@ +package Dogpaw.repository; + +import Dogpaw.domain.Channel; +import Dogpaw.domain.User; +import Dogpaw.domain.UserChannel; +import Dogpaw.domain.UserChannelMapping; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface UserChannelRepository extends JpaRepository { + List findAllByUser(User User); +} diff --git a/src/main/java/Dogpaw/service/ChannelService.java b/src/main/java/Dogpaw/service/ChannelService.java index d65ade6..ba05118 100644 --- a/src/main/java/Dogpaw/service/ChannelService.java +++ b/src/main/java/Dogpaw/service/ChannelService.java @@ -1,21 +1,41 @@ package Dogpaw.service; -import Dogpaw.domain.Channel; +import Dogpaw.domain.*; import Dogpaw.repository.ChannelRepository; +import Dogpaw.repository.UserChannelRepository; +import Dogpaw.repository.UserRepository; import javassist.NotFoundException; import lombok.NonNull; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + + @Service @Transactional @RequiredArgsConstructor public class ChannelService { @NonNull private final ChannelRepository channelRepository; + @NonNull + private final UserRepository userRepository; + @NonNull + private final UserChannelRepository userChannelRepository; - public Long saveChannel (Channel channel) throws ArgumentNullException, InvalidArgumentException { + public void addUser(Long userId, Long channelId){ + Channel channel = channelRepository.findById(channelId).get(); + User user = userRepository.findById(userId).get(); + + userChannelRepository.save(UserChannel.builder() + .user(user) + .channel(channel) + .build()); + + } + + public Long saveChannel (Channel channel, Long userId) throws ArgumentNullException, InvalidArgumentException, UserService.UserNotFoundException { if(channel == null){ throw new ArgumentNullException("Channel can't be null"); } @@ -23,6 +43,7 @@ public Long saveChannel (Channel channel) throws ArgumentNullException, InvalidA throw new InvalidArgumentException("Channel Id or URl is null"); } Channel save = channelRepository.save(channel); + addUser(userId, channel.getId()); return save.getId(); @@ -33,6 +54,14 @@ public Channel findOne(Long id) throws NotFoundException { return channel; } + public List getChannelList(Long id) throws NotFoundException{ + User user = userRepository.findById(id).get(); + return userChannelRepository.findAllByUser(user); + } + + + + public void deleteByChannelId(Long id) throws NotFoundException { channelRepository.deleteById(id);