ChatService : NativeQuery 부분 해당 repository의 impl 을 만들어 영역분리
서비스는 비즈니스 영역이고 해당 쿼리는 DB 영역이라 repository로 빼야될듯합니다.
MyPageService :
147번 of 메소드 쓸때 from 사용하여 DTO 내부에서 형변환 시키는게 나을듯합니다.
response 에 gender, lookingFor Gender enum 있습니다.
matchingSettingRepository. findById 사용할 때 반환을 엔티티로 반환해서 null 체크하던데
-> Optional 로 묶고 null 체크하는 방식을 써야 코드적으로 조금 더 안정적입니다.
108 번 이미지 삭제 시 DB 제거후 파일 제거
-> 추후 S3 연동도 그렇고 DB 를 후순위에 두면 트랜젝션은 DB 쪽에 걸려서 앞단 파일 제거는 롤백이 힘들어집니다.
ChatRestController :
ChatWebSocketController :
MyPageRestController :
InterestResponse : getInterests 제거
ChatService :
Object[] result;
try {
result = (Object[]) em.createNativeQuery("""
SELECT matching_status, chatting_status
FROM matching
WHERE matching_id = :id
""")
.setParameter("id", matchingId)
.getSingleResult();
} catch (NoResultException e) {
throw new IllegalArgumentException("매칭 정보가 존재하지 않습니다.");
}
MatchStatus matchingStatus = MatchStatus.valueOf((String) result[0]);
이런식의 native 쿼리 방식에서
JPA 프로젝트에 맞게
JPQL 을 사용합시다.
ex)
MatchingEntity matchingEntity = em.createQuery("""
SELECT m
FROM MatchingEntity m
WHERE m.id = :id
""", MatchingEntity.class)
.setParameter("id", matchingId)
.getSingleResult();
MatchStatus matchingStatus = matchingEntity.getMatchingStatus();
그리고 Service에 DB 관련 SQL 쿼리 전부 infra 패키지에 따로 클래스 생성해서 분리합시다.
JPQL 사용하면 쿼리에서 꺼낸 enum 내용 알아서 넣어줍니다.
112 번 : return .builder() 있는데 메소드로 뺍시다.
163 번 : 좀만 깨끗하게
193 번 : 어차피 거절 enum 전용 메소드니까 매개변수 제거하고 내부에서 선언
매개변수 req 넘어온거 형변환
application에 위치한 enum 패키지.. 딴곳으로 옮깁시다.
AdminRestCont : CookieUtil 클래스 사용
62 번 url 목적성을 위해 좀 더 자세하게 작성( 공지 등록이 /notice 임 )
38, 72 번 : 안쓰는 매개변수 제거
104 번 : DTO에 role 값 enum으로 주고 왜 여기서는 String으로 받나요? enum으로 통일 token에 enum도 넣어집니다.
AdminMemberRes : 어드민 생성 과정은 일반 회원 -> 어드민 으로 변경되는건가요? 음 존재 이유 설명
AdminCont : 제거
AdminRepo : id 에 column(name ="example_id" ) 까지 추가
Notice : entity같은데 클래스명 entity 추가
NoticeRepo : 위치 변경
NoticeService : 클래스단위로 Transaction(readonly=true) 추가 후 단일적으로 Transaction 추가
43 번 : 특별한 이유 아니면 .toList() 로 변경
NoticeRestController :
35번 : put 은 전체수정 -> PatchMapping 으로 수정
AdminDetail : 존재이유? security 적용이 아예 안된느낌인데요. UserDetail 관련 코드 더 개발 또는 삭제.
JwtAuthenticationFilter: 익셉션 시 401 throw
위 코드는 제가 이미 구현한 애들입니당.
기능에 본인과 상대가 있는 기능일 때 변수명 통일
본인 : currentId
상대 : targetId
취미 리스트 enum으로 변경
마이페이지 기능들 완료
-> 마이페이지에 위치기반 on/off 로 위치 넣을수있게 수정
커뮤니티
공지사항
간단한 어드민페이지
어드민 신고
어드민 피드백
-> 네비게이션에 피드백칸 추가해서 어드민페이지에서 볼수있게끔
메인, 스타트 페이지 프론트 완선( 제일 마지막에 시작 )
진우 : 신고, 관심버튼, 매칭 요청
은식 : 커뮤니티, 피드백 한 거 내용 수정
은섭 : 어드민 신고처리, 피드백 페이지
어드민 신고처리 :
어드민 페이지에서 신고접수된 유저 리스트 노출 ( 페이지에 셀렉스칸 추가해서 신고횟수 신고접수 유형 등 신고접수에서 할수있는 셀렉트 추가 )
신고 리스트에 회원정보,
신고 접수 횟수,
접수받은 신고 리스트 버튼( 클릭시 팝업으로 신고내용 리스트업 ),
즉사 버튼( 접수받은 신고내용을 바탕으로 즉결처분할수있는 버튼 제작. ex: 성기노출사진을 프로필에 올린 자, 채팅 중 범법적인 언행을 하는 자 등 )
피드백 페이지 :