package com.gym.model; import jakarta.persistence.*; import lombok.Data; import java.time.LocalDate; import java.time.LocalDateTime; @Entity @Table(name = "training_plans") @Data public class TrainingPlan { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne @JoinColumn(name = "member_id", nullable = false) private User member; // 会员 @ManyToOne @JoinColumn(name = "coach_id", nullable = false) private User coach; // 教练 @Column(nullable = false, length = 100) private String goal; // 训练目标:减脂、增肌、塑形、康复 @Column(name = "duration_weeks") private Integer durationWeeks; // 训练周期(周) @Column(name = "start_date") private LocalDate startDate; // 开始日期 @Column(name = "end_date") private LocalDate endDate; // 结束日期 @Column(name = "frequency_per_week") private Integer frequencyPerWeek = 3; // 每周训练频率 @Column(name = "daily_plan", length = 2000) private String dailyPlan; // 每日训练计划(JSON格式或文本) @Column(name = "diet_advice", length = 1000) private String dietAdvice; // 饮食建议 @Column(name = "completed_days") private Integer completedDays = 0; // 已完成天数 private Double progress = 0.0; // 进度百分比 @Column(length = 20) private String status = "ACTIVE"; // 状态:ACTIVE, COMPLETED, PAUSED, CANCELLED @Column(name = "create_time") private LocalDateTime createTime = LocalDateTime.now(); @Column(name = "update_time") private LocalDateTime updateTime = LocalDateTime.now(); // 训练内容详情(可以存储为JSON) @Column(name = "training_content", length = 3000) private String trainingContent; // 训练动作、组数、次数等 @Column(name = "rest_days") private String restDays; // 休息日安排,如"1,3,5"表示周一、三、五休息 @Column(name = "difficulty_level") private String difficultyLevel; // 难度级别:BEGINNER, INTERMEDIATE, ADVANCED @Column(name = "calories_target") private Integer caloriesTarget; // 目标卡路里消耗 // 训练建议 @Column(name = "warmup_suggestions", length = 500) private String warmupSuggestions; // 热身建议 @Column(name = "cooldown_suggestions", length = 500) private String cooldownSuggestions; // 放松建议 @Column(name = "precautions", length = 1000) private String precautions; // 注意事项 // 评估指标 @Column(name = "initial_weight") private Double initialWeight; // 初始体重 @Column(name = "target_weight") private Double targetWeight; // 目标体重 @Column(name = "initial_body_fat") private Double initialBodyFat; // 初始体脂率 @Column(name = "target_body_fat") private Double targetBodyFat; // 目标体脂率 }