Skip to content

Commit 3f09a52

Browse files
authored
Merge pull request #1 from prgrms-aibe-devcourse/feature/domain-layer
Feature/domain layer
2 parents 2333d83 + 4ef9e2b commit 3f09a52

7 files changed

Lines changed: 244 additions & 0 deletions

File tree

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package com.bootsignal.domain.course.entity;
2+
3+
import com.bootsignal.domain.institution.entity.Institution;
4+
import com.bootsignal.global.entity.BaseEntity;
5+
import jakarta.persistence.*;
6+
import lombok.*;
7+
8+
import java.math.BigDecimal;
9+
10+
@Entity
11+
@Getter
12+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
13+
@AllArgsConstructor
14+
@Builder
15+
public class Course extends BaseEntity {
16+
17+
@Id
18+
@GeneratedValue(strategy = GenerationType.IDENTITY)
19+
private Long id;
20+
21+
// 훈련과정 ID / 원본: trprId
22+
@Column(nullable = false, unique = true)
23+
private String trprId;
24+
25+
// 과정명 / 원본: title
26+
@Column(nullable = false)
27+
private String title;
28+
29+
// 기관명 / 원본: subtitle
30+
@Column(nullable = false)
31+
private String subTitle;
32+
33+
// 과정 상세 링크 / 원본: titleLink
34+
@Column(length = 1000)
35+
private String titleLink;
36+
37+
// 기관 상세 링크 / 원본: subTitleLink
38+
@Column(length = 1000)
39+
private String subTitleLink;
40+
41+
// NCS 코드 / 원본: ncsCd
42+
private String ncsCd;
43+
44+
// NCS 명 / 원본: ncsNm
45+
private String ncsName;
46+
47+
// NCS 여부 / 원본: ncsYn
48+
private String ncsYn;
49+
50+
// 훈련비 / 원본: courseMan
51+
private BigDecimal courseMan;
52+
53+
// 실제 훈련비 / 원본: realMan
54+
private BigDecimal realMan;
55+
56+
// 본인 부담금 / 원본: tgcrGnrlTrneOwepAllt
57+
private BigDecimal selfPaymentAmount;
58+
59+
// 만족도 점수 / 원본: stdgScor
60+
private BigDecimal stdgScor;
61+
62+
// 총 훈련일수 / 원본: trDcnt
63+
private Integer totalTrainingDays;
64+
65+
// 총 훈련시간 / 원본: trtm
66+
private Integer totalTrainingHours;
67+
68+
// 훈련지역 코드 / 원본: trngAreaCd
69+
private String trngAreaCd;
70+
71+
// 소속 기관
72+
@ManyToOne(fetch = FetchType.LAZY)
73+
@JoinColumn(name = "institution_id")
74+
private Institution institution;
75+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.bootsignal.domain.course.repository;
2+
3+
import com.bootsignal.domain.course.entity.Course;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
import org.springframework.data.jpa.repository.Query;
6+
7+
import java.util.List;
8+
import java.util.Optional;
9+
10+
public interface CourseRepository extends JpaRepository<Course, Long> {
11+
12+
Optional<Course> findByTrprId(String trprId);
13+
14+
@Query("""
15+
select c
16+
from Course c
17+
join c.institution i
18+
where i.institutionName like %:keyword%
19+
""")
20+
List<Course> searchByInstitutionName(String keyword);
21+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.bootsignal.domain.course_session.entity;
2+
3+
import com.bootsignal.domain.course.entity.Course;
4+
import com.bootsignal.global.entity.BaseEntity;
5+
import jakarta.persistence.*;
6+
import lombok.*;
7+
8+
import java.math.BigDecimal;
9+
import java.time.LocalDate;
10+
11+
@Entity
12+
@Getter
13+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
14+
@AllArgsConstructor
15+
@Builder
16+
public class CourseSession extends BaseEntity {
17+
18+
@Id
19+
@GeneratedValue(strategy = GenerationType.IDENTITY)
20+
private Long id;
21+
22+
// 훈련과정 회차 / 원본: trprDegr
23+
private Integer trprDegr;
24+
25+
// 훈련 시작일 / 원본: traStartDate
26+
private LocalDate traStartDate;
27+
28+
// 훈련 종료일 / 원본: traEndDate
29+
private LocalDate traEndDate;
30+
31+
// 정원 / 원본: yardMan
32+
private Integer yardMan;
33+
34+
// 수강신청 인원 / 원본: regCourseMan
35+
private Integer regCourseMan;
36+
37+
// 실제 수강인원 / 원본: totParMks
38+
private Integer totParMks;
39+
40+
// 수료인원 / 원본: finiCnt
41+
private Integer finiCnt;
42+
43+
// 고용보험 3개월 취업률 / 원본: eiEmplRate3
44+
private BigDecimal eiEmplRate3;
45+
46+
// 고용보험 6개월 취업률 / 원본: eiEmplRate6
47+
private BigDecimal eiEmplRate6;
48+
49+
// 주말/주중 구분 / 원본: wkendSe
50+
private String wkendSe;
51+
52+
// 과정
53+
@ManyToOne(fetch = FetchType.LAZY)
54+
@JoinColumn(name = "course_id")
55+
private Course course;
56+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.bootsignal.domain.course_session.repository;
2+
3+
import com.bootsignal.domain.course_session.entity.CourseSession;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
6+
import java.util.List;
7+
8+
public interface CourseSessionRepository extends JpaRepository<CourseSession, Long> {
9+
10+
List<CourseSession> findByCourse_Id(Long courseId);
11+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.bootsignal.domain.institution.entity;
2+
3+
import com.bootsignal.global.entity.BaseEntity;
4+
import jakarta.persistence.*;
5+
import lombok.*;
6+
7+
@Entity
8+
@Getter
9+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
10+
@AllArgsConstructor
11+
@Builder
12+
public class Institution extends BaseEntity {
13+
14+
@Id
15+
@GeneratedValue(strategy = GenerationType.IDENTITY)
16+
private Long id;
17+
18+
// 훈련기관 코드 / 원본: instCd
19+
@Column(nullable = false, unique = true)
20+
private String instCd;
21+
22+
// 훈련기관명 / 원본: subTitle
23+
@Column(nullable = false)
24+
private String institutionName;
25+
26+
// 주소 / 원본: address
27+
private String address;
28+
29+
// 우편번호 / 원본: zipCd
30+
private String zipCd;
31+
32+
// 홈페이지 주소 / 원본: hpAddr
33+
private String homepageUrl;
34+
35+
// 대표 전화번호 / 원본: telNo
36+
private String telNo;
37+
38+
// 담당자명 / 원본: trprChap
39+
private String managerName;
40+
41+
// 담당자 전화번호 / 원본: trprChapTel
42+
private String managerTel;
43+
44+
// 담당자 이메일 / 원본: trprChapEmail
45+
private String managerEmail;
46+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.bootsignal.domain.institution.repository;
2+
3+
import com.bootsignal.domain.institution.entity.Institution;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
6+
import java.util.Optional;
7+
8+
public interface InstitutionRepository extends JpaRepository<Institution, Long> {
9+
10+
Optional<Institution> findByInstCd(String instCd);
11+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.bootsignal.global.entity;
2+
3+
import jakarta.persistence.Column;
4+
import jakarta.persistence.EntityListeners;
5+
import jakarta.persistence.MappedSuperclass;
6+
import lombok.Getter;
7+
import org.springframework.data.annotation.CreatedDate;
8+
import org.springframework.data.annotation.LastModifiedDate;
9+
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
10+
11+
import java.time.LocalDateTime;
12+
13+
@Getter
14+
@MappedSuperclass
15+
@EntityListeners(AuditingEntityListener.class)
16+
public abstract class BaseEntity {
17+
18+
@CreatedDate
19+
@Column(updatable = false)
20+
private LocalDateTime createdAt;
21+
22+
@LastModifiedDate
23+
private LocalDateTime updatedAt;
24+
}

0 commit comments

Comments
 (0)