Skip to content

Commit 316c70a

Browse files
authored
Jeyong (#53)
2 parents ac1f14b + 5a9a438 commit 316c70a

15 files changed

Lines changed: 354 additions & 186 deletions

File tree

MathCaptain/weakness/src/main/java/MathCaptain/weakness/TestInit.java

Lines changed: 90 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,14 @@
77
import MathCaptain.weakness.domain.Group.repository.GroupRepository;
88
import MathCaptain.weakness.domain.Group.repository.RelationRepository;
99
import MathCaptain.weakness.domain.Record.entity.ActivityRecord;
10+
import MathCaptain.weakness.domain.Record.entity.UserLog.ExerciseInfo;
11+
import MathCaptain.weakness.domain.Record.entity.UserLog.FitnessDetail;
12+
import MathCaptain.weakness.domain.Record.entity.UserLog.RunningDetail;
13+
import MathCaptain.weakness.domain.Record.entity.UserLog.StudyDetail;
1014
import MathCaptain.weakness.domain.Record.repository.record.RecordRepository;
15+
import MathCaptain.weakness.domain.Record.repository.userLog.FitnessLogRepository;
16+
import MathCaptain.weakness.domain.Record.repository.userLog.RunningLogRepository;
17+
import MathCaptain.weakness.domain.Record.repository.userLog.StudyLogRepository;
1118
import MathCaptain.weakness.domain.Recruitment.dto.request.CreateRecruitmentRequest;
1219
import MathCaptain.weakness.domain.Recruitment.entity.Comment;
1320
import MathCaptain.weakness.domain.Recruitment.entity.Recruitment;
@@ -25,13 +32,15 @@
2532
import org.springframework.transaction.annotation.Transactional;
2633

2734
import java.time.DayOfWeek;
35+
import java.time.LocalDate;
2836
import java.time.LocalDateTime;
37+
import java.util.List;
2938

3039
@Slf4j
3140
@Component
3241
@RequiredArgsConstructor
3342
@Transactional
34-
@DependsOn("primaryEntityManagerFactory")
43+
@DependsOn("entityManagerFactory")
3544
public class TestInit {
3645

3746
private final UserRepository userRepository;
@@ -41,6 +50,9 @@ public class TestInit {
4150
private final RecruitmentRepository recruitmentRepository;
4251
private final CommentRepository commentRepository;
4352
private final RecordRepository recordRepository;
53+
private final FitnessLogRepository fitnessLogRepository;
54+
private final RunningLogRepository runningLogRepository;
55+
private final StudyLogRepository studyLogRepository;
4456

4557

4658
@PostConstruct
@@ -158,25 +170,53 @@ public void init() {
158170
LocalDateTime startOfWeek = LocalDateTime.now().with(java.time.temporal.TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
159171

160172
// User ID: 4 -> currentProgress: 5
161-
createActivityRecords(userRepository.findByUserId(4L).orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다.")), group3, startOfWeek, 5);
173+
createActivityRecords(userRepository.findByUserId(4L)
174+
.orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다.")),
175+
group3, startOfWeek, 5, CategoryStatus.RUNNING, chestList);
162176

163177
// User ID: 5 -> currentProgress: 8
164-
createActivityRecords(userRepository.findByUserId(5L).orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다.")), group3, startOfWeek, 8);
178+
createActivityRecords(userRepository.findByUserId(5L)
179+
.orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다.")),
180+
group3, startOfWeek, 8, CategoryStatus.RUNNING, chestList);
165181

166182
// User ID: 6 -> currentProgress: 10
167-
createActivityRecords(userRepository.findByUserId(6L).orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다.")), group3, startOfWeek, 10);
183+
createActivityRecords(userRepository.findByUserId(6L)
184+
.orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다.")),
185+
group3, startOfWeek, 10, CategoryStatus.RUNNING, chestList);
168186

169187
// User ID: 7 -> currentProgress: 7
170-
createActivityRecords(userRepository.findByUserId(7L).orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다.")), group3, startOfWeek, 7);
188+
createActivityRecords(userRepository.findByUserId(7L)
189+
.orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다.")),
190+
group3, startOfWeek, 7, CategoryStatus.RUNNING, chestList);
171191

172192
// User ID: 8 -> currentProgress: 6
173-
createActivityRecords(userRepository.findByUserId(8L).orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다.")), group3, startOfWeek, 6);
193+
createActivityRecords(userRepository.findByUserId(8L)
194+
.orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다.")),
195+
group3, startOfWeek, 6, CategoryStatus.RUNNING, chestList);
196+
197+
createActivityRecords(userRepository.findByUserId(1L)
198+
.orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다.")),
199+
group1, startOfWeek, 4, CategoryStatus.FITNESS, chestList);
200+
createActivityRecords(userRepository.findByUserId(1L)
201+
.orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다.")),
202+
group1, startOfWeek, 3, CategoryStatus.FITNESS, backList);
203+
createActivityRecords(userRepository.findByUserId(1L)
204+
.orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다.")),
205+
group1, startOfWeek, 3, CategoryStatus.FITNESS, legList);
206+
207+
createActivityRecords(userRepository.findByUserId(2L).
208+
orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다.")),
209+
group2, startOfWeek, 3, CategoryStatus.STUDY, chestList);
174210

175211
log.info("======== 🏃‍♂️테스트 목표 기록 생성 완료 =========");
176212
}
177213

178214
// Helper 메서드: ActivityRecord 생성 (이번 주 내에서만 생성되도록 수정)
179-
private void createActivityRecords(Users user, Group group, LocalDateTime startOfWeek, int recordCount) {
215+
private void createActivityRecords(
216+
Users user, Group group, LocalDateTime startOfWeek,
217+
int recordCount, CategoryStatus category,
218+
List<ExerciseInfo> exerciseInfoList
219+
) {
180220
for (int i = 0; i < recordCount; i++) {
181221
// 시작 시간은 주어진 startOfWeek에서 i일을 더한 값
182222
LocalDateTime startTime = startOfWeek.plusDays(i % 7);
@@ -195,6 +235,49 @@ private void createActivityRecords(Users user, Group group, LocalDateTime startO
195235

196236
// 저장소에 저장
197237
recordRepository.save(record);
238+
239+
if (category == CategoryStatus.FITNESS) {
240+
fitnessLogCreate(record);
241+
} else if (category == CategoryStatus.RUNNING) {
242+
runningLogCreate(record);
243+
} else if (category == CategoryStatus.STUDY) {
244+
studyLogCreate(record);
245+
}
198246
}
199247
}
248+
249+
ExerciseInfo chest1 = ExerciseInfo.of("덤벨 프레스", 70, 10, 5);
250+
ExerciseInfo chest2 = ExerciseInfo.of("벤치 프레스", 80, 10, 5);
251+
ExerciseInfo chest3 = ExerciseInfo.of("밀리터리 프레스", 60, 10, 5);
252+
ExerciseInfo chest4 = ExerciseInfo.of("디클라인 벤치 프레스", 70, 10, 5);
253+
List<ExerciseInfo> chestList = List.of(chest1, chest2, chest3, chest4);
254+
255+
ExerciseInfo back1 = ExerciseInfo.of("데드 리프트", 120, 10, 5);
256+
ExerciseInfo back2 = ExerciseInfo.of("랫풀다운", 80, 10, 5);
257+
ExerciseInfo back3 = ExerciseInfo.of("시티드 로우", 70, 10, 5);
258+
List<ExerciseInfo> backList = List.of(back1, back2, back3);
259+
260+
ExerciseInfo leg1 = ExerciseInfo.of("스쿼트", 100, 10, 5);
261+
ExerciseInfo leg2 = ExerciseInfo.of("레그 프레스", 150, 10, 5);
262+
ExerciseInfo leg3 = ExerciseInfo.of("레그 익스텐션", 80, 10, 5);
263+
ExerciseInfo leg4 = ExerciseInfo.of("레그 컬", 70, 10, 5);
264+
List<ExerciseInfo> legList = List.of(leg1, leg2, leg3, leg4);
265+
266+
267+
268+
private void studyLogCreate(ActivityRecord record) {
269+
StudyDetail log = StudyDetail.of(record, "수학", 60L, "지수함수의 미분");
270+
studyLogRepository.save(log);
271+
}
272+
273+
private void runningLogCreate(ActivityRecord record) {
274+
RunningDetail log = RunningDetail.of(record, 5L, "원인재에서 동춘역까지");
275+
runningLogRepository.save(log);
276+
}
277+
278+
private void fitnessLogCreate(ActivityRecord record) {
279+
FitnessDetail log = FitnessDetail.of(record, chestList);
280+
fitnessLogRepository.save(log);
281+
}
200282
}
283+
//

MathCaptain/weakness/src/main/java/MathCaptain/weakness/WeaknessApplication.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
66
import org.springframework.context.annotation.ComponentScan;
77
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
8+
import org.springframework.transaction.annotation.EnableTransactionManagement;
89

910
@EnableJpaAuditing
1011
@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
1112
@ComponentScan(basePackages = "MathCaptain")
13+
@EnableTransactionManagement
1214
public class WeaknessApplication {
1315

1416
public static void main(String[] args) {
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package MathCaptain.weakness.domain.Chat.entity;
2+
3+
import MathCaptain.weakness.domain.Chat.enums.ChatRole;
4+
import jakarta.persistence.*;
5+
import lombok.AccessLevel;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
import org.springframework.data.annotation.CreatedDate;
9+
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
10+
11+
import java.time.LocalDateTime;
12+
13+
@Getter
14+
@Entity
15+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
16+
@EntityListeners(AuditingEntityListener.class)
17+
public class Chat {
18+
19+
@Id
20+
@GeneratedValue(strategy = GenerationType.IDENTITY)
21+
private Long id;
22+
23+
private Long userId;
24+
25+
@Enumerated(EnumType.STRING)
26+
private ChatRole role;
27+
28+
private String message;
29+
30+
@CreatedDate
31+
@Column(updatable = false)
32+
private LocalDateTime sendTime;
33+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package MathCaptain.weakness.domain.Chat.enums;
2+
3+
public enum ChatRole {
4+
USER,
5+
ASSISTANT
6+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package MathCaptain.weakness.domain.Chat.repository;
2+
3+
import MathCaptain.weakness.domain.Chat.entity.Chat;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
import org.springframework.stereotype.Repository;
6+
7+
@Repository
8+
public interface ChatRepository extends JpaRepository<Chat, Long> {
9+
}

MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Record/dto/request/FitnessLogEnrollRequest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package MathCaptain.weakness.domain.Record.dto.request;
22

33
import MathCaptain.weakness.domain.Record.entity.UserLog.ExerciseInfo;
4+
import jakarta.validation.constraints.NotNull;
45
import lombok.Getter;
56
import lombok.NoArgsConstructor;
67

@@ -11,11 +12,15 @@
1112
@NoArgsConstructor
1213
public class FitnessLogEnrollRequest extends ActivityLogEnrollRequest {
1314

15+
@NotNull
1416
private Long activityTime;
1517

18+
@NotNull
1619
private LocalDateTime startTime;
1720

21+
@NotNull
1822
private LocalDateTime endTime;
1923

24+
@NotNull
2025
private List<ExerciseInfo> exerciseInfoList;
2126
}

MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Record/entity/ActivityRecord.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import jakarta.persistence.*;
99
import lombok.*;
1010
import org.hibernate.validator.constraints.Range;
11-
import org.springframework.data.annotation.CreatedDate;
1211
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
1312

1413
import java.time.DayOfWeek;
@@ -32,7 +31,6 @@ public class ActivityRecord {
3231
@JoinColumn(name = "group_id")
3332
private Group group;
3433

35-
@CreatedDate
3634
private LocalDateTime startTime; // 인증 시작 시간
3735

3836
private LocalDateTime endTime; // 인증 종료 시간

MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Record/entity/UserLog/ExerciseInfo.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package MathCaptain.weakness.domain.Record.entity.UserLog;
22

3+
import jakarta.persistence.Column;
34
import jakarta.persistence.Embeddable;
45
import lombok.Getter;
56
import lombok.NoArgsConstructor;
@@ -9,12 +10,16 @@
910
@NoArgsConstructor
1011
public class ExerciseInfo {
1112

13+
@Column(nullable = false)
1214
private String exerciseName;
1315

16+
@Column(nullable = false)
1417
private int weight;
1518

19+
@Column(nullable = false)
1620
private int reps;
1721

22+
@Column(nullable = false)
1823
private int sets;
1924

2025
private ExerciseInfo(String exerciseName, int weight, int reps, int sets) {

MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Record/entity/UserLog/FitnessDetail.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,30 +12,43 @@
1212
@Entity
1313
@Getter
1414
@NoArgsConstructor
15+
@Table(name = "fitness_detail")
1516
public class FitnessDetail {
1617

1718
@Id
1819
@GeneratedValue(strategy = GenerationType.IDENTITY)
1920
private Long id;
2021

21-
@Column(nullable = false, unique = true)
22+
@Column(nullable = false)
23+
private Long userId;
24+
25+
@Column(nullable = false)
2226
private Long activityId;
2327

2428
private Long duration;
2529

2630
private LocalDate date;
2731

2832
@ElementCollection
33+
@CollectionTable(
34+
name = "fitnessdetail_exerciseinfolist",
35+
joinColumns = @JoinColumn(name = "fitness detail_id")
36+
)
2937
private List<ExerciseInfo> exerciseInfoList;
3038

31-
private FitnessDetail(Long activityId, Long duration, LocalDate date, List<ExerciseInfo> exerciseInfoList) {
39+
private FitnessDetail(Long activityId, Long userId, Long duration, LocalDate date, List<ExerciseInfo> exerciseInfoList) {
3240
this.activityId = activityId;
41+
this.userId = userId;
3342
this.duration = duration;
3443
this.date = date;
3544
this.exerciseInfoList = exerciseInfoList;
3645
}
3746

3847
public static FitnessDetail of(ActivityRecord record, FitnessLogEnrollRequest request) {
39-
return new FitnessDetail(record.getId(), record.getDurationInMinutes(), record.getEndTime().toLocalDate(), request.getExerciseInfoList());
48+
return new FitnessDetail(record.getId(), record.getUser().getUserId(), record.getDurationInMinutes(), record.getEndTime().toLocalDate(), request.getExerciseInfoList());
49+
}
50+
51+
public static FitnessDetail of(ActivityRecord record, List<ExerciseInfo> exerciseInfoList) {
52+
return new FitnessDetail(record.getId(), record.getUser().getUserId(), record.getDurationInMinutes(), record.getEndTime().toLocalDate(), exerciseInfoList);
4053
}
4154
}

MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Record/entity/UserLog/RunningDetail.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,16 @@
1111
@Entity
1212
@Getter
1313
@NoArgsConstructor
14+
@Table(name = "running_detail")
1415
public class RunningDetail {
1516

1617
@Id
1718
@GeneratedValue(strategy = GenerationType.IDENTITY)
1819
private Long id;
1920

21+
@Column(nullable = false)
22+
private Long userId;
23+
2024
@Column(nullable = false, unique = true)
2125
private Long activityId;
2226

@@ -28,15 +32,20 @@ public class RunningDetail {
2832

2933
private String memo;
3034

31-
private RunningDetail(Long activityId, Long duration, Long distance, LocalDate date, String memo) {
35+
private RunningDetail(Long activityId, Long userId, Long duration, Long distance, LocalDate date, String memo) {
3236
this.activityId = activityId;
37+
this.userId = userId;
3338
this.duration = duration;
3439
this.distance = distance;
3540
this.date = date;
3641
this.memo = memo;
3742
}
3843

3944
public static RunningDetail of(ActivityRecord record, RunningLogEnrollRequest request) {
40-
return new RunningDetail(record.getId(), record.getDurationInMinutes(), request.getDistance(), record.getEndTime().toLocalDate() ,request.getMemo());
45+
return new RunningDetail(record.getId(), record.getUser().getUserId(), record.getDurationInMinutes(), request.getDistance(), record.getEndTime().toLocalDate() ,request.getMemo());
46+
}
47+
48+
public static RunningDetail of(ActivityRecord record, Long distance, String memo) {
49+
return new RunningDetail(record.getId(), record.getUser().getUserId(), record.getDurationInMinutes(), distance, record.getEndTime().toLocalDate(), memo);
4150
}
4251
}

0 commit comments

Comments
 (0)