스파르타 코딩클럽_ 내일 배움 캠프 Spring 트랙 6기
[프로젝트] 개발자를 위한 공모전 사이트 (&&)
2023.08.16 ~ 2023.09.15
<프로젝트 정보>
개발도구 : IntelliJ
프로그래밍 언어 : Java
데이터베이스 : MySQL
프레임워크 : Spring / Spring Boot / Spring Security
와이어프레임 : Figma
ERD 설계 : ERD Cloud
Storage : AWS S3
Front : HTML / CSS / JavaScript / JQuery / Bootstrap
<프로젝트 내용>
1:1 채팅 기능 관련 Service class를 팀에서 구현했다.
package com.sparta.and.service;
import com.sparta.and.dto.chat.ChatroomRequestDto;
import com.sparta.and.dto.chat.ChatroomResponseDto;
import com.sparta.and.entity.Chatroom;
import com.sparta.and.entity.User;
import com.sparta.and.repository.ChatroomRepository;
import com.sparta.and.repository.UserRepository;
import com.sparta.and.security.UserDetailsImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@RequiredArgsConstructor
public class ChatroomService {
private final UserRepository userRepository;
private final ChatroomRepository chatroomRepository;
public List<ChatroomResponseDto> getChatRooms(UserDetailsImpl userDetails) {
List<Chatroom> chatroomList = chatroomRepository.findAllByFounderOrParticipant(userDetails.getUser(), userDetails.getUser());
return chatroomList.stream().map(ChatroomResponseDto::new).toList();
}
public ChatroomResponseDto createChatroom(ChatroomRequestDto ChatroomRequestDto, UserDetailsImpl userDetails) {
User participant = userRepository.findById(ChatroomRequestDto.getParticipant()).orElseThrow(() -> new IllegalArgumentException("해당되는 사용자가 없습니다."));
Chatroom chatroom = Chatroom.builder()
.chatroomName(ChatroomRequestDto.getChatroomName())
.founder(userDetails.getUser())
.participant(participant)
.build();
// 동일한 chatroom이 있는지 검사하는 로직 필요
return new ChatroomResponseDto(chatroomRepository.save(chatroom));
}
public ChatroomResponseDto getChatRoom(Long roomId, UserDetailsImpl userDetails) {
Chatroom chatroom = chatroomRepository.findById(roomId).orElseThrow(() -> new IllegalArgumentException("채팅방이 존재하지 않습니다."));
return new ChatroomResponseDto(chatroom);
}
}
public void enter(@RequestBody ChatMessageDto message) {
message.setMessage(message.getWriter() + "님이 채팅방에 참여하였습니다.");
template.convertAndSend("/sub/api/chat/room/" + message.getRoomId(), message);
}
public void message(@RequestBody ChatMessageDto message) {
template.convertAndSend("/sub/api/chat/room/" + message.getRoomId(), message);
}
채팅 서비스 관련 테스트 위해 카카오, 구글 로그인을 동시에 진입해서 채팅이 잘 되는 지 확인해야하는 과정에서
구글 로그인 인증 실패 오류 발견
-> OAuth 동의가 안되어서 문제가 생기는 것 같아 일단 동의요청을 구글측에 했으나 아직 승인이 나지않아
동작이 잘 되는지 확인은 못했다.
승인이 되면 테스트 할 예정이고, 내일부터는 프론트엔드 제작 예정이다.
추가로 기능 구현 막바지이기도 하고 당장 다음주에 중간 점검 발표가 있기 때문에 일단 dev 브랜치에
모든 기능을 PR해서 팀원들과 코드 리뷰나 오류가 없는지 전부 확인 중이다.
'🏕️내일배움캠프 > 📂개발자를 위한 공모전 사이트(23.08.16)' 카테고리의 다른 글
개발자를 위한 공모전 사이트 (&&) 9일 _ 실시간 1:1 채팅 (0) | 2023.08.28 |
---|---|
개발자를 위한 공모전 사이트 (&&) 8일 _ 유저 블랙리스트 처리 및 회원가입 방지 (0) | 2023.08.25 |
개발자를 위한 공모전 사이트 (&&) 7일 _ 실시간 상태 업데이트/하위 카테고리 구현 방향 결정 및 유저 관리 CRUD (0) | 2023.08.24 |
개발자를 위한 공모전 사이트 (&&) 6일 _ 실시간 상태 업데이트/하위 카테고리 구현 (0) | 2023.08.23 |
개발자를 위한 공모전 사이트 (&&) 5일 _ 백오피스 프로젝트 구현 (0) | 2023.08.22 |