Skip to content

Commit 24db5e9

Browse files
authored
Merge pull request #13 from Block-Guard/chore/#12/jpa-entity
[Chore] JPA Entity 작성
2 parents e58dce5 + e8438e3 commit 24db5e9

File tree

15 files changed

+321
-20
lines changed

15 files changed

+321
-20
lines changed

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ dependencies {
2929
implementation 'org.springframework.boot:spring-boot-starter-web'
3030
implementation 'org.springframework.boot:spring-boot-starter-actuator'
3131
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.7.0'
32+
implementation 'org.springframework.boot:spring-boot-starter-validation'
3233
compileOnly 'org.projectlombok:lombok'
3334
runtimeOnly 'com.mysql:mysql-connector-j'
3435
annotationProcessor 'org.projectlombok:lombok'
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.blockguard.server.domain.analysis.domain;
2+
3+
import com.blockguard.server.domain.analysis.domain.enums.FraudType;
4+
import com.blockguard.server.domain.analysis.domain.enums.RiskLevel;
5+
import com.blockguard.server.domain.user.domain.User;
6+
import com.blockguard.server.global.common.entity.BaseEntity;
7+
import jakarta.persistence.*;
8+
import lombok.*;
9+
10+
import java.math.BigDecimal;
11+
12+
@Entity
13+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
14+
@AllArgsConstructor
15+
@Builder
16+
@Getter
17+
@Table(name = "fraud_analysis_records")
18+
public class FraudAnalysisRecord extends BaseEntity {
19+
20+
@Id
21+
@GeneratedValue(strategy = GenerationType.IDENTITY)
22+
@Column(nullable = false)
23+
private Long id;
24+
25+
@Enumerated(EnumType.STRING)
26+
@Column(name = "risk_level", nullable = false)
27+
private RiskLevel riskLevel;
28+
29+
@Column(nullable = false, precision = 5, scale = 2)
30+
private BigDecimal score;
31+
32+
@Enumerated(EnumType.STRING)
33+
@Column(name = "estimated_fraud_type", nullable = false)
34+
private FraudType estimatedFraudType;
35+
36+
@Column(nullable = false, length = 255)
37+
private String keywords;
38+
39+
@ManyToOne(fetch = FetchType.LAZY, optional = false)
40+
@JoinColumn(name = "user_id", nullable = false)
41+
private User user;
42+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.blockguard.server.domain.analysis.domain.enums;
2+
3+
// Todo: 사기 클래스 확정 후 변경
4+
public enum FraudType {
5+
PROSECUTOR_IMPERSONATION,
6+
FAMILY_IMPERSONATION,
7+
LOAN_FRAUD,
8+
CARD_DELIVERY_IMPERSONATION
9+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.blockguard.server.domain.analysis.domain.enums;
2+
3+
public enum RiskLevel {
4+
Dangers, Caution, Safety
5+
}

src/main/java/com/blockguard/server/domain/auth/api/AuthApi.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.blockguard.server.global.config.swagger.CustomExceptionDescription;
1111
import com.blockguard.server.global.config.swagger.SwaggerResponseDescription;
1212
import io.swagger.v3.oas.annotations.Operation;
13+
import jakarta.validation.Valid;
1314
import lombok.AllArgsConstructor;
1415
import org.springframework.http.ResponseEntity;
1516
import org.springframework.web.bind.annotation.PostMapping;
@@ -26,7 +27,7 @@ public class AuthApi {
2627
@Operation(summary = "회원가입")
2728
@CustomExceptionDescription(SwaggerResponseDescription.REGISTER_FAIL)
2829
@PostMapping("/register")
29-
public ResponseEntity<BaseResponse<RegisterResponse>> register(@RequestBody RegisterRequest registerRequest) {
30+
public ResponseEntity<BaseResponse<RegisterResponse>> register(@Valid @RequestBody RegisterRequest registerRequest) {
3031
RegisterResponse registerResponse = authService.register(registerRequest);
3132
return ResponseEntity.ok(BaseResponse.of(SuccessCode.USER_REGISTERED, registerResponse));
3233

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.blockguard.server.domain.fraud.domain;
2+
3+
import com.blockguard.server.global.common.entity.BaseEntity;
4+
import jakarta.persistence.*;
5+
import lombok.*;
6+
7+
import java.time.LocalDateTime;
8+
9+
@Entity
10+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
11+
@AllArgsConstructor
12+
@Builder
13+
@Getter
14+
@Table(name = "fraud_phone_numbers")
15+
public class FraudPhoneNumber extends BaseEntity {
16+
17+
@Id
18+
@GeneratedValue(strategy = GenerationType.IDENTITY)
19+
@Column(nullable = false)
20+
private Long id;
21+
22+
@Column(name = "phone_number", nullable = false, length = 20, unique = true)
23+
private String phoneNumber;
24+
25+
// Todo: Open API 제공자 추후 enum type 변경
26+
@Column(nullable = false, length = 100)
27+
private String provider;
28+
29+
@Column(name = "last_checked_at", nullable = false)
30+
private LocalDateTime lastCheckedAt;
31+
32+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.blockguard.server.domain.fraud.domain;
2+
3+
import com.blockguard.server.global.common.entity.BaseEntity;
4+
import jakarta.persistence.*;
5+
import lombok.*;
6+
7+
import java.time.LocalDateTime;
8+
9+
@Entity
10+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
11+
@AllArgsConstructor
12+
@Builder
13+
@Getter
14+
@Table(name = "fraud_urls")
15+
public class FraudUrl extends BaseEntity {
16+
17+
@Id
18+
@GeneratedValue(strategy = GenerationType.IDENTITY)
19+
@Column(nullable = false)
20+
private Long id;
21+
22+
@Column(nullable = false, columnDefinition = "TEXT", unique = true)
23+
private String url;
24+
25+
// Todo: Open API 제공자 추후 enum type 변경
26+
@Column(nullable = false, length = 100)
27+
private String provider;
28+
29+
@Column(name = "last_checked_at", nullable = false)
30+
private LocalDateTime lastCheckedAt;
31+
32+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.blockguard.server.domain.guardian.domain;
2+
3+
import com.blockguard.server.domain.user.domain.User;
4+
import com.blockguard.server.global.common.entity.BaseEntity;
5+
import jakarta.persistence.*;
6+
import lombok.*;
7+
import org.hibernate.annotations.SQLRestriction;
8+
9+
import java.time.LocalDateTime;
10+
11+
@Entity
12+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
13+
@AllArgsConstructor
14+
@Builder
15+
@Getter
16+
@SQLRestriction("deleted_at IS NULL")
17+
@Table(name = "guardians")
18+
public class Guardian extends BaseEntity {
19+
20+
@Id
21+
@GeneratedValue(strategy = GenerationType.IDENTITY)
22+
@Column(nullable = false)
23+
private Long id;
24+
25+
@Column(nullable = false, length = 50)
26+
private String name;
27+
28+
@Column(name = "phone_number", nullable = false, length = 20)
29+
private String phoneNumber;
30+
31+
@Column(name = "profile_image_key", length = 512)
32+
private String profileImageKey;
33+
34+
@Column(name = "is_primary", nullable = false)
35+
private boolean isPrimary = false;
36+
37+
@Column(name = "deleted_at")
38+
private LocalDateTime deletedAt = null;
39+
40+
@ManyToOne(fetch = FetchType.LAZY, optional = false)
41+
@JoinColumn(name = "user_id", nullable = false)
42+
private User user;
43+
44+
public void markDeleted() {
45+
this.deletedAt = LocalDateTime.now();
46+
}
47+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.blockguard.server.domain.news.domain;
2+
3+
import com.blockguard.server.global.common.entity.BaseEntity;
4+
import jakarta.persistence.*;
5+
import lombok.*;
6+
7+
import java.time.LocalDateTime;
8+
9+
@Entity
10+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
11+
@AllArgsConstructor
12+
@Builder
13+
@Getter
14+
@Table(name = "news_articles")
15+
public class NewsArticle extends BaseEntity {
16+
17+
@Id
18+
@GeneratedValue(strategy = GenerationType.IDENTITY)
19+
@Column(nullable = false)
20+
private Long id;
21+
22+
@Column(nullable = false, length = 500)
23+
private String title;
24+
25+
@Column(nullable = false, length = 1000, unique = true)
26+
private String url;
27+
28+
@Column(name = "published_at", nullable = false)
29+
private LocalDateTime publishedAt;
30+
31+
@Column(nullable = false, length = 100)
32+
private String newspaper;
33+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.blockguard.server.domain.report.domain;
2+
3+
import com.blockguard.server.domain.user.domain.User;
4+
import com.blockguard.server.domain.report.domain.enums.ReportStep;
5+
import com.blockguard.server.global.common.entity.BaseEntity;
6+
import jakarta.persistence.*;
7+
import lombok.*;
8+
9+
@Entity
10+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
11+
@AllArgsConstructor
12+
@Builder
13+
@Getter
14+
@Table(name = "user_report_records")
15+
public class UserReportRecord extends BaseEntity {
16+
17+
@Id
18+
@GeneratedValue(strategy = GenerationType.IDENTITY)
19+
@Column(nullable = false)
20+
private Long id;
21+
22+
@Enumerated(EnumType.STRING)
23+
@Column(nullable = false)
24+
private ReportStep step;
25+
26+
@Column(name = "is_completed", nullable = false)
27+
private boolean isCompleted = false;
28+
29+
@ManyToOne(fetch = FetchType.LAZY, optional = false)
30+
@JoinColumn(name = "user_id", nullable = false)
31+
private User user;
32+
}

0 commit comments

Comments
 (0)