
--- build.gradle
+++ build.gradle
... | ... | @@ -68,6 +68,9 @@ |
68 | 68 |
implementation 'io.jsonwebtoken:jjwt-api:0.12.5' |
69 | 69 |
implementation 'io.jsonwebtoken:jjwt-impl:0.12.5' |
70 | 70 |
implementation 'io.jsonwebtoken:jjwt-jackson:0.12.5' |
71 |
+ |
|
72 |
+ // socket |
|
73 |
+ implementation 'org.springframework.boot:spring-boot-starter-websocket' |
|
71 | 74 |
} |
72 | 75 |
|
73 | 76 |
tasks.named('test') { |
--- src/main/java/kr/co/takensoft/ai/system/chatMsg/dao/ChatMsgDAO.java
+++ src/main/java/kr/co/takensoft/ai/system/chatMsg/dao/ChatMsgDAO.java
... | ... | @@ -24,7 +24,21 @@ |
24 | 24 |
* |
25 | 25 |
* 메시지 등록 |
26 | 26 |
*/ |
27 |
- public int saveChatMsg(ChatMsgVO chatMsgVO); |
|
27 |
+ int saveChatMsg(ChatMsgVO chatMsgVO); |
|
28 | 28 |
|
29 |
- public List<ChatMsgVO> findAllChatMsgsByChatRoomId(String chatRoomId); |
|
29 |
+ /** |
|
30 |
+ * @param chatRoomId - 채팅방 아이디 |
|
31 |
+ * @return List<ChatMsgVO> - 메시지 목록 |
|
32 |
+ * |
|
33 |
+ * 메시지 목록 조회 |
|
34 |
+ */ |
|
35 |
+ List<ChatMsgVO> findAllChatMsgsByChatRoomId(String chatRoomId); |
|
36 |
+ |
|
37 |
+ /** |
|
38 |
+ * @param chatMsgId - 채팅 메시지 아이디 |
|
39 |
+ * @return ChatMsgVO - 메시지 객체 |
|
40 |
+ * |
|
41 |
+ * 메시지 조회 |
|
42 |
+ */ |
|
43 |
+ ChatMsgVO findById(String chatMsgId); |
|
30 | 44 |
} |
--- src/main/java/kr/co/takensoft/ai/system/chatMsg/dto/ChatMsgDTO.java
+++ src/main/java/kr/co/takensoft/ai/system/chatMsg/dto/ChatMsgDTO.java
... | ... | @@ -22,6 +22,7 @@ |
22 | 22 |
@AllArgsConstructor |
23 | 23 |
public class ChatMsgDTO { |
24 | 24 |
|
25 |
+ private String chatRoomId; // 채팅방 아이디 |
|
25 | 26 |
private String chatMsgId; // 채팅 메시지 아이디 |
26 | 27 |
private String senderId; // 메시지 작성자 아이디 |
27 | 28 |
private String senderName; // 메시지 작성자 이름 |
... | ... | @@ -31,6 +32,7 @@ |
31 | 32 |
|
32 | 33 |
public static ChatMsgDTO from(ChatMsgVO chatMsgVO) { |
33 | 34 |
return new ChatMsgDTO( |
35 |
+ chatMsgVO.getChatRoomId(), |
|
34 | 36 |
chatMsgVO.getChatMsgId(), |
35 | 37 |
chatMsgVO.getSenderId(), |
36 | 38 |
chatMsgVO.getSenderName(), |
--- src/main/java/kr/co/takensoft/ai/system/chatMsg/dto/InsertChatMsgDTO.java
+++ src/main/java/kr/co/takensoft/ai/system/chatMsg/dto/InsertChatMsgDTO.java
... | ... | @@ -22,4 +22,10 @@ |
22 | 22 |
public class InsertChatMsgDTO extends BaseParam { |
23 | 23 |
|
24 | 24 |
private String msgContent; // 메시지 내용 |
25 |
+ |
|
26 |
+ public InsertChatMsgDTO(String senderId, String msgContent) { |
|
27 |
+ |
|
28 |
+ this.setMemberId(senderId); |
|
29 |
+ this.setMsgContent(msgContent); |
|
30 |
+ } |
|
25 | 31 |
} |
--- src/main/java/kr/co/takensoft/ai/system/chatMsg/service/ChatMsgService.java
+++ src/main/java/kr/co/takensoft/ai/system/chatMsg/service/ChatMsgService.java
... | ... | @@ -2,6 +2,7 @@ |
2 | 2 |
|
3 | 3 |
import kr.co.takensoft.ai.system.chatMsg.dto.ChatMsgDTO; |
4 | 4 |
import kr.co.takensoft.ai.system.chatMsg.dto.InsertChatMsgDTO; |
5 |
+import kr.co.takensoft.ai.system.chatMsg.vo.ChatMsgVO; |
|
5 | 6 |
import kr.co.takensoft.ai.system.feedback.vo.FeedbackVO; |
6 | 7 |
import org.springframework.transaction.annotation.Transactional; |
7 | 8 |
|
... | ... | @@ -22,12 +23,12 @@ |
22 | 23 |
* @param chatRoomId - 채팅방 아이디 |
23 | 24 |
* @param senderId - 보내는 사용자 아이디 |
24 | 25 |
* @param msgContent - 메시지 내용 |
25 |
- * @return 등록 성공 여부 |
|
26 |
+ * @return 채팅 메시지 객체 |
|
26 | 27 |
* |
27 | 28 |
* 채팅방 메시지 등록 |
28 | 29 |
*/ |
29 | 30 |
@Transactional |
30 |
- int saveChatMsg(String chatRoomId, String senderId, String msgContent); |
|
31 |
+ ChatMsgVO saveChatMsg(String chatRoomId, String senderId, String msgContent); |
|
31 | 32 |
|
32 | 33 |
/** |
33 | 34 |
* @param chatRoomId - 채팅방 아이디 |
--- src/main/java/kr/co/takensoft/ai/system/chatMsg/service/impl/ChatMsgServiceImpl.java
+++ src/main/java/kr/co/takensoft/ai/system/chatMsg/service/impl/ChatMsgServiceImpl.java
... | ... | @@ -36,22 +36,24 @@ |
36 | 36 |
* @param chatRoomId - 채팅방 아이디 |
37 | 37 |
* @param senderId - 보내는 사용자 아이디 |
38 | 38 |
* @param msgContent - 메시지 내용 |
39 |
- * @return 등록 성공 여부 |
|
39 |
+ * @return 채팅 메시지 객체 |
|
40 | 40 |
* |
41 | 41 |
* 채팅방 메시지 등록 |
42 | 42 |
*/ |
43 | 43 |
@Override |
44 | 44 |
@Transactional |
45 |
- public int saveChatMsg(String chatRoomId, String senderId, String msgContent) { |
|
45 |
+ public ChatMsgVO saveChatMsg(String chatRoomId, String senderId, String msgContent) { |
|
46 | 46 |
|
47 | 47 |
try { |
48 | 48 |
|
49 | 49 |
String chatMsgId = chatMsgIdgn.getNextStringId(); // 채팅 메시지 구분 아이디 생성 |
50 | 50 |
ChatMsgVO chatMsgVO = new ChatMsgVO(chatMsgId, chatRoomId, senderId, msgContent); // 채팅 메시지 객체 생성 |
51 |
- return chatMsgDAO.saveChatMsg(chatMsgVO); // 채팅 메시지 등록 |
|
51 |
+ chatMsgDAO.saveChatMsg(chatMsgVO); // 채팅 메시지 등록 |
|
52 |
+ ChatMsgVO saved = chatMsgDAO.findById(chatMsgId); // 저장된 채팅 메시지 반환 |
|
53 |
+ return saved; // 채팅 메시지 객체 반환 |
|
52 | 54 |
} catch (Exception e) { |
53 | 55 |
e.printStackTrace(); |
54 |
- return -1; |
|
56 |
+ throw e; |
|
55 | 57 |
} |
56 | 58 |
} |
57 | 59 |
|
--- src/main/java/kr/co/takensoft/ai/system/chatRoom/service/ChatRoomService.java
+++ src/main/java/kr/co/takensoft/ai/system/chatRoom/service/ChatRoomService.java
... | ... | @@ -2,6 +2,7 @@ |
2 | 2 |
|
3 | 3 |
import kr.co.takensoft.ai.system.chatMsg.dto.ChatMsgDTO; |
4 | 4 |
import kr.co.takensoft.ai.system.chatMsg.dto.InsertChatMsgDTO; |
5 |
+import kr.co.takensoft.ai.system.chatMsg.vo.ChatMsgVO; |
|
5 | 6 |
import kr.co.takensoft.ai.system.common.dto.BaseParam; |
6 | 7 |
import kr.co.takensoft.ai.system.feedback.vo.FeedbackVO; |
7 | 8 |
import org.springframework.transaction.annotation.Transactional; |
... | ... | @@ -31,12 +32,12 @@ |
31 | 32 |
/** |
32 | 33 |
* @param chatRoomId - 채팅방 아이디 |
33 | 34 |
* @param request - 메시지 관련 내용을 담은 DTO 객체 |
34 |
- * @return 등록 성공 여부 |
|
35 |
+ * @return 채팅 메시지 객체 |
|
35 | 36 |
* |
36 | 37 |
* 채팅방 메시지 등록 |
37 | 38 |
*/ |
38 | 39 |
@Transactional |
39 |
- int saveChatMsg(String chatRoomId, InsertChatMsgDTO request); |
|
40 |
+ ChatMsgVO saveChatMsg(String chatRoomId, InsertChatMsgDTO request); |
|
40 | 41 |
|
41 | 42 |
/** |
42 | 43 |
* @param chatRoomId - 채팅방 아이디 |
--- src/main/java/kr/co/takensoft/ai/system/chatRoom/service/impl/ChatRoomServiceImpl.java
+++ src/main/java/kr/co/takensoft/ai/system/chatRoom/service/impl/ChatRoomServiceImpl.java
... | ... | @@ -59,13 +59,13 @@ |
59 | 59 |
/** |
60 | 60 |
* @param chatRoomId - 채팅방 아이디 |
61 | 61 |
* @param request - 메시지 관련 내용을 담은 DTO 객체 |
62 |
- * @return 등록 성공 여부 |
|
62 |
+ * @return 채팅 메시지 객체 |
|
63 | 63 |
* |
64 | 64 |
* 채팅방 메시지 등록 |
65 | 65 |
*/ |
66 | 66 |
@Override |
67 | 67 |
@Transactional |
68 |
- public int saveChatMsg(String chatRoomId, InsertChatMsgDTO request) { |
|
68 |
+ public ChatMsgVO saveChatMsg(String chatRoomId, InsertChatMsgDTO request) { |
|
69 | 69 |
return chatMsgService.saveChatMsg(chatRoomId, request.getMemberId(), request.getMsgContent()); // 채팅 메시지 등록 |
70 | 70 |
} |
71 | 71 |
|
--- src/main/java/kr/co/takensoft/ai/system/feedback/service/impl/FeedbackServiceImpl.java
+++ src/main/java/kr/co/takensoft/ai/system/feedback/service/impl/FeedbackServiceImpl.java
... | ... | @@ -78,7 +78,7 @@ |
78 | 78 |
return feedbackDAO.setFeedbackCheck(feedbackVO.getFeedbackId()); // 피드백 확인 |
79 | 79 |
} catch (Exception e) { |
80 | 80 |
e.printStackTrace(); |
81 |
- return -1; |
|
81 |
+ throw e; |
|
82 | 82 |
} |
83 | 83 |
} |
84 | 84 |
|
--- src/main/java/kr/co/takensoft/ai/system/projectMember/service/impl/ProjectMemberServiceImpl.java
+++ src/main/java/kr/co/takensoft/ai/system/projectMember/service/impl/ProjectMemberServiceImpl.java
... | ... | @@ -80,11 +80,7 @@ |
80 | 80 |
@Override |
81 | 81 |
public void validateProjectOwner(String projectGroupId, String memberId) { |
82 | 82 |
if(!projectMemberDAO.existsByProjectGroupIdAndMemberIdAndIsOwner(projectGroupId, memberId)){ |
83 |
- try { |
|
84 |
- throw new IllegalAccessException("이 프로젝트의 대표자가 아닙니다."); |
|
85 |
- } catch (IllegalAccessException e) { |
|
86 |
- e.printStackTrace(); |
|
87 |
- } |
|
83 |
+ throw new IllegalArgumentException("이 프로젝트의 대표자가 아닙니다."); |
|
88 | 84 |
} |
89 | 85 |
} |
90 | 86 |
} |
--- src/main/resources/mybatis/mapper/chatMsg/chatMsg-SQL.xml
+++ src/main/resources/mybatis/mapper/chatMsg/chatMsg-SQL.xml
... | ... | @@ -65,6 +65,24 @@ |
65 | 65 |
ORDER BY cm.created_at |
66 | 66 |
</select> |
67 | 67 |
|
68 |
- |
|
68 |
+ <!-- |
|
69 |
+ 작 성 자 : 박현정 |
|
70 |
+ 작 성 일 : 2025.07.29 |
|
71 |
+ 내 용 : 채팅 메시지 조회 |
|
72 |
+ --> |
|
73 |
+ <select id="findById" parameterType="String" resultMap="ChatMsgMap"> |
|
74 |
+ SELECT |
|
75 |
+ cm.chat_msg_id, |
|
76 |
+ cm.chat_room_id, |
|
77 |
+ cm.sender_id, |
|
78 |
+ m.member_name, |
|
79 |
+ cm.msg_content, |
|
80 |
+ cm.use_at, |
|
81 |
+ cm.created_at, |
|
82 |
+ cm.updated_at |
|
83 |
+ FROM chat_msg cm |
|
84 |
+ LEFT JOIN member m ON cm.sender_id = m.member_id |
|
85 |
+ WHERE chat_msg_id = #{chatMsgId} |
|
86 |
+ </select> |
|
69 | 87 |
|
70 | 88 |
</mapper>(파일 끝에 줄바꿈 문자 없음) |
--- src/main/resources/mybatis/mapper/feedback/feedback-SQL.xml
+++ src/main/resources/mybatis/mapper/feedback/feedback-SQL.xml
... | ... | @@ -95,9 +95,9 @@ |
95 | 95 |
f.updated_at |
96 | 96 |
FROM feedback f |
97 | 97 |
LEFT JOIN project p ON f.project_group_id = p.project_group_id AND p.is_main = 'Y' |
98 |
+ LEFT JOIN project_member pm ON f.project_group_id = pm.project_group_id AND pm.member_id = #{memberId} |
|
98 | 99 |
LEFT JOIN member m ON f.member_id = m.member_id |
99 | 100 |
LEFT JOIN chat_room cr ON f.feedback_id = cr.feedback_id |
100 |
- WHERE f.member_id = #{member_id} |
|
101 | 101 |
AND f.use_at = 'Y' |
102 | 102 |
</select> |
103 | 103 |
|
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?