Skip to content

Commit 18ea924

Browse files
authored
Merge pull request #9 from TaskFlow-CLAP/CLAP-28
CLAP-28 패키지 구조 설정 및 �global 설정
2 parents 74b6e51 + cbd1687 commit 18ea924

File tree

82 files changed

+1382
-200
lines changed

Some content is hidden

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

82 files changed

+1382
-200
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ build/
55
!**/src/main/**/build/
66
!**/src/test/**/build/
77

8+
### env ###
9+
!**/src/main/resources/env.properties
10+
811
### STS ###
912
.apt_generated
1013
.classpath

build.gradle

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,6 @@ repositories {
2626
dependencies {
2727
implementation 'org.springframework.boot:spring-boot-starter-web'
2828

29-
// lombok
30-
compileOnly 'org.projectlombok:lombok'
31-
annotationProcessor 'org.projectlombok:lombok'
32-
3329
// validator
3430
implementation 'org.springframework.boot:spring-boot-starter-validation:3.4.1'
3531

@@ -60,9 +56,13 @@ dependencies {
6056
//implementation 'org.springframework.boot:spring-boot-starter-security'
6157
// testImplementation 'org.springframework.security:spring-security-test'
6258

63-
// MapStruct
59+
// Mapstruct
60+
implementation "org.projectlombok:lombok"
6461
implementation 'org.mapstruct:mapstruct:1.5.3.Final'
65-
annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.3.Final'
62+
63+
annotationProcessor "org.projectlombok:lombok"
64+
annotationProcessor "org.mapstruct:mapstruct-processor:1.5.3.Final"
65+
annotationProcessor 'org.projectlombok:lombok-mapstruct-binding:0.2.0'
6666

6767
// Junit
6868
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package clap.server.adapter.inbound.web.admin;
2+
3+
import clap.server.adapter.inbound.web.dto.admin.RegisterMemberRequest;
4+
import clap.server.application.RegisterMemberService;
5+
import clap.server.common.annotation.architecture.WebAdapter;
6+
import jakarta.validation.Valid;
7+
import lombok.RequiredArgsConstructor;
8+
import org.springframework.web.bind.annotation.*;
9+
10+
@WebAdapter
11+
@RestController
12+
@RequiredArgsConstructor
13+
@RequestMapping("/api/managements")
14+
public class RegisterMemberController {
15+
private final RegisterMemberService memberService;
16+
17+
@PostMapping("/members")
18+
public void registerMember(@RequestBody @Valid RegisterMemberRequest request) {
19+
memberService.registerMember(1l, request);
20+
}
21+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package clap.server.adapter.inbound.web.auth;
2+
3+
import clap.server.common.annotation.architecture.WebAdapter;
4+
import org.springframework.web.bind.annotation.RestController;
5+
6+
@WebAdapter
7+
@RestController
8+
public class AuthController {
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package clap.server.adapter.inbound.web.auth;
2+
3+
import clap.server.common.annotation.architecture.WebAdapter;
4+
import org.springframework.web.bind.annotation.RestController;
5+
6+
@WebAdapter
7+
@RestController
8+
public class ResetPasswordController {
9+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package clap.server.adapter.inbound.web.dto.admin;
2+
3+
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberRole;
4+
import jakarta.validation.constraints.NotBlank;
5+
import jakarta.validation.constraints.NotNull;
6+
7+
public record RegisterMemberRequest(
8+
@NotBlank
9+
String name,
10+
@NotBlank
11+
String email,
12+
@NotBlank
13+
String nickname,
14+
@NotNull
15+
Boolean isReviewer,
16+
@NotNull
17+
Long departmentId,
18+
@NotNull
19+
MemberRole role,
20+
@NotBlank
21+
String departmentRole,
22+
@NotNull
23+
Long adminId
24+
) {
25+
}
26+
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package clap.server.adapter.outbound.persistense;
2+
3+
import clap.server.adapter.outbound.persistense.entity.member.DepartmentEntity;
4+
import clap.server.adapter.outbound.persistense.mapper.DepartmentPersistenceMapper;
5+
import clap.server.adapter.outbound.persistense.repository.member.DepartmentRepository;
6+
import clap.server.application.port.outbound.member.CommandDepartmentPort;
7+
import clap.server.application.port.outbound.member.LoadDepartmentPort;
8+
import clap.server.common.annotation.architecture.PersistenceAdapter;
9+
import clap.server.domain.model.member.Department;
10+
import lombok.RequiredArgsConstructor;
11+
12+
import java.util.Optional;
13+
14+
@PersistenceAdapter
15+
@RequiredArgsConstructor
16+
public class DepartmentPersistentAdapter implements LoadDepartmentPort, CommandDepartmentPort {
17+
private final DepartmentRepository departmentRepository;
18+
private final DepartmentPersistenceMapper departmentPersistenceMapper;
19+
20+
@Override
21+
public Optional<Department> findById(Long id) {
22+
Optional<DepartmentEntity> departmentEntity = departmentRepository.findById(id);
23+
return departmentEntity.map(departmentPersistenceMapper::toDomain);
24+
}
25+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package clap.server.adapter.outbound.persistense;
2+
3+
import clap.server.adapter.outbound.persistense.entity.member.MemberEntity;
4+
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberStatus;
5+
import clap.server.adapter.outbound.persistense.mapper.MemberPersistenceMapper;
6+
import clap.server.adapter.outbound.persistense.repository.member.MemberRepository;
7+
import clap.server.application.port.outbound.member.LoadMemberPort;
8+
import clap.server.application.port.outbound.member.CommandMemberPort;
9+
import clap.server.common.annotation.architecture.PersistenceAdapter;
10+
import clap.server.domain.model.member.Member;
11+
import lombok.RequiredArgsConstructor;
12+
13+
import java.util.Optional;
14+
15+
@PersistenceAdapter
16+
@RequiredArgsConstructor
17+
public class MemberPersistenceAdapter implements LoadMemberPort, CommandMemberPort {
18+
private final MemberRepository memberRepository;
19+
private final MemberPersistenceMapper memberPersistenceMapper;
20+
21+
@Override
22+
public Optional<Member> findById(final Long id) {
23+
Optional<MemberEntity> memberEntity = memberRepository.findById(id);
24+
return memberEntity.map(memberPersistenceMapper::toDomain);
25+
}
26+
27+
@Override
28+
public Optional<Member> findActiveMemberById(Long id) {
29+
Optional<MemberEntity> memberEntity = memberRepository.findByMemberStatusAndMemberId(MemberStatus.ACTIVE, id);
30+
return memberEntity.map(memberPersistenceMapper::toDomain);
31+
}
32+
33+
@Override
34+
public void save(final Member member) {
35+
MemberEntity memberEntity = memberPersistenceMapper.toEntity(member);
36+
memberRepository.save(memberEntity);
37+
}
38+
}

src/main/java/clap/server/adapter/outbound/persistense/entity/log/ApiLogEntity.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package clap.server.adapter.outbound.persistense.entity.log;
22

3+
import clap.server.adapter.outbound.persistense.entity.common.BaseTimeEntity;
34
import clap.server.adapter.outbound.persistense.entity.log.constant.ApiHttpMethod;
45
import jakarta.persistence.*;
56
import lombok.AccessLevel;
@@ -16,7 +17,7 @@
1617
@NoArgsConstructor(access = AccessLevel.PROTECTED)
1718
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
1819
@DiscriminatorColumn(name = "DTYPE")
19-
public class ApiLogEntity {
20+
public class ApiLogEntity extends BaseTimeEntity {
2021
@Id
2122
@GeneratedValue(strategy = GenerationType.IDENTITY)
2223
private Long logId;

src/main/java/clap/server/adapter/outbound/persistense/entity/member/MemberEntity.java

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package clap.server.adapter.outbound.persistense.entity.member;
22

33
import clap.server.adapter.outbound.persistense.entity.common.BaseTimeEntity;
4+
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberRole;
5+
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberStatus;
46
import jakarta.persistence.*;
57
import lombok.AccessLevel;
68
import lombok.Getter;
@@ -17,12 +19,44 @@ public class MemberEntity extends BaseTimeEntity {
1719
@GeneratedValue(strategy = GenerationType.IDENTITY)
1820
private Long memberId;
1921

20-
@Embedded
21-
private MemberInfo memberInfo;
22+
@Column(nullable = false)
23+
private String name;
24+
25+
@Column(unique = true, nullable = false)
26+
private String email;
27+
28+
@Column(unique = true, nullable = false)
29+
private String nickname;
30+
31+
@Column(nullable = false)
32+
private boolean isReviewer;
33+
34+
@ManyToOne(fetch = FetchType.LAZY)
35+
@JoinColumn(name = "department_id", nullable = false)
36+
private DepartmentEntity department;
37+
38+
@Column(nullable = false)
39+
@Enumerated(EnumType.STRING)
40+
private MemberRole role;
41+
42+
@Column(nullable = false)
43+
private String departmentRole;
44+
45+
@Enumerated(EnumType.STRING)
46+
@Column(nullable = false)
47+
private MemberStatus memberStatus;
48+
49+
// TODO: spring security 적용 예정
50+
@Column(nullable = false)
51+
private String password;
2252

2353
@Column
2454
private String imageUrl;
2555

2656
@Column
2757
private Boolean notificationEnabled;
58+
59+
@ManyToOne(fetch = FetchType.LAZY)
60+
@JoinColumn(name = "admin_id", nullable = false)
61+
private MemberEntity admin;
2862
}

0 commit comments

Comments
 (0)