Skip to content

Commit d92dac2

Browse files
authored
[FEATURE] 유저 회원가입 추가 (#303)
* refactor: sign-in 관련 패키지 이동 및 정리 * feat(cookie): 쿠키 관련 로직 삭제 * feat(sign): 불필요한 클래스 삭제, 로직 개선, 컨트롤러 분리 * feat(sign): 불필요한 유저 정보 반환 엔드포인트 삭제 * feat(ApiResponse): 가독성 개선, 메서드 추가 * refactor: DTO 명명 구체화 * feat(sign-out): 로그아웃 패키지 이동, 불필요한 로직 삭제 * feat: 불필요한 로직 삭제 * feat(token): 컨트롤러 로직 개선, 명명 구체화 * refactor(token): 로직 개선, 명명 수정, 패키지 이동 * feat(token): 만료된 액세스 토큰 관리 삭제 - 기존 쿠키 방식에서 수정됨으로 해당 로직의 변경이 필요함, 협의 필요. * feat(user): password 를 accountPassword로 수정 - 명명 일관성 유지 * refactor: 코드 일관성을 위한 리팩토링 * feat(volunteer): 기존 엔티티들 old 처리 - 당장 삭제하면 문제 발생할 것 같아서 우선 구현 후 삭제 예정. * feat(center): 센터의 id, pw 삭제 - 유저로 책임이 넘어갔음. * feat(user): 유저에서 뻗어나오는 새로운 봉사자, 기관 추가 - new suffix 는 삭제 예정 - 봉사자와 기관에 겹치는 속성인 연락처는 공통 속성에 추가. * feat(center): 불필요한 sign 로직 삭제 * rollback: 삭제가 너무 힘들다... 미뤄야할 것 같음 * feat(user): 봉사자/기관 엔티티, 리포지토리 추가 - 저장 기능 추가 * rollback * feat(user): volunteer, center 회원가입 기본 정적 팩토리 메서드 추가 및 관련 ENUM 개선 * feat(user): volunteer, center 회원가입 서비스 로직 추가 - center repository 구현체 수정 * rollback * refactor: 클래스 명 파스칼 케이스로 수정 * feat(register): 회원 가입 로직 (유저가 생성된 후, 봉사자나 기관이 생성) * feat(user): accountId 중복 확인 기능 추가 * fix: bean name conflict 해결 * fix: rollback 문제 해결, 테스트 문제 해결 * feat: 기관의 베이스 엔티티 상속 추가 * feat(center): 기관 아이디, 유저 아이디 기준 조회 기능 추가 * feat(volunteer): 봉사자 아이디, 유저 아이디 기준 조회 기능 추가 * test(center): 기관 조회, 저장 테스트 추가 * test(volunteer): 봉사자 조회, 저장 테스트 추가 * refactor: suffix -> prefix * fix: 오타 수정 * refactor: optimize import * refactor: reformat code * refactor: Qualifier 삭제 * fix: center import * feat: 봉사자, 기관 register 서비스 메서드 반환 값 수정 * feat(user): 유저 공통 속성 수정, 봉사자와 기관 필드 수정 - 유저 공통 속성에 name 추가 (봉사자와 기관에서 삭제). - 봉사자에 nickname 추가.
1 parent 9325da1 commit d92dac2

File tree

243 files changed

+1609
-1185
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

243 files changed

+1609
-1185
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.somemore.center.domain;
2+
3+
import com.somemore.global.common.entity.BaseEntity;
4+
import jakarta.persistence.Column;
5+
import jakarta.persistence.Entity;
6+
import jakarta.persistence.GeneratedValue;
7+
import jakarta.persistence.GenerationType;
8+
import jakarta.persistence.Id;
9+
import jakarta.persistence.Table;
10+
import lombok.AccessLevel;
11+
import lombok.Builder;
12+
import lombok.Getter;
13+
import lombok.NoArgsConstructor;
14+
15+
import java.util.UUID;
16+
17+
@Getter
18+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
19+
@Entity
20+
@Table(name = "new_center") // TODO prefix 삭제
21+
public class NEWCenter extends BaseEntity {
22+
23+
@Id
24+
@GeneratedValue(strategy = GenerationType.UUID)
25+
@Column(name = "id", nullable = false, columnDefinition = "BINARY(16)")
26+
private UUID id;
27+
28+
@Column(name = "user_id", nullable = false, columnDefinition = "BINARY(16)")
29+
private UUID userId;
30+
31+
@Column(name = "homepage_url", nullable = false)
32+
private String homepageUrl;
33+
34+
@Builder
35+
private NEWCenter(UUID userId, String name, String homepageUrl) {
36+
this.userId = userId;
37+
this.homepageUrl = homepageUrl;
38+
}
39+
40+
public static NEWCenter createDefault(UUID userId) {
41+
return NEWCenter.builder()
42+
.userId(userId)
43+
.homepageUrl("")
44+
.build();
45+
}
46+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.somemore.center.repository;
2+
3+
import com.somemore.center.domain.NEWCenter;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
import org.springframework.stereotype.Repository;
6+
7+
import java.util.UUID;
8+
9+
@Repository("newCenterJpaRepository")
10+
public interface NEWCenterJpaRepository extends JpaRepository<NEWCenter, UUID> {
11+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.somemore.center.repository;
2+
3+
import com.somemore.center.domain.NEWCenter;
4+
5+
import java.util.Optional;
6+
import java.util.UUID;
7+
8+
public interface NEWCenterRepository {
9+
10+
NEWCenter save(NEWCenter center);
11+
12+
Optional<NEWCenter> findById(UUID id);
13+
14+
Optional<NEWCenter> findByUserId(UUID userId);
15+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.somemore.center.repository;
2+
3+
import com.querydsl.jpa.impl.JPAQueryFactory;
4+
import com.somemore.center.domain.NEWCenter;
5+
import com.somemore.center.domain.QNEWCenter;
6+
import lombok.RequiredArgsConstructor;
7+
import org.springframework.stereotype.Repository;
8+
9+
import java.util.Optional;
10+
import java.util.UUID;
11+
12+
@Repository("newCenterRepository")
13+
@RequiredArgsConstructor
14+
public class NEWCenterRepositoryImpl implements NEWCenterRepository {
15+
16+
private final NEWCenterJpaRepository NEWCenterJpaRepository;
17+
private final JPAQueryFactory queryFactory;
18+
19+
private static final QNEWCenter center = QNEWCenter.nEWCenter;
20+
21+
@Override
22+
public NEWCenter save(NEWCenter center) {
23+
return NEWCenterJpaRepository.save(center);
24+
}
25+
26+
@Override
27+
public Optional<NEWCenter> findById(UUID id) {
28+
return Optional.ofNullable(
29+
queryFactory.selectFrom(center)
30+
.where(
31+
center.id.eq(id),
32+
center.deleted.eq(false))
33+
.fetchOne()
34+
);
35+
}
36+
37+
@Override
38+
public Optional<NEWCenter> findByUserId(UUID userId) {
39+
return Optional.ofNullable(
40+
queryFactory.selectFrom(center)
41+
.where(
42+
center.userId.eq(userId),
43+
center.deleted.eq(false))
44+
.fetchOne()
45+
46+
);
47+
}
48+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.somemore.center.service;
2+
3+
import com.somemore.center.domain.NEWCenter;
4+
import com.somemore.center.repository.NEWCenterRepository;
5+
import com.somemore.center.usecase.NEWRegisterCenterUseCase;
6+
import lombok.RequiredArgsConstructor;
7+
import org.springframework.stereotype.Service;
8+
import org.springframework.transaction.annotation.Transactional;
9+
10+
import java.util.UUID;
11+
12+
@Service
13+
@RequiredArgsConstructor
14+
@Transactional
15+
public class NEWRegisterCenterService implements NEWRegisterCenterUseCase {
16+
17+
private final NEWCenterRepository NEWCenterRepository;
18+
19+
@Override
20+
public void register(UUID userId) {
21+
NEWCenter center = NEWCenter.createDefault(userId);
22+
NEWCenterRepository.save(center);
23+
}
24+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.somemore.center.usecase;
2+
3+
import com.somemore.center.domain.NEWCenter;
4+
5+
import java.util.UUID;
6+
7+
public interface NEWRegisterCenterUseCase {
8+
9+
void register(UUID userId);
10+
}

src/main/java/com/somemore/domains/center/controller/CenterProfileCommandApiController.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@
1111
import jakarta.validation.Valid;
1212
import lombok.RequiredArgsConstructor;
1313
import org.springframework.security.access.annotation.Secured;
14-
import org.springframework.web.bind.annotation.*;
14+
import org.springframework.web.bind.annotation.PutMapping;
15+
import org.springframework.web.bind.annotation.RequestMapping;
16+
import org.springframework.web.bind.annotation.RequestPart;
17+
import org.springframework.web.bind.annotation.RestController;
1518
import org.springframework.web.multipart.MultipartFile;
1619

1720
import java.util.UUID;

src/main/java/com/somemore/domains/center/controller/PreferItemCommandApiController.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,16 @@
99
import io.swagger.v3.oas.annotations.Operation;
1010
import io.swagger.v3.oas.annotations.tags.Tag;
1111
import jakarta.validation.Valid;
12-
import java.util.UUID;
1312
import lombok.RequiredArgsConstructor;
1413
import org.springframework.security.access.annotation.Secured;
15-
import org.springframework.web.bind.annotation.*;
14+
import org.springframework.web.bind.annotation.DeleteMapping;
15+
import org.springframework.web.bind.annotation.PathVariable;
16+
import org.springframework.web.bind.annotation.PostMapping;
17+
import org.springframework.web.bind.annotation.RequestBody;
18+
import org.springframework.web.bind.annotation.RequestMapping;
19+
import org.springframework.web.bind.annotation.RestController;
20+
21+
import java.util.UUID;
1622

1723
@RequiredArgsConstructor
1824
@RestController

src/main/java/com/somemore/domains/center/domain/Center.java

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,16 @@
22

33
import com.somemore.domains.center.dto.request.CenterProfileUpdateRequestDto;
44
import com.somemore.global.common.entity.BaseEntity;
5-
import jakarta.persistence.*;
6-
import lombok.*;
5+
import jakarta.persistence.Column;
6+
import jakarta.persistence.Entity;
7+
import jakarta.persistence.GeneratedValue;
8+
import jakarta.persistence.GenerationType;
9+
import jakarta.persistence.Id;
10+
import jakarta.persistence.Lob;
11+
import lombok.AccessLevel;
12+
import lombok.Builder;
13+
import lombok.Getter;
14+
import lombok.NoArgsConstructor;
715

816
import java.util.UUID;
917

@@ -34,34 +42,22 @@ public class Center extends BaseEntity {
3442
@Column(name = "homepage_link", nullable = false)
3543
private String homepageLink;
3644

37-
@Column(name = "account_id", nullable = false)
38-
private String accountId;
39-
40-
@Column(name = "account_pw", nullable = false)
41-
private String accountPw;
42-
43-
4445
@Builder
45-
private Center(String name, String contactNumber, String imgUrl, String introduce, String homepageLink, String accountId, String accountPw) {
46-
46+
private Center(String name, String contactNumber, String imgUrl, String introduce, String homepageLink) {
4747
this.name = name;
4848
this.contactNumber = contactNumber;
4949
this.imgUrl = imgUrl;
5050
this.introduce = introduce;
5151
this.homepageLink = homepageLink;
52-
this.accountId = accountId;
53-
this.accountPw = accountPw;
5452
}
5553

56-
public static Center create(String name, String contactNumber, String imgUrl, String introduce, String homepageLink, String accountId, String accountPw) {
54+
public static Center create(String name, String contactNumber, String imgUrl, String introduce, String homepageLink) {
5755
return Center.builder()
5856
.name(name)
5957
.contactNumber(contactNumber)
6058
.imgUrl(imgUrl)
6159
.introduce(introduce)
6260
.homepageLink(homepageLink)
63-
.accountId(accountId)
64-
.accountPw(accountPw)
6561
.build();
6662
}
6763

src/main/java/com/somemore/domains/center/domain/PreferItem.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package com.somemore.domains.center.domain;
22

3-
import jakarta.persistence.*;
3+
import jakarta.persistence.Column;
4+
import jakarta.persistence.Entity;
5+
import jakarta.persistence.GeneratedValue;
6+
import jakarta.persistence.GenerationType;
7+
import jakarta.persistence.Id;
48
import lombok.AccessLevel;
59
import lombok.Builder;
610
import lombok.Getter;

0 commit comments

Comments
 (0)