Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,14 @@
import MathCaptain.weakness.domain.Group.repository.GroupRepository;
import MathCaptain.weakness.domain.Group.repository.RelationRepository;
import MathCaptain.weakness.domain.Record.entity.ActivityRecord;
import MathCaptain.weakness.domain.Record.entity.UserLog.ExerciseInfo;
import MathCaptain.weakness.domain.Record.entity.UserLog.FitnessDetail;
import MathCaptain.weakness.domain.Record.entity.UserLog.RunningDetail;
import MathCaptain.weakness.domain.Record.entity.UserLog.StudyDetail;
import MathCaptain.weakness.domain.Record.repository.record.RecordRepository;
import MathCaptain.weakness.domain.Record.repository.userLog.FitnessLogRepository;
import MathCaptain.weakness.domain.Record.repository.userLog.RunningLogRepository;
import MathCaptain.weakness.domain.Record.repository.userLog.StudyLogRepository;
import MathCaptain.weakness.domain.Recruitment.dto.request.CreateRecruitmentRequest;
import MathCaptain.weakness.domain.Recruitment.entity.Comment;
import MathCaptain.weakness.domain.Recruitment.entity.Recruitment;
Expand All @@ -25,13 +32,15 @@
import org.springframework.transaction.annotation.Transactional;

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

@Slf4j
@Component
@RequiredArgsConstructor
@Transactional
@DependsOn("primaryEntityManagerFactory")
@DependsOn("entityManagerFactory")
public class TestInit {

private final UserRepository userRepository;
Expand All @@ -41,6 +50,9 @@ public class TestInit {
private final RecruitmentRepository recruitmentRepository;
private final CommentRepository commentRepository;
private final RecordRepository recordRepository;
private final FitnessLogRepository fitnessLogRepository;
private final RunningLogRepository runningLogRepository;
private final StudyLogRepository studyLogRepository;


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

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

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

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

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

// User ID: 8 -> currentProgress: 6
createActivityRecords(userRepository.findByUserId(8L).orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다.")), group3, startOfWeek, 6);
createActivityRecords(userRepository.findByUserId(8L)
.orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다.")),
group3, startOfWeek, 6, CategoryStatus.RUNNING, chestList);

createActivityRecords(userRepository.findByUserId(1L)
.orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다.")),
group1, startOfWeek, 4, CategoryStatus.FITNESS, chestList);
createActivityRecords(userRepository.findByUserId(1L)
.orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다.")),
group1, startOfWeek, 3, CategoryStatus.FITNESS, backList);
createActivityRecords(userRepository.findByUserId(1L)
.orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다.")),
group1, startOfWeek, 3, CategoryStatus.FITNESS, legList);

createActivityRecords(userRepository.findByUserId(2L).
orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다.")),
group2, startOfWeek, 3, CategoryStatus.STUDY, chestList);

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

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

// 저장소에 저장
recordRepository.save(record);

if (category == CategoryStatus.FITNESS) {
fitnessLogCreate(record);
} else if (category == CategoryStatus.RUNNING) {
runningLogCreate(record);
} else if (category == CategoryStatus.STUDY) {
studyLogCreate(record);
}
}
}

ExerciseInfo chest1 = ExerciseInfo.of("덤벨 프레스", 70, 10, 5);
ExerciseInfo chest2 = ExerciseInfo.of("벤치 프레스", 80, 10, 5);
ExerciseInfo chest3 = ExerciseInfo.of("밀리터리 프레스", 60, 10, 5);
ExerciseInfo chest4 = ExerciseInfo.of("디클라인 벤치 프레스", 70, 10, 5);
List<ExerciseInfo> chestList = List.of(chest1, chest2, chest3, chest4);

ExerciseInfo back1 = ExerciseInfo.of("데드 리프트", 120, 10, 5);
ExerciseInfo back2 = ExerciseInfo.of("랫풀다운", 80, 10, 5);
ExerciseInfo back3 = ExerciseInfo.of("시티드 로우", 70, 10, 5);
List<ExerciseInfo> backList = List.of(back1, back2, back3);

ExerciseInfo leg1 = ExerciseInfo.of("스쿼트", 100, 10, 5);
ExerciseInfo leg2 = ExerciseInfo.of("레그 프레스", 150, 10, 5);
ExerciseInfo leg3 = ExerciseInfo.of("레그 익스텐션", 80, 10, 5);
ExerciseInfo leg4 = ExerciseInfo.of("레그 컬", 70, 10, 5);
List<ExerciseInfo> legList = List.of(leg1, leg2, leg3, leg4);



private void studyLogCreate(ActivityRecord record) {
StudyDetail log = StudyDetail.of(record, "수학", 60L, "지수함수의 미분");
studyLogRepository.save(log);
}

private void runningLogCreate(ActivityRecord record) {
RunningDetail log = RunningDetail.of(record, 5L, "원인재에서 동춘역까지");
runningLogRepository.save(log);
}

private void fitnessLogCreate(ActivityRecord record) {
FitnessDetail log = FitnessDetail.of(record, chestList);
fitnessLogRepository.save(log);
}
}
//
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@EnableJpaAuditing
@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
@ComponentScan(basePackages = "MathCaptain")
@EnableTransactionManagement
public class WeaknessApplication {

public static void main(String[] args) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package MathCaptain.weakness.domain.Chat.entity;

import MathCaptain.weakness.domain.Chat.enums.ChatRole;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import java.time.LocalDateTime;

@Getter
@Entity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@EntityListeners(AuditingEntityListener.class)
public class Chat {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private Long userId;

@Enumerated(EnumType.STRING)
private ChatRole role;

private String message;

@CreatedDate
@Column(updatable = false)
private LocalDateTime sendTime;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package MathCaptain.weakness.domain.Chat.enums;

public enum ChatRole {
USER,
ASSISTANT
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package MathCaptain.weakness.domain.Chat.repository;

import MathCaptain.weakness.domain.Chat.entity.Chat;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface ChatRepository extends JpaRepository<Chat, Long> {
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package MathCaptain.weakness.domain.Record.dto.request;

import MathCaptain.weakness.domain.Record.entity.UserLog.ExerciseInfo;
import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.NoArgsConstructor;

Expand All @@ -11,11 +12,15 @@
@NoArgsConstructor
public class FitnessLogEnrollRequest extends ActivityLogEnrollRequest {

@NotNull
private Long activityTime;

@NotNull
private LocalDateTime startTime;

@NotNull
private LocalDateTime endTime;

@NotNull
private List<ExerciseInfo> exerciseInfoList;
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import jakarta.persistence.*;
import lombok.*;
import org.hibernate.validator.constraints.Range;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

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

@CreatedDate
private LocalDateTime startTime; // 인증 시작 시간

private LocalDateTime endTime; // 인증 종료 시간
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package MathCaptain.weakness.domain.Record.entity.UserLog;

import jakarta.persistence.Column;
import jakarta.persistence.Embeddable;
import lombok.Getter;
import lombok.NoArgsConstructor;
Expand All @@ -9,12 +10,16 @@
@NoArgsConstructor
public class ExerciseInfo {

@Column(nullable = false)
private String exerciseName;

@Column(nullable = false)
private int weight;

@Column(nullable = false)
private int reps;

@Column(nullable = false)
private int sets;

private ExerciseInfo(String exerciseName, int weight, int reps, int sets) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,30 +12,43 @@
@Entity
@Getter
@NoArgsConstructor
@Table(name = "fitness_detail")
public class FitnessDetail {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(nullable = false, unique = true)
@Column(nullable = false)
private Long userId;

@Column(nullable = false)
private Long activityId;

private Long duration;

private LocalDate date;

@ElementCollection
@CollectionTable(
name = "fitnessdetail_exerciseinfolist",
joinColumns = @JoinColumn(name = "fitness detail_id")
)
private List<ExerciseInfo> exerciseInfoList;

private FitnessDetail(Long activityId, Long duration, LocalDate date, List<ExerciseInfo> exerciseInfoList) {
private FitnessDetail(Long activityId, Long userId, Long duration, LocalDate date, List<ExerciseInfo> exerciseInfoList) {
this.activityId = activityId;
this.userId = userId;
this.duration = duration;
this.date = date;
this.exerciseInfoList = exerciseInfoList;
}

public static FitnessDetail of(ActivityRecord record, FitnessLogEnrollRequest request) {
return new FitnessDetail(record.getId(), record.getDurationInMinutes(), record.getEndTime().toLocalDate(), request.getExerciseInfoList());
return new FitnessDetail(record.getId(), record.getUser().getUserId(), record.getDurationInMinutes(), record.getEndTime().toLocalDate(), request.getExerciseInfoList());
}

public static FitnessDetail of(ActivityRecord record, List<ExerciseInfo> exerciseInfoList) {
return new FitnessDetail(record.getId(), record.getUser().getUserId(), record.getDurationInMinutes(), record.getEndTime().toLocalDate(), exerciseInfoList);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,16 @@
@Entity
@Getter
@NoArgsConstructor
@Table(name = "running_detail")
public class RunningDetail {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(nullable = false)
private Long userId;

@Column(nullable = false, unique = true)
private Long activityId;

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

private String memo;

private RunningDetail(Long activityId, Long duration, Long distance, LocalDate date, String memo) {
private RunningDetail(Long activityId, Long userId, Long duration, Long distance, LocalDate date, String memo) {
this.activityId = activityId;
this.userId = userId;
this.duration = duration;
this.distance = distance;
this.date = date;
this.memo = memo;
}

public static RunningDetail of(ActivityRecord record, RunningLogEnrollRequest request) {
return new RunningDetail(record.getId(), record.getDurationInMinutes(), request.getDistance(), record.getEndTime().toLocalDate() ,request.getMemo());
return new RunningDetail(record.getId(), record.getUser().getUserId(), record.getDurationInMinutes(), request.getDistance(), record.getEndTime().toLocalDate() ,request.getMemo());
}

public static RunningDetail of(ActivityRecord record, Long distance, String memo) {
return new RunningDetail(record.getId(), record.getUser().getUserId(), record.getDurationInMinutes(), distance, record.getEndTime().toLocalDate(), memo);
}
}
Loading