Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
* feat: 화살 보내기 요청 DTO 추가(#24) 보낼 화살 수를 담은 요청 DTO 정의 * feat: 확살 송수신 내역 repository, 내역 확인 로직 추가(#24) - 화살 송수신 내역 repository 정의 - 보낸 사용자, 받은 사용자를 통해 내역 존재 여부를 확인하는 로직 구현 * feat: 화살 송수신 내역 존재 여부 확인 로직 추가(#24) 보낸 사용자, 받은 사용자를 통해 송수신 내역 존재 여부를 확인하는 로직 구현 * feat: 화살 송수신 내역 저장 기능 구현(#24) * feat: 화살 관련 예외 enum 정의(#24) 다음 상황들에 대한 예외 enum을 정의하였다. - 자기 자신에게 화살을 보내는 경우 - 이미 화살을 보낸 사용자인 경우 - 가진 화살 수가 부족해 화살을 보낼 수 없는 경우 * feat: 사용자 화살 감소 로직 추가(#24) 감소하려는 화살 수가 사용자가 보유한 화살 수보다 클 경우 예외 발생 * refactor: 생성 시간 필드, 불필요한 업데이트 불가 DDL 속성 삭제(#24) * feat: 화살 보내기 비즈니스 로직 추가(#24) 화살 보내기 비즈니스 로직은 다음 과정을 거친다. 1. 자기 자신에게 화살을 보내는 상황 검증 2. 화살을 보낸 사용자에게 또 보내는 상황 검증 3. 화살 내역 저장 4. 보내는 사용자 화살 감소, 화살이 부족할 경우 예외 발생(과정 3 롤백) 5. 받는 사용자 화살 증가 * feat: 화살 보내기 API 구현(#24) * refactor: 화살 command repository 삭제(#24) - query, command를 service, repository를 중개하는 별도의 계층을 통해 구분 - 이에 따라 기존 command repository 삭제 - 기존 command repository 사용 위치, 화살 command로 대체 * refactor: 코드 정렬 수정(#24) * refactor: 사용자 화살 증감 메서드 이름 수정(#24) 서로 대치되는 작업을 수행하는 상황을 잘 표현할 수 있도록 메서드 이름 수정 * feat: 화살 관련 예외 enum 추가(#24) - 이미 화살을 보낸 사용자 예외 - 화살이 부족하여 화살을 보낼 수 없는 예외 * refactor: 화살 내역 존재 여부 확인 메서드 이름 수정(#24) 가독성 향상을 위해 간단한 이름을 수정 * refactor: 코드 배치 수정(#24) dev 브랜치 작업 내역 병합에 따른 코드 배치 수정 * refactor: 화살 보내기 API 파라미터 이름 수정(#24) 좀 더 명확하게 대치되는 의미를 나타낼 수 있도록 화살을 받는 사용자 ID 파라미터 이름을 receiverId로 수정 * refactor: 컨벤션에 맞게 코드 배치 수정(#24) * feat: 이름 칼럼, 생성자 추가(#27) - 이름 칼럼 추가 - 테스트시 활용 가능한 생성자 추가 * feat: 상대 프로필 응답 DTO 수정(#27) - 래퍼 타입 필드들 기본 타입으로 변경 - 프로필 사진 URL 리스트 필드 추가 - 사용자가 가진 총 화살 수 필드 추가 - 음주 성향, 흡연 성향 필드 추가 - 코드 정렬 * feat: 사용자 엔티티 수정(#27) - 레퍼런스 타입 not null 필드들, Column 어노테이션 사용 명시 - salt 필드 추가 - 생성 일시, 최종 수정 일시 필드 추가 - JpaAuditing 활용, 생성/최종 수정 일시 필드들 엔티티 저장시 자동 설정 - 새로운 생성자 구성 * feat: 상대 프로필 조회 비즈니스 로직 추가(#27) 프로필을 조회하는 사용자 ID의 경우 상대방이 화살을 보넀던 사용자인지 확인하기 위해 파라미터로 받는다. * feat: 상대 프로필 API 구현 및 코드 정렬(#27) * feat: 사용자 엔티티 수정(#27) - 요구사항 변경에 따라 음주 성향, 흡연 성향 필드 삭제 - 성별 정보 제공 메서드 추가 * feat: 사용자 프로필 응답 DTO 수정(#27) - 음주 성향, 흡연 성향 필드 삭제 - 성별 필드 추가 * feat: 사용자 프로필 상세 응답 DTO 수정(#27) - 음주 성향, 흡연 성향 필드 삭제 - 생성자 성별 필드 설정 로직 수정 - 코드 정렬 * feat: 사용자 프로필 조회 비즈니스 로직 수정(#27) - 음주 성향, 흡연 성향 삭제 - 성별 정보 응답에 포함토록 수정 - 코드 정렬 * chore: spring mail 종속성 추가(#35) * chore: Gmail SMTP 사용을 위한 설정 추가(#35) * feat: 이메일 기반 사용자 조회 로직 추가(#35) * feat: 이메일 기반 사용자 조회 로직 추가(#35) * feat: 서비스 사용 정규식 enum 정의(#35) - 서비스에서 사용하는 정규식들을 모아놓는 enum 클래스 정의 - 이메일, 비밀번호 정규식 정의 * feat: 임시 비밀번호 발급 기능 구현(#35) - 비밀번호 정규식을 충족하는 임의의 임시 비밀번호를 발급 - Random보다 생성하는 난수를 예측하기 어려워 보안적으로 뛰어난 SecureRandom 사용 * feat: 메일 관련 설정 정의(#35) - spring mail에서 이메일 전송을 위해 제공하는 JavaMailSender 빈 등록 - 필요한 설정 값들은 application.yml에 정의된 값들을 끌어와 사용 - 빈 등록 로직에서 구글 SMTP 서버를 통해 메일을 전송하기 위한 설정 코드 추가 * feat: 이메일 전송 로직 추가(#35) - 단순 텍스트 이메일 전송 기능 구현 - 발신자는 application.yml에 정의해논 구글 SMTP 사용자 이름 값으로 설정 * feat: 임시 비밀번호 발급 비즈니스 로직 추가(#35) 임시 비밀번호는 다음 과정을 거친다. 1. 요청 이메일 기반 사용자 조회 2. 임시 비밀번호 생성 3. 사용자 비밀번호, 임시 비밀번호로 변경 4. 임시 비밀번호 발급 메일 전송 임시 비밀번호를 암호화하는 로직은 추후 구현 예정 * feat: 임시 비밃번호 발급 비즈니스 로직 트랜잭션 정의 추가(#35) * feat: 임시 비밀번호 발급 요청 DTO 수정(#35) - 불필요한 기존 생성자 삭제, 기본 생성자 추가 - 비밀번호 형식 제약 조건 추가 - 코드 정렬 * feat: 임시 비밀번호 발급 API 구현(#35) - 임시 비밀번호 발급 API 구현 - 명세 속성 수정 - 코드 정렬 * refactor: 병합에 따른 코드 재배치(#35) dev 브랜치 작업 내역 병합에 따른 코드 재배치 * refactor: 병합에 따른 코드 재배치(#35) dev 브랜치 작업 내역 병합에 따른 코드 재배치 * chore: sms 서비스 sdk 의존성 추가(#28) coolsms 서비스에서 제공하는 java sdk 의존성 추가 * chore: sms 서비스 관련 설정 추가(#28) sms 서비스를 이용하기 위해 필요한 설정들 추가 * feat: sms 서비스 이용을 위한 설정 정의(#28) - coolsms에서는 메시지 전송을 수행할 수 있는 DefaultMessageService 제공 - config에서 application.yml을 통해 값을 주입 받아 DefaultMessageService 빈 등록 * feat: 인증 코드 생성 로직 추가(#28) - apache.common.lang3 라이브러리의 RandomStringUtils 이용 - 영어 대소문자, 숫자로 구성된 6자리 랜덤 인증 코드를 생성 - 영어 대소문자 52개(26+26), 숫자 10개로 총 62개의 선택 가능 문자 존재 - 생성 가능한 인증 코드 수, 약 56억 8천만 개(62^6)로 보안성을 확보하였음 * feat: 문자 전송 로직 추가(#28) * feat: 전화번호 기반 사용자 존재 여부 확인 로직 정의(#28) * feat: 전화번호 기반 사용자 존재 여부 확인 로직 추가(#28) * feat: 전화번호 형식 제약 조건 추가(#28) 010으로 시작하며 0~9까지의 숫자로 이뤄진 11자리 문자열만 허용토록 제약 조건 추가 * chore: application.yml 수정(#28) sms.provider 속성도 application.properties 통해 관리하도록 수정 * feat: 인증 코드 sms 전송 비즈니스 로직 추가(#28) - 요청된 전화번호를 통해 사용자 존재 확인 - 사용자가 존재할 경우만 sms로 인증 코드 전송 * feat: 전화번호 인증 코드 전송 API 구현(#28) * chore: spring data redis 의존성 추가(#28) * chore: redis 관련 설정 추가(#28) * feat: redis 관련 설정 정의(#28) - redis 커넥션 팩토리 빈 등록 - CRUD 연산 지원을 위한 RedisTemplate 빈 등록 * feat: redis 키-값 저장,조회,삭제 로직 추가(#28) - redis를 이용한 저장, 삭제 기능 지원 유틸 클래스 정의 - 만료 시간을 분 단위로 설정하는 저장 로직 구현 - 기본 조회 로직 구현, Optional 리턴 타입을 통해 null 처리 지원 - 기본 삭제 로직 구현 * feat: 인증 코드 sms 전송 비즈니스 로직 수정(#28) - 인증 코드 sms 전송 이전 redis에 번호를 키로 코드를 저장하는 로직 추가 - 새 인증 코드 발급 이전 기존 발급 내역 삭제 * feat: 인증 코드 정규식 정의(#28) 영어 대소문자, 숫자로 이뤄진 6자리 문자열만 허용하는 정규식 enum 정의 * feat: 아이디 찾기 예외 enum 정의(#28) - 인증 코드 내역이 존재하지 않는 경우(인증 코드 만료도 포함) - 인증 코드가 일치하지 않는 경우 * feat: 전화번호 기반 사용자 조회 기능 정의(#28) * feat: 전화번호 기반 사용자 조회 로직 추가(#28) * refactor: 코드 정렬(#28) * feat: 아이디 찾기 요청 DTO 수정(#28) - 인증 번호를 발급한 전화번호 필드 추가 - 인증 코드 필드 명세 속성 수정 - 인증 코드 정규식 제약 조건 추가 - 불필요한 기존 생성자, 기본 생성자로 대체 * feat: 아이디 찾기 비즈니스 로직 추가(#28) 아이디 찾기 요청은 인증 코드 발급 전화번호, 인증 코드를 포함한다. 아이디 찾기는 다음 과정을 거쳐 이뤄진다. 1. 발급 전화번호를 기반으로 인증 코드 redis에서 조회 2. 인증 코드 일치 확인 3. 전화번호 기반 사용자 조회 4. 확인한 인증 코드 삭제 5. 찾은 이메일을 응답으로 반환 * feat: 아이디 찾기 API 구현(#28) * feat: 전화번호 정규식 정의(#28) * refactor: 이메일 찾기 요청이라는 것을 명시하기 위해 클래스 이름 변경(#28) * refactor: 이메일 찾기 응답이라는 것을 명시하기 위해 클래스 이름 변경(#28) * refactor: 이메일 찾기 요청,응답 DTO 사용 위치 이름 변경(#28) * refactor: 인증 코드 sms 전송, 이메일 찾기 API 수정(#28) - 아이디 찾기, 이메일 찾기로 명칭 변경 - 요청, 응답 DTO 사용 위치 이름 수정 - API 명세 수정 * refactor: 사용자 엔티티 코드 수정(#28) - inactiveStatus 필드, inactive로 이름 수정 - 잘못된 들여쓰기 수정, 코드 정렬 * chore: 불필요한 sms, redis 관련 속성 정의 삭제(#28) * refactor: 잘못된 들여쓰기 수정, 코드 정렬(#28) * refactor: sms 관련 로직 수정(#28) - 잘못된 들여쓰기 수정 - application.properties에서 sms 관련 설정 주입받도록 수정 * refactor: 잘못된 들여쓰기 수정(#28) * refactor: redis 관련 설정 수정(#28) - redis 관련 속성, application.properties 통해 주입받도록 수정 - 잘못된 들여쓰기 수정 * chore: 병합으로 인한 코드 배치 수정(#28) * refactor: 병합으로 인한 코드 배치 수정(#28) dev 브랜치 작업내역 병합으로 인한 코드 배치 수정 * refactor: 잘못될 들여쓰기 간격 수정(#28) * refactor: 사용하지 않는 redis 관련 기능 삭제(#28) * feat: 전화번호, 코드 기반 인증 코드 조회 로직 정의(#28) * feat: 인증 코드 엔티티 구성(#28) - 발급 받은 전화번호, 인증 코드, 만료 일자를 포함하는 인증 코드 엔티티 정의 - 만료 여부 확인 로직 추가 * feat: 전화번호, 코드 기반 인증 코드 조회 로직 구현(#28) * feat: 인증 코드 저장, 삭제 로직 추가(#28) * feat: 만료된 인증 코드 예외 정의(#28) * feat: 인증 코드 sms 전송, 이메일 찾기 비즈니스 로직 수정(#28) redis에 인증 코드를 저장하던 방식에서 RDB에 저장하도록 수정 * chore: 불필요한 spring-data-redis 의존성 삭제(#28) * refactor: 인증 코드 sms 전송 API, 이메일 찾기 API 수정(#28) - 잘못된 어노테이션 순서 수정 - 이메일 찾기 API, 요청 검증 과정 추가 * refactor: 인증 코드 요청 dto 이름 변경(#44) * feat: 회원가입시 인증 코드 sms 전송 비즈니스 로직 추가(#44) - 기존 로직에서 중복되는 인증 코드 생성 및 저장 로직, 별도 메서드 추출 - 회원가입시 인증 코드 sms 전송 비즈니스 로직 구현 * feat: 인증 코드 sms 전송(회원가입) API 구현 및 명세(#44) * feat: 전화번호 인증 요청 dto 구성(#44) * feat: 전화번호 인증 비즈니스 로직 추가(#44) * feat: 전화 번호 인증(회원가입) API 구현 및 명세(#44) * feat: 공백값, null 값 검증 조건 추가(#28) * feat: 공백값, null 값 검증 조건 추가(#28) * refactor: 이메일 찾기 API 메서드 이름 수정(#28) * feat: 테이블 매핑 설정 추가(#28) * refactor: 인증 코드 요청 dto 이름 변경, 사용 위치 수정(#28) * refactor: 인증 코드 요청 dto 이름 오타 수정, 사용 위치 수정(#28) * refactor: 잘못된 들여쓰기 간격 수정(#44) * refactor: 병합으로 인한 코드 수정(#44) dev 브랜치 작업내역 병합으로 인한 코드 수정 * chore: 병합으로 인한 빌드 스크립트 수정(#44) * refactor: 잘못된 들여쓰기 수정(#44) * feat: 이미 사용 중인 핸드폰 번호 예외 정의(#44) 회원 가입 과정에서 전화번호 인증시 발생할 수 있는 이미 사용 중인 핸드폰 번호 예외 정의 * refactor: 불필요한 예외들 삭제(#44) * feat: 인증 코드 조회 로직 변경(#44) - 기존 로직은 만료 일자를 고려하지 않고 인증 코드 조회 - 만료 일자를 고려하여 가장 먼저 조회되는 인증 코드를 반환하는 방식으로 로직 변경 * feat: 인증 코드 조회 로직 변경(#44) 만료 되지 않은 가장 처음 발견되는 인증 코드를 조회하도록 로직 변경 * feat: 인증 코드 관련 비즈니스 로직 수정(#44) - 인증 코드 조회시 만료 일자를 고려하도록 로직 수정 - 회원 가입 과정에서 인증 코드를 받을 번호를 이미 사용하는 사용자가 있는 지 검증하는 과정 추가 * feat: 비밀번호 찾기 API URL 수정(#44) 불필요한 help 경로 제거 * feat: 만료된 인증 코드 일괄 삭제 로직 정의(#44) * feat: 만료된 인증 코드 일괄 삭제 로직 추가(#44) * feat: 만료된 인증 코드 일괄 삭제 스케줄링 로직 추가(#44) - 매일 자정마다 만료된 인증 코드 일괄 삭제 * refactor: 인증 코드 조회 메서드명 수정(#44) 만료된 인증 코드는 어차피 서비스에서 사용되지 않는다. 따라서 메서드명에 굳이 '만료되지 않았다'는 표현하지 않는 형식으로 수정 * feat: 만료 인증 코드 일괄 삭제 로직 수정 및 리팩터링(#44) - 삭제 로직 주기 하루에서 한 달로 적절히 길게 조정 - 인증 코드 조회 메서드명 변경에 따른 사용위치 수정