Commit 875dc676 authored by June's avatar June

v2- 新增 motor-plan

parent 26b592c4
......@@ -41,6 +41,18 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.jiankangyouyi.cloud</groupId>
<artifactId>health-cloud-motor-plan-api</artifactId>
<version>2.2-TK-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.jiankangyouyi.cloud</groupId>
......
package com.jiankangyouyi.cloud.motorplan.constant;
/**
* 公共参数常量
*
* @author yangsongbo
*/
public interface BaseParamConstants {
/**
* 运动课程资源
*/
String EXERCISE_COURSE_RESOURCE = "EXERCISE_COURSE_RESOURCE";
}
package com.jiankangyouyi.cloud.motorplan.constant;
/**
* 常量
*
* @author yangsongbo
*/
public interface Constants {
/**
* m3u8 视频链接有效时长 3小时
*/
Long VIDEO_LINK_VALID_TIME = 60 * 60 * 3L;
}
package com.jiankangyouyi.cloud.motorplan.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 运动能力 (运动水平) 在此作用在两个字段的枚举,后续区别大的话,再自行拆开吧
*
* @author :wangyalei
* @date :Created in 2021/7/14 10:08 上午
*/
@Getter
@AllArgsConstructor
public enum AthleticAbilityEnum {
/**
* 低
*/
LOW(1, "低"),
/**
* 中
*/
MIDDLE(2, "中"),
/**
* 高
*/
HIGH(3, "高");
/**
* 能力等级
*/
private final Integer level;
/**
* 运动能力说明
*/
private final String description;
public static AthleticAbilityEnum getEnum(Integer level) {
AthleticAbilityEnum[] values = values();
if (level == null) {
return null;
}
for (AthleticAbilityEnum value : values) {
if (level.equals(value.level)) {
return value;
}
}
return null;
}
}
package com.jiankangyouyi.cloud.motorplan.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 注意事项级别
* @author :wangyalei
* @date :2022/4/1 4:58 下午
*/
@Getter
@AllArgsConstructor
public enum AttentionItemLevelEnum {
/**
* 一级
*/
FIRST(1,"一级"),
/**
* 二级
*/
SECOND(2,"二级"),
/**
* 三级
*/
THIRD(3,"三级");
private final Integer level;
private final String description;
public static AttentionItemLevelEnum getEnum(Integer level) {
AttentionItemLevelEnum[] values = values();
if (level == null) {
return null;
}
for (AttentionItemLevelEnum value : values) {
if (level.equals(value.level)) {
return value;
}
}
return null;
}
}
package com.jiankangyouyi.cloud.motorplan.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author lvqidong
*/
@Getter
@AllArgsConstructor
public enum BizTypeEnum {
/**
* 运动干预方案
*/
STR_032501("032501", "运动干预方案"),
/**
* 生活方式
*/
STR_190101("190101", "生活方式"),
/**
* 效果评估
*/
MIDDLE_200101("200101", "效果评估"),
;
private String bizType;
private String describe;
}
package com.jiankangyouyi.cloud.motorplan.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 身体运动评估状态
*
* @author :wangyalei
* @date :2021/10/28 1:20 下午
*/
@Getter
@AllArgsConstructor
public enum BodyExerciseEvaluationStatusEnum {
/**
* 正常
*/
NORMAL("NORMAL", "正常"),
/**
* 危险(高危)
*/
DANGER("DANGER", "危险"),
/**
* 中危
*/
MIDDLE_DANGER("MIDDLE_DANGER", "中危"),
;
private String status;
private String describe;
public static BodyExerciseEvaluationStatusEnum getEnum(String status) {
BodyExerciseEvaluationStatusEnum[] values = values();
if (status == null) {
return null;
}
for (BodyExerciseEvaluationStatusEnum value : values) {
if (status.equals(value.status)) {
return value;
}
}
return null;
}
}
package com.jiankangyouyi.cloud.motorplan.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 条件等级
*
* @author :wangyalei
* @date :Created in 2021/7/14 10:08 上午
*/
@Getter
@AllArgsConstructor
public enum ConditionGradeEnum {
/**
* 1阶
*/
ONE(1),
/**
* 2阶
*/
TWO(2),
/**
* 3阶
*/
THREE(3),
/**
* 4阶
*/
FOUR(4),
/**
* 5阶
*/
FIVE(5),
/**
* 6阶
*/
SIX(6),
/**
* 7阶
*/
SEVEN(7),
/**
* 8阶
*/
EIGHT(8),
/**
* 9阶
*/
NINE(9),
/**
* 10阶
*/
TEN(10);
/**
* 能力等级
*/
private final Integer grade;
}
package com.jiankangyouyi.cloud.motorplan.enums;
import com.jiankangyouyi.cloud.core.constant.BaseEnum;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 疾病类型
*
* @author :wangyalei
* @date :Created in 2021/6/18 4:35 下午
*/
@Getter
@AllArgsConstructor
public enum DiseaseEnum implements BaseEnum {
/**
* 健康/亚健康人群
*/
HEALTHY_PERSON("HEALTHY_PERSON", "健康/亚健康人群"),
/**
* 2型糖尿病
*/
TYPE_2_DIABETES("TYPE_2_DIABETES", "2型糖尿病"),
/**
* 高血压
*/
HYPERTENSION("HYPERTENSION", "高血压"),
/**
* 冠心病
*/
CORONARY_DISEASE("CORONARY_DISEASE", "冠心病"),
/**
* 骨质疏松
*/
OSTEOPOROSIS("OSTEOPOROSIS", "骨质疏松"),
/**
* 痛风
*/
GOUT("GOUT", "痛风"),
/**
* 脂肪肝
*/
FATTY_LIVER("FATTY_LIVER", "脂肪肝"),
/**
* 脑卒中
*/
STROKE("STROKE", "脑卒中"),
/**
* 胃功能紊乱
*/
GASTRIC_FUNCTION_DISORDER("GASTRIC_FUNCTION_DISORDER", "胃功能紊乱"),
/**
* 肠道功能紊乱
*/
INTESTINAL_FUNCTION_DISORDER("INTESTINAL_FUNCTION_DISORDER", "肠道功能紊乱"),
/**
* 免疫功能紊乱
*/
HYPOIMMUNITY("HYPOIMMUNITY", "免疫功能紊乱"),
/**
* 肥胖
*/
OBESITY("OBESITY", "肥胖"),
/**
* 胃癌
*/
GASTRIC_CANCER("GASTRIC_CANCER", "胃癌"),
/**
* 高尿酸血症
*/
HYPERURICEMIA("HYPERURICEMIA", "高尿酸血症"),
/**
* 阿尔兹海默症
*/
AD("AD", "阿尔兹海默症"),
/**
* 慢阻肺
*/
COPD("COPD", "慢阻肺"),
/**
* 动脉硬化性心血管病
*/
ASCVD("ASCVD", "动脉硬化性心血管病"),
/**
* 缺血性心血管
*/
ICVD("ICVD", "缺血性心血管"),
/**
* 失眠
*/
INSOMNIA("INSOMNIA", "失眠"),
/**
* 高血脂
*/
HPYPERLIPIDEMIA("HPYPERLIPIDEMIA", "高血脂"),
/**
* 甲亢
*/
IIH("IIH", "甲亢"),
/**
* 甲减
*/
TSH("TSH", "甲减"),
/**
* 产后(哺乳期)
*/
POSTPARTUM_LACTATION("POSTPARTUM_LACTATION", "产后(哺乳期)"),
/**
* 产后(非哺乳期)
*/
POSTPARTUM_NON_LACTATION("POSTPARTUM_NON_LACTATION", "产后(非哺乳期)"),
/**
* 贫血
*/
ANEMIA("ANEMIA", "贫血"),
/**
* 慢性肾脏病
*/
CHRONIC_RENAL_FAILURE("CHRONIC_RENAL_FAILURE", "慢性肾脏病"),
/**
* 慢性胃炎
*/
CHRONIC_GASTRITIS("CHRONIC_GASTRITIS", "慢性胃炎"),
/**
* 溃疡性结肠炎
*/
UC("UC", "溃疡性结肠炎"),
/**
* 慢性肝炎
*/
CHRONIC_HEPATITIS("CHRONIC_HEPATITIS", "慢性肝炎"),
/**
* 营养不良
*/
NUTRIENT_DEFICIENCY("NUTRIENT_DEFICIENCY", "营养不良"),
/**
* 慢性疲劳综合征
*/
CFS("CFS","慢性疲劳综合征"),
/**
* 免疫力
*/
IMMUNITY("IMMUNITY","免疫力"),
/**
* 功能性胃肠病
*/
FGID("FGID","功能性胃肠病"),
/**
* 产后体重管理
*/
POSTPARTUM_WEIGHT("POSTPARTUM_WEIGHT", "产后体重管理"),
/**
* 心血管疾病
* 名称改为冠心病
*/
CVD("CVD", "冠心病"),
/**
* 慢性失眠症
*/
INSOMNIA_CHRONIC_SYNDROME("INSOMNIA_CHRONIC_SYNDROME", "慢性失眠症"),
/**
* 颈椎病
*/
CERVICAL_SPONDYLOSIS("CERVICAL_SPONDYLOSIS", "颈椎病"),
/**
* 肩关节周围炎
*/
PERIARTHRITIS_OF_SHOULDER("PERIARTHRITIS_OF_SHOULDER", "肩关节周围炎"),
/**
* 肩袖损伤
*/
ROTATOR_CUFF_INJURY("ROTATOR_CUFF_INJURY", "肩袖损伤"),
/**
* 网球肘
*/
TENNIS_ELBOW("TENNIS_ELBOW", "网球肘"),
/**
* 脊柱畸形
*/
SPINAL_DEFORMITY("SPINAL_DEFORMITY", "脊柱畸形"),
/**
* 腰背肌劳损
*/
LOW_BACK_MUSCLE_STRAIN("LOW_BACK_MUSCLE_STRAIN", "腰背肌劳损"),
/**
* 腰椎间盘突出
*/
LUMBAR_DISC_HERNIATION("LUMBAR_DISC_HERNIATION", "腰椎间盘突出"),
/**
* 膝关节损伤
*/
KNEE_INJURY("KNEE_INJURY", "膝关节损伤"),
/**
* 踝关节损伤
*/
ANKLE_INJURY("ANKLE_INJURY", "踝关节损伤"),
/**
* 关节炎
*/
ARTHRITIS("ARTHRITIS", "关节炎"),
;
/**
* 疾病类型
*/
private final String diseaseType;
/**
* 疾病名称
*/
private final String diseaseName;
public static DiseaseEnum getEnum(String diseaseType) {
DiseaseEnum[] values = values();
if (diseaseType == null) {
return null;
}
for (DiseaseEnum value : values) {
if (diseaseType.equals(value.diseaseType)) {
return value;
}
}
return null;
}
public static DiseaseEnum getEnumByName(String diseaseName) {
if (diseaseName == null) {
return null;
}
DiseaseEnum[] values = values();
for (DiseaseEnum value : values) {
if (diseaseName.equals(value.diseaseName)) {
return value;
}
}
return null;
}
@Override
public String code() {
return getDiseaseType();
}
@Override
public String message() {
return getDiseaseName();
}
}
package com.jiankangyouyi.cloud.motorplan.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 性别
*
* @author yangsongbo
*/
@AllArgsConstructor
@Getter
public enum GenderEnum {
/**
* 未知
*/
UNKNOWN("0", "未知"),
/**
* 男
*/
MALE("1", "男"),
/**
* 女
*/
FEMALE("2", "女"),
;
private String gender;
private String describe;
public static GenderEnum getEnum(String gender) {
GenderEnum[] values = values();
if (gender == null) {
return null;
}
for (GenderEnum value : values) {
if (gender.equals(value.gender)) {
return value;
}
}
return null;
}
}
package com.jiankangyouyi.cloud.motorplan.enums;
import com.jiankangyouyi.cloud.core.constant.BaseEnum;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 性别
*
* @author yangsongbo
*/
@AllArgsConstructor
@Getter
public enum GenderRealEnum implements BaseEnum {
/**
* 男
*/
MALE("1", "男"),
/**
* 女
*/
FEMALE("2", "女"),
;
private final String gender;
private final String describe;
public static GenderRealEnum getEnum(String gender) {
GenderRealEnum[] values = values();
if (gender == null) {
return null;
}
for (GenderRealEnum value : values) {
if (gender.equals(value.gender)) {
return value;
}
}
return null;
}
@Override
public String code() {
return gender;
}
@Override
public String message() {
return describe;
}
}
package com.jiankangyouyi.cloud.motorplan.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 通用的有效标识
*
* @author :wangyalei
* @date :Created in 2021/5/6 11:51 上午
*/
@Getter
@AllArgsConstructor
public enum GenericValidStatusEnum {
/**
* 有效
*/
VALID("1", "启用"),
/**
* 无效
*/
INVALID("2", "停用");
private final String status;
private final String describe;
}
package com.jiankangyouyi.cloud.motorplan.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* m3u8 视频格式
* @author :wangyalei
* @date :Created in 2021/7/23 11:30 上午
*/
@Getter
@AllArgsConstructor
public enum M3U8FormatEnum {
/**
* M3U8P1080
*/
M3U8P1080,
/**
* M3U8P720
*/
M3U8P720,
/**
* M3U8P480
*/
M3U8P480,
;
}
package com.jiankangyouyi.cloud.motorplan.enums;
import com.jiankangyouyi.cloud.core.constant.BaseEnum;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 记录日志操作类型
*
* @author fengxuanjun
*/
@Getter
@AllArgsConstructor
public enum OperateTypeEnum implements BaseEnum {
/**
* 保存
*/
ACCOUNT_SAVE("ACCOUNT_SAVE", "保存"),
/**
* 修改
*/
ACCOUNT_UPDATE("ACCOUNT_UPDATE", "修改"),
/**
* 删除
*/
ACCOUNT_DELETE("ACCOUNT_DELETE", "删除"),
;
private final String code;
private final String message;
@Override
public String code() {
return code;
}
@Override
public String message() {
return message;
}
}
package com.jiankangyouyi.cloud.motorplan.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 产后等级类型
*
* @author :wangyalei
* @date :Created in 2021/6/18 4:38 下午
*/
@Getter
@AllArgsConstructor
public enum PostpartumLevelEnum {
/**
* 产后体重管理高风险-产褥期
*/
HIGH_PUERPERIUM("HIGH_PUERPERIUM", "产后体重管理高风险-产褥期"),
/**
* 产后体重管理高风险-修复期
*/
HIGH_REPAIR_PERIOD("HIGH_REPAIR_PERIOD", "产后体重管理高风险-修复期"),
/**
* 产后体重管理高风险-减重期
*/
HIGH_LOSE_WEIGHT("HIGH_LOSE_WEIGHT", "产后体重管理高风险-减重期"),
/**
* 产后体重管理高风险-健康期
*/
HIGH_HEALTH_ISSUE("HIGH_HEALTH_ISSUE", "产后体重管理高风险-健康期"),
/**
* 产后体重管理中风险-产褥期
*/
MIDDLE_PUERPERIUM("MIDDLE_PUERPERIUM", "产后体重管理中风险-产褥期"),
/**
* 产后体重管理中风险-修复期
*/
MIDDLE_REPAIR_PERIOD("MIDDLE_REPAIR_PERIOD", "产后体重管理中风险-修复期"),
/**
* 产后体重管理中风险-减重期
*/
MIDDLE_LOSE_WEIGHT("MIDDLE_LOSE_WEIGHT", "产后体重管理中风险-减重期"),
/**
* 产后体重管理中风险-健康期
*/
MIDDLE_HEALTH_ISSUE("MIDDLE_HEALTH_ISSUE", "产后体重管理中风险-健康期"),
/**
* 产后体重管理低风险-产褥期
*/
LOW_PUERPERIUM("LOW_PUERPERIUM", "产后体重管理低风险-产褥期"),
/**
* 产后体重管理低风险-修复期
*/
LOW_REPAIR_PERIOD("LOW_REPAIR_PERIOD", "产后体重管理低风险-修复期"),
/**
* 产后体重管理低风险-减重期
*/
LOW_LOSE_WEIGHT("LOW_LOSE_WEIGHT", "产后体重管理低风险-减重期"),
/**
* 产后体重管理低风险-健康期
*/
LOW_HEALTH_ISSUE("LOW_HEALTH_ISSUE", "产后体重管理低风险-健康期");
private final String level;
private final String description;
private static PostpartumLevelEnum getPostpartumLevelEnum(Integer riskLevel, PostpartumLevelEnum high, PostpartumLevelEnum middle, PostpartumLevelEnum low) {
if (RiskLevelEnum.HIGH.getLevel().equals(riskLevel)) {
return high;
}
if (RiskLevelEnum.MIDDLE.getLevel().equals(riskLevel)) {
return middle;
}
if (RiskLevelEnum.LOW.getLevel().equals(riskLevel)) {
return low;
}
return null;
}
}
package com.jiankangyouyi.cloud.motorplan.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 七牛云存储空间
*
* @author yangsongbo
*/
@Getter
@AllArgsConstructor
public enum QiniuBucketEnum {
/**
* jkyy
*/
JKYY("jkyy"),
/**
* jkyy-private
*/
JKYY_PRIVATE("jkyy-private"),
/**
* jkyy-av
*/
JKYY_AV("jkyy-av"),
/**
* jkyy-video-private
*/
JKYY_VIDEO_PRIVATE("jkyy-video-private");
private String bucket;
}
package com.jiankangyouyi.cloud.motorplan.enums;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
/**
* Redis Key Enum
*
* @author yangsongbo
*/
@AllArgsConstructor
public enum RedisKeyEnum {
/**
* 运动方案配置项
*/
LIST_EXERCISE_PROJECT_CONFIG("list_exercise_project_config", "运动方案配置项"),
/**
* <p>公共参数缓存,后缀为paramGroup、paramKey</p>
*/
STRING_PARAM_VALUE("string_param_value", "公共参数缓存,后缀为paramGroup、paramKey"),
;
/**
* redis key
*/
private final String key;
/**
* 描述
*/
private final String describe;
/**
* 获取key
*
* @param keySuffixes key后缀
* @return redis key
*/
public String getKey(String... keySuffixes) {
StringBuilder builder = new StringBuilder(this.key);
if (ArrayUtils.isNotEmpty(keySuffixes)) {
for (String keySuffix : keySuffixes) {
if (StringUtils.isNotBlank(keySuffix)) {
builder.append("_").append(keySuffix);
}
}
}
return builder.toString();
}
}
package com.jiankangyouyi.cloud.motorplan.enums;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
/**
* Redis Key Enum
*
* @author yangsongbo
*/
@AllArgsConstructor
public enum RedisKeyEnum2 {
/**
* 运动方案配置项
*/
LIST_EXERCISE_PROJECT_CONFIG("list_exercise_project_config_", "运动方案配置项"),
/**
* 运动方案全局配置项
*/
LIST_EXERCISE_GLOBAL_PROJECT_CONFIG("list_exercise_global_project_config_", "运动方案全局配置项"),
/**
* 运动动作信息
*/
STRING_EXERCISE_ACTION("string_exercise_action_", "运动动作信息"),
;
/**
* redis key
*/
private final String key;
/**
* 描述
*/
private final String describe;
/**
* 获取key
*
* @param keySuffixes key后缀
* @return redis key
*/
public String getKey(String... keySuffixes) {
StringBuilder builder = new StringBuilder(this.key);
if (ArrayUtils.isNotEmpty(keySuffixes)) {
for (String keySuffix : keySuffixes) {
if (StringUtils.isNotBlank(keySuffix)) {
builder.append("_").append(keySuffix);
}
}
}
return builder.toString();
}
}
package com.jiankangyouyi.cloud.motorplan.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author :wangyalei
* @date :Created in 2021/7/9 3:51 下午
*/
@AllArgsConstructor
@Getter
public enum RestVideoHandlerTypeEnum {
/**
* 按课程完成时长百分比
*/
COURSE_FINISH_PERCENT(1, "按课程完成时长百分比"),
/**
* 按动作个数
*/
ACTION_COUNT(2, "按动作个数");
private final Integer type;
private final String description;
}
package com.jiankangyouyi.cloud.motorplan.enums;
import com.jiankangyouyi.cloud.core.constant.BaseEnum;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 处理码定义
*
* @author yangsongbo
*/
@Getter
@AllArgsConstructor
public enum ResultCodeEnum implements BaseEnum {
/**
* 成功
*/
SUCCESS("0", "成功"),
/**
* 暂无合适方案
*/
HMP0001("HMP0001", "暂无合适方案"),
/**
* 请求参数异常
*/
HMP0002("HMP0002", "请求参数异常"),
/**
* 疾病与风险不匹配
*/
HMP0003("HMP0003", "疾病与风险不匹配"),
/**
* 查询的数据不存在
*/
HMP0004("HMP0004", "查询的数据不存在"),
/**
* 操作的数据不存在
*/
HMP0005("HMP0005", "操作的数据不存在"),
/**
* 保存数据失败
*/
HMP0006("HMP0006", "保存数据失败"),
/**
* 权限不足
*/
HMP0007("HMP0007", "权限不足"),
/**
* 当天用户尚未创建、无法生成当天课程
*/
HMP0008("HMP0008", "当天用户尚未创建、无法生成当天课程"),
/**
* 用户当前身体运动情况不适合运动
*/
HMP0009("HMP0009", "用户当前身体运动情况不适合运动"),
/**
* 操作频繁,稍后重试
*/
HMP0010("HMP0010", "操作频繁,稍后重试"),
;
private final String code;
private final String message;
@Override
public String code() {
return code;
}
@Override
public String message() {
return message;
}
}
package com.jiankangyouyi.cloud.motorplan.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 风险等级类型
*
* @author :wangyalei
* @date :Created in 2021/6/18 4:38 下午
*/
@Getter
@AllArgsConstructor
public enum RiskLevelEnum {
/**
* 已确诊
*/
CONFIRMED(-1, "已病"),
/**
* 正常
*/
NONE(0, "正常"),
/**
* 极低/低风险
*/
LOW(1, "极低/低风险"),
/**
* 中风险
*/
MIDDLE(2, "中风险"),
/**
* 高风险
*/
HIGH(3, "高风险"),
/**
* 极高风险
*/
POLAR(4, "极高风险");
private final Integer level;
private final String description;
public static RiskLevelEnum getEnum(Integer level) {
RiskLevelEnum[] values = values();
if (level == null) {
return null;
}
for (RiskLevelEnum value : values) {
if (level.equals(value.level)) {
return value;
}
}
return null;
}
}
package com.jiankangyouyi.cloud.motorplan.model.bean;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Arrays;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @author :wangyalei
* @date :Created in 2021/7/7 6:29 下午
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ActionGroupConfigResult {
/***
* 热身动作组合配置
*/
private WarmupActonGroup warmupActonGroup;
/**
* 拉伸动作组合配置
*/
private StretchActionGroup stretchActionGroup;
/**
* 训练动作组合配置
*/
private TrainingActionGroup trainingActionGroup;
/**
* 自定义动作组合配置
*/
private SystemExerciseGroup systemExerciseGroup;
}
package com.jiankangyouyi.cloud.motorplan.model.bean;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3.ActionConfig;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3.ExerciseConfigInfo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/7 6:29 下午
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ActionGroupConfigResult2 {
/***
* 热身动作约束信息
*/
private ActionLimitInfo warmupActonLimitInfo;
/***
* 拉伸动作约束信息
*/
private ActionLimitInfo stretchActonLimitInfo;
/***
* 训练动作约束信息
*/
private ActionLimitInfo trainingActonLimitInfo;
/**
* 休息视频条件信息
*/
private RestVideoConditionInfo restVideoConditionInfo;
/**
* 梅脱限制信息
*/
private MetLimitInfo metLimitInfo;
/**
* 动作规则
*/
private ActionConfig.RuleInfo ruleInfo;
/**
* 运动配置信息
*/
private ExerciseConfigInfo exerciseConfigInfo;
/**
* 梅脱限制信息
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class MetLimitInfo {
/**
* 视频约束最小值
*/
private Double videoLimitMinValue;
/**
* 视频约束最大值
*/
private Double videoLimitMaxValue;
/**
* 时间占比最小值
*/
private Double timeProportionMinValue;
/**
* 时间占比最大值
*/
private Double timeProportionMaxValue;
/**
* 时间占比 (只合成的视频时长占比)
*/
private Double timeProportion;
}
/**
* 动作约束信息
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class ActionLimitInfo {
/**
* 动作体位
*/
private List<String> actionPositions;
/**
* 动作分类
*/
private List<String> actionClassifications;
/**
* 动作锻炼肌群
*/
private List<String> trainPositions;
}
/**
* 休息视频条件信息
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class RestVideoConditionInfo {
/**
* 动作个数
*/
private Integer actionCount;
/**
* 视频规格
*/
private String videoSize;
}
}
package com.jiankangyouyi.cloud.motorplan.model.bean;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.collections.CollectionUtils;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author :wangyalei
* @date :Created in 2021/6/24 11:31 上午
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ActionHandlerResult {
/**
* 总时间 /分
*/
private Long totalTime;
/**
* 总热量
*/
private Integer totalHeat;
/**
* 视频列表
*/
private List<ActionVideoInfo> actionVideoInfoList;
}
package com.jiankangyouyi.cloud.motorplan.model.bean;
import com.jiankangyouyi.cloud.basedata.api.enums.action.ActionPositionEnum;
import io.jsonwebtoken.lang.Assert;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author :wangyalei
* @date :Created in 2021/7/6 9:28 上午
*/
@Data
@AllArgsConstructor
@Builder
public class ActionVideoHandler {
/**
* 站动作视频
*/
private List<ActionVideoInfo> standList;
/**
* 坐动作视频
*/
private List<ActionVideoInfo> sitList;
/**
* 俯卧动作视频
*/
private List<ActionVideoInfo> lieProstrateList;
/**
* 仰卧动作视频
*/
private List<ActionVideoInfo> lieSupineList;
public ActionVideoHandler () {
standList = new ArrayList<>();
sitList = new ArrayList<>();
lieProstrateList = new ArrayList<>();
lieSupineList = new ArrayList<>();
}
/**
* 添加动作视频
* @param actionVideoInfo 动作视频
* @param actionPosition 动作体位
*/
public void addActionVideoInfo (ActionVideoInfo actionVideoInfo,String actionPosition) {
Assert.notNull(actionVideoInfo,"this actionVideoInfo must have text; it must not be null,empty, or blank");
Assert.hasText(actionPosition,"this actionPosition must have text; it must not be null,empty, or blank");
if (actionPosition.equals(ActionPositionEnum.STAND.getCode())) {
standList.add(actionVideoInfo);
} else if (actionPosition.equals(ActionPositionEnum.SIT.getCode())) {
sitList.add(actionVideoInfo);
} else if (actionPosition.equals(ActionPositionEnum.LIE_PROSTRATE.getCode())) {
lieProstrateList.add(actionVideoInfo);
} else if (actionPosition.equals(ActionPositionEnum.LIE_SUPINE.getCode())) {
lieSupineList.add(actionVideoInfo);
}
}
/**
* 获取排序合并结果
* @return List<ActionVideoInfo>
*/
public List<ActionVideoInfo> getSortMergeResult () {
List<ActionVideoInfo> finalVideoList = new ArrayList<>();
if (!standList.isEmpty()) {
finalVideoList.addAll(standList.stream().sorted(Comparator.comparing(ActionVideoInfo::getMets)).collect(Collectors.toList()));
}
if (!sitList.isEmpty()) {
finalVideoList.addAll(sitList.stream().sorted(Comparator.comparing(ActionVideoInfo::getMets)).collect(Collectors.toList()));
}
if (!lieProstrateList.isEmpty()) {
finalVideoList.addAll(lieProstrateList.stream().sorted(Comparator.comparing(ActionVideoInfo::getMets)).collect(Collectors.toList()));
}
if (!lieSupineList.isEmpty()) {
finalVideoList.addAll(lieSupineList.stream().sorted(Comparator.comparing(ActionVideoInfo::getMets)).collect(Collectors.toList()));
}
return finalVideoList;
}
}
package com.jiankangyouyi.cloud.motorplan.model.bean;
import com.jiankangyouyi.cloud.basedata.api.enums.action.ActionPositionEnum;
import io.jsonwebtoken.lang.Assert;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author :wangyalei
* @date :Created in 2021/7/6 9:28 上午
*/
@Data
@AllArgsConstructor
@Builder
@Slf4j
public class ActionVideoHandler2 {
/**
* 站动作视频
*/
private List<ActionVideoInfo2> standList;
/**
* 坐动作视频
*/
private List<ActionVideoInfo2> sitList;
/**
* 俯卧动作视频
*/
private List<ActionVideoInfo2> lieProstrateList;
/**
* 仰卧动作视频
*/
private List<ActionVideoInfo2> lieSupineList;
public ActionVideoHandler2() {
standList = new ArrayList<>();
sitList = new ArrayList<>();
lieProstrateList = new ArrayList<>();
lieSupineList = new ArrayList<>();
}
/**
* 添加动作视频
*
* @param actionVideoInfo 动作视频
* @param actionPosition 动作体位
*/
public void addActionVideoInfo(ActionVideoInfo2 actionVideoInfo, String actionPosition) {
Assert.notNull(actionVideoInfo, "this actionVideoInfo must have text; it must not be null,empty, or blank");
Assert.hasText(actionPosition, "this actionPosition must have text; it must not be null,empty, or blank");
if (actionPosition.equals(ActionPositionEnum.STAND.getCode())) {
standList.add(actionVideoInfo);
} else if (actionPosition.equals(ActionPositionEnum.SIT.getCode())) {
sitList.add(actionVideoInfo);
} else if (actionPosition.equals(ActionPositionEnum.LIE_PROSTRATE.getCode())) {
lieProstrateList.add(actionVideoInfo);
} else if (actionPosition.equals(ActionPositionEnum.LIE_SUPINE.getCode())) {
lieSupineList.add(actionVideoInfo);
}
}
/**
* 获取排序合并结果
*
* @return List<ActionVideoInfo>
*/
public List<ActionVideoInfo2> getSortMergeResult() {
List<ActionVideoInfo2> finalVideoList = new ArrayList<>();
if (!standList.isEmpty()) {
finalVideoList.addAll(standList.stream().sorted(Comparator.comparing(ActionVideoInfo2::getMet).thenComparing(ActionVideoInfo2::getActionGroup).thenComparing(ActionVideoInfo2::getRelationActionGroupOrder)).collect(Collectors.toList()));
}
if (!sitList.isEmpty()) {
finalVideoList.addAll(sitList.stream().sorted(Comparator.comparing(ActionVideoInfo2::getMet).thenComparing(ActionVideoInfo2::getActionGroup).thenComparing(ActionVideoInfo2::getRelationActionGroupOrder)).collect(Collectors.toList()));
}
if (!lieProstrateList.isEmpty()) {
finalVideoList.addAll(lieProstrateList.stream().sorted(Comparator.comparing(ActionVideoInfo2::getMet).thenComparing(ActionVideoInfo2::getActionGroup).thenComparing(ActionVideoInfo2::getRelationActionGroupOrder)).collect(Collectors.toList()));
}
if (!lieSupineList.isEmpty()) {
finalVideoList.addAll(lieSupineList.stream().sorted(Comparator.comparing(ActionVideoInfo2::getMet).thenComparing(ActionVideoInfo2::getActionGroup).thenComparing(ActionVideoInfo2::getRelationActionGroupOrder)).collect(Collectors.toList()));
}
// log.info("finalVideoList11111:{}", JsonUtils.toJson(finalVideoList));
return finalVideoList;
}
}
package com.jiankangyouyi.cloud.motorplan.model.bean;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/6/22 3:40 下午
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ActionVideoInfo {
/**
* 动作编号
*/
private String actionId;
/**
* 动作组
*/
private String actionGroup;
/**
* 动作难度
*/
private String actionDifficulty;
/**
* 动作特点
*/
private List<String> actionFeatures;
/**
* 动作分类
*/
private String actionClassification;
/**
* 动作体位
*/
private String actionPosition;
/**
* 训练肌群
*/
private List<String> trainPositions;
/**
* 视频规格
*/
private String actionVideoSize;
/**
* 动作视频开始时间 /ms
*/
private Long startTime;
/**
* 动作视频结束时间 /ms
*/
private Long endTime;
/**
* 动作视频产生的热量
*/
private Double heat;
/**
* 动作名称
*/
private String actionName;
/**
* 视频时长 /ms
*/
private Long timeMilliseconds;
/**
* 视频时长 /s
*/
private Double timeSecondsDouble;
/**
* 视频封面图
*/
private String coverImageKey;
/**
* 视频时长 /ms
*/
private Long videoMilliseconds;
/**
* 跟随练时长 /ms
*/
private Long followMilliseconds;
/**
* 梅脱值
*/
private Double mets;
/**
* 动作注意事项
*/
private List<String> attentions;
/**
* 动作讲解
*/
private List<String> actionExplains;
/**
* ts * 1080 格式视频key
*/
private String videoTs1080PKey;
/**
* ts * 720 格式视频key
*/
private String videoTs720PKey;
/**
* ts * 480 格式视频
*/
private String videoTs480PKey;
/**
* 动作讲解视频时长 /s
*/
private Long actionExplainVideoTimeSeconds;
/**
* mp4 格式动作讲解视频key
*/
// private String actionExplainVideoMp4Key;
/**
* m3u8 * 1080 格式动作讲解视频key
*/
private String actionExplainVideoM3u8P1080Key;
/**
* m3u8 * 720 格式动作讲解视频key
*/
private String actionExplainVideoM3u8P720Key;
/**
* m3u8 * 480 格式动作讲解视频
*/
private String actionExplainVideoM3u8P480Key;
/**
* 器材
*/
private List<String> equipments;
/**
* 休息视频 ture 是、false 否
*/
private Boolean restVideo;
}
package com.jiankangyouyi.cloud.motorplan.model.bean;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/6/22 3:40 下午
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ActionVideoInfo2 {
/**
* 动作编号
*/
private String actionId;
/**
* 动作组
*/
private String actionGroup;
/**
* 关联性动作组排序 (正序)
*/
@Builder.Default
private Integer relationActionGroupOrder = 0;
/**
* 动作难度
*/
private String actionDifficulty;
/**
* 动作特点
*/
private List<String> actionFeatures;
/**
* 动作分类
*/
private String actionClassification;
/**
* 动作体位
*/
private String actionPosition;
/**
* 训练肌群
*/
private List<String> trainPositions;
/**
* 视频规格
*/
private String actionVideoSize;
/**
* 动作视频开始时间 /ms
*/
private Long startTime;
/**
* 动作视频结束时间 /ms
*/
private Long endTime;
/**
* 动作视频产生的热量
*/
private Double heat;
/**
* 动作名称
*/
private String actionName;
/**
* 视频时长 /ms
*/
private Long timeMilliseconds;
/**
* 视频时长 /s
*/
private Double timeSecondsDouble;
/**
* 视频封面图
*/
private String coverImageKey;
/**
* 梅脱值
*/
private Double met;
/**
* 动作注意事项
*/
private List<String> attentions;
/**
* 动作讲解
*/
private List<String> actionExplains;
/**
* 视频资源标签
*/
private List<String> videoSourceLabels;
/**
* 视频资源类型
*/
private String videoSourceType;
/**
* ts * 1080 格式视频key
*/
private String videoTs1080PKey;
/**
* ts * 720 格式视频key
*/
private String videoTs720PKey;
/**
* ts * 480 格式视频
*/
private String videoTs480PKey;
/**
* 动作讲解视频时长 /s
*/
private Long actionExplainVideoTimeSeconds;
/**
* mp4 格式动作讲解视频key
*/
//private String actionExplainVideoMp4Key;
/**
* m3u8 * 1080 格式动作讲解视频key
*/
private String actionExplainVideoM3u8P1080Key;
/**
* m3u8 * 720 格式动作讲解视频key
*/
private String actionExplainVideoM3u8P720Key;
/**
* m3u8 * 480 格式动作讲解视频
*/
private String actionExplainVideoM3u8P480Key;
/**
* 器材
*/
private List<String> equipments;
/**
* 休息视频 ture 是、false 否
*/
@Builder.Default
private Boolean restVideo = false;
/**
* 训练视频 ture 是、false 否
*/
@Builder.Default
private Boolean trainingVideo = false;
}
package com.jiankangyouyi.cloud.motorplan.model.bean;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.AttentionItemDetail;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :2022/4/6 1:10 下午
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class AttentionItemHandlerBean {
/**
* 健康问题类型
*/
private String healthProblem;
/**
* 注意事项类型
*/
private String type;
/**
* 注意事项列表
*/
private List<AttentionItemDetail> attentionItemDetailList;
}
package com.jiankangyouyi.cloud.motorplan.model.bean;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.AttentionItemDetail;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3.AttentionItemConfig;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :2022/4/6 1:10 下午
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class AttentionItemHandlerBean2 {
/**
* 健康问题类型
*/
private String healthProblem;
/**
* 注意事项类型
*/
private String type;
/**
* 注意事项列表
*/
private List<AttentionItemConfig> attentionItemConfigs;
}
package com.jiankangyouyi.cloud.motorplan.model.bean;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.ExerciseCourseProjectConfigV3DO;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.DiseaseInfo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :2022/6/27 9:53 上午
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class DiseaseInfoProjectConfigHandlerResult {
/**
* 已病情况
*/
private List<DiseaseInfo> haveDiseaseList;
/**
* 极高风险情况
*/
private List<DiseaseInfo> polarList;
/**
* 高风险情况
*/
private List<DiseaseInfo> highList;
/**
* 中风险情况
*/
private List<DiseaseInfo> middleList;
/**
* 极低/低风险
*/
private List<DiseaseInfo> lowList;
/**
* 级别最高的疾病信息
*/
private DiseaseInfo topDiseaseInfo;
/**
* 健康人群
*/
private Boolean healthyPerson;
/**
* 方案配置项列表
*/
private List<ExerciseCourseProjectConfigV3DO> exerciseCourseProjectConfigs;
}
package com.jiankangyouyi.cloud.motorplan.model.bean;
import com.jiankangyouyi.cloud.motorplan.model.dto.AcquireCoursePlanDTO;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.ExerciseCoursePlanDO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* @author :wangyalei
* @date :2022/1/27 2:59 下午
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ExerciseCoursePlanBean {
/**
* 课程信息
*/
private ExerciseCoursePlanDO exerciseCoursePlanDO;
/**
* 动作组合结果
*/
private ActionGroupConfigResult ActionGroupConfigResult;
/**
* 动作难度
*/
private List<String> actionDifficulties;
/**
* 请求参数
*/
private AcquireCoursePlanDTO acquireCoursePlanDTO;
}
package com.jiankangyouyi.cloud.motorplan.model.bean;
import com.jiankangyouyi.cloud.motorplan.model.dto.AcquireCoursePlanDTO;
import com.jiankangyouyi.cloud.motorplan.model.dto.AcquireCoursePlanDTO2;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.ExerciseCoursePlanDO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :2022/1/27 2:59 下午
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ExerciseCoursePlanBean2 {
/**
* 课程信息
*/
private ExerciseCoursePlanDO exerciseCoursePlanDO;
/**
* 动作组合结果
*/
private ExerciseCourseProjectConfigResult2 exerciseCourseProjectConfigResult2;
/**
* 请求参数
*/
private AcquireCoursePlanDTO2 acquireCoursePlanDTO;
}
package com.jiankangyouyi.cloud.motorplan.model.bean;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.ExerciseCourseProjectConfig;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/7 6:30 下午
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ExerciseCourseProjectConfigResult {
/**
* 管理目标
*/
private List<String> managementGoals;
/**
* 注意事项
*/
private List<String> attentionItems;
/**
* 视频课程禁忌动作属性
*/
private List<String> forbidActionProperties;
/**
* 系统课程禁忌动作属性
*/
private List<String> systemForbidActionProperties;
/**
* 运动频率
*/
private String exerciseFrequencyDesc;
/**
* 用户BMI
*/
private Double bmi;
/**
* 干预方案配置
*/
private ExerciseCourseProjectConfig exerciseCourseProjectConfig;
}
package com.jiankangyouyi.cloud.motorplan.model.bean;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.ExerciseCourseProjectGlobalConfigDO;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3.ActionConfig;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3.ExerciseConfigInfo;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3.ExerciseCourseProjectConfig;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3.SystemRemindDescriptionConfig;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/7 6:30 下午
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ExerciseCourseProjectConfigResult2 implements Serializable {
/**
* 管理目标
*/
private List<String> managementGoals;
/**
* 注意事项
*/
private List<String> attentionItems;
/**
* 动作难度
*/
private List<String> actionDifficulty;
/**
* 视频课程禁忌动作属性
*/
private List<String> forbidActionProperties;
/**
* 系统课程禁忌动作属性
*/
private List<String> systemForbidActionProperties;
/**
* 运动频率
*/
private String exerciseFrequencyDesc;
/**
* 运动频率最小值 /天
*/
private Integer exerciseFrequencyMinValue;
/**
* 运动频率最大值 /天
*/
private Integer exerciseFrequencyMaxValue;
/**
* 用户BMI
*/
private Double bmi;
/**
* 运动能力 1、低 2、中 3、高
*/
private Integer athleticAbility;
/**
* 出生日期
*/
private String birthday;
/**
* 运动配置信息
*/
private ExerciseConfigInfo exerciseConfigInfo;
/**
* 动作时间信息
*/
private ActionTimeInfo actionTimeInfo;
/***
* 热身动作约束信息
*/
private ActionGroupConfigResult2.ActionLimitInfo warmupActonLimitInfo;
/***
* 拉伸动作约束信息
*/
private ActionGroupConfigResult2.ActionLimitInfo stretchActonLimitInfo;
/***
* 训练动作约束信息
*/
private ActionGroupConfigResult2.ActionLimitInfo trainingActonLimitInfo;
/**
* 休息视频条件信息
*/
private ActionGroupConfigResult2.RestVideoConditionInfo restVideoConditionInfo;
/**
* 梅脱限制信息
*/
private ActionGroupConfigResult2.MetLimitInfo metLimitInfo;
/**
* 动作规则
*/
private ActionConfig.RuleInfo ruleInfo;
/**
* 系统运动提示话术配置
*/
private List<SystemRemindDescriptionConfig.ConfigDetail> systemRemindDescriptionConfigs;
/**
* 方案配置
*/
private ExerciseCourseProjectConfig exerciseCourseProjectConfig;
/**
* 运动课程方案全局配置
*/
private ExerciseCourseProjectGlobalConfigDO exerciseCourseProjectGlobalConfigDO;
/**
* 梅脱限制信息
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class MetLimitInfo {
/**
* 视频约束最小值
*/
private Double videoLimitMinValue;
/**
* 视频约束最小值
*/
private Double videoLimitMaxValue;
/**
* 时间占比最小值
*/
private Double timeProportionMinValue;
/**
* 时间占比最大值
*/
private Double timeProportionMaxValue;
/**
* 时间占比 (只合成的视频时长占比)
*/
private Double timeProportion;
}
/**
* 动作约束信息
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class ActionLimitInfo {
/**
* 动作体位
*/
private List<String> actionPositions;
/**
* 动作分类
*/
private List<String> actionClassifications;
/**
* 动作锻炼肌群
*/
private List<String> trainPositions;
}
/**
* 休息视频条件信息
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class RestVideoConditionInfo {
/**
* 动作个数
*/
private Integer actionCount;
/**
* 视频规格
*/
private String videoSize;
}
/**
* 动作时间信息
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class ActionTimeInfo {
/**
* 热身时间 /分
*/
private Integer warmupTime;
/**
* 拉伸时间 /分
*/
private Integer stretchTime;
/**
* 最小训练时间
*/
private Integer minTrainTime;
/**
* 最大训练时间
*/
private Integer maxTrainTime;
}
}
package com.jiankangyouyi.cloud.motorplan.model.bean;
import com.jiankangyouyi.cloud.basedata.api.model.entity.action.ExerciseModernAction;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/13 2:03 下午
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ExerciseModernActionDataResult implements Serializable {
/**
* 用户选择的器材动作列表
*/
private List<ExerciseModernAction> userEquipmentsList;
/**
* 徒手动作列表
*/
private List<ExerciseModernAction> unarmedList;
/**
* 热身最小时间 /秒
*/
private Long warmupTimeMinSeconds;
/**
* 拉伸最小时间 /秒
*/
private Long stretchTimeMinSeconds;
/**
* 训练最小时间 /秒
*/
private Long trainingTimeMinSeconds;
/**
* 训练最大时间 /秒
*/
private Long trainingTimeMaxSeconds;
}
package com.jiankangyouyi.cloud.motorplan.model.bean;
import com.jiankangyouyi.cloud.basedata.api.model.entity.action.v4.ExerciseModernAction;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/13 2:03 下午
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ExerciseModernActionDataResult2 implements Serializable {
/**
* 用户选择的器材动作列表
*/
private List<ExerciseModernAction> userEquipmentsList;
/**
* 徒手动作列表
*/
private List<ExerciseModernAction> unarmedList;
}
package com.jiankangyouyi.cloud.motorplan.model.bean;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/6/22 4:44 下午
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class GenerateActionVideo {
/**
* 热身动作总时间 /s
*/
//private Long warmupTotalTime;
/**
* 热身动作总时间 /ms
*/
private Long warmupTotalTimeMilliseconds;
/**
* 热身动作产生总热量
*/
private Double warmupTotalHeat;
/**
* 热身动作视频列表
*/
private List<ActionVideoInfo> warmupVideos;
/**
* 训练动作总时间 /s
*/
// private Long trainingTotalTime;
/**
* 训练动作总时间 /ms
*/
private Long trainingTotalTimeMilliseconds;
/**
* 训练动作产生总热量
*/
private Double trainingTotalHeat;
/**
* 训练动作视频列表
*/
private List<ActionVideoInfo> trainingVideos;
/**
* 拉伸动作总时间 /s
*/
// private Long stretchTotalTime;
/**
* 拉伸动作总时间 /ms
*/
private Long stretchTotalTimeMilliseconds;
/**
* 拉伸动作产生总热量
*/
private Double stretchTotalHeat;
/**
* 拉伸动作视频列表
*/
private List<ActionVideoInfo> stretchVideos;
/**
* 休息视频总时间 /s
*/
// private Long restVideoTotalTime;
/**
* 休息视频总时间 /ms
*/
private Long restVideoTotalTimeMilliseconds;
/**
* 休息视频个数
*/
private Integer restVideoCount;
/**
* 最终视频列表
*/
private List<ActionVideoInfo> finalActionVideos;
/**
* 课程封面图
*/
private String courseImageKey;
/**
* 课程视频 1080 分辨率 m3u8 文件地址key
*/
private String courseVideoM3u8P1080Key;
/**
* 课程视频 720 分辨率 m3u8 文件地址key
*/
private String courseVideoM3u8P720Key;
/**
* 课程视频 480 分辨率 m3u8 文件地址key
*/
private String courseVideoM3u8P480Key;
/**
* 器材类型
*/
private List<String> equipments;
}
package com.jiankangyouyi.cloud.motorplan.model.bean;
import com.jiankangyouyi.cloud.core.util.StringUtils;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3.RestVideoDetailInfo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @author :wangyalei
* @date :Created in 2021/6/22 4:44 下午
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class GenerateActionVideo2 {
/**
* 热身动作总时间 /ms
*/
private Long warmupTotalTimeMilliseconds;
/**
* 热身动作产生总热量
*/
private Integer warmupTotalHeat;
/**
* 热身动作视频列表
*/
private List<ActionVideoInfo2> warmupVideos;
/**
* 热身动作个数
*/
private Integer warmupActionCount;
/**
* 训练动作总时间 /ms
*/
private Long trainingTotalTimeMilliseconds;
/**
* 训练动作产生总热量
*/
private Integer trainingTotalHeat;
/**
* 训练动作视频列表 / 单套
*/
private List<ActionVideoInfo2> trainingVideos;
/**
* 训练动作个数 /单套
*/
private Integer trainingActionCount;
/**
* 拉伸动作总时间 /ms
*/
private Long stretchTotalTimeMilliseconds;
/**
* 拉伸动作产生总热量
*/
private Integer stretchTotalHeat;
/**
* 拉伸动作视频列表
*/
private List<ActionVideoInfo2> stretchVideos;
/**
* 拉伸动作个数
*/
private Integer stretchActionCount;
/**
* 训练动作循环次数
*/
private Integer trainingCirculationCount;
/**
* 训练动作间隔个数 (插入休息视频用)
*/
private Integer trainingIntervalCount;
/**
* 休息视频总个数
*/
private Integer restVideoTotalCount;
/**
* 休息视频总时间 /ms
*/
private Long restVideoTotalTime;
/**
* 休息视频信息
*/
private RestVideoDetailInfo restVideoInfo;
/**
* 最终视频列表
*/
private List<ActionVideoInfo2> finalActionVideos;
/**
* 课程封面图
*/
private String courseImageKey;
/**
* 课程视频 1080 分辨率 m3u8 文件地址key
*/
private String courseVideoM3u8P1080Key;
/**
* 课程视频 720 分辨率 m3u8 文件地址key
*/
private String courseVideoM3u8P720Key;
/**
* 课程视频 480 分辨率 m3u8 文件地址key
*/
private String courseVideoM3u8P480Key;
/**
* 器材类型
*/
private List<String> equipments;
public Double getWarmupTotalHeat() {
if (CollectionUtils.isEmpty(warmupVideos)) {
return 0.0;
}
return warmupVideos.stream().map(ActionVideoInfo2::getHeat).filter(Objects::nonNull).reduce(Double::sum).orElse(0.000);
}
public Integer getWarmupActionCount() {
if (CollectionUtils.isEmpty(warmupVideos)) {
return 0;
}
return warmupVideos.stream()
.filter(item -> StringUtils.isNotBlank(item.getActionGroup()))
.collect(Collectors.groupingBy(ActionVideoInfo2::getActionGroup, LinkedHashMap::new, Collectors.toList()))
.size();
}
public Double getStretchTotalHeat() {
if (CollectionUtils.isEmpty(stretchVideos)) {
return 0.0;
}
return stretchVideos.stream().map(ActionVideoInfo2::getHeat).filter(Objects::nonNull).reduce(Double::sum).orElse(0.0);
}
public Integer getStretchActionCount() {
if (CollectionUtils.isEmpty(stretchVideos)) {
return 0;
}
return stretchVideos.stream()
.filter(item -> StringUtils.isNotBlank(item.getActionGroup()))
.collect(Collectors.groupingBy(ActionVideoInfo2::getActionGroup, LinkedHashMap::new, Collectors.toList()))
.size();
}
public Double getTrainingTotalHeat() {
if (CollectionUtils.isEmpty(finalActionVideos)) {
return 0.0;
}
return finalActionVideos.stream().filter(ActionVideoInfo2::getTrainingVideo).map(ActionVideoInfo2::getHeat).filter(Objects::nonNull).reduce(Double::sum).orElse(0.0);
}
public Integer getTrainingActionCount() {
if (CollectionUtils.isEmpty(trainingVideos)) {
return 0;
}
return trainingVideos.stream()
.filter(item -> StringUtils.isNotBlank(item.getActionGroup()) && item.getTrainingVideo())
.collect(Collectors.groupingBy(ActionVideoInfo2::getActionGroup, LinkedHashMap::new, Collectors.toList()))
.size();
}
public Long getWarmupTotalTimeMilliseconds() {
if (CollectionUtils.isEmpty(warmupVideos)) {
return 0L;
}
return warmupVideos.stream().map(ActionVideoInfo2::getTimeMilliseconds).filter(Objects::nonNull).reduce(Long::sum).orElse(0L);
}
public Long getStretchTotalTimeMilliseconds() {
if (CollectionUtils.isEmpty(stretchVideos)) {
return 0L;
}
return stretchVideos.stream().map(ActionVideoInfo2::getTimeMilliseconds).filter(Objects::nonNull).reduce(Long::sum).orElse(0L);
}
public Long getTrainingTotalTimeMilliseconds() {
if (CollectionUtils.isEmpty(finalActionVideos)) {
return 0L;
}
return finalActionVideos.stream().filter(ActionVideoInfo2::getTrainingVideo).map(ActionVideoInfo2::getTimeMilliseconds).filter(Objects::nonNull).reduce(Long::sum).orElse(0L);
}
public Integer getRestVideoTotalCount() {
if (CollectionUtils.isEmpty(finalActionVideos)) {
return 0;
}
return (int) finalActionVideos.stream().filter(ActionVideoInfo2::getRestVideo).count();
}
public Long getRestVideoTotalTime() {
if (CollectionUtils.isEmpty(finalActionVideos)) {
return 0L;
}
return finalActionVideos.stream().filter(ActionVideoInfo2::getRestVideo).map(ActionVideoInfo2::getTimeMilliseconds).filter(Objects::nonNull).reduce(Long::sum).orElse(0L);
}
}
package com.jiankangyouyi.cloud.motorplan.model.bean;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.List;
/**
* @author :wangyalei
* @date :2022/6/27 10:09 上午
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ManagementGoalsForbidActionHandlerResult {
/**
* 管理目标
*/
private List<String> managementGoals;
/**
* 视频课程禁忌动作
*/
private List<String> videoForbidActionProperties;
/**
* 系统课程禁忌动作
*/
private List<String> systemForbidActionProperties;
}
package com.jiankangyouyi.cloud.motorplan.model.bean;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author :wangyalei
* @date :Created in 2021/7/7 6:28 下午
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class RelationActionHandlerResult {
/***
* 关联动作Id
*/
private String relationId;
/**
* 是否有关联动作
*/
private Boolean relation;
/**
* 动作产生热量
*/
private Integer heat;
/**
* 动作产生时间 / 毫秒
*/
private long timeMilliseconds;
}
package com.jiankangyouyi.cloud.motorplan.model.bean;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author :wangyalei
* @date :Created in 2021/7/7 6:28 下午
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class RelationActionHandlerResult2 {
/***
* 关联动作Id
*/
private String relationId;
/**
* 动作产生热量
*/
private Double heat;
/**
* 动作产生时间 / 毫秒
*/
private long timeMilliseconds;
}
package com.jiankangyouyi.cloud.motorplan.model.builder;
import com.jiankangyouyi.cloud.core.external.qiniu.QiniuClient;
import com.jiankangyouyi.cloud.core.external.qiniu.constant.ProtocolEnum;
import com.jiankangyouyi.cloud.core.external.qiniu.entity.key.QiniuKey;
import com.jiankangyouyi.cloud.core.util.CollectionUtils;
import com.jiankangyouyi.cloud.motorplan.api.model.dto.response.component.*;
import com.jiankangyouyi.cloud.motorplan.constant.Constants;
import com.jiankangyouyi.cloud.motorplan.enums.QiniuBucketEnum;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.ExerciseCoursePlanDO;
import com.jiankangyouyi.cloud.motorplan.model.vo.ExerciseCoursePlanInfoVO;
import com.jiankangyouyi.cloud.motorplan.model.vo.ExerciseCoursePlanInfoVO2;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import java.math.BigDecimal;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author :wangyalei
* @date :Created in 2021/7/2 5:00 下午
*/
@Slf4j
public class ExerciseCoursePlanOperationBuilder {
/**
* 构建课程计划信息 (建议使用V2)
*
* @param exerciseCoursePlanDO 请求参数
* @return ExerciseCoursePlanInfoVO
*/
@Deprecated
public static ExerciseCoursePlanInfoVO buildExerciseCoursePlanInfoVO(ExerciseCoursePlanDO exerciseCoursePlanDO) {
QiniuClient qiniuClient = QiniuClient.getClient(QiniuBucketEnum.JKYY_PRIVATE.getBucket());
List<ActionExplainInfo> actionExplainInfos = null;
if (CollectionUtils.isNotEmpty(exerciseCoursePlanDO.getActionExplains())) {
actionExplainInfos = exerciseCoursePlanDO.getActionExplains().stream().map(xx ->
ActionExplainInfo.builder()
.actionImageUrl(xx.getActionImageKey())
.actionName(xx.getActionName())
.actionExplains(xx.getActionExplains())
.videoDurationSecond(xx.getVideoDurationSecond())
.attentions(xx.getAttentions())
.actionVideoM3u8P1080Url(qiniuClient.pm3u8(ProtocolEnum.HTTPS, xx.getActionVideoM3u8P1080Key(), QiniuBucketEnum.JKYY_PRIVATE.getBucket(), Constants.VIDEO_LINK_VALID_TIME))
.actionVideoM3u8P720Url(qiniuClient.pm3u8(ProtocolEnum.HTTPS, xx.getActionVideoM3u8P720Key(), QiniuBucketEnum.JKYY_PRIVATE.getBucket(), Constants.VIDEO_LINK_VALID_TIME))
.actionVideoM3u8P480Url(qiniuClient.pm3u8(ProtocolEnum.HTTPS, xx.getActionVideoM3u8P480Key(), QiniuBucketEnum.JKYY_PRIVATE.getBucket(), Constants.VIDEO_LINK_VALID_TIME))
.build()
).collect(Collectors.toList());
}
return ExerciseCoursePlanInfoVO.builder()
.courseId(exerciseCoursePlanDO.getCourseId())
.actionCount(exerciseCoursePlanDO.getActionCount())
.actionExplains(actionExplainInfos)
.attentionItems(exerciseCoursePlanDO.getAttentionItems())
.courseDurationMinute(exerciseCoursePlanDO.getCourseDurationMinute())
.courseDurationSecond(exerciseCoursePlanDO.getCourseDurationSecond())
.courseFinishDetails(exerciseCoursePlanDO.getCourseFinishDetails())
.courseHeat(BigDecimal.valueOf(exerciseCoursePlanDO.getCourseHeat()).setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue())
.courseImageUrl(exerciseCoursePlanDO.getCourseImageKey())
.courseFinishTotalDuration(exerciseCoursePlanDO.getCourseFinishTotalDuration())
.courseFinishTotalHeat(exerciseCoursePlanDO.getCourseFinishTotalHeat())
.courseVideoDetailInfos(exerciseCoursePlanDO.getCourseVideoDetailInfos().stream().map(item -> CourseVideoDetailInfo.builder()
.startTime(item.getStartTime())
.endTime(item.getEndTime())
.heat(item.getHeat())
.build()).collect(Collectors.toList()))
.exerciseAims(exerciseCoursePlanDO.getExerciseAims())
.exerciseEquipments(exerciseCoursePlanDO.getExerciseEquipments())
.exerciseFrequencyDesc(exerciseCoursePlanDO.getExerciseFrequencyDesc())
.courseVideoM3u8P1080Url(qiniuClient.pm3u8(ProtocolEnum.HTTPS, exerciseCoursePlanDO.getCourseVideoM3u8P1080Key(), QiniuBucketEnum.JKYY_PRIVATE.getBucket(), Constants.VIDEO_LINK_VALID_TIME))
.courseVideoM3u8P720Url(qiniuClient.pm3u8(ProtocolEnum.HTTPS, exerciseCoursePlanDO.getCourseVideoM3u8P720Key(), QiniuBucketEnum.JKYY_PRIVATE.getBucket(), Constants.VIDEO_LINK_VALID_TIME))
.courseVideoM3u8P480Url(qiniuClient.pm3u8(ProtocolEnum.HTTPS, exerciseCoursePlanDO.getCourseVideoM3u8P480Key(), QiniuBucketEnum.JKYY_PRIVATE.getBucket(), Constants.VIDEO_LINK_VALID_TIME))
.courseDate(exerciseCoursePlanDO.getCourseDate())
.build();
}
/**
* 构建课程计划信息v2
*
* @param exerciseCoursePlanDO 请求参数
* @return ExerciseCoursePlanInfoVO2
*/
public static ExerciseCoursePlanInfoVO2 buildExerciseCoursePlanInfoVO2(ExerciseCoursePlanDO exerciseCoursePlanDO, Long expireTime, String replaceAddress) {
SystemExerciseInfo systemExerciseInfo = exerciseCoursePlanDO.getSystemExerciseInfo();
List<ExerciseBaseInfo> moreExerciseList = systemExerciseInfo.getMoreExerciseList();
for (ExerciseBaseInfo exerciseBaseInfo : moreExerciseList) {
exerciseBaseInfo.setImageUrl(exerciseBaseInfo.getImageKey());
}
systemExerciseInfo.setMoreExerciseList(moreExerciseList);
List<ExerciseBaseInfo> recommendExerciseList = systemExerciseInfo.getRecommendExerciseList();
for (ExerciseBaseInfo exerciseBaseInfo : recommendExerciseList) {
exerciseBaseInfo.setImageUrl(exerciseBaseInfo.getImageKey());
}
systemExerciseInfo.setRecommendExerciseList(recommendExerciseList);
exerciseCoursePlanDO.setSystemExerciseInfo(systemExerciseInfo);
// 只有视频课程
if (exerciseCoursePlanDO.getActionCount() != null && exerciseCoursePlanDO.getSystemExerciseInfo() == null) {
return buildVideoExercise(exerciseCoursePlanDO, expireTime, replaceAddress);
}
// 只有系统课程
if (exerciseCoursePlanDO.getActionCount() == null && exerciseCoursePlanDO.getSystemExerciseInfo() != null) {
return buildSystemExercise(exerciseCoursePlanDO);
}
// 视频课程、系统课程都有
QiniuClient qiniuClient = QiniuClient.getClient(QiniuBucketEnum.JKYY_PRIVATE.getBucket());
Long finalExpireTime = expireTime == null ? Constants.VIDEO_LINK_VALID_TIME : expireTime;
List<ActionExplainInfo> actionExplainInfos = null;
if (CollectionUtils.isNotEmpty(exerciseCoursePlanDO.getActionExplains())) {
actionExplainInfos = exerciseCoursePlanDO.getActionExplains().stream().map(xx ->
ActionExplainInfo.builder()
.actionId(xx.getActionId())
.actionImageUrl(xx.getActionImageKey())
.actionName(xx.getActionName())
.actionExplains(xx.getActionExplains())
.videoDurationSecond(xx.getVideoDurationSecond())
.attentions(xx.getAttentions())
//.actionVideoMP4Url(StringUtils.isBlank(xx.getVideoMP4Key()) ? null : qiniuClient.fileKeyToFileUrl(ProtocolEnum.HTTPS, new QiniuKey(xx.getVideoMP4Key()), finalExpireTime))
.actionVideoM3u8P1080Url(qiniuClient.getDomain() + (StringUtils.isEmpty(xx.getActionVideoM3u8P1080Key()) ? "" : xx.getActionVideoM3u8P1080Key().split("\\?")[0]))
.actionVideoM3u8P720Url(qiniuClient.getDomain() + (StringUtils.isEmpty(xx.getActionVideoM3u8P1080Key()) ? "" : xx.getActionVideoM3u8P720Key().split("\\?")[0]))
.actionVideoM3u8P480Url(qiniuClient.getDomain() + (StringUtils.isEmpty(xx.getActionVideoM3u8P1080Key()) ? "" : xx.getActionVideoM3u8P480Key().split("\\?")[0]))
.build()
).collect(Collectors.toList());
}
// if (CollectionUtils.isNotEmpty(exerciseCoursePlanDO.getActionExplains())) {
// actionExplainInfos = exerciseCoursePlanDO.getActionExplains().stream().map(xx ->
// ActionExplainInfo.builder()
// .actionId(xx.getActionId())
// .actionImageUrl(xx.getActionImageKey())
// .actionName(xx.getActionName())
// .actionExplains(xx.getActionExplains())
// .videoDurationSecond(xx.getVideoDurationSecond())
// .attentions(xx.getAttentions())
// //.actionVideoMP4Url(StringUtils.isBlank(xx.getVideoMP4Key()) ? null : qiniuClient.fileKeyToFileUrl(ProtocolEnum.HTTPS, new QiniuKey(xx.getVideoMP4Key()), finalExpireTime))
// .actionVideoM3u8P1080Url(StringUtils.isBlank(replaceAddress) ? qiniuClient.pm3u8(ProtocolEnum.HTTPS, xx.getActionVideoM3u8P1080Key(), QiniuBucketEnum.JKYY_PRIVATE.getBucket(), finalExpireTime) : qiniuClient.fileKeyToFileUrl(ProtocolEnum.HTTPS, new QiniuKey(xx.getActionVideoM3u8P1080Key()), finalExpireTime))
// .actionVideoM3u8P720Url(StringUtils.isBlank(replaceAddress) ? qiniuClient.pm3u8(ProtocolEnum.HTTPS, xx.getActionVideoM3u8P720Key(), QiniuBucketEnum.JKYY_PRIVATE.getBucket(), finalExpireTime) : qiniuClient.fileKeyToFileUrl(ProtocolEnum.HTTPS, new QiniuKey(xx.getActionVideoM3u8P720Key()), finalExpireTime))
// .actionVideoM3u8P480Url(StringUtils.isBlank(replaceAddress) ? qiniuClient.pm3u8(ProtocolEnum.HTTPS, xx.getActionVideoM3u8P480Key(), QiniuBucketEnum.JKYY_PRIVATE.getBucket(), finalExpireTime) : qiniuClient.fileKeyToFileUrl(ProtocolEnum.HTTPS, new QiniuKey(xx.getActionVideoM3u8P480Key()), finalExpireTime))
// .build()
// ).collect(Collectors.toList());
// }
// log.info("exerciseCoursePlanDO.getCourseVideoM3u8P1080Key(),{}", exerciseCoursePlanDO.getCourseVideoM3u8P1080Key());
// log.info("exerciseCoursePlanDO.getCourseVideoM3u8P720Key(),{}", exerciseCoursePlanDO.getCourseVideoM3u8P720Key());
// log.info("exerciseCoursePlanDO.getCourseVideoM3u8P480Key(),{}", exerciseCoursePlanDO.getCourseVideoM3u8P480Key());
return ExerciseCoursePlanInfoVO2.builder()
.courseId(exerciseCoursePlanDO.getCourseId())
.courseDate(exerciseCoursePlanDO.getCourseDate())
.attentionItems(exerciseCoursePlanDO.getAttentionItems())
.exerciseAims(exerciseCoursePlanDO.getExerciseAims())
.exerciseFrequencyDesc(exerciseCoursePlanDO.getExerciseFrequencyDesc())
.videoExerciseInfo(VideoExerciseInfo.builder()
.actionCount(exerciseCoursePlanDO.getActionCount())
.actionExplains(actionExplainInfos)
.courseDurationMinute(exerciseCoursePlanDO.getCourseDurationMinute())
.courseDurationSecond(exerciseCoursePlanDO.getCourseDurationSecond())
.courseFinishDetails(exerciseCoursePlanDO.getCourseFinishDetails())
// .courseHeat(exerciseCoursePlanDO.getCourseHeat())
.courseHeat(BigDecimal.valueOf(exerciseCoursePlanDO.getCourseHeat()).setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue())
.courseImageUrl(exerciseCoursePlanDO.getCourseImageKey())
.courseFinishTotalDuration(exerciseCoursePlanDO.getCourseFinishTotalDuration())
.courseFinishTotalHeat(exerciseCoursePlanDO.getCourseFinishTotalHeat())
.courseVideoDetailInfos(exerciseCoursePlanDO.getCourseVideoDetailInfos().stream().map(item -> CourseVideoDetailInfo.builder()
.startTime(item.getStartTime())
.endTime(item.getEndTime())
.heat(item.getHeat())
.build()).collect(Collectors.toList()))
.exerciseEquipments(exerciseCoursePlanDO.getExerciseEquipments())
.courseVideoM3u8P1080Url(StringUtils.isBlank(replaceAddress) ? qiniuClient.pm3u8(ProtocolEnum.HTTPS, exerciseCoursePlanDO.getCourseVideoM3u8P1080Key(), QiniuBucketEnum.JKYY_PRIVATE.getBucket(), finalExpireTime) : qiniuClient.fileKeyToFileUrl(ProtocolEnum.HTTPS, new QiniuKey(exerciseCoursePlanDO.getCourseVideoM3u8P1080Key()), finalExpireTime))
.courseVideoM3u8P720Url(StringUtils.isBlank(replaceAddress) ? qiniuClient.pm3u8(ProtocolEnum.HTTPS, exerciseCoursePlanDO.getCourseVideoM3u8P720Key(), QiniuBucketEnum.JKYY_PRIVATE.getBucket(), finalExpireTime) : qiniuClient.fileKeyToFileUrl(ProtocolEnum.HTTPS, new QiniuKey(exerciseCoursePlanDO.getCourseVideoM3u8P720Key()), finalExpireTime))
.courseVideoM3u8P480Url(StringUtils.isBlank(replaceAddress) ? qiniuClient.pm3u8(ProtocolEnum.HTTPS, exerciseCoursePlanDO.getCourseVideoM3u8P480Key(), QiniuBucketEnum.JKYY_PRIVATE.getBucket(), finalExpireTime) : qiniuClient.fileKeyToFileUrl(ProtocolEnum.HTTPS, new QiniuKey(exerciseCoursePlanDO.getCourseVideoM3u8P480Key()), finalExpireTime))
.build())
.systemExerciseInfo(exerciseCoursePlanDO.getSystemExerciseInfo())
.build();
}
/**
* 构建视频运动信息
*
* @param exerciseCoursePlanDO 请求参数
* @return ExerciseCoursePlanInfoVO2
*/
private static ExerciseCoursePlanInfoVO2 buildVideoExercise(ExerciseCoursePlanDO exerciseCoursePlanDO, Long expireTime, String replaceAddress) {
QiniuClient qiniuClient = QiniuClient.getClient(QiniuBucketEnum.JKYY_PRIVATE.getBucket());
Long finalExpireTime = expireTime == null ? Constants.VIDEO_LINK_VALID_TIME : expireTime;
List<ActionExplainInfo> actionExplainInfos = null;
if (CollectionUtils.isNotEmpty(exerciseCoursePlanDO.getActionExplains())) {
actionExplainInfos = exerciseCoursePlanDO.getActionExplains().stream().map(xx ->
ActionExplainInfo.builder()
.actionImageUrl(xx.getActionImageKey())
.actionName(xx.getActionName())
.actionExplains(xx.getActionExplains())
.videoDurationSecond(xx.getVideoDurationSecond())
.attentions(xx.getAttentions())
//.actionVideoMP4Url(StringUtils.isBlank(xx.getVideoMP4Key()) ? null : qiniuClient.fileKeyToFileUrl(ProtocolEnum.HTTPS, new QiniuKey(xx.getVideoMP4Key()), finalExpireTime))
.actionVideoM3u8P1080Url(StringUtils.isBlank(replaceAddress) ? qiniuClient.pm3u8(ProtocolEnum.HTTPS, xx.getActionVideoM3u8P1080Key(), QiniuBucketEnum.JKYY_PRIVATE.getBucket(), finalExpireTime) : qiniuClient.fileKeyToFileUrl(ProtocolEnum.HTTPS, new QiniuKey(xx.getActionVideoM3u8P1080Key()), finalExpireTime))
.actionVideoM3u8P720Url(StringUtils.isBlank(replaceAddress) ? qiniuClient.pm3u8(ProtocolEnum.HTTPS, xx.getActionVideoM3u8P720Key(), QiniuBucketEnum.JKYY_PRIVATE.getBucket(), finalExpireTime) : qiniuClient.fileKeyToFileUrl(ProtocolEnum.HTTPS, new QiniuKey(xx.getActionVideoM3u8P720Key()), finalExpireTime))
.actionVideoM3u8P480Url(StringUtils.isBlank(replaceAddress) ? qiniuClient.pm3u8(ProtocolEnum.HTTPS, xx.getActionVideoM3u8P480Key(), QiniuBucketEnum.JKYY_PRIVATE.getBucket(), finalExpireTime) : qiniuClient.fileKeyToFileUrl(ProtocolEnum.HTTPS, new QiniuKey(xx.getActionVideoM3u8P480Key()), finalExpireTime))
.build()
).collect(Collectors.toList());
}
return ExerciseCoursePlanInfoVO2.builder()
.courseId(exerciseCoursePlanDO.getCourseId())
.courseDate(exerciseCoursePlanDO.getCourseDate())
.attentionItems(exerciseCoursePlanDO.getAttentionItems())
.exerciseAims(exerciseCoursePlanDO.getExerciseAims())
.exerciseFrequencyDesc(exerciseCoursePlanDO.getExerciseFrequencyDesc())
.videoExerciseInfo(VideoExerciseInfo.builder()
.actionCount(exerciseCoursePlanDO.getActionCount())
.actionExplains(actionExplainInfos)
.courseDurationMinute(exerciseCoursePlanDO.getCourseDurationMinute())
.courseDurationSecond(exerciseCoursePlanDO.getCourseDurationSecond())
.courseFinishDetails(exerciseCoursePlanDO.getCourseFinishDetails())
.courseFinishDetails(exerciseCoursePlanDO.getCourseFinishDetails())
.courseHeat(BigDecimal.valueOf(exerciseCoursePlanDO.getCourseHeat()).setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue())
.courseImageUrl(exerciseCoursePlanDO.getCourseImageKey())
.courseFinishTotalDuration(exerciseCoursePlanDO.getCourseFinishTotalDuration())
.courseFinishTotalHeat(exerciseCoursePlanDO.getCourseFinishTotalHeat())
.courseVideoDetailInfos(exerciseCoursePlanDO.getCourseVideoDetailInfos().stream().map(item -> CourseVideoDetailInfo.builder()
.startTime(item.getStartTime())
.endTime(item.getEndTime())
.heat(item.getHeat())
.build()).collect(Collectors.toList()))
.exerciseEquipments(exerciseCoursePlanDO.getExerciseEquipments())
.courseVideoM3u8P1080Url(StringUtils.isBlank(replaceAddress) ? qiniuClient.pm3u8(ProtocolEnum.HTTPS, exerciseCoursePlanDO.getCourseVideoM3u8P1080Key(), QiniuBucketEnum.JKYY_PRIVATE.getBucket(), finalExpireTime) : qiniuClient.fileKeyToFileUrl(ProtocolEnum.HTTPS, new QiniuKey(exerciseCoursePlanDO.getCourseVideoM3u8P1080Key()), finalExpireTime))
.courseVideoM3u8P720Url(StringUtils.isBlank(replaceAddress) ? qiniuClient.pm3u8(ProtocolEnum.HTTPS, exerciseCoursePlanDO.getCourseVideoM3u8P720Key(), QiniuBucketEnum.JKYY_PRIVATE.getBucket(), finalExpireTime) : qiniuClient.fileKeyToFileUrl(ProtocolEnum.HTTPS, new QiniuKey(exerciseCoursePlanDO.getCourseVideoM3u8P720Key()), finalExpireTime))
.courseVideoM3u8P480Url(StringUtils.isBlank(replaceAddress) ? qiniuClient.pm3u8(ProtocolEnum.HTTPS, exerciseCoursePlanDO.getCourseVideoM3u8P480Key(), QiniuBucketEnum.JKYY_PRIVATE.getBucket(), finalExpireTime) : qiniuClient.fileKeyToFileUrl(ProtocolEnum.HTTPS, new QiniuKey(exerciseCoursePlanDO.getCourseVideoM3u8P480Key()), finalExpireTime))
.build())
.build();
}
/**
* 构建系统(非视频)运动信息
*
* @param exerciseCoursePlanDO 请求参数
* @return ExerciseCoursePlanInfoVO2
*/
private static ExerciseCoursePlanInfoVO2 buildSystemExercise(ExerciseCoursePlanDO exerciseCoursePlanDO) {
return ExerciseCoursePlanInfoVO2.builder()
.courseId(exerciseCoursePlanDO.getCourseId())
.courseDate(exerciseCoursePlanDO.getCourseDate())
.exerciseFrequencyDesc(exerciseCoursePlanDO.getExerciseFrequencyDesc())
.exerciseAims(exerciseCoursePlanDO.getExerciseAims())
.attentionItems(exerciseCoursePlanDO.getAttentionItems())
.systemExerciseInfo(exerciseCoursePlanDO.getSystemExerciseInfo())
.build();
}
}
package com.jiankangyouyi.cloud.motorplan.model.dto;
import com.jiankangyouyi.cloud.motorplan.enums.BodyExerciseEvaluationStatusEnum;
import com.jiankangyouyi.cloud.motorplan.model.dto.api.AbstractHttpApiRequestDTO;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.DiseaseInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.Valid;
import javax.validation.constraints.*;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/6/21 3:23 下午
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AcquireCoursePlanDTO extends AbstractHttpApiRequestDTO {
/**
* 用户id
*/
@NotBlank(message = "请求参数 userId 不能为空")
@Size(max = 32,message = "请求参数 userId 超过最大有效长度 32")
private String userId;
/**
* 是否强制替换 true 是 false 否
*/
private Boolean forceReplace = false;
/**
* 出生日期 / yyyy-MM-dd
*/
@NotBlank(message = "请求参数 birthday 不能为空")
@Size(min = 10,max = 10,message = "请求参数 birthday 有效长度 10")
private String birthday;
/**
* 体重 /kg
*/
@NotNull(message = "请求参数 weight 不能为空")
@Min(value = 10,message = "请求参数 weight 低于最小有效值 10")
@Max(value = 200,message = "请求参数 weight 大于最大有效值 200")
private Double weight;
/**
* 性别 1、男 2、女
*/
@NotBlank(message = "请求参数 gender 不能为空")
@Size(max = 1,message = "请求参数 gender 超过最大有效长度 1")
private String gender;
/**
* 身高 /cm
*/
@NotNull(message = "请求参数 height 不能为空")
@Min(value = 50,message = "请求参数 height 低于最小有效值 50")
@Max(value = 230,message = "请求参数 height 大于最大有效值 230")
private Integer height;
/**
* 运动能力 1、低 2、中 3、高
*/
private Integer athleticAbility = 1;
/**
* 配课热量
*/
@Min(value = 0,message = "请求参数 heat 小于最小值 0")
private Integer heat;
/**
* 疾病信息
*/
@Valid
private List<DiseaseInfo> diseaseInfoList;
/**
* 器械名称
*/
private List<String> equipments;
/**
* 亚健康/健康 人群 true 、是 false 否
*/
@NotNull(message = "请求参数 healthyPerson 不能为空")
private Boolean healthyPerson;
/**
* 课程日期 / yyyy-MM-dd
*/
@Size(min = 10,max = 10,message = "请求参数 courseDate 有效长度 10")
private String courseDate;
/**
* 动作禁忌类型 {@link com.jiankangyouyi.cloud.basedata.api.enums.action.ActionFeatureEnum}
*/
private List<String> actionTaboos;
/**
* 用户身体运动评估状态 / 默认正常 {@link com.jiankangyouyi.cloud.motorplan.enums.BodyExerciseEvaluationStatusEnum}
*/
private String bodyExerciseEvaluationStatus = BodyExerciseEvaluationStatusEnum.NORMAL.getStatus();
/**
* 配置ID
*/
private String configId;
/**
* 分娩日期 / yyyy-MM-dd
*/
@Size(min = 10,max = 10,message = "请求参数 deliveryDate 有效长度 10")
private String deliveryDate;
/**
* 教练性别 1、男 2、女
*/
@Size(max = 1,message = "请求参数 coachGender 有效长度 1")
private String coachGender = "2";
/**
* 运动水平 1、低 2、中 3、高
*/
private Integer exerciseLevel = 1;
}
package com.jiankangyouyi.cloud.motorplan.model.dto;
import com.jiankangyouyi.cloud.motorplan.enums.BodyExerciseEvaluationStatusEnum;
import com.jiankangyouyi.cloud.motorplan.model.dto.api.AbstractHttpApiRequestDTO;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.DiseaseInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.Valid;
import javax.validation.constraints.*;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/6/21 3:23 下午
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AcquireCoursePlanDTO2 extends AbstractHttpApiRequestDTO {
/**
* 用户id
*/
@NotBlank(message = "请求参数 userId 不能为空")
@Size(max = 32, message = "请求参数 userId 超过最大有效长度 32")
private String userId;
/**
* 是否强制替换 true 是 false 否
*/
private Boolean forceReplace = false;
/**
* 出生日期 / yyyy-MM-dd
*/
@NotBlank(message = "请求参数 birthday 不能为空")
@Size(min = 10, max = 10, message = "请求参数 birthday 有效长度 10")
private String birthday;
/**
* 体重 /kg
*/
@NotNull(message = "请求参数 weight 不能为空")
@Min(value = 25, message = "请求参数 weight 低于最小有效值 25")
@Max(value = 200, message = "请求参数 weight 大于最大有效值 200")
private Double weight;
/**
* 性别 1、男 2、女
*/
@NotBlank(message = "请求参数 gender 不能为空")
@Size(max = 1, message = "请求参数 gender 超过最大有效长度 1")
@Pattern(regexp = "(1|2)", message = "性别格式不合法")
private String gender;
/**
* 身高 /cm
*/
@NotNull(message = "请求参数 height 不能为空")
@Min(value = 100, message = "请求参数 height 低于最小有效值 100")
@Max(value = 230, message = "请求参数 height 大于最大有效值 230")
private Integer height;
/**
* 运动能力 1、低 2、中 3、高
*/
private Integer athleticAbility = 1;
/**
* 配课热量
*/
@Min(value = 0, message = "请求参数 heat 小于最小值 0")
private Integer heat;
/**
* 疾病信息
*/
@Valid
private List<DiseaseInfo> diseaseInfoList;
/**
* 器械名称
*/
private List<String> equipments;
/**
* 亚健康/健康 人群 true 、是 false 否
*/
private Boolean healthyPerson = false;
/**
* 课程日期 / yyyy-MM-dd
*/
@Size(min = 10, max = 10, message = "请求参数 courseDate 有效长度 10")
private String courseDate;
/**
* 动作禁忌类型 {@link com.jiankangyouyi.cloud.basedata.api.enums.action.ActionFeatureEnum}
*/
private List<String> actionTaboos;
/**
* 用户身体运动评估状态 / 默认正常 {@link BodyExerciseEvaluationStatusEnum}
*/
private String bodyExerciseEvaluationStatus = BodyExerciseEvaluationStatusEnum.NORMAL.getStatus();
/**
* 配置ID
*/
@NotBlank(message = "请求参数 configId 不能为空")
@Size(max = 64, message = "请求参数 configId 有效长度 64")
private String configId;
/**
* 分娩日期 / yyyy-MM-dd
*/
@Size(min = 10, max = 10, message = "请求参数 deliveryDate 有效长度 10")
private String deliveryDate;
/**
* 教练性别 1、男 2、女
*/
@Size(max = 1, message = "请求参数 coachGender 有效长度 1")
private String coachGender = "2";
/**
* 运动水平 1、低 2、中 3、高
*/
private Integer exerciseLevel = 1;
/**
* 是否忽略第一次创建计划的日期校验
*/
private Boolean ignoreFirstCourseValid;
}
package com.jiankangyouyi.cloud.motorplan.model.dto;
import com.jiankangyouyi.cloud.core.util.StringUtils;
import com.jiankangyouyi.cloud.core.validator.annotation.DateValHC;
import com.jiankangyouyi.cloud.motorplan.enums.BodyExerciseEvaluationStatusEnum;
import com.jiankangyouyi.cloud.motorplan.model.dto.api.AbstractHttpApiRequestDTO;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.DiseaseInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.Valid;
import javax.validation.constraints.*;
import java.util.List;
/**
* @author :wangyalei
* @date :2022/1/27 12:59 下午
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BatchAcquireCoursePlanDTO extends AbstractHttpApiRequestDTO {
/**
* 用户id
*/
@NotBlank(message = "请求参数 userId 不能为空")
@Size(max = 32,message = "请求参数 userId 超过最大有效长度 32")
private String userId;
/**
* 是否强制替换 true 是 false 否
*/
private Boolean forceReplace = false;
/**
* 出生日期 / yyyy-MM-dd
*/
@NotBlank(message = "请求参数 birthday 不能为空")
@Size(min = 10,max = 10,message = "请求参数 birthday 有效长度 10")
private String birthday;
/**
* 体重 /kg
*/
@NotNull(message = "请求参数 weight 不能为空")
@Min(value = 10,message = "请求参数 weight 低于最小有效值 10")
@Max(value = 200,message = "请求参数 weight 大于最大有效值 200")
private Double weight;
/**
* 性别 1、男 2、女
*/
@NotBlank(message = "请求参数 gender 不能为空")
@Size(max = 1,message = "请求参数 gender 超过最大有效长度 1")
private String gender;
/**
* 身高 /cm
*/
@NotNull(message = "请求参数 height 不能为空")
@Min(value = 50,message = "请求参数 height 低于最小有效值 50")
@Max(value = 230,message = "请求参数 height 大于最大有效值 230")
private Integer height;
/**
* 运动能力 1、低 2、中 3、高
*/
private Integer athleticAbility = 1;
/**
* 配课热量
*/
@Min(value = 0,message = "请求参数 heat 小于最小值 0")
private Integer heat;
/**
* 疾病信息
*/
@Valid
private List<DiseaseInfo> diseaseInfoList;
/**
* 器械名称
*/
private List<String> equipments;
/**
* 亚健康/健康 人群 true 、是 false 否
*/
private Boolean healthyPerson = false;
/**
* 动作禁忌类型 {@link com.jiankangyouyi.cloud.basedata.api.enums.action.ActionFeatureEnum}
*/
private List<String> actionTaboos;
/**
* 用户身体运动评估状态 / 默认正常 {@link com.jiankangyouyi.cloud.motorplan.enums.BodyExerciseEvaluationStatusEnum}
*/
private String bodyExerciseEvaluationStatus = BodyExerciseEvaluationStatusEnum.NORMAL.getStatus();
/**
* 配置ID
*/
private String configId;
/**
* 分娩日期 / yyyy-MM-dd
*/
@Size(min = 10,max = 10,message = "请求参数 deliveryDate 有效长度 10")
private String deliveryDate;
/**
* 课程开始日期
*/
@DateValHC(message = "请求参数 courseStartDate 格式不正确",pattern = "yyyy-MM-dd")
@NotBlank(message = "请求参数 courseStartDate 不能为空")
@Size(min = 10,max = 10,message = "请求参数 courseStartDate 有效长度 10")
private String courseStartDate;
/**
* 课程结束日期
*/
@DateValHC(message = "请求参数 courseEndDate 格式不正确",pattern = "yyyy-MM-dd")
@NotBlank(message = "请求参数 courseEndDate 不能为空")
@Size(min = 10,max = 10,message = "请求参数 courseEndDate 有效长度 10")
private String courseEndDate;
/**
* 替换地址 (例如:http://192.168.1.1:1234)
*/
private String replaceAddress;
}
package com.jiankangyouyi.cloud.motorplan.model.dto;
import com.jiankangyouyi.cloud.core.validator.annotation.DateValHC;
import com.jiankangyouyi.cloud.motorplan.enums.BodyExerciseEvaluationStatusEnum;
import com.jiankangyouyi.cloud.motorplan.model.dto.api.AbstractHttpApiRequestDTO;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.DiseaseInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.Valid;
import javax.validation.constraints.*;
import java.util.List;
/**
* @author :wangyalei
* @date :2022/1/27 12:59 下午
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BatchAcquireCoursePlanDTO2 extends AbstractHttpApiRequestDTO {
/**
* 用户id
*/
@NotBlank(message = "请求参数 userId 不能为空")
@Size(max = 32,message = "请求参数 userId 超过最大有效长度 32")
private String userId;
/**
* 是否强制替换 true 是 false 否
*/
private Boolean forceReplace = false;
/**
* 出生日期 / yyyy-MM-dd
*/
@NotBlank(message = "请求参数 birthday 不能为空")
@Size(min = 10,max = 10,message = "请求参数 birthday 有效长度 10")
private String birthday;
/**
* 体重 /kg
*/
@NotNull(message = "请求参数 weight 不能为空")
@Min(value = 25,message = "请求参数 weight 低于最小有效值 25")
@Max(value = 200,message = "请求参数 weight 大于最大有效值 200")
private Double weight;
/**
* 性别 1、男 2、女
*/
@NotBlank(message = "请求参数 gender 不能为空")
@Size(max = 1,message = "请求参数 gender 超过最大有效长度 1")
private String gender;
/**
* 身高 /cm
*/
@NotNull(message = "请求参数 height 不能为空")
@Min(value = 100,message = "请求参数 height 低于最小有效值 100")
@Max(value = 230,message = "请求参数 height 大于最大有效值 230")
private Integer height;
/**
* 运动能力 1、低 2、中 3、高
*/
private Integer athleticAbility = 1;
/**
* 配课热量
*/
@Min(value = 0,message = "请求参数 heat 小于最小值 0")
private Integer heat;
/**
* 疾病信息
*/
@Valid
private List<DiseaseInfo> diseaseInfoList;
/**
* 器械名称
*/
private List<String> equipments;
/**
* 亚健康/健康 人群 true 、是 false 否
*/
private Boolean healthyPerson = false;
/**
* 动作禁忌类型 {@link com.jiankangyouyi.cloud.basedata.api.enums.action.ActionFeatureEnum}
*/
private List<String> actionTaboos;
/**
* 用户身体运动评估状态 / 默认正常 {@link BodyExerciseEvaluationStatusEnum}
*/
private String bodyExerciseEvaluationStatus = BodyExerciseEvaluationStatusEnum.NORMAL.getStatus();
/**
* 配置ID
*/
@NotBlank(message = "请求参数 configId 不能为空")
@Size(max = 64,message = "请求参数 configId 有效长度 64")
private String configId;
/**
* 分娩日期 / yyyy-MM-dd
*/
@Size(min = 10,max = 10,message = "请求参数 deliveryDate 有效长度 10")
private String deliveryDate;
/**
* 课程开始日期
*/
@DateValHC(message = "请求参数 courseStartDate 格式不正确",pattern = "yyyy-MM-dd")
@NotBlank(message = "请求参数 courseStartDate 不能为空")
@Size(min = 10,max = 10,message = "请求参数 courseStartDate 有效长度 10")
private String courseStartDate;
/**
* 课程结束日期
*/
@DateValHC(message = "请求参数 courseEndDate 格式不正确",pattern = "yyyy-MM-dd")
@NotBlank(message = "请求参数 courseEndDate 不能为空")
@Size(min = 10,max = 10,message = "请求参数 courseEndDate 有效长度 10")
private String courseEndDate;
/**
* 教练性别 1、男 2、女
*/
@Size(max = 1,message = "请求参数 coachGender 有效长度 1")
private String coachGender = "2";
/**
* 运动水平 1、低 2、中 3、高
*/
private Integer exerciseLevel = 1;
/**
* 替换地址 (例如:http://192.168.1.1:1234)
*/
private String replaceAddress;
}
package com.jiankangyouyi.cloud.motorplan.model.dto;
import com.jiankangyouyi.cloud.motorplan.model.dto.api.AbstractHttpApiRequestDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
/**
* TODO:功能描述
*
* @author : lvhaoran
* @date Date : 2022年12月09日
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ExerciseCourseActionReplaceListDTO extends AbstractHttpApiRequestDTO {
@NotBlank(message = "请求参数 byReplaceActionName 不能为空")
private String byReplaceActionName;
}
package com.jiankangyouyi.cloud.motorplan.model.dto;
import com.jiankangyouyi.cloud.motorplan.model.dto.api.AbstractHttpApiRequestDTO;
import com.jiankangyouyi.cloud.motorplan.model.vo.component.ByReplaceActionInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;
/**
* 动作替换
*
* @author : lvhaoran
* @date Date : 2022年12月09日
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ExerciseCourseActionReplaceSaveDTO extends AbstractHttpApiRequestDTO {
@NotBlank(message = "请求参数 userId 不能为空")
@Size(max = 32, message = "请求参数 userId 超过最大有效长度 32")
private String userId;
@NotBlank(message = "请求参数 configId 不能为空")
@Size(max = 64, message = "请求参数 configId 有效长度 64")
private String configId;
@NotBlank(message = "请求参数 courseId 不能为空")
@Size(max = 32, message = "请求参数 courseId 超过最大有效长度 32")
private String courseId;
@NotNull(message = "请求参数 byReplaceActionList 不能为空")
@Valid
private List<ByReplaceActionInfo> byReplaceActionList;
}
package com.jiankangyouyi.cloud.motorplan.model.dto;
import com.jiankangyouyi.cloud.motorplan.model.dto.api.AbstractHttpApiRequestDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* 动作搜索
*
* @author : lvhaoran
* @date Date : 2022年12月09日
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ExerciseCourseActionReplaceSearchDTO extends AbstractHttpApiRequestDTO {
@NotBlank(message = "请求参数 userId 不能为空")
@Size(max = 32, message = "请求参数 userId 超过最大有效长度 32")
private String userId;
@NotBlank(message = "请求参数 byReplaceActionName 不能为空")
@Size(max = 50, message = "请求参数 userId 超过最大有效长度 32")
private String byReplaceActionName;
}
package com.jiankangyouyi.cloud.motorplan.model.dto;
import com.jiankangyouyi.cloud.motorplan.model.dto.api.AbstractHttpApiRequestDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* @author :wangyalei
* @date :Created in 2021/7/2 3:44 下午
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ExerciseCoursePlanInfoDTO extends AbstractHttpApiRequestDTO {
/**
* 课程id
*/
@NotBlank(message = "请求参数 courseId 不能为空")
@Size(max = 32,message = "请求参数 courseId 超过有效长度 32")
private String courseId;
/**
* 用户id
*/
@NotBlank(message = "请求参数 userId 不能为空")
@Size(max = 32,message = "请求参数 userId 超过有效长度 32")
private String userId;
/**
* 替换地址 (例如:http://192.168.1.1:1234)
*/
private String replaceAddress;
}
package com.jiankangyouyi.cloud.motorplan.model.dto;
import com.jiankangyouyi.cloud.core.entity.page.Page;
import com.jiankangyouyi.cloud.motorplan.model.dto.api.AbstractHttpApiRequestDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
/**
* @author :wangyalei
* @date :Created in 2021/7/2 3:46 下午
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ExerciseCoursePlanListDTO extends AbstractHttpApiRequestDTO {
/**
* 用户id
*/
@NotBlank(message = "请求参数 userId 不能为空")
@Size(max = 32,message = "请求参数 userId 超过有效长度 32")
private String userId;
/**
* 课程开始时间 / yyyy-MM-dd
*/
@Size(min = 10,max = 10,message = "请求参数 courseDateStart 有效长度 10")
private String courseDateStart;
/**
* 课程结束时间 / yyyy-MM-dd
*/
@Size(min = 10,max = 10,message = "请求参数 courseDateEnd 有效长度 10")
private String courseDateEnd;
/**
* 替换地址 (例如:http://192.168.1.1:1234)
*/
private String replaceAddress;
/**
* 分页参数
*/
@NotNull(message = "请求参数page不能为空")
@Valid
private Page page;
}
package com.jiankangyouyi.cloud.motorplan.model.dto;
import com.jiankangyouyi.cloud.motorplan.model.dto.api.AbstractHttpApiRequestDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import java.util.ArrayList;
import java.util.Arrays;
/**
* @author :wangyalei
* @date :2021/11/3 2:38 下午
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class ExerciseLimitsDTO extends AbstractHttpApiRequestDTO {
/**
* 配置ID
*/
@NotBlank(message = "请求参数 configId 不能为空")
private String configId;
}
package com.jiankangyouyi.cloud.motorplan.model.dto;
import com.jiankangyouyi.cloud.motorplan.model.dto.api.AbstractHttpApiRequestDTO;
/**
* @author :wangyalei
* @date :Created in 2021/7/13 9:38 上午
*/
public class HealthAssessmentCoverConfigInfoDTO extends AbstractHttpApiRequestDTO {
}
package com.jiankangyouyi.cloud.motorplan.model.dto;
import com.jiankangyouyi.cloud.motorplan.model.dto.api.AbstractHttpApiRequestDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* @author :wangyalei
* @date :Created in 2021/7/7 6:40 下午
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
public class LatestCourseParamDTO extends AbstractHttpApiRequestDTO {
/**
* 用户id
*/
@NotBlank(message = "请求参数 userId 不能为空")
@Size(max = 32,message = "请求参数 userId 超过最大有效长度 32")
private String userId;
}
package com.jiankangyouyi.cloud.motorplan.model.dto;
import com.jiankangyouyi.cloud.motorplan.model.dto.api.AbstractHttpApiRequestDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
/**
* @author :wangyalei
* @date :Created in 2021/7/2 5:08 下午
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
public class RecordExerciseHeatDTO extends AbstractHttpApiRequestDTO {
/**
* 课程id
*/
@NotBlank(message = "请求参数 courseId 不能为空")
private String courseId;
/**
* 用户id
*/
@NotBlank(message = "请求参数 userId 不能为空")
private String userId;
/**
* 记录日期 / yyyy-MM-dd HH:mm:ss
*/
@NotBlank(message = "请求参数 recordDate 不能为空")
@Size(min = 19,max = 19,message = "请求参数 recordDate 有效长度 19")
private String recordDate;
/**
* 运动时长 /秒
*/
@NotNull(message = "请求参数 exerciseDuration 不能为空")
private Integer exerciseDuration;
/**
* 运动热量
*/
@NotNull(message = "请求参数 exerciseHeat 不能为空")
private Integer exerciseHeat;
}
package com.jiankangyouyi.cloud.motorplan.model.dto;
import com.jiankangyouyi.cloud.core.entity.page.Page;
import com.jiankangyouyi.cloud.core.validator.annotation.EnumHC;
import com.jiankangyouyi.cloud.data.center.api.enums.ExerciseLevelEnum;
import com.jiankangyouyi.cloud.motorplan.enums.DiseaseEnum;
import com.jiankangyouyi.cloud.motorplan.enums.GenderRealEnum;
import com.jiankangyouyi.cloud.motorplan.model.dto.api.AbstractHttpApiRequestDTO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
/**
* 康复课程查询参数
*
* @author june
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class RecoveryCourseQueryParamDTO extends AbstractHttpApiRequestDTO {
/**
* 健康问题类型(课程分类)
*/
@EnumHC(enumTypes = DiseaseEnum.class, message = "请求参数 diseaseType 不合法")
private String diseaseType;
/**
* 课程难度 1-低2-中3-高
*/
@EnumHC(enumTypes = ExerciseLevelEnum.class, message = "请求参数 courseDifficulties 不合法")
private Integer courseDifficulties;
/**
* 课程强度 1-低2-中3-高
*/
@EnumHC(enumTypes = ExerciseLevelEnum.class, message = "请求参数 courseIntensity 不合法")
private Integer courseIntensity;
/**
* 教练性别
*/
@EnumHC(enumTypes = GenderRealEnum.class, message = "请求参数 coachGender 不合法")
private String coachGender;
@NotNull(message = "请求参数page不能为空")
@Valid
private Page page;
}
package com.jiankangyouyi.cloud.motorplan.model.dto;
import com.jiankangyouyi.cloud.motorplan.model.dto.api.AbstractHttpApiRequestDTO;
import lombok.*;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* @author :wangyalei
* @date :Created in 2021/7/13 3:58 下午
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UserRecordInfoDTO extends AbstractHttpApiRequestDTO {
/**
* 用户id
*/
@NotBlank(message = "请求参数 userId 不能为空")
@Size(max = 32,message = "请求参数 userId 超过有效长度 32")
private String userId;
}
package com.jiankangyouyi.cloud.motorplan.model.dto.api;
import com.jiankangyouyi.cloud.core.validator.ValidDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* Http 请求DTO
*
* @author yangsongbo
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public abstract class AbstractHttpApiRequestDTO implements ValidDTO {
private static final long serialVersionUID = 1L;
public static final String FIELD_BIZ_TYPE = "bizType";
public static final String FIELD_APP_ID = "appId";
public static final String FIELD_IP = "ip";
/**
* 业务类型
*/
@NotBlank(message = "请求参数bizType不能为空")
@Size(max = 10, message = "请求参数bizType长度不合法")
private String bizType;
/**
* IP地址
*/
private String ip;
/**
* 应用ID
*/
@NotBlank(message = "获取appId失败")
@Size(max = 32, message = "appId长度不合法")
private String appId;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jiankangyouyi.cloud.core.base.enums.ValidStatusEnum;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.ExerciseCoursePlan;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.CompoundIndex;
import org.springframework.data.mongodb.core.index.CompoundIndexes;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* 运动课程计划
* @author :wangyalei
* @date :Created in 2021/6/29 10:47 下午
*/
@Data
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Document(collection = "exercise.course.plan")
@CompoundIndexes(
value = {
@CompoundIndex(
name = "classifyId_-1",
def = "{'appId' : -1,'userId': -1 ,'courseDate': -1}"
),
@CompoundIndex(
name = "updateTime_-1",
def = "{ 'updateTime' : -1}"
),
}
)
public class ExerciseCoursePlanDO extends ExerciseCoursePlan {
private static final long serialVersionUID = 1L;
public static final String FIELD_DATE = "date";
public static final String FIELD_ID = "_id";
public static final String FIELD_VALIDSTATUS = "validStatus";
public static final String FIELD_UPDATETIME = "updateTime";
public static final String FIELD_CREATETIME = "createTime";
@Id
private ObjectId id;
/**
* 1、有效(有实际的课程方案) 2、无效(无有效的课程方案,仅保存用户获取方案的请求参数) 其他、(逻辑产出)
*/
private String validStatus;
@DateTimeFormat(
pattern = "yyyy-MM-dd HH:mm:ss"
)
@JsonFormat(
timezone = "GMT+8",
pattern = "yyyy-MM-dd HH:mm:ss"
)
private Date updateTime;
@DateTimeFormat(
pattern = "yyyy-MM-dd HH:mm:ss"
)
@JsonFormat(
timezone = "GMT+8",
pattern = "yyyy-MM-dd HH:mm:ss"
)
@Indexed()
private Date createTime;
public ExerciseCoursePlanDO() {
Date date = new Date();
this.validStatus = ValidStatusEnum.VALID.getCode();
this.updateTime = date;
this.createTime = date;
}
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jiankangyouyi.cloud.motorplan.api.model.dto.response.component.SystemExerciseInfo;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.ActionExplain;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.ActionVideoDetailInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/**
* 运动计划测试工具数据记录表
* @author :wangyalei
* @date :Created in 2021/7/19 5:16 下午
*/
@Data
@AllArgsConstructor
@Document(collection = "exercise.course.plan.test.tool.record")
public class ExerciseCoursePlanTestToolRecordDO {
@Id
private ObjectId id;
@DateTimeFormat(
pattern = "yyyy-MM-dd HH:mm:ss"
)
@JsonFormat(
timezone = "GMT+8",
pattern = "yyyy-MM-dd HH:mm:ss"
)
@Indexed()
private Date createTime;
/**
* 课程Id
*/
@Indexed(unique = true)
private String courseId;
/**
* 用户BMI
*/
private Double bmi;
/**
* 训练动作组合类型编号
*/
private String currentTrainingActionTypeNum;
/**
* 健康/亚健康人群 true 是 false 否
*/
private Boolean healthyPerson;
/**
* 疾病类型
*/
private String diseaseType;
/**
* 风险等级
*/
private List<Integer> riskLevel;
/**
* 分娩日期
*/
private String deliveryDate;
/**
* 动作难度 1、一级 2、二级 3、三级 4、四级 5、五级
*/
private List<String> actionDifficulties;
/**
* 动作个数
*/
private Integer actionCount;
/**
* 课程时长 /分
*/
private Integer courseDurationMinute;
/**
* 课程时长 /秒
*/
private Integer courseDurationSecond;
/**
* 课程热量
*/
private Double courseHeat;
/**
* 运动频率描述
*/
private String exerciseFrequencyDesc;
/**
* 课程使用的运动器材
*/
private List<String> exerciseEquipments;
/**
* 禁忌动作
*/
private List<String> forbidActionProperties;
/**
* 注意事项
*/
private List<String> attentionItems;
/**
* 运动目标
*/
private List<String> exerciseAims;
/**
* 动作讲解
*/
private List<ActionExplain> actionExplains;
/**
* 热身动作总时间 /s
*/
private Long warmupTotalTime;
/**
* 热身动作产生总热量
*/
private Double warmupTotalHeat;
/**
* 热身动作视频列表
*/
private List<ActionVideoDetailInfo> warmupVideos;
/**
* 训练动作总时间 /s
*/
private Long trainingTotalTime;
/**
* 训练动作产生总热量
*/
private Double trainingTotalHeat;
/**
* 训练动作视频列表
*/
private List<ActionVideoDetailInfo> trainingVideos;
/**
* 拉伸动作总时间 /s
*/
private Long stretchTotalTime;
/**
* 拉伸动作产生总热量
*/
private Double stretchTotalHeat;
/**
* 拉伸动作视频列表
*/
private List<ActionVideoDetailInfo> stretchVideos;
/**
* 休息视频总时间 /s
*/
private Long restVideoTotalTime;
/**
* 休息视频个数
*/
private Integer restVideoCount;
/**
* 课程封面图
*/
private String courseImageKey;
/**
* 课程视频 1080 分辨率 m3u8 文件地址key
*/
private String courseVideoM3u8P1080Key;
/**
* 课程视频 720 分辨率 m3u8 文件地址key
*/
private String courseVideoM3u8P720Key;
/**
* 课程视频 480 分辨率 m3u8 文件地址key
*/
private String courseVideoM3u8P480Key;
/**
* 系统运动信息(非视频课程方案)
*/
private SystemExerciseInfo systemExerciseInfo;
public ExerciseCoursePlanTestToolRecordDO() {
this.createTime = new Date();
}
public static final String FIELD_ID = "_id";
public static final String FIELD_CREATETIME = "createTime";
public static final String FIELD_COURSEID = "courseId";
public static final String FIELD_BMI = "bmi";
public static final String FIELD_CURRENTTRAININGACTIONTYPENUM = "currentTrainingActionTypeNum";
public static final String FIELD_HEALTHYPERSON = "healthyPerson";
public static final String FIELD_DISEASETYPE = "diseaseType";
public static final String FIELD_RISKLEVEL = "riskLevel";
public static final String FIELD_ACTIONDIFFICULTIES = "actionDifficulties";
public static final String FIELD_ACTIONCOUNT = "actionCount";
public static final String FIELD_COURSEDURATIONMINUTE = "courseDurationMinute";
public static final String FIELD_COURSEDURATIONSECOND = "courseDurationSecond";
public static final String FIELD_COURSEHEAT = "courseHeat";
public static final String FIELD_EXERCISEFREQUENCYDESC = "exerciseFrequencyDesc";
public static final String FIELD_EXERCISEEQUIPMENTS = "exerciseEquipments";
public static final String FIELD_FORBIDACTIONPROPERTIES = "forbidActionProperties";
public static final String FIELD_ATTENTIONITEMS = "attentionItems";
public static final String FIELD_EXERCISEAIMS = "exerciseAims";
public static final String FIELD_ACTIONEXPLAINS = "actionExplains";
public static final String FIELD_ACTIONEXPLAINS_VIDEODURATIONSECOND = "actionExplains.videoDurationSecond";
public static final String FIELD_ACTIONEXPLAINS_ACTIONIMAGEKEY = "actionExplains.actionImageKey";
public static final String FIELD_ACTIONEXPLAINS_ATTENTIONS = "actionExplains.attentions";
public static final String FIELD_ACTIONEXPLAINS_ACTIONEXPLAINS = "actionExplains.actionExplains";
public static final String FIELD_ACTIONEXPLAINS_ACTIONNAME = "actionExplains.actionName";
public static final String FIELD_ACTIONEXPLAINS_ACTIONVIDEOM3U8P1080KEY = "actionExplains.actionVideoM3u8P1080Key";
public static final String FIELD_ACTIONEXPLAINS_ACTIONVIDEOM3U8P720KEY = "actionExplains.actionVideoM3u8P720Key";
public static final String FIELD_ACTIONEXPLAINS_ACTIONVIDEOM3U8P480KEY = "actionExplains.actionVideoM3u8P480Key";
public static final String FIELD_WARMUPTOTALTIME = "warmupTotalTime";
public static final String FIELD_WARMUPTOTALHEAT = "warmupTotalHeat";
public static final String FIELD_WARMUPVIDEOS = "warmupVideos";
public static final String FIELD_WARMUPVIDEOS_ACTIONID = "warmupVideos.actionId";
public static final String FIELD_WARMUPVIDEOS_VIDEOTS1080 = "warmupVideos.videoTs1080";
public static final String FIELD_WARMUPVIDEOS_VIDEOTS720 = "warmupVideos.videoTs720";
public static final String FIELD_WARMUPVIDEOS_VIDEOTS480 = "warmupVideos.videoTs480";
public static final String FIELD_WARMUPVIDEOS_ACTIONDIFFICULTY = "warmupVideos.actionDifficulty";
public static final String FIELD_WARMUPVIDEOS_ACTIONFEATURES = "warmupVideos.actionFeatures";
public static final String FIELD_WARMUPVIDEOS_ACTIONCLASSIFICATION = "warmupVideos.actionClassification";
public static final String FIELD_WARMUPVIDEOS_ACTIONPOSITION = "warmupVideos.actionPosition";
public static final String FIELD_WARMUPVIDEOS_TRAINPOSITIONS = "warmupVideos.trainPositions";
public static final String FIELD_WARMUPVIDEOS_ACTIONVIDEOSIZE = "warmupVideos.actionVideoSize";
public static final String FIELD_WARMUPVIDEOS_HEAT = "warmupVideos.heat";
public static final String FIELD_WARMUPVIDEOS_ACTIONNAME = "warmupVideos.actionName";
public static final String FIELD_WARMUPVIDEOS_TIMESECONDS = "warmupVideos.timeSeconds";
public static final String FIELD_TRAININGTOTALTIME = "trainingTotalTime";
public static final String FIELD_TRAININGTOTALHEAT = "trainingTotalHeat";
public static final String FIELD_TRAININGVIDEOS = "trainingVideos";
public static final String FIELD_TRAININGVIDEOS_ACTIONID = "trainingVideos.actionId";
public static final String FIELD_TRAININGVIDEOS_VIDEOTS1080 = "trainingVideos.videoTs1080";
public static final String FIELD_TRAININGVIDEOS_VIDEOTS720 = "trainingVideos.videoTs720";
public static final String FIELD_TRAININGVIDEOS_VIDEOTS480 = "trainingVideos.videoTs480";
public static final String FIELD_TRAININGVIDEOS_ACTIONDIFFICULTY = "trainingVideos.actionDifficulty";
public static final String FIELD_TRAININGVIDEOS_ACTIONFEATURES = "trainingVideos.actionFeatures";
public static final String FIELD_TRAININGVIDEOS_ACTIONCLASSIFICATION = "trainingVideos.actionClassification";
public static final String FIELD_TRAININGVIDEOS_ACTIONPOSITION = "trainingVideos.actionPosition";
public static final String FIELD_TRAININGVIDEOS_TRAINPOSITIONS = "trainingVideos.trainPositions";
public static final String FIELD_TRAININGVIDEOS_ACTIONVIDEOSIZE = "trainingVideos.actionVideoSize";
public static final String FIELD_TRAININGVIDEOS_HEAT = "trainingVideos.heat";
public static final String FIELD_TRAININGVIDEOS_ACTIONNAME = "trainingVideos.actionName";
public static final String FIELD_TRAININGVIDEOS_TIMESECONDS = "trainingVideos.timeSeconds";
public static final String FIELD_STRETCHTOTALTIME = "stretchTotalTime";
public static final String FIELD_STRETCHTOTALHEAT = "stretchTotalHeat";
public static final String FIELD_STRETCHVIDEOS = "stretchVideos";
public static final String FIELD_STRETCHVIDEOS_ACTIONID = "stretchVideos.actionId";
public static final String FIELD_STRETCHVIDEOS_VIDEOTS1080 = "stretchVideos.videoTs1080";
public static final String FIELD_STRETCHVIDEOS_VIDEOTS720 = "stretchVideos.videoTs720";
public static final String FIELD_STRETCHVIDEOS_VIDEOTS480 = "stretchVideos.videoTs480";
public static final String FIELD_STRETCHVIDEOS_ACTIONDIFFICULTY = "stretchVideos.actionDifficulty";
public static final String FIELD_STRETCHVIDEOS_ACTIONFEATURES = "stretchVideos.actionFeatures";
public static final String FIELD_STRETCHVIDEOS_ACTIONCLASSIFICATION = "stretchVideos.actionClassification";
public static final String FIELD_STRETCHVIDEOS_ACTIONPOSITION = "stretchVideos.actionPosition";
public static final String FIELD_STRETCHVIDEOS_TRAINPOSITIONS = "stretchVideos.trainPositions";
public static final String FIELD_STRETCHVIDEOS_ACTIONVIDEOSIZE = "stretchVideos.actionVideoSize";
public static final String FIELD_STRETCHVIDEOS_HEAT = "stretchVideos.heat";
public static final String FIELD_STRETCHVIDEOS_ACTIONNAME = "stretchVideos.actionName";
public static final String FIELD_STRETCHVIDEOS_TIMESECONDS = "stretchVideos.timeSeconds";
public static final String FIELD_RESTVIDEOTOTALTIME = "restVideoTotalTime";
public static final String FIELD_RESTVIDEOCOUNT = "restVideoCount";
public static final String FIELD_COURSEIMAGEKEY = "courseImageKey";
public static final String FIELD_COURSEVIDEOM3U8P1080KEY = "courseVideoM3u8P1080Key";
public static final String FIELD_COURSEVIDEOM3U8P720KEY = "courseVideoM3u8P720Key";
public static final String FIELD_COURSEVIDEOM3U8P480KEY = "courseVideoM3u8P480Key";
public static final String FIELD_SYSTEMEXERCISEINFO = "systemExerciseInfo";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST = "systemExerciseInfo.moreExerciseList";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_EXERCISEID = "systemExerciseInfo.moreExerciseList.exerciseId";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_MINCOUNT = "systemExerciseInfo.moreExerciseList.minCount";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_UNIT = "systemExerciseInfo.moreExerciseList.unit";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_MINCOUNTPRODUCEHEAT = "systemExerciseInfo.moreExerciseList.minCountProduceHeat";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_EXERCISETIMEMIN = "systemExerciseInfo.moreExerciseList.exerciseTimeMin";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_EXERCISETIMEMAX = "systemExerciseInfo.moreExerciseList.exerciseTimeMax";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_EXERCISEHEATMIN = "systemExerciseInfo.moreExerciseList.exerciseHeatMin";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_EXERCISEHEATMAX = "systemExerciseInfo.moreExerciseList.exerciseHeatMax";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_IMAGEKEY = "systemExerciseInfo.moreExerciseList.imageKey";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_EXERCISENAME = "systemExerciseInfo.moreExerciseList.exerciseName";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_EXERCISETYPE = "systemExerciseInfo.moreExerciseList.exerciseType";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_DESCRIPTIONS = "systemExerciseInfo.moreExerciseList.descriptions";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_ORDER = "systemExerciseInfo.moreExerciseList.order";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_MET = "systemExerciseInfo.moreExerciseList.met";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST = "systemExerciseInfo.recommendExerciseList";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_EXERCISEID = "systemExerciseInfo.recommendExerciseList.exerciseId";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_MINCOUNT = "systemExerciseInfo.recommendExerciseList.minCount";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_UNIT = "systemExerciseInfo.recommendExerciseList.unit";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_MINCOUNTPRODUCEHEAT = "systemExerciseInfo.recommendExerciseList.minCountProduceHeat";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_EXERCISETIMEMIN = "systemExerciseInfo.recommendExerciseList.exerciseTimeMin";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_EXERCISETIMEMAX = "systemExerciseInfo.recommendExerciseList.exerciseTimeMax";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_EXERCISEHEATMIN = "systemExerciseInfo.recommendExerciseList.exerciseHeatMin";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_EXERCISEHEATMAX = "systemExerciseInfo.recommendExerciseList.exerciseHeatMax";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_IMAGEKEY = "systemExerciseInfo.recommendExerciseList.imageKey";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_EXERCISENAME = "systemExerciseInfo.recommendExerciseList.exerciseName";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_EXERCISETYPE = "systemExerciseInfo.recommendExerciseList.exerciseType";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_DESCRIPTIONS = "systemExerciseInfo.recommendExerciseList.descriptions";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_ORDER = "systemExerciseInfo.recommendExerciseList.order";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_MET = "systemExerciseInfo.recommendExerciseList.met";
public static final String FIELD_SYSTEMEXERCISEINFO_EXERCISEADVICES = "systemExerciseInfo.exerciseAdvices";
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jiankangyouyi.cloud.motorplan.api.model.dto.response.component.SystemExerciseInfo;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.ActionExplain;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.UserInfo;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3.ActionVideoDetailInfo;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3.TrainingAndRestVideoInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/**
* 运动计划测试工具数据记录表
*
* @author :wangyalei
* @date :Created in 2021/7/19 5:16 下午
*/
@Data
@AllArgsConstructor
@Document(collection = "v3.exercise.course.plan.test.tool.record")
public class ExerciseCoursePlanTestToolRecordDO2 {
@Id
private ObjectId id;
@DateTimeFormat(
pattern = "yyyy-MM-dd HH:mm:ss"
)
@JsonFormat(
timezone = "GMT+8",
pattern = "yyyy-MM-dd HH:mm:ss"
)
@Indexed()
private Date createTime;
/**
* 课程Id
*/
@Indexed(unique = true)
private String courseId;
/**
* 用户BMI
*/
private Double bmi;
/**
* 健康/亚健康人群 true 是 false 否
*/
private Boolean healthyPerson;
/**
* 疾病类型
*/
private String diseaseType;
/**
* 风险等级
*/
private List<Integer> riskLevel;
/**
* 用户信息
*/
private UserInfo userInfo;
/**
* 当前方案热身时间值 /分
*/
private Integer projectWarmupTime;
/**
* 当前方案拉伸时间值 /分
*/
private Integer projectStretchTime;
/**
* 当前方案最小训练时间
*/
private Integer projectMinTrainTime;
/**
* 当前方案最大训练时间
*/
private Integer projectMaxTrainTime;
/**
* 动作个数
*/
private Integer actionCount;
/**
* 课程时长 /分
*/
private Integer courseDurationMinute;
/**
* 课程时长 /秒
*/
private Integer courseDurationSecond;
/**
* 课程热量
*/
private Double courseHeat;
/**
* 运动频率描述
*/
private String exerciseFrequencyDesc;
/**
* 课程使用的运动器材
*/
private List<String> exerciseEquipments;
/**
* 视频课程禁忌动作
*/
private List<String> forbidActionProperties;
/**
* 系统课程禁忌动作属性
*/
private List<String> systemForbidActionProperties;
/**
* 注意事项
*/
private List<String> attentionItems;
/**
* 运动目标
*/
private List<String> exerciseAims;
/**
* 动作讲解
*/
private List<ActionExplain> actionExplains;
/**
* 热身动作总时间 /ms
*/
private Long warmupTotalTime;
/**
* 热身动作产生总热量
*/
private Double warmupTotalHeat;
/**
* 热身动作视频列表
*/
private List<ActionVideoDetailInfo> warmupVideos;
/**
* 训练动作总时间 /ms
*/
private Long trainingTotalTime;
/**
* 训练动作产生总热量
*/
private Double trainingTotalHeat;
/**
* 训练动作视频+休息视频列表
*/
private List<TrainingAndRestVideoInfo> trainingAndRestVideos;
/**
* 拉伸动作总时间 /ms
*/
private Long stretchTotalTime;
/**
* 拉伸动作产生总热量
*/
private Double stretchTotalHeat;
/**
* 拉伸动作视频列表
*/
private List<ActionVideoDetailInfo> stretchVideos;
/**
* 休息视频总时间 /ms
*/
private Long restVideoTotalTime;
/**
* 休息视频个数
*/
private Integer restVideoCount;
/**
* 课程封面图
*/
private String courseImageKey;
/**
* 课程地址-泰康-测试
*/
private String courseM3u81080UrlTkTest;
/**
* 课程地址-泰康-生产
*/
private String courseM3u81080UrlTkProd;
/**
* 课程地址-健康有益
*/
private String courseM3u81080UrlJkyy;
/**
* 课程视频 1080 分辨率 m3u8 文件地址key
*/
private String courseVideoM3u8P1080Key;
/**
* 课程视频 720 分辨率 m3u8 文件地址key
*/
private String courseVideoM3u8P720Key;
/**
* 课程视频 480 分辨率 m3u8 文件地址key
*/
private String courseVideoM3u8P480Key;
/**
* 系统运动信息(非视频课程方案)
*/
private SystemExerciseInfo systemExerciseInfo;
public ExerciseCoursePlanTestToolRecordDO2() {
this.createTime = new Date();
}
public static final String FIELD_ID = "_id";
public static final String FIELD_CREATETIME = "createTime";
public static final String FIELD_COURSEID = "courseId";
public static final String FIELD_BMI = "bmi";
public static final String FIELD_CURRENTTRAININGACTIONTYPENUM = "currentTrainingActionTypeNum";
public static final String FIELD_HEALTHYPERSON = "healthyPerson";
public static final String FIELD_DISEASETYPE = "diseaseType";
public static final String FIELD_RISKLEVEL = "riskLevel";
public static final String FIELD_ACTIONDIFFICULTIES = "actionDifficulties";
public static final String FIELD_ACTIONCOUNT = "actionCount";
public static final String FIELD_COURSEDURATIONMINUTE = "courseDurationMinute";
public static final String FIELD_COURSEDURATIONSECOND = "courseDurationSecond";
public static final String FIELD_COURSEHEAT = "courseHeat";
public static final String FIELD_EXERCISEFREQUENCYDESC = "exerciseFrequencyDesc";
public static final String FIELD_EXERCISEEQUIPMENTS = "exerciseEquipments";
public static final String FIELD_FORBIDACTIONPROPERTIES = "forbidActionProperties";
public static final String FIELD_ATTENTIONITEMS = "attentionItems";
public static final String FIELD_EXERCISEAIMS = "exerciseAims";
public static final String FIELD_ACTIONEXPLAINS = "actionExplains";
public static final String FIELD_ACTIONEXPLAINS_VIDEODURATIONSECOND = "actionExplains.videoDurationSecond";
public static final String FIELD_ACTIONEXPLAINS_ACTIONIMAGEKEY = "actionExplains.actionImageKey";
public static final String FIELD_ACTIONEXPLAINS_ATTENTIONS = "actionExplains.attentions";
public static final String FIELD_ACTIONEXPLAINS_ACTIONEXPLAINS = "actionExplains.actionExplains";
public static final String FIELD_ACTIONEXPLAINS_ACTIONNAME = "actionExplains.actionName";
public static final String FIELD_ACTIONEXPLAINS_ACTIONVIDEOM3U8P1080KEY = "actionExplains.actionVideoM3u8P1080Key";
public static final String FIELD_ACTIONEXPLAINS_ACTIONVIDEOM3U8P720KEY = "actionExplains.actionVideoM3u8P720Key";
public static final String FIELD_ACTIONEXPLAINS_ACTIONVIDEOM3U8P480KEY = "actionExplains.actionVideoM3u8P480Key";
public static final String FIELD_WARMUPTOTALTIME = "warmupTotalTime";
public static final String FIELD_WARMUPTOTALHEAT = "warmupTotalHeat";
public static final String FIELD_WARMUPVIDEOS = "warmupVideos";
public static final String FIELD_WARMUPVIDEOS_ACTIONID = "warmupVideos.actionId";
public static final String FIELD_WARMUPVIDEOS_VIDEOTS1080 = "warmupVideos.videoTs1080";
public static final String FIELD_WARMUPVIDEOS_VIDEOTS720 = "warmupVideos.videoTs720";
public static final String FIELD_WARMUPVIDEOS_VIDEOTS480 = "warmupVideos.videoTs480";
public static final String FIELD_WARMUPVIDEOS_ACTIONDIFFICULTY = "warmupVideos.actionDifficulty";
public static final String FIELD_WARMUPVIDEOS_ACTIONFEATURES = "warmupVideos.actionFeatures";
public static final String FIELD_WARMUPVIDEOS_ACTIONCLASSIFICATION = "warmupVideos.actionClassification";
public static final String FIELD_WARMUPVIDEOS_ACTIONPOSITION = "warmupVideos.actionPosition";
public static final String FIELD_WARMUPVIDEOS_TRAINPOSITIONS = "warmupVideos.trainPositions";
public static final String FIELD_WARMUPVIDEOS_ACTIONVIDEOSIZE = "warmupVideos.actionVideoSize";
public static final String FIELD_WARMUPVIDEOS_HEAT = "warmupVideos.heat";
public static final String FIELD_WARMUPVIDEOS_ACTIONNAME = "warmupVideos.actionName";
public static final String FIELD_WARMUPVIDEOS_TIMESECONDS = "warmupVideos.timeSeconds";
public static final String FIELD_TRAININGTOTALTIME = "trainingTotalTime";
public static final String FIELD_TRAININGTOTALHEAT = "trainingTotalHeat";
public static final String FIELD_TRAININGVIDEOS = "trainingVideos";
public static final String FIELD_TRAININGVIDEOS_ACTIONID = "trainingVideos.actionId";
public static final String FIELD_TRAININGVIDEOS_VIDEOTS1080 = "trainingVideos.videoTs1080";
public static final String FIELD_TRAININGVIDEOS_VIDEOTS720 = "trainingVideos.videoTs720";
public static final String FIELD_TRAININGVIDEOS_VIDEOTS480 = "trainingVideos.videoTs480";
public static final String FIELD_TRAININGVIDEOS_ACTIONDIFFICULTY = "trainingVideos.actionDifficulty";
public static final String FIELD_TRAININGVIDEOS_ACTIONFEATURES = "trainingVideos.actionFeatures";
public static final String FIELD_TRAININGVIDEOS_ACTIONCLASSIFICATION = "trainingVideos.actionClassification";
public static final String FIELD_TRAININGVIDEOS_ACTIONPOSITION = "trainingVideos.actionPosition";
public static final String FIELD_TRAININGVIDEOS_TRAINPOSITIONS = "trainingVideos.trainPositions";
public static final String FIELD_TRAININGVIDEOS_ACTIONVIDEOSIZE = "trainingVideos.actionVideoSize";
public static final String FIELD_TRAININGVIDEOS_HEAT = "trainingVideos.heat";
public static final String FIELD_TRAININGVIDEOS_ACTIONNAME = "trainingVideos.actionName";
public static final String FIELD_TRAININGVIDEOS_TIMESECONDS = "trainingVideos.timeSeconds";
public static final String FIELD_STRETCHTOTALTIME = "stretchTotalTime";
public static final String FIELD_STRETCHTOTALHEAT = "stretchTotalHeat";
public static final String FIELD_STRETCHVIDEOS = "stretchVideos";
public static final String FIELD_STRETCHVIDEOS_ACTIONID = "stretchVideos.actionId";
public static final String FIELD_STRETCHVIDEOS_VIDEOTS1080 = "stretchVideos.videoTs1080";
public static final String FIELD_STRETCHVIDEOS_VIDEOTS720 = "stretchVideos.videoTs720";
public static final String FIELD_STRETCHVIDEOS_VIDEOTS480 = "stretchVideos.videoTs480";
public static final String FIELD_STRETCHVIDEOS_ACTIONDIFFICULTY = "stretchVideos.actionDifficulty";
public static final String FIELD_STRETCHVIDEOS_ACTIONFEATURES = "stretchVideos.actionFeatures";
public static final String FIELD_STRETCHVIDEOS_ACTIONCLASSIFICATION = "stretchVideos.actionClassification";
public static final String FIELD_STRETCHVIDEOS_ACTIONPOSITION = "stretchVideos.actionPosition";
public static final String FIELD_STRETCHVIDEOS_TRAINPOSITIONS = "stretchVideos.trainPositions";
public static final String FIELD_STRETCHVIDEOS_ACTIONVIDEOSIZE = "stretchVideos.actionVideoSize";
public static final String FIELD_STRETCHVIDEOS_HEAT = "stretchVideos.heat";
public static final String FIELD_STRETCHVIDEOS_ACTIONNAME = "stretchVideos.actionName";
public static final String FIELD_STRETCHVIDEOS_TIMESECONDS = "stretchVideos.timeSeconds";
public static final String FIELD_RESTVIDEOTOTALTIME = "restVideoTotalTime";
public static final String FIELD_RESTVIDEOCOUNT = "restVideoCount";
public static final String FIELD_COURSEIMAGEKEY = "courseImageKey";
public static final String FIELD_COURSEVIDEOM3U8P1080KEY = "courseVideoM3u8P1080Key";
public static final String FIELD_COURSEVIDEOM3U8P720KEY = "courseVideoM3u8P720Key";
public static final String FIELD_COURSEVIDEOM3U8P480KEY = "courseVideoM3u8P480Key";
public static final String FIELD_SYSTEMEXERCISEINFO = "systemExerciseInfo";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST = "systemExerciseInfo.moreExerciseList";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_EXERCISEID = "systemExerciseInfo.moreExerciseList.exerciseId";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_MINCOUNT = "systemExerciseInfo.moreExerciseList.minCount";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_UNIT = "systemExerciseInfo.moreExerciseList.unit";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_MINCOUNTPRODUCEHEAT = "systemExerciseInfo.moreExerciseList.minCountProduceHeat";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_EXERCISETIMEMIN = "systemExerciseInfo.moreExerciseList.exerciseTimeMin";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_EXERCISETIMEMAX = "systemExerciseInfo.moreExerciseList.exerciseTimeMax";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_EXERCISEHEATMIN = "systemExerciseInfo.moreExerciseList.exerciseHeatMin";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_EXERCISEHEATMAX = "systemExerciseInfo.moreExerciseList.exerciseHeatMax";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_IMAGEKEY = "systemExerciseInfo.moreExerciseList.imageKey";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_EXERCISENAME = "systemExerciseInfo.moreExerciseList.exerciseName";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_EXERCISETYPE = "systemExerciseInfo.moreExerciseList.exerciseType";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_DESCRIPTIONS = "systemExerciseInfo.moreExerciseList.descriptions";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_ORDER = "systemExerciseInfo.moreExerciseList.order";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_MET = "systemExerciseInfo.moreExerciseList.met";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST = "systemExerciseInfo.recommendExerciseList";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_EXERCISEID = "systemExerciseInfo.recommendExerciseList.exerciseId";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_MINCOUNT = "systemExerciseInfo.recommendExerciseList.minCount";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_UNIT = "systemExerciseInfo.recommendExerciseList.unit";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_MINCOUNTPRODUCEHEAT = "systemExerciseInfo.recommendExerciseList.minCountProduceHeat";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_EXERCISETIMEMIN = "systemExerciseInfo.recommendExerciseList.exerciseTimeMin";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_EXERCISETIMEMAX = "systemExerciseInfo.recommendExerciseList.exerciseTimeMax";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_EXERCISEHEATMIN = "systemExerciseInfo.recommendExerciseList.exerciseHeatMin";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_EXERCISEHEATMAX = "systemExerciseInfo.recommendExerciseList.exerciseHeatMax";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_IMAGEKEY = "systemExerciseInfo.recommendExerciseList.imageKey";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_EXERCISENAME = "systemExerciseInfo.recommendExerciseList.exerciseName";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_EXERCISETYPE = "systemExerciseInfo.recommendExerciseList.exerciseType";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_DESCRIPTIONS = "systemExerciseInfo.recommendExerciseList.descriptions";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_ORDER = "systemExerciseInfo.recommendExerciseList.order";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_MET = "systemExerciseInfo.recommendExerciseList.met";
public static final String FIELD_SYSTEMEXERCISEINFO_EXERCISEADVICES = "systemExerciseInfo.exerciseAdvices";
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jiankangyouyi.cloud.core.base.enums.ValidStatusEnum;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.ExerciseCourseProjectConfig;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* 运动课程方案配置
* @author :wangyalei
* @date :Created in 2021/6/3 1:39 下午
*/
@Data
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Document(collection = "exercise.course.project.config")
public class ExerciseCourseProjectConfigDO extends ExerciseCourseProjectConfig {
private static final long serialVersionUID = 1L;
public static final String FIELD_DATE = "date";
public static final String FIELD_ID = "_id";
public static final String FIELD_VALIDSTATUS = "validStatus";
public static final String FIELD_VERSION = "version";
public static final String FIELD_UPDATETIME = "updateTime";
public static final String FIELD_CREATETIME = "createTime";
public static final String FIELD_CREATEDATE = "createDate";
public static final String FIELD_REMARK = "remark";
public static final String FIELD_OPTIONACCOUNT = "optionAccount";
@Id
private ObjectId id;
private String validStatus;
// @Version
// private Long version;
@DateTimeFormat(
pattern = "yyyy-MM-dd HH:mm:ss"
)
@JsonFormat(
timezone = "GMT+8",
pattern = "yyyy-MM-dd HH:mm:ss"
)
private Date updateTime;
@DateTimeFormat(
pattern = "yyyy-MM-dd HH:mm:ss"
)
@JsonFormat(
timezone = "GMT+8",
pattern = "yyyy-MM-dd HH:mm:ss"
)
private Date createTime;
/**
* 备注
*/
private String remark;
/**
* 操作人账号
*/
private String optionAccount;
public ExerciseCourseProjectConfigDO() {
Date date = new Date();
this.validStatus = ValidStatusEnum.VALID.getCode();
this.updateTime = date;
this.createTime = date;
}
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jiankangyouyi.cloud.core.base.enums.ValidStatusEnum;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3.ExerciseCourseProjectConfig;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* 运动课程方案配置 v3
* @author :wangyalei
* @date :Created in 2021/6/3 1:39 下午
*/
@Data
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Document(collection = "v3.exercise.project.config")
public class ExerciseCourseProjectConfigV3DO extends ExerciseCourseProjectConfig {
private static final long serialVersionUID = 1L;
public static final String FIELD_DATE = "date";
public static final String FIELD_ID = "_id";
public static final String FIELD_VALIDSTATUS = "validStatus";
public static final String FIELD_UPDATETIME = "updateTime";
public static final String FIELD_CREATETIME = "createTime";
public static final String FIELD_REMARK = "remark";
@Id
private ObjectId id;
private String validStatus;
@DateTimeFormat(
pattern = "yyyy-MM-dd HH:mm:ss"
)
@JsonFormat(
timezone = "GMT+8",
pattern = "yyyy-MM-dd HH:mm:ss"
)
private Date updateTime;
@DateTimeFormat(
pattern = "yyyy-MM-dd HH:mm:ss"
)
@JsonFormat(
timezone = "GMT+8",
pattern = "yyyy-MM-dd HH:mm:ss"
)
private Date createTime;
/**
* 备注
*/
private String remark;
public ExerciseCourseProjectConfigV3DO() {
Date date = new Date();
this.validStatus = ValidStatusEnum.VALID.getCode();
this.updateTime = date;
this.createTime = date;
}
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable;
import java.util.List;
/**
* 运动课程方案全局配置 此表只有一条数据 (似乎有点鸡肋 0.0``)
*
* @author :wangyalei
* @date :Created in 2021/6/3 1:39:30 下午
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(collection = "v3.exercise.project.global.config")
public class ExerciseCourseProjectGlobalConfigDO implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private ObjectId id;
/**
* 动作时间配置
*/
private ActionTimeConfig actionTimeConfig;
/**
* 运动频率配置
*/
private List<ExerciseFrequencyConfig> exerciseFrequencyConfigs;
/**
* 梅脱配置
*/
private GlobalMetConfig metConfig;
/**
* 动作难度配置
*/
private List<ActionDifficultyConfig> actionDifficultyConfigs;
/**
* 热身动作组合
*/
private List<WarmupActionGroup> warmupActionGroups;
/**
* 训练动作组合
*/
private List<TrainingActionGroup> trainingActionGroups;
/**
* 拉伸动作组合
*/
private List<StretchActionGroup> stretchActionGroups;
/**
* 休息视频配置
*/
private List<RestVideoConfig> restVideoConfigs;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo;
import com.jiankangyouyi.cloud.core.base.entity.BaseMongoEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.FieldNameConstants;
import org.springframework.data.mongodb.core.index.CompoundIndex;
import org.springframework.data.mongodb.core.index.CompoundIndexes;
import org.springframework.data.mongodb.core.mapping.Document;
/**
* 康复课程
*
* @author june
* @date 2023年1月12日10:59:35
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Document(collection = "exercise.recovery.course.tk")
@CompoundIndexes(
value = {
@CompoundIndex(
name = "healthProblemCode_-1",
def = "{ 'healthProblemCode' : -1}"
),
}
)
@FieldNameConstants
public class ExerciseRecoveryCourseDO extends BaseMongoEntity {
/**
* 疾病代码
*/
private String diseaseType;
/**
* 参数ID
*/
private String paramId;
/**
* 课程ID
*/
private String courseId;
/**
* 教练性别
*/
private String coachGender;
/**
* 康复课程名称
*/
private String courseName;
/**
* 课程地址-泰康-测试
*/
private String courseM3u81080UrlTkTest;
/**
* 课程地址-泰康-生产
*/
private String courseM3u81080UrlTkProd;
/**
* 课程地址-健康有益
*/
private String courseM3u81080UrlJkyy;
/**
* 课程秒数
*/
private Integer courseTimeSeconds;
/**
* 课程热量
*/
private Integer courseEnergy;
/**
* 运动能力
*/
private Integer athleticAbility;
/**
* 课程难度
*/
private Integer courseDifficulties;
/**
* 课程强度
*/
private Integer courseIntensity;
/**
* 运动水平
*/
private Integer exerciseLevel;
/**
* 产后天数
*/
private Integer postpartumDays;
/**
* 视频封面地址
*/
private String courseImageUrl;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jiankangyouyi.cloud.core.base.enums.ValidStatusEnum;
import com.jiankangyouyi.cloud.motorplan.api.enums.HealthAssessmentCoverConfigEnum;
import com.jiankangyouyi.cloud.motorplan.api.model.dto.response.component.ServiceArea;
import com.jiankangyouyi.cloud.motorplan.api.model.dto.response.component.ServiceValue;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/12 6:39 下午
*/
@Data
@AllArgsConstructor
@Document(collection = "health.assessment.cover.config")
public class HealthAssessmentCoverConfigDO {
@Id
private ObjectId id;
private String validStatus;
@DateTimeFormat(
pattern = "yyyy-MM-dd HH:mm:ss"
)
@JsonFormat(
timezone = "GMT+8",
pattern = "yyyy-MM-dd HH:mm:ss"
)
private Date updateTime;
@DateTimeFormat(
pattern = "yyyy-MM-dd HH:mm:ss"
)
@JsonFormat(
timezone = "GMT+8",
pattern = "yyyy-MM-dd HH:mm:ss"
)
@Indexed()
private Date createTime;
/**
* 应用 id
*/
private String appId;
/**
* 配置类型 {@link HealthAssessmentCoverConfigEnum}
*/
private String configType;
/**
* 服务简介
*/
private String serviceProfile;
/**
* 服务范围
*/
private List<ServiceArea> serviceAreas;
/**
* 服务价值
*/
private List<ServiceValue> serviceValues;
/**
* 提示
*/
private String reminder;
/**
* 参考文献
*/
private List<String> documentations;
public HealthAssessmentCoverConfigDO() {
Date date = new Date();
this.validStatus = ValidStatusEnum.VALID.getCode();
this.updateTime = date;
this.createTime = date;
}
public static final String FIELD_ID = "_id";
public static final String FIELD_VALIDSTATUS = "validStatus";
public static final String FIELD_UPDATETIME = "updateTime";
public static final String FIELD_CREATETIME = "createTime";
public static final String FIELD_APPID = "appId";
public static final String FIELD_CONFIG_TYPE = "configType";
public static final String FIELD_SERVICEPROFILE = "serviceProfile";
public static final String FIELD_SERVICEAREAS = "serviceAreas";
public static final String FIELD_SERVICEAREAS_TITLE = "serviceAreas.title";
public static final String FIELD_SERVICEAREAS_IMAGE = "serviceAreas.image";
public static final String FIELD_SERVICEAREAS_DESCRIPTION = "serviceAreas.description";
public static final String FIELD_SERVICEVALUES = "serviceValues";
public static final String FIELD_SERVICEVALUES_TITLE = "serviceValues.title";
public static final String FIELD_SERVICEVALUES_DESCRIPTION = "serviceValues.description";
public static final String FIELD_REMINDER = "reminder";
public static final String FIELD_DOCUMENTATIONS = "documentations";
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/6/29 11:24 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ActionExplain {
/**
* 视频时长 /s
*/
private Long videoDurationSecond;
/**
* 动作封面图key
*/
private String actionImageKey;
/**
* 动作注意事项
*/
private List<String> attentions;
/**
* 动作讲解
*/
private List<String> actionExplains;
/**
* 动作id
*/
private String actionId;
/**
* 动作名称
*/
private String actionName;
/**
* 动作视频 MP4
*/
//private String videoMP4Key;
/**
* 动作视频 1080分辨率 文件地址key
*/
private String actionVideoM3u8P1080Key;
/**
* 动作视频 720分辨率 文件地址key
*/
private String actionVideoM3u8P720Key;
/**
* 动作视频 480分辨率 文件地址key
*/
private String actionVideoM3u8P480Key;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/9 3:24 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ActionTimeConfig {
/**
* 时间配置
*/
private TimeConfig timeConfig;
/**
* 时间配置 BMI 条件
*/
private List<TimeConfigBmiCondition> timeConfigBmiConditions;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.jiankangyouyi.cloud.core.util.json.serialize.QiniuKeyToUrlJsonSerialize;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.*;
/**
* @author :wangyalei
* @date :Created in 2021/7/20 9:39 上午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ActionVideoDetailInfo {
/**
* 动作编号
*/
private String actionId;
/**
* ts * 1080 格式视频key
*/
@JsonSerialize(using = QiniuKeyToUrlJsonSerialize.class)
private String videoTs1080;
/**
* ts * 720 格式视频key
*/
@JsonSerialize(using = QiniuKeyToUrlJsonSerialize.class)
private String videoTs720;
/**
* ts * 480 格式视频
*/
@JsonSerialize(using = QiniuKeyToUrlJsonSerialize.class)
private String videoTs480;
/**
* 动作难度
*/
private String actionDifficulty;
/**
* 动作特点
*/
private List<String> actionFeatures;
/**
* 动作分类
*/
private String actionClassification;
/**
* 动作体位
*/
private String actionPosition;
/**
* 训练肌群
*/
private List<String> trainPositions;
/**
* 视频规格
*/
private String actionVideoSize;
/**
* 动作视频产生的热量
*/
private Double heat;
/**
* 动作名称
*/
private String actionName;
/**
* 视频时长 /s
*/
private Long timeSeconds;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/9 3:18 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AthleticAbilityConfig {
/**
* 运动能力和训练强度关系
*/
private List<AthleticAbilityRelation> athleticAbilityRelations;
/**
* 运动能力和训练强度关系 BMI 条件配置
*/
private List<AthleticAbilityConfigBmiCondition> athleticAbilityConfigBmiConditions;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/9 3:18 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AthleticAbilityConfigBmiCondition {
/**
* 开始值
*/
@Builder.Default
private Double startValue = 0.0;
/**
* 结束值
*/
@Builder.Default
private Double endValue = 0.0;
/**
* 运动能力和训练强度关系
*/
private List<AthleticAbilityRelation> athleticAbilityRelations;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :2021/10/21 11:16 上午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AthleticAbilityExerciseTypeAndDescriptionRelation {
/**
* 运动能力 1、低 2、中 3、高
*/
private Integer athleticAbility;
/**
* 运动类型
*/
private String exerciseType;
/**
* 描述
*/
private String description;
/**
* 心率范围计算 开始值 百分数 例如 58% 存 0.58
*/
private Double heartStart;
/**
* 心率范围计算 结束值 百分数 例如 58% 存 0.58
*/
private Double heartEnd;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
*
* @author :wangyalei
* @date :2021/10/21 10:59 上午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AthleticAbilityExerciseTypeRelation {
/**
* 运动能力 1、低 2、中 3、高
*/
private Integer athleticAbility;
/**
* 运动类型
*/
private List<String> exerciseTypes;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/6/23 6:20 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AthleticAbilityRelation {
/**
* 运动能力 1、低 2、中 3、高
*/
private Integer athleticAbility;
/**
* 方案编号列表
*/
private List<String> projectNums;
/**
* 动作难度 1、一级 2、二级 3、三级 4、四级 5、五级
*/
private List<String> actionDifficulties;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/9 3:32 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AttentionItem {
/**
* 注意事项
*/
private List<AttentionItemDetail> attentionItems;
/**
* 注意事项 BMI 条件
*/
private List<AttentionItemBmiCondition> attentionItemBmiConditions;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Arrays;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/9 3:32 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AttentionItemBmiCondition {
/**
* 开始值
*/
@Builder.Default
private Double startValue = 0.0;
/**
* 结束值
*/
@Builder.Default
private Double endValue = 0.0;
/**
* 注意事项
*/
private List<AttentionItemDetail> attentionItems;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author :wangyalei
* @date :2022/4/1 4:53 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AttentionItemDetail {
/**
* 级别
*/
private Integer level;
/**
* 内容
*/
private String content;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.util.Assert;
import javax.persistence.Transient;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @author :wangyalei
* @date :Created in 2021/6/29 11:06 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class DiseaseInfo {
/**
* 排序
*/
@Transient
private Integer orderNum;
/**
* 疾病类型
*/
@NotBlank(message = "请求参数 diseaseType 不能为空")
private String diseaseType;
/**
* 风险等级
*/
@NotNull(message = "请求参数 riskLevel 不能为空")
private Integer riskLevel;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import com.jiankangyouyi.cloud.motorplan.api.model.dto.response.component.CourseFinishDetail;
import com.jiankangyouyi.cloud.motorplan.api.model.dto.response.component.SystemExerciseInfo;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3.CourseVideoDetailInfo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.mongodb.core.index.Indexed;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/6/29 10:51 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ExerciseCoursePlan {
/**
* 用户Id
*/
private String userId;
/**
* 应用Id
*/
private String appId;
/**
* 课程Id
*/
@Indexed(unique = true)
private String courseId;
/**
* 课程日期 / yyyy-MM-dd
*/
@Indexed
private String courseDate;
/**
* 训练动作组合类型编号 (此字段 v2.4之后不再使用,慎用做业务逻辑)
*/
private String nextTrainingActionTypeNum;
/**
* 用户信息
*/
private UserInfo userInfo;
/**
* 动作个数
*/
private Integer actionCount;
/**
* 课程时长 /分
*/
private Integer courseDurationMinute;
/**
* 课程时长 /秒
*/
private Integer courseDurationSecond;
/**
* 课程热量
*/
private Double courseHeat;
/**
* 运动频率描述
*/
private String exerciseFrequencyDesc;
/**
* 运动频率最小值 /天
*/
private Integer exerciseFrequencyMinValue;
/**
* 运动频率最大值 /天
*/
private Integer exerciseFrequencyMaxValue;
/**
* 用户选择的运动器材
*/
private List<String> userChoiceExerciseEquipments;
/**
* 课程使用的运动器材
*/
private List<String> exerciseEquipments;
/**
* 注意事项
*/
private List<String> attentionItems;
/**
* 运动目标
*/
private List<String> exerciseAims;
/**
* 课程封面图
*/
private String courseImageKey;
/**
* 课程视频 1080 分辨率 m3u8 文件地址key
*/
private String courseVideoM3u8P1080Key;
/**
* 课程视频 720 分辨率 m3u8 文件地址key
*/
private String courseVideoM3u8P720Key;
/**
* 课程视频 480 分辨率 m3u8 文件地址key
*/
private String courseVideoM3u8P480Key;
/**
* 课程视频详情
*/
private List<CourseVideoDetailInfo> courseVideoDetailInfos;
/**
* 动作讲解
*/
private List<ActionExplain> actionExplains;
/**
* 课程完成总热量
*/
private Integer courseFinishTotalHeat;
/**
* 课程完成总时长 /s
*/
private Integer courseFinishTotalDuration;
/**
* 课程完成详情信息
*/
private List<CourseFinishDetail> courseFinishDetails;
/**
* 系统运动信息(非视频课程方案)
*/
private SystemExerciseInfo systemExerciseInfo;
public static final String FIELD_USERID = "userId";
public static final String FIELD_APPID = "appId";
public static final String FIELD_COURSEID = "courseId";
public static final String FIELD_COURSEDATE = "courseDate";
public static final String FIELD_NEXTTRAININGACTIONTYPENUM = "nextTrainingActionTypeNum";
public static final String FIELD_USERINFO = "userInfo";
public static final String FIELD_USERINFO_HEIGHT = "userInfo.height";
public static final String FIELD_USERINFO_WEIGHT = "userInfo.weight";
public static final String FIELD_USERINFO_BIRTHDAY = "userInfo.birthday";
public static final String FIELD_USERINFO_GENDER = "userInfo.gender";
public static final String FIELD_USERINFO_ATHLETICABILITY = "userInfo.athleticAbility";
public static final String FIELD_USERINFO_HEALTHYPERSON = "userInfo.healthyPerson";
public static final String FIELD_USERINFO_DISEASEINFOS = "userInfo.diseaseInfos";
public static final String FIELD_USERINFO_DISEASEINFOS_ORDERNUM = "userInfo.diseaseInfos.orderNum";
public static final String FIELD_USERINFO_DISEASEINFOS_DISEASETYPE = "userInfo.diseaseInfos.diseaseType";
public static final String FIELD_USERINFO_DISEASEINFOS_RISKLEVEL = "userInfo.diseaseInfos.riskLevel";
public static final String FIELD_USERINFO_ACTIONTABOOS = "userInfo.actionTaboos";
public static final String FIELD_USERINFO_BODYEXERCISEEVALUATIONSTATUS = "userInfo.bodyExerciseEvaluationStatus";
public static final String FIELD_USERINFO_EXERCISECONFIGINFO = "userInfo.exerciseConfigInfo";
public static final String FIELD_ACTIONCOUNT = "actionCount";
public static final String FIELD_COURSEDURATIONMINUTE = "courseDurationMinute";
public static final String FIELD_COURSEDURATIONSECOND = "courseDurationSecond";
public static final String FIELD_COURSEHEAT = "courseHeat";
public static final String FIELD_EXERCISEFREQUENCYDESC = "exerciseFrequencyDesc";
public static final String FIELD_USERCHOICEEXERCISEEQUIPMENTS = "userChoiceExerciseEquipments";
public static final String FIELD_EXERCISEEQUIPMENTS = "exerciseEquipments";
public static final String FIELD_ATTENTIONITEMS = "attentionItems";
public static final String FIELD_EXERCISEAIMS = "exerciseAims";
public static final String FIELD_COURSEIMAGEKEY = "courseImageKey";
public static final String FIELD_COURSEVIDEOM3U8P1080KEY = "courseVideoM3u8P1080Key";
public static final String FIELD_COURSEVIDEOM3U8P720KEY = "courseVideoM3u8P720Key";
public static final String FIELD_COURSEVIDEOM3U8P480KEY = "courseVideoM3u8P480Key";
public static final String FIELD_COURSEVIDEODETAILINFOS = "courseVideoDetailInfos";
public static final String FIELD_COURSEVIDEODETAILINFOS_STARTTIME = "courseVideoDetailInfos.startTime";
public static final String FIELD_COURSEVIDEODETAILINFOS_ENDTIME = "courseVideoDetailInfos.endTime";
public static final String FIELD_COURSEVIDEODETAILINFOS_HEAT = "courseVideoDetailInfos.heat";
public static final String FIELD_ACTIONEXPLAINS = "actionExplains";
public static final String FIELD_ACTIONEXPLAINS_VIDEODURATIONSECOND = "actionExplains.videoDurationSecond";
public static final String FIELD_ACTIONEXPLAINS_ACTIONIMAGEKEY = "actionExplains.actionImageKey";
public static final String FIELD_ACTIONEXPLAINS_ATTENTIONS = "actionExplains.attentions";
public static final String FIELD_ACTIONEXPLAINS_ACTIONEXPLAINS = "actionExplains.actionExplains";
public static final String FIELD_ACTIONEXPLAINS_ACTIONNAME = "actionExplains.actionName";
public static final String FIELD_ACTIONEXPLAINS_ACTIONVIDEOM3U8P1080KEY = "actionExplains.actionVideoM3u8P1080Key";
public static final String FIELD_ACTIONEXPLAINS_ACTIONVIDEOM3U8P720KEY = "actionExplains.actionVideoM3u8P720Key";
public static final String FIELD_ACTIONEXPLAINS_ACTIONVIDEOM3U8P480KEY = "actionExplains.actionVideoM3u8P480Key";
public static final String FIELD_COURSEFINISHTOTALHEAT = "courseFinishTotalHeat";
public static final String FIELD_COURSEFINISHTOTALDURATION = "courseFinishTotalDuration";
public static final String FIELD_COURSEFINISHDETAILS = "courseFinishDetails";
public static final String FIELD_COURSEFINISHDETAILS_RECORDDATE = "courseFinishDetails.recordDate";
public static final String FIELD_COURSEFINISHDETAILS_EXERCISEDURATION = "courseFinishDetails.exerciseDuration";
public static final String FIELD_COURSEFINISHDETAILS_EXERCISEHEAT = "courseFinishDetails.exerciseHeat";
public static final String FIELD_SYSTEMEXERCISEINFO = "systemExerciseInfo";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST = "systemExerciseInfo.moreExerciseList";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_EXERCISEID = "systemExerciseInfo.moreExerciseList.exerciseId";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_MINCOUNT = "systemExerciseInfo.moreExerciseList.minCount";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_UNIT = "systemExerciseInfo.moreExerciseList.unit";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_MINCOUNTPRODUCEHEAT = "systemExerciseInfo.moreExerciseList.minCountProduceHeat";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_EXERCISETIMEMIN = "systemExerciseInfo.moreExerciseList.exerciseTimeMin";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_EXERCISETIMEMAX = "systemExerciseInfo.moreExerciseList.exerciseTimeMax";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_EXERCISEHEATMIN = "systemExerciseInfo.moreExerciseList.exerciseHeatMin";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_EXERCISEHEATMAX = "systemExerciseInfo.moreExerciseList.exerciseHeatMax";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_IMAGEKEY = "systemExerciseInfo.moreExerciseList.imageKey";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_EXERCISENAME = "systemExerciseInfo.moreExerciseList.exerciseName";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_EXERCISETYPE = "systemExerciseInfo.moreExerciseList.exerciseType";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_DESCRIPTIONS = "systemExerciseInfo.moreExerciseList.descriptions";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_ORDER = "systemExerciseInfo.moreExerciseList.order";
public static final String FIELD_SYSTEMEXERCISEINFO_MOREEXERCISELIST_MET = "systemExerciseInfo.moreExerciseList.met";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST = "systemExerciseInfo.recommendExerciseList";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_EXERCISEID = "systemExerciseInfo.recommendExerciseList.exerciseId";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_MINCOUNT = "systemExerciseInfo.recommendExerciseList.minCount";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_UNIT = "systemExerciseInfo.recommendExerciseList.unit";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_MINCOUNTPRODUCEHEAT = "systemExerciseInfo.recommendExerciseList.minCountProduceHeat";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_EXERCISETIMEMIN = "systemExerciseInfo.recommendExerciseList.exerciseTimeMin";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_EXERCISETIMEMAX = "systemExerciseInfo.recommendExerciseList.exerciseTimeMax";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_EXERCISEHEATMIN = "systemExerciseInfo.recommendExerciseList.exerciseHeatMin";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_EXERCISEHEATMAX = "systemExerciseInfo.recommendExerciseList.exerciseHeatMax";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_IMAGEKEY = "systemExerciseInfo.recommendExerciseList.imageKey";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_EXERCISENAME = "systemExerciseInfo.recommendExerciseList.exerciseName";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_EXERCISETYPE = "systemExerciseInfo.recommendExerciseList.exerciseType";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_DESCRIPTIONS = "systemExerciseInfo.recommendExerciseList.descriptions";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_ORDER = "systemExerciseInfo.recommendExerciseList.order";
public static final String FIELD_SYSTEMEXERCISEINFO_RECOMMENDEXERCISELIST_MET = "systemExerciseInfo.recommendExerciseList.met";
public static final String FIELD_SYSTEMEXERCISEINFO_EXERCISEADVICES = "systemExerciseInfo.exerciseAdvices";
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.*;
/**
* @author :wangyalei
* @date :Created in 2021/6/18 10:20 上午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ExerciseCourseProjectConfig implements Serializable {
/**
* 方案编号
*/
private String projectNum;
/**
* 描述信息
*/
private String description;
/**
* 疾病类型
*/
private String diseaseType;
/**
* 健康/亚健康人群 true 是 false 否
*/
private Boolean healthyPerson;
/**
* 风险等级
*/
private List<Integer> riskLevels;
/**
* 其他等级 (特殊疾病标签处理)
*/
private List<String> otherLevels;
/**
* 禁止动作配置
*/
private ForbidActionProperty forbidActionProperty;
/**
* 运动能力配置
*/
private AthleticAbilityConfig athleticAbilityConfig;
/**
* 管理目标
*/
private ManagementGoalConfig managementGoalConfig;
/**
* 动作时间配置
*/
private ActionTimeConfig actionTimeConfig;
/**
* 训练动作休息时间配置
*/
private TrainingRestTimeConfig trainingRestTimeConfig;
/**
* 热身动作
*/
private WarmupAction warmupAction;
/**
* 拉伸动作
*/
private StretchAction stretchAction;
/**
* 训练动作
*/
private TrainingAction trainingAction;
/**
* 运动频率描述
*/
private ExerciseFrequency exerciseFrequency;
/**
* 注意事项
*/
private AttentionItem attentionItem;
/**************************************************以下是系统运动(非视频运动)动作配置属性*****************************/
/**
* 运动方案配置
*/
private SystemExercise systemExercise;
/**
* 运动能力、运动类型、运动提醒描述关联关系配置
*/
private SystemExerciseRemindDescription systemExerciseRemindDescription;
/**
* 禁忌标签配置
*/
private SystemExerciseTabooLabel systemExerciseTabooLabel;
/**
* 注意事项配置
*/
private SystemExerciseAnnouncements systemExerciseAnnouncements;
public static final String FIELD_PROJECTNUM = "projectNum";
public static final String FIELD_DESCRIPTION = "description";
public static final String FIELD_DISEASETYPE = "diseaseType";
public static final String FIELD_HEALTHYPERSON = "healthyPerson";
public static final String FIELD_RISKLEVELS = "riskLevels";
public static final String FIELD_OTHERLEVELS = "otherLevels";
public static final String FIELD_FORBIDACTIONPROPERTY = "forbidActionProperty";
public static final String FIELD_FORBIDACTIONPROPERTY_FORBIDACTIONPROPERTIES = "forbidActionProperty.forbidActionProperties";
public static final String FIELD_FORBIDACTIONPROPERTY_FORBIDACTIONPROPERTYBMICONDITIONS = "forbidActionProperty.forbidActionPropertyBmiConditions";
public static final String FIELD_FORBIDACTIONPROPERTY_FORBIDACTIONPROPERTYBMICONDITIONS_STARTVALUE = "forbidActionProperty.forbidActionPropertyBmiConditions.startValue";
public static final String FIELD_FORBIDACTIONPROPERTY_FORBIDACTIONPROPERTYBMICONDITIONS_ENDVALUE = "forbidActionProperty.forbidActionPropertyBmiConditions.endValue";
public static final String FIELD_FORBIDACTIONPROPERTY_FORBIDACTIONPROPERTYBMICONDITIONS_FORBIDACTIONPROPERTIES = "forbidActionProperty.forbidActionPropertyBmiConditions.forbidActionProperties";
public static final String FIELD_ATHLETICABILITYCONFIG = "athleticAbilityConfig";
public static final String FIELD_ATHLETICABILITYCONFIG_ATHLETICABILITYRELATIONS = "athleticAbilityConfig.athleticAbilityRelations";
public static final String FIELD_ATHLETICABILITYCONFIG_ATHLETICABILITYRELATIONS_ATHLETICABILITY = "athleticAbilityConfig.athleticAbilityRelations.athleticAbility";
public static final String FIELD_ATHLETICABILITYCONFIG_ATHLETICABILITYRELATIONS_PROJECTNUMS = "athleticAbilityConfig.athleticAbilityRelations.projectNums";
public static final String FIELD_ATHLETICABILITYCONFIG_ATHLETICABILITYRELATIONS_ACTIONDIFFICULTIES = "athleticAbilityConfig.athleticAbilityRelations.actionDifficulties";
public static final String FIELD_ATHLETICABILITYCONFIG_ATHLETICABILITYCONFIGBMICONDITIONS = "athleticAbilityConfig.athleticAbilityConfigBmiConditions";
public static final String FIELD_ATHLETICABILITYCONFIG_ATHLETICABILITYCONFIGBMICONDITIONS_STARTVALUE = "athleticAbilityConfig.athleticAbilityConfigBmiConditions.startValue";
public static final String FIELD_ATHLETICABILITYCONFIG_ATHLETICABILITYCONFIGBMICONDITIONS_ENDVALUE = "athleticAbilityConfig.athleticAbilityConfigBmiConditions.endValue";
public static final String FIELD_ATHLETICABILITYCONFIG_ATHLETICABILITYCONFIGBMICONDITIONS_ATHLETICABILITYRELATIONS = "athleticAbilityConfig.athleticAbilityConfigBmiConditions.athleticAbilityRelations";
public static final String FIELD_ATHLETICABILITYCONFIG_ATHLETICABILITYCONFIGBMICONDITIONS_ATHLETICABILITYRELATIONS_ATHLETICABILITY = "athleticAbilityConfig.athleticAbilityConfigBmiConditions.athleticAbilityRelations.athleticAbility";
public static final String FIELD_ATHLETICABILITYCONFIG_ATHLETICABILITYCONFIGBMICONDITIONS_ATHLETICABILITYRELATIONS_PROJECTNUMS = "athleticAbilityConfig.athleticAbilityConfigBmiConditions.athleticAbilityRelations.projectNums";
public static final String FIELD_ATHLETICABILITYCONFIG_ATHLETICABILITYCONFIGBMICONDITIONS_ATHLETICABILITYRELATIONS_ACTIONDIFFICULTIES = "athleticAbilityConfig.athleticAbilityConfigBmiConditions.athleticAbilityRelations.actionDifficulties";
public static final String FIELD_MANAGEMENTGOALCONFIG = "managementGoalConfig";
public static final String FIELD_MANAGEMENTGOALCONFIG_MANAGEMENTGOALS = "managementGoalConfig.managementGoals";
public static final String FIELD_MANAGEMENTGOALCONFIG_MANAGEMENTGOALBMICONDITIONS = "managementGoalConfig.managementGoalBmiConditions";
public static final String FIELD_MANAGEMENTGOALCONFIG_MANAGEMENTGOALBMICONDITIONS_STARTVALUE = "managementGoalConfig.managementGoalBmiConditions.startValue";
public static final String FIELD_MANAGEMENTGOALCONFIG_MANAGEMENTGOALBMICONDITIONS_ENDVALUE = "managementGoalConfig.managementGoalBmiConditions.endValue";
public static final String FIELD_MANAGEMENTGOALCONFIG_MANAGEMENTGOALBMICONDITIONS_MANAGEMENTGOALS = "managementGoalConfig.managementGoalBmiConditions.managementGoals";
public static final String FIELD_ACTIONTIMECONFIG = "actionTimeConfig";
public static final String FIELD_ACTIONTIMECONFIG_TIMECONFIG = "actionTimeConfig.timeConfig";
public static final String FIELD_ACTIONTIMECONFIG_TIMECONFIG_WARMUPTIMEMIN = "actionTimeConfig.timeConfig.warmupTimeMin";
public static final String FIELD_ACTIONTIMECONFIG_TIMECONFIG_WARMUPTIMEMAX = "actionTimeConfig.timeConfig.warmupTimeMax";
public static final String FIELD_ACTIONTIMECONFIG_TIMECONFIG_TRAININGTIMEMIN = "actionTimeConfig.timeConfig.trainingTimeMin";
public static final String FIELD_ACTIONTIMECONFIG_TIMECONFIG_TRAININGTIMEMAX = "actionTimeConfig.timeConfig.trainingTimeMax";
public static final String FIELD_ACTIONTIMECONFIG_TIMECONFIG_STRETCHTIMEMIN = "actionTimeConfig.timeConfig.stretchTimeMin";
public static final String FIELD_ACTIONTIMECONFIG_TIMECONFIG_STRETCHTIMEMAX = "actionTimeConfig.timeConfig.stretchTimeMax";
public static final String FIELD_ACTIONTIMECONFIG_TIMECONFIG_SYSTEMEXERCISETIMEMIN = "actionTimeConfig.timeConfig.systemExerciseTimeMin";
public static final String FIELD_ACTIONTIMECONFIG_TIMECONFIG_SYSTEMEXERCISETIMEMAX = "actionTimeConfig.timeConfig.systemExerciseTimeMax";
public static final String FIELD_ACTIONTIMECONFIG_TIMECONFIGBMICONDITIONS = "actionTimeConfig.timeConfigBmiConditions";
public static final String FIELD_ACTIONTIMECONFIG_TIMECONFIGBMICONDITIONS_STARTVALUE = "actionTimeConfig.timeConfigBmiConditions.startValue";
public static final String FIELD_ACTIONTIMECONFIG_TIMECONFIGBMICONDITIONS_ENDVALUE = "actionTimeConfig.timeConfigBmiConditions.endValue";
public static final String FIELD_ACTIONTIMECONFIG_TIMECONFIGBMICONDITIONS_TIMECONFIG = "actionTimeConfig.timeConfigBmiConditions.timeConfig";
public static final String FIELD_ACTIONTIMECONFIG_TIMECONFIGBMICONDITIONS_TIMECONFIG_WARMUPTIMEMIN = "actionTimeConfig.timeConfigBmiConditions.timeConfig.warmupTimeMin";
public static final String FIELD_ACTIONTIMECONFIG_TIMECONFIGBMICONDITIONS_TIMECONFIG_WARMUPTIMEMAX = "actionTimeConfig.timeConfigBmiConditions.timeConfig.warmupTimeMax";
public static final String FIELD_ACTIONTIMECONFIG_TIMECONFIGBMICONDITIONS_TIMECONFIG_TRAININGTIMEMIN = "actionTimeConfig.timeConfigBmiConditions.timeConfig.trainingTimeMin";
public static final String FIELD_ACTIONTIMECONFIG_TIMECONFIGBMICONDITIONS_TIMECONFIG_TRAININGTIMEMAX = "actionTimeConfig.timeConfigBmiConditions.timeConfig.trainingTimeMax";
public static final String FIELD_ACTIONTIMECONFIG_TIMECONFIGBMICONDITIONS_TIMECONFIG_STRETCHTIMEMIN = "actionTimeConfig.timeConfigBmiConditions.timeConfig.stretchTimeMin";
public static final String FIELD_ACTIONTIMECONFIG_TIMECONFIGBMICONDITIONS_TIMECONFIG_STRETCHTIMEMAX = "actionTimeConfig.timeConfigBmiConditions.timeConfig.stretchTimeMax";
public static final String FIELD_ACTIONTIMECONFIG_TIMECONFIGBMICONDITIONS_TIMECONFIG_SYSTEMEXERCISETIMEMIN = "actionTimeConfig.timeConfigBmiConditions.timeConfig.systemExerciseTimeMin";
public static final String FIELD_ACTIONTIMECONFIG_TIMECONFIGBMICONDITIONS_TIMECONFIG_SYSTEMEXERCISETIMEMAX = "actionTimeConfig.timeConfigBmiConditions.timeConfig.systemExerciseTimeMax";
public static final String FIELD_TRAININGRESTTIMECONFIG = "trainingRestTimeConfig";
public static final String FIELD_TRAININGRESTTIMECONFIG_RESTTIMEGROUPS = "trainingRestTimeConfig.restTimeGroups";
public static final String FIELD_TRAININGRESTTIMECONFIG_RESTTIMEGROUPS_CURRENTGROUPNUM = "trainingRestTimeConfig.restTimeGroups.currentGroupNum";
public static final String FIELD_TRAININGRESTTIMECONFIG_RESTTIMEGROUPS_NEXTGROUPNUM = "trainingRestTimeConfig.restTimeGroups.nextGroupNum";
public static final String FIELD_TRAININGRESTTIMECONFIG_RESTTIMEGROUPS_HANDLERTYPE = "trainingRestTimeConfig.restTimeGroups.handlerType";
public static final String FIELD_TRAININGRESTTIMECONFIG_RESTTIMEGROUPS_ACTIONCOUNT = "trainingRestTimeConfig.restTimeGroups.actionCount";
public static final String FIELD_TRAININGRESTTIMECONFIG_RESTTIMEGROUPS_COURSEFINISHPERCENT = "trainingRestTimeConfig.restTimeGroups.courseFinishPercent";
public static final String FIELD_TRAININGRESTTIMECONFIG_RESTTIMEGROUPS_VIDEORESTSIZE = "trainingRestTimeConfig.restTimeGroups.videoRestSize";
public static final String FIELD_TRAININGRESTTIMECONFIG_TRAININGRESTTIMECONFIGBMICONDITIONS = "trainingRestTimeConfig.trainingRestTimeConfigBmiConditions";
public static final String FIELD_TRAININGRESTTIMECONFIG_TRAININGRESTTIMECONFIGBMICONDITIONS_STARTVALUE = "trainingRestTimeConfig.trainingRestTimeConfigBmiConditions.startValue";
public static final String FIELD_TRAININGRESTTIMECONFIG_TRAININGRESTTIMECONFIGBMICONDITIONS_ENDVALUE = "trainingRestTimeConfig.trainingRestTimeConfigBmiConditions.endValue";
public static final String FIELD_TRAININGRESTTIMECONFIG_TRAININGRESTTIMECONFIGBMICONDITIONS_RESTTIMEGROUPS = "trainingRestTimeConfig.trainingRestTimeConfigBmiConditions.restTimeGroups";
public static final String FIELD_TRAININGRESTTIMECONFIG_TRAININGRESTTIMECONFIGBMICONDITIONS_RESTTIMEGROUPS_CURRENTGROUPNUM = "trainingRestTimeConfig.trainingRestTimeConfigBmiConditions.restTimeGroups.currentGroupNum";
public static final String FIELD_TRAININGRESTTIMECONFIG_TRAININGRESTTIMECONFIGBMICONDITIONS_RESTTIMEGROUPS_NEXTGROUPNUM = "trainingRestTimeConfig.trainingRestTimeConfigBmiConditions.restTimeGroups.nextGroupNum";
public static final String FIELD_TRAININGRESTTIMECONFIG_TRAININGRESTTIMECONFIGBMICONDITIONS_RESTTIMEGROUPS_HANDLERTYPE = "trainingRestTimeConfig.trainingRestTimeConfigBmiConditions.restTimeGroups.handlerType";
public static final String FIELD_TRAININGRESTTIMECONFIG_TRAININGRESTTIMECONFIGBMICONDITIONS_RESTTIMEGROUPS_ACTIONCOUNT = "trainingRestTimeConfig.trainingRestTimeConfigBmiConditions.restTimeGroups.actionCount";
public static final String FIELD_TRAININGRESTTIMECONFIG_TRAININGRESTTIMECONFIGBMICONDITIONS_RESTTIMEGROUPS_COURSEFINISHPERCENT = "trainingRestTimeConfig.trainingRestTimeConfigBmiConditions.restTimeGroups.courseFinishPercent";
public static final String FIELD_TRAININGRESTTIMECONFIG_TRAININGRESTTIMECONFIGBMICONDITIONS_RESTTIMEGROUPS_VIDEORESTSIZE = "trainingRestTimeConfig.trainingRestTimeConfigBmiConditions.restTimeGroups.videoRestSize";
public static final String FIELD_WARMUPACTION = "warmupAction";
public static final String FIELD_WARMUPACTION_WARMUPACTONGROUP = "warmupAction.warmupActonGroup";
public static final String FIELD_WARMUPACTION_WARMUPACTONGROUP_ACTIONDIFFICULTIES = "warmupAction.warmupActonGroup.actionDifficulties";
public static final String FIELD_WARMUPACTION_WARMUPACTONGROUP_ACTIONVIDEOSIZES = "warmupAction.warmupActonGroup.actionVideoSizes";
public static final String FIELD_WARMUPACTION_WARMUPACTONGROUP_ACTIONPOSITIONS = "warmupAction.warmupActonGroup.actionPositions";
public static final String FIELD_WARMUPACTION_WARMUPACTONGROUP_ACTIONCLASSIFICATIONS = "warmupAction.warmupActonGroup.actionClassifications";
public static final String FIELD_WARMUPACTION_WARMUPACTONGROUP_TRAINPOSITIONS = "warmupAction.warmupActonGroup.trainPositions";
public static final String FIELD_WARMUPACTION_WARMUPACTONBMICONDITIONS = "warmupAction.warmupActonBmiConditions";
public static final String FIELD_WARMUPACTION_WARMUPACTONBMICONDITIONS_STARTVALUE = "warmupAction.warmupActonBmiConditions.startValue";
public static final String FIELD_WARMUPACTION_WARMUPACTONBMICONDITIONS_ENDVALUE = "warmupAction.warmupActonBmiConditions.endValue";
public static final String FIELD_WARMUPACTION_WARMUPACTONBMICONDITIONS_WARMUPACTONGROUP = "warmupAction.warmupActonBmiConditions.warmupActonGroup";
public static final String FIELD_WARMUPACTION_WARMUPACTONBMICONDITIONS_WARMUPACTONGROUP_ACTIONDIFFICULTIES = "warmupAction.warmupActonBmiConditions.warmupActonGroup.actionDifficulties";
public static final String FIELD_WARMUPACTION_WARMUPACTONBMICONDITIONS_WARMUPACTONGROUP_ACTIONVIDEOSIZES = "warmupAction.warmupActonBmiConditions.warmupActonGroup.actionVideoSizes";
public static final String FIELD_WARMUPACTION_WARMUPACTONBMICONDITIONS_WARMUPACTONGROUP_ACTIONPOSITIONS = "warmupAction.warmupActonBmiConditions.warmupActonGroup.actionPositions";
public static final String FIELD_WARMUPACTION_WARMUPACTONBMICONDITIONS_WARMUPACTONGROUP_ACTIONCLASSIFICATIONS = "warmupAction.warmupActonBmiConditions.warmupActonGroup.actionClassifications";
public static final String FIELD_WARMUPACTION_WARMUPACTONBMICONDITIONS_WARMUPACTONGROUP_TRAINPOSITIONS = "warmupAction.warmupActonBmiConditions.warmupActonGroup.trainPositions";
public static final String FIELD_STRETCHACTION = "stretchAction";
public static final String FIELD_STRETCHACTION_STRETCHACTIONGROUPS = "stretchAction.stretchActionGroups";
public static final String FIELD_STRETCHACTION_STRETCHACTIONGROUPS_CURRENTGROUPNUM = "stretchAction.stretchActionGroups.currentGroupNum";
public static final String FIELD_STRETCHACTION_STRETCHACTIONGROUPS_NEXTGROUPNUM = "stretchAction.stretchActionGroups.nextGroupNum";
public static final String FIELD_STRETCHACTION_STRETCHACTIONGROUPS_ACTIONVIDEOSIZES = "stretchAction.stretchActionGroups.actionVideoSizes";
public static final String FIELD_STRETCHACTION_STRETCHACTIONGROUPS_ACTIONPOSITIONS = "stretchAction.stretchActionGroups.actionPositions";
public static final String FIELD_STRETCHACTION_STRETCHACTIONGROUPS_ACTIONCLASSIFICATIONS = "stretchAction.stretchActionGroups.actionClassifications";
public static final String FIELD_STRETCHACTION_STRETCHACTIONGROUPS_TRAINPOSITIONS = "stretchAction.stretchActionGroups.trainPositions";
public static final String FIELD_STRETCHACTION_STRETCHACTIONBMICONDITIONS = "stretchAction.stretchActionBmiConditions";
public static final String FIELD_STRETCHACTION_STRETCHACTIONBMICONDITIONS_STARTVALUE = "stretchAction.stretchActionBmiConditions.startValue";
public static final String FIELD_STRETCHACTION_STRETCHACTIONBMICONDITIONS_ENDVALUE = "stretchAction.stretchActionBmiConditions.endValue";
public static final String FIELD_STRETCHACTION_STRETCHACTIONBMICONDITIONS_STRETCHACTIONGROUPS = "stretchAction.stretchActionBmiConditions.stretchActionGroups";
public static final String FIELD_STRETCHACTION_STRETCHACTIONBMICONDITIONS_STRETCHACTIONGROUPS_CURRENTGROUPNUM = "stretchAction.stretchActionBmiConditions.stretchActionGroups.currentGroupNum";
public static final String FIELD_STRETCHACTION_STRETCHACTIONBMICONDITIONS_STRETCHACTIONGROUPS_NEXTGROUPNUM = "stretchAction.stretchActionBmiConditions.stretchActionGroups.nextGroupNum";
public static final String FIELD_STRETCHACTION_STRETCHACTIONBMICONDITIONS_STRETCHACTIONGROUPS_ACTIONVIDEOSIZES = "stretchAction.stretchActionBmiConditions.stretchActionGroups.actionVideoSizes";
public static final String FIELD_STRETCHACTION_STRETCHACTIONBMICONDITIONS_STRETCHACTIONGROUPS_ACTIONPOSITIONS = "stretchAction.stretchActionBmiConditions.stretchActionGroups.actionPositions";
public static final String FIELD_STRETCHACTION_STRETCHACTIONBMICONDITIONS_STRETCHACTIONGROUPS_ACTIONCLASSIFICATIONS = "stretchAction.stretchActionBmiConditions.stretchActionGroups.actionClassifications";
public static final String FIELD_STRETCHACTION_STRETCHACTIONBMICONDITIONS_STRETCHACTIONGROUPS_TRAINPOSITIONS = "stretchAction.stretchActionBmiConditions.stretchActionGroups.trainPositions";
public static final String FIELD_TRAININGACTION = "trainingAction";
public static final String FIELD_TRAININGACTION_TRAININGACTIONGROUPS = "trainingAction.trainingActionGroups";
public static final String FIELD_TRAININGACTION_TRAININGACTIONGROUPS_CURRENTGROUPNUM = "trainingAction.trainingActionGroups.currentGroupNum";
public static final String FIELD_TRAININGACTION_TRAININGACTIONGROUPS_NEXTGROUPNUM = "trainingAction.trainingActionGroups.nextGroupNum";
public static final String FIELD_TRAININGACTION_TRAININGACTIONGROUPS_ACTIONVIDEOSIZES = "trainingAction.trainingActionGroups.actionVideoSizes";
public static final String FIELD_TRAININGACTION_TRAININGACTIONGROUPS_ACTIONPOSITIONS = "trainingAction.trainingActionGroups.actionPositions";
public static final String FIELD_TRAININGACTION_TRAININGACTIONGROUPS_ACTIONCLASSIFICATIONS = "trainingAction.trainingActionGroups.actionClassifications";
public static final String FIELD_TRAININGACTION_TRAININGACTIONGROUPS_TRAINPOSITIONS = "trainingAction.trainingActionGroups.trainPositions";
public static final String FIELD_TRAININGACTION_TRAININGACTIONBMICONDITIONS = "trainingAction.trainingActionBmiConditions";
public static final String FIELD_TRAININGACTION_TRAININGACTIONBMICONDITIONS_STARTVALUE = "trainingAction.trainingActionBmiConditions.startValue";
public static final String FIELD_TRAININGACTION_TRAININGACTIONBMICONDITIONS_ENDVALUE = "trainingAction.trainingActionBmiConditions.endValue";
public static final String FIELD_TRAININGACTION_TRAININGACTIONBMICONDITIONS_TRAININGACTIONGROUPS = "trainingAction.trainingActionBmiConditions.trainingActionGroups";
public static final String FIELD_TRAININGACTION_TRAININGACTIONBMICONDITIONS_TRAININGACTIONGROUPS_CURRENTGROUPNUM = "trainingAction.trainingActionBmiConditions.trainingActionGroups.currentGroupNum";
public static final String FIELD_TRAININGACTION_TRAININGACTIONBMICONDITIONS_TRAININGACTIONGROUPS_NEXTGROUPNUM = "trainingAction.trainingActionBmiConditions.trainingActionGroups.nextGroupNum";
public static final String FIELD_TRAININGACTION_TRAININGACTIONBMICONDITIONS_TRAININGACTIONGROUPS_ACTIONVIDEOSIZES = "trainingAction.trainingActionBmiConditions.trainingActionGroups.actionVideoSizes";
public static final String FIELD_TRAININGACTION_TRAININGACTIONBMICONDITIONS_TRAININGACTIONGROUPS_ACTIONPOSITIONS = "trainingAction.trainingActionBmiConditions.trainingActionGroups.actionPositions";
public static final String FIELD_TRAININGACTION_TRAININGACTIONBMICONDITIONS_TRAININGACTIONGROUPS_ACTIONCLASSIFICATIONS = "trainingAction.trainingActionBmiConditions.trainingActionGroups.actionClassifications";
public static final String FIELD_TRAININGACTION_TRAININGACTIONBMICONDITIONS_TRAININGACTIONGROUPS_TRAINPOSITIONS = "trainingAction.trainingActionBmiConditions.trainingActionGroups.trainPositions";
public static final String FIELD_EXERCISEFREQUENCY = "exerciseFrequency";
public static final String FIELD_EXERCISEFREQUENCY_EXERCISEFREQUENCYDESC = "exerciseFrequency.exerciseFrequencyDesc";
public static final String FIELD_EXERCISEFREQUENCY_EXERCISEFREQUENCYBMICONDITIONS = "exerciseFrequency.exerciseFrequencyBmiConditions";
public static final String FIELD_EXERCISEFREQUENCY_EXERCISEFREQUENCYBMICONDITIONS_STARTVALUE = "exerciseFrequency.exerciseFrequencyBmiConditions.startValue";
public static final String FIELD_EXERCISEFREQUENCY_EXERCISEFREQUENCYBMICONDITIONS_ENDVALUE = "exerciseFrequency.exerciseFrequencyBmiConditions.endValue";
public static final String FIELD_EXERCISEFREQUENCY_EXERCISEFREQUENCYBMICONDITIONS_EXERCISEFREQUENCYDESC = "exerciseFrequency.exerciseFrequencyBmiConditions.exerciseFrequencyDesc";
public static final String FIELD_ATTENTIONITEM = "attentionItem";
public static final String FIELD_ATTENTIONITEM_ATTENTIONITEMS = "attentionItem.attentionItems";
public static final String FIELD_ATTENTIONITEM_ATTENTIONITEMBMICONDITIONS = "attentionItem.attentionItemBmiConditions";
public static final String FIELD_ATTENTIONITEM_ATTENTIONITEMBMICONDITIONS_STARTVALUE = "attentionItem.attentionItemBmiConditions.startValue";
public static final String FIELD_ATTENTIONITEM_ATTENTIONITEMBMICONDITIONS_ENDVALUE = "attentionItem.attentionItemBmiConditions.endValue";
public static final String FIELD_ATTENTIONITEM_ATTENTIONITEMBMICONDITIONS_ATTENTIONITEMS = "attentionItem.attentionItemBmiConditions.attentionItems";
public static final String FIELD_SYSTEMEXERCISE = "systemExercise";
public static final String FIELD_SYSTEMEXERCISE_SYSTEMEXERCISEGROUPS = "systemExercise.systemExerciseGroups";
public static final String FIELD_SYSTEMEXERCISE_SYSTEMEXERCISEGROUPS_CURRENTGROUPNUM = "systemExercise.systemExerciseGroups.currentGroupNum";
public static final String FIELD_SYSTEMEXERCISE_SYSTEMEXERCISEGROUPS_NEXTGROUPNUM = "systemExercise.systemExerciseGroups.nextGroupNum";
public static final String FIELD_SYSTEMEXERCISE_SYSTEMEXERCISEGROUPS_ATHLETICABILITYEXERCISETYPERELATIONS = "systemExercise.systemExerciseGroups.athleticAbilityExerciseTypeRelations";
public static final String FIELD_SYSTEMEXERCISE_SYSTEMEXERCISEGROUPS_ATHLETICABILITYEXERCISETYPERELATIONS_ATHLETICABILITY = "systemExercise.systemExerciseGroups.athleticAbilityExerciseTypeRelations.athleticAbility";
public static final String FIELD_SYSTEMEXERCISE_SYSTEMEXERCISEGROUPS_ATHLETICABILITYEXERCISETYPERELATIONS_EXERCISETYPES = "systemExercise.systemExerciseGroups.athleticAbilityExerciseTypeRelations.exerciseTypes";
public static final String FIELD_SYSTEMEXERCISE_SYSTEMEXERCISEBMICONDITIONS = "systemExercise.systemExerciseBmiConditions";
public static final String FIELD_SYSTEMEXERCISE_SYSTEMEXERCISEBMICONDITIONS_STARTVALUE = "systemExercise.systemExerciseBmiConditions.startValue";
public static final String FIELD_SYSTEMEXERCISE_SYSTEMEXERCISEBMICONDITIONS_ENDVALUE = "systemExercise.systemExerciseBmiConditions.endValue";
public static final String FIELD_SYSTEMEXERCISE_SYSTEMEXERCISEBMICONDITIONS_SYSTEMEXERCISEGROUPS = "systemExercise.systemExerciseBmiConditions.systemExerciseGroups";
public static final String FIELD_SYSTEMEXERCISE_SYSTEMEXERCISEBMICONDITIONS_SYSTEMEXERCISEGROUPS_CURRENTGROUPNUM = "systemExercise.systemExerciseBmiConditions.systemExerciseGroups.currentGroupNum";
public static final String FIELD_SYSTEMEXERCISE_SYSTEMEXERCISEBMICONDITIONS_SYSTEMEXERCISEGROUPS_NEXTGROUPNUM = "systemExercise.systemExerciseBmiConditions.systemExerciseGroups.nextGroupNum";
public static final String FIELD_SYSTEMEXERCISE_SYSTEMEXERCISEBMICONDITIONS_SYSTEMEXERCISEGROUPS_ATHLETICABILITYEXERCISETYPERELATIONS = "systemExercise.systemExerciseBmiConditions.systemExerciseGroups.athleticAbilityExerciseTypeRelations";
public static final String FIELD_SYSTEMEXERCISE_SYSTEMEXERCISEBMICONDITIONS_SYSTEMEXERCISEGROUPS_ATHLETICABILITYEXERCISETYPERELATIONS_ATHLETICABILITY = "systemExercise.systemExerciseBmiConditions.systemExerciseGroups.athleticAbilityExerciseTypeRelations.athleticAbility";
public static final String FIELD_SYSTEMEXERCISE_SYSTEMEXERCISEBMICONDITIONS_SYSTEMEXERCISEGROUPS_ATHLETICABILITYEXERCISETYPERELATIONS_EXERCISETYPES = "systemExercise.systemExerciseBmiConditions.systemExerciseGroups.athleticAbilityExerciseTypeRelations.exerciseTypes";
public static final String FIELD_SYSTEMEXERCISEREMINDDESCRIPTION = "systemExerciseRemindDescription";
public static final String FIELD_SYSTEMEXERCISEREMINDDESCRIPTION_ATHLETICABILITYEXERCISETYPEANDDESCRIPTIONRELATIONS = "systemExerciseRemindDescription.athleticAbilityExerciseTypeAndDescriptionRelations";
public static final String FIELD_SYSTEMEXERCISEREMINDDESCRIPTION_ATHLETICABILITYEXERCISETYPEANDDESCRIPTIONRELATIONS_ATHLETICABILITY = "systemExerciseRemindDescription.athleticAbilityExerciseTypeAndDescriptionRelations.athleticAbility";
public static final String FIELD_SYSTEMEXERCISEREMINDDESCRIPTION_ATHLETICABILITYEXERCISETYPEANDDESCRIPTIONRELATIONS_EXERCISETYPE = "systemExerciseRemindDescription.athleticAbilityExerciseTypeAndDescriptionRelations.exerciseType";
public static final String FIELD_SYSTEMEXERCISEREMINDDESCRIPTION_ATHLETICABILITYEXERCISETYPEANDDESCRIPTIONRELATIONS_DESCRIPTION = "systemExerciseRemindDescription.athleticAbilityExerciseTypeAndDescriptionRelations.description";
public static final String FIELD_SYSTEMEXERCISEREMINDDESCRIPTION_ATHLETICABILITYEXERCISETYPEANDDESCRIPTIONRELATIONS_HEARTSTART = "systemExerciseRemindDescription.athleticAbilityExerciseTypeAndDescriptionRelations.heartStart";
public static final String FIELD_SYSTEMEXERCISEREMINDDESCRIPTION_ATHLETICABILITYEXERCISETYPEANDDESCRIPTIONRELATIONS_HEARTEND = "systemExerciseRemindDescription.athleticAbilityExerciseTypeAndDescriptionRelations.heartEnd";
public static final String FIELD_SYSTEMEXERCISEREMINDDESCRIPTION_SYSTEMEXERCISEREMINDDESCRIPTIONBMICONDITIONS = "systemExerciseRemindDescription.systemExerciseRemindDescriptionBmiConditions";
public static final String FIELD_SYSTEMEXERCISEREMINDDESCRIPTION_SYSTEMEXERCISEREMINDDESCRIPTIONBMICONDITIONS_STARTVALUE = "systemExerciseRemindDescription.systemExerciseRemindDescriptionBmiConditions.startValue";
public static final String FIELD_SYSTEMEXERCISEREMINDDESCRIPTION_SYSTEMEXERCISEREMINDDESCRIPTIONBMICONDITIONS_ENDVALUE = "systemExerciseRemindDescription.systemExerciseRemindDescriptionBmiConditions.endValue";
public static final String FIELD_SYSTEMEXERCISEREMINDDESCRIPTION_SYSTEMEXERCISEREMINDDESCRIPTIONBMICONDITIONS_ATHLETICABILITYEXERCISETYPEANDDESCRIPTIONRELATIONS = "systemExerciseRemindDescription.systemExerciseRemindDescriptionBmiConditions.athleticAbilityExerciseTypeAndDescriptionRelations";
public static final String FIELD_SYSTEMEXERCISEREMINDDESCRIPTION_SYSTEMEXERCISEREMINDDESCRIPTIONBMICONDITIONS_ATHLETICABILITYEXERCISETYPEANDDESCRIPTIONRELATIONS_ATHLETICABILITY = "systemExerciseRemindDescription.systemExerciseRemindDescriptionBmiConditions.athleticAbilityExerciseTypeAndDescriptionRelations.athleticAbility";
public static final String FIELD_SYSTEMEXERCISEREMINDDESCRIPTION_SYSTEMEXERCISEREMINDDESCRIPTIONBMICONDITIONS_ATHLETICABILITYEXERCISETYPEANDDESCRIPTIONRELATIONS_EXERCISETYPE = "systemExerciseRemindDescription.systemExerciseRemindDescriptionBmiConditions.athleticAbilityExerciseTypeAndDescriptionRelations.exerciseType";
public static final String FIELD_SYSTEMEXERCISEREMINDDESCRIPTION_SYSTEMEXERCISEREMINDDESCRIPTIONBMICONDITIONS_ATHLETICABILITYEXERCISETYPEANDDESCRIPTIONRELATIONS_DESCRIPTION = "systemExerciseRemindDescription.systemExerciseRemindDescriptionBmiConditions.athleticAbilityExerciseTypeAndDescriptionRelations.description";
public static final String FIELD_SYSTEMEXERCISEREMINDDESCRIPTION_SYSTEMEXERCISEREMINDDESCRIPTIONBMICONDITIONS_ATHLETICABILITYEXERCISETYPEANDDESCRIPTIONRELATIONS_HEARTSTART = "systemExerciseRemindDescription.systemExerciseRemindDescriptionBmiConditions.athleticAbilityExerciseTypeAndDescriptionRelations.heartStart";
public static final String FIELD_SYSTEMEXERCISEREMINDDESCRIPTION_SYSTEMEXERCISEREMINDDESCRIPTIONBMICONDITIONS_ATHLETICABILITYEXERCISETYPEANDDESCRIPTIONRELATIONS_HEARTEND = "systemExerciseRemindDescription.systemExerciseRemindDescriptionBmiConditions.athleticAbilityExerciseTypeAndDescriptionRelations.heartEnd";
public static final String FIELD_SYSTEMEXERCISETABOOLABEL = "systemExerciseTabooLabel";
public static final String FIELD_SYSTEMEXERCISETABOOLABEL_TABOOLABELS = "systemExerciseTabooLabel.tabooLabels";
public static final String FIELD_SYSTEMEXERCISETABOOLABEL_SYSTEMEXERCISETABOOLABELBMICONDITIONS = "systemExerciseTabooLabel.systemExerciseTabooLabelBmiConditions";
public static final String FIELD_SYSTEMEXERCISETABOOLABEL_SYSTEMEXERCISETABOOLABELBMICONDITIONS_STARTVALUE = "systemExerciseTabooLabel.systemExerciseTabooLabelBmiConditions.startValue";
public static final String FIELD_SYSTEMEXERCISETABOOLABEL_SYSTEMEXERCISETABOOLABELBMICONDITIONS_ENDVALUE = "systemExerciseTabooLabel.systemExerciseTabooLabelBmiConditions.endValue";
public static final String FIELD_SYSTEMEXERCISETABOOLABEL_SYSTEMEXERCISETABOOLABELBMICONDITIONS_TABOOLABELS = "systemExerciseTabooLabel.systemExerciseTabooLabelBmiConditions.tabooLabels";
public static final String FIELD_SYSTEMEXERCISEANNOUNCEMENTS = "systemExerciseAnnouncements";
public static final String FIELD_SYSTEMEXERCISEANNOUNCEMENTS_ANNOUNCEMENTS = "systemExerciseAnnouncements.announcements";
public static final String FIELD_SYSTEMEXERCISEANNOUNCEMENTS_SYSTEMEXERCISEANNOUNCEMENTSBMICONDITIONS = "systemExerciseAnnouncements.systemExerciseAnnouncementsBmiConditions";
public static final String FIELD_SYSTEMEXERCISEANNOUNCEMENTS_SYSTEMEXERCISEANNOUNCEMENTSBMICONDITIONS_STARTVALUE = "systemExerciseAnnouncements.systemExerciseAnnouncementsBmiConditions.startValue";
public static final String FIELD_SYSTEMEXERCISEANNOUNCEMENTS_SYSTEMEXERCISEANNOUNCEMENTSBMICONDITIONS_ENDVALUE = "systemExerciseAnnouncements.systemExerciseAnnouncementsBmiConditions.endValue";
public static final String FIELD_SYSTEMEXERCISEANNOUNCEMENTS_SYSTEMEXERCISEANNOUNCEMENTSBMICONDITIONS_ANNOUNCEMENTS = "systemExerciseAnnouncements.systemExerciseAnnouncementsBmiConditions.announcements";
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/9 3:31 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ExerciseFrequency {
/**
* 运动频率描述
*/
private String exerciseFrequencyDesc;
/**
* 运动频率描述 BMI 条件
*/
private List<ExerciseFrequencyBmiCondition> exerciseFrequencyBmiConditions;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author :wangyalei
* @date :Created in 2021/7/9 3:29 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ExerciseFrequencyBmiCondition {
/**
* 开始值
*/
@Builder.Default
private Double startValue = 0.0;
/**
* 结束值
*/
@Builder.Default
private Double endValue = 0.0;
/**
* 运动频率描述
*/
private String exerciseFrequencyDesc;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/9 3:15 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ForbidActionProperty {
/**
* 禁止动作属性
*/
private List<String> forbidActionProperties;
/**
* 禁忌动作BMI 条件配置
*/
private List<ForbidActionPropertyBmiCondition> forbidActionPropertyBmiConditions;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/9 3:15 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ForbidActionPropertyBmiCondition {
/**
* 开始值
*/
@Builder.Default
private Double startValue = 0.0;
/**
* 结束值
*/
@Builder.Default
private Double endValue = 0.0;
/**
* 禁止动作属性
*/
private List<String> forbidActionProperties;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/6/18 10:51 上午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ManagementGoalBmiCondition {
/**
* 开始值
*/
@Builder.Default
private Double startValue = 0.0;
/**
* 结束值
*/
@Builder.Default
private Double endValue = 0.0;
/**
* 管理目标
*/
private List<String> managementGoals;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/9 3:22 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ManagementGoalConfig {
/**
* 管理目标
*/
private List<String> managementGoals;
/**
* 管理目标 BMI 条件配置
*/
private List<ManagementGoalBmiCondition> managementGoalBmiConditions;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Size;
/**
* @author :wangyalei
* @date :Created in 2021/6/18 11:05 上午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class RestTimeConfigComponent {
/**
* 训练强度
*/
@Size(max = 32,message = "请求参数 trainingIntensity 最大长度 32")
private String trainingIntensity;
/**
* 修饰时间规格
*/
@Size(max = 32,message = "请求参数 videoRestSize 最大长度 32")
private String videoRestSize;
/**
* 动作个数
*/
@Size(max = 50,message = "请求参数 actionCount 最大长度 50")
@Builder.Default
private Integer actionCount = 6;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author :wangyalei
* @date :Created in 2021/7/9 3:26 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class RestTimeGroup {
/**
* 当前组合编号
*/
private String currentGroupNum;
/**
* 下一个组合编号
*/
private String nextGroupNum;
/**
* 处理类型 1、百分比 2、动作个数
*/
private Integer handlerType;
/**
* 动作个数
*/
private Integer actionCount;
/**
* 训练动作课程完成百分比
*/
private Double courseFinishPercent;
/**
* 休息时间规格
*/
private String videoRestSize;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/5 5:37 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class StretchAction {
/**
* 拉伸动作组合 当 拉伸动作 bmi 条件 为空时 有值
*/
private List<StretchActionGroup> stretchActionGroups;
/**
* 拉伸动作 bmi 条件
*/
private List<StretchActionBmiCondition> stretchActionBmiConditions;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/5 5:42 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class StretchActionBmiCondition {
/**
* 开始值
*/
@Builder.Default
private Double startValue = 0.0;
/**
* 结束值
*/
@Builder.Default
private Double endValue = 0.0;
/**
* 拉伸动作组合
*/
private List<StretchActionGroup> stretchActionGroups;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/5 5:39 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class StretchActionGroup {
/**
* 当前组合编号
*/
private String currentGroupNum;
/**
* 下一个组合编号
*/
private String nextGroupNum;
/**
* 动作视频规格
*/
private List<String> actionVideoSizes;
/**
* 动作体位
*/
private List<String> actionPositions;
/**
* 动作分类
*/
private List<String> actionClassifications;
/**
* 训练肌群
*/
private List<String> trainPositions;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :2021/10/21 11:31 上午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SystemExercise {
/**
* 系统运动组合配置 (非视频方案)
*/
private List<SystemExerciseGroup> systemExerciseGroups;
/**
* 系统运动组合配置BMI条件 (非视频方案)
*/
private List<SystemExerciseBmiCondition> systemExerciseBmiConditions;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :2021/10/21 1:33 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SystemExerciseAnnouncements {
/**
* (非视频运动方案配置)注意事项
*/
private List<AttentionItemDetail> announcements;
/**
* (非视频运动方案配置)注意事项 BMI 条件
*/
private List<SystemExerciseAnnouncementsBmiCondition> systemExerciseAnnouncementsBmiConditions;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :2021/10/21 1:34 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SystemExerciseAnnouncementsBmiCondition {
/**
* 开始值
*/
@Builder.Default
private Double startValue = 0.0;
/**
* 结束值
*/
@Builder.Default
private Double endValue = 0.0;
/**
* (非视频运动方案配置)注意事项
*/
private List<AttentionItemDetail> announcements;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :2021/10/21 11:38 上午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SystemExerciseBmiCondition {
/**
* 开始值
*/
@Builder.Default
private Double startValue = 0.0;
/**
* 结束值
*/
@Builder.Default
private Double endValue = 0.0;
/**
* 系统运动组合配置 (非视频方案)
*/
private List<SystemExerciseGroup> systemExerciseGroups;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :2021/10/21 11:28 上午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SystemExerciseGroup {
/**
* 当前组合编号
*/
private String currentGroupNum;
/**
* 下一个组合编号
*/
private String nextGroupNum;
/**
* 运动能力与运动类型关系 (非视频运动方案配置)
*/
private List<AthleticAbilityExerciseTypeRelation> athleticAbilityExerciseTypeRelations;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :2021/10/21 1:25 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SystemExerciseRemindDescription {
/**
* 运动能力、运动类型、运动提醒描述关联关系
*/
private List<AthleticAbilityExerciseTypeAndDescriptionRelation> athleticAbilityExerciseTypeAndDescriptionRelations;
/**
* 运动能力、运动类型、运动提醒描述关联关系 BMI 条件
*/
private List<SystemExerciseRemindDescriptionBmiCondition> systemExerciseRemindDescriptionBmiConditions;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :2021/10/21 1:26 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SystemExerciseRemindDescriptionBmiCondition {
/**
* 开始值
*/
@Builder.Default
private Double startValue = 0.0;
/**
* 结束值
*/
@Builder.Default
private Double endValue = 0.0;
/**
* 运动能力、运动类型、运动提醒描述关联关系
*/
private List<AthleticAbilityExerciseTypeAndDescriptionRelation> athleticAbilityExerciseTypeAndDescriptionRelations;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :2021/10/21 11:19 上午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SystemExerciseTabooLabel {
/**
* 禁忌标签 (指运动库动作特点)
*/
private List<String> tabooLabels;
/**
* 禁忌标签 (指运动库动作特点)BMI 条件
*/
List<SystemExerciseTabooLabelBmiCondition> systemExerciseTabooLabelBmiConditions;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :2021/10/21 1:31 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SystemExerciseTabooLabelBmiCondition {
/**
* 开始值
*/
@Builder.Default
private Double startValue = 0.0;
/**
* 结束值
*/
@Builder.Default
private Double endValue = 0.0;
/**
* 禁忌标签 (指运动库动作特点)
*/
private List<String> tabooLabels;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Min;
/**
* @author :wangyalei
* @date :Created in 2021/6/18 10:55 上午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TimeConfig {
/**
* 热身最小时长 单位/分
*/
@Builder.Default
@Min(value = 1,message = "请求参数 warmupTimeMin 最小值 1")
private Integer warmupTimeMin = 1;
/**
* 热身最大时长 单位/分
*/
@Builder.Default
@Min(value = 1,message = "请求参数 warmupTimeMax 最小值 1")
private Integer warmupTimeMax = 1;
/**
* 训练最小时长 单位/分
*/
@Builder.Default
@Min(value = 1,message = "请求参数 trainingTimeMin 最小值 1")
private Integer trainingTimeMin = 1;
/**
* 训练最大时长 单位/分
*/
@Builder.Default
@Min(value = 1,message = "请求参数 trainingTimeMax 最小值 1")
private Integer trainingTimeMax = 1;
/**
* 拉伸最小时长 单位/分
*/
@Builder.Default
@Min(value = 1,message = "请求参数 stretchTimeMin 最小值 1")
private Integer stretchTimeMin = 1;
/**
* 拉伸最大时长 单位/分
*/
@Builder.Default
@Min(value = 1,message = "请求参数 stretchTimeMax 最小值 1")
private Integer stretchTimeMax = 1;
/**
* 系统运动最小时长 单位/分
*/
@Builder.Default
@Min(value = 1,message = "请求参数 systemExerciseTimeMin 最小值 1")
private Integer systemExerciseTimeMin = 1;
/**
* 系统运动最大时长 单位/分
*/
@Builder.Default
@Min(value = 1,message = "请求参数 systemExerciseTimeMax 最小值 1")
private Integer systemExerciseTimeMax = 1;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author :wangyalei
* @date :Created in 2021/7/9 3:06 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TimeConfigBmiCondition {
/**
* 开始值
*/
@Builder.Default
private Double startValue = 0.0;
/**
* 结束值
*/
@Builder.Default
private Double endValue = 0.0;
/**
* 休息时间配置
*/
private TimeConfig timeConfig;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/6/18 11:35 上午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TrainingAction {
/**
* 训练动作组合 当 训练动作组合 bmi 条件 为空时 有值
*/
private List<TrainingActionGroup> trainingActionGroups;
/**
* 训练动作组合 bmi 条件
*/
private List<TrainingActionBmiCondition> trainingActionBmiConditions;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/5 5:55 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TrainingActionBmiCondition {
/**
* 开始值
*/
@Builder.Default
private Double startValue = 0.0;
/**
* 结束值
*/
@Builder.Default
private Double endValue = 0.0;
/**
* 拉伸动作 bmi 条件
*/
private List<TrainingActionGroup> trainingActionGroups;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/5 5:45 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TrainingActionGroup {
/**
* 当前组合编号
*/
private String currentGroupNum;
/**
* 下一个组合编号
*/
private String nextGroupNum;
/**
* 动作视频规格
*/
private List<String> actionVideoSizes;
/**
* 动作体位
*/
private List<String> actionPositions;
/**
* 动作分类
*/
private List<String> actionClassifications;
/**
* 训练肌群
*/
private List<String> trainPositions;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/6/18 11:02 上午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TrainingRestTimeConfig {
/**
* 休息时间配置组合
*/
private List<RestTimeGroup> restTimeGroups;
/**
* 休息时间配置 BMI 条件
*/
private List<TrainingRestTimeConfigBmiCondition> trainingRestTimeConfigBmiConditions;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/9 3:08 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TrainingRestTimeConfigBmiCondition {
/**
* 开始值
*/
@Builder.Default
private Double startValue = 0.0;
/**
* 结束值
*/
@Builder.Default
private Double endValue = 0.0;
/**
* 休息时间配置
*/
private List<RestTimeGroup> restTimeGroups;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import com.jiankangyouyi.cloud.motorplan.model.bean.ActionGroupConfigResult2;
import com.jiankangyouyi.cloud.motorplan.model.bean.ExerciseCourseProjectConfigResult2;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3.ExerciseConfigInfo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/6/29 10:54 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UserInfo {
/**
* 身高 /cm
*/
private Integer height;
/**
* 体重 /kg
*/
private Double weight;
/**
* 出生日期 yyyy-MM-dd
*/
private String birthday;
/**
* 性别 0、未知 1、男 2、女
*/
private String gender;
/**
* 运动能力 1、低 2、中 3、高
*/
private Integer athleticAbility;
/**
* 健康/亚健康人群 true 是 、 false 否
*/
private Boolean healthyPerson;
/**
* 疾病信息
*/
private List<DiseaseInfo> diseaseInfos;
/**
* 用户选择的动作禁忌
*/
private List<String> actionTaboos;
/**
* 用户身体运动评估状态 {@link com.jiankangyouyi.cloud.motorplan.enums.BodyExerciseEvaluationStatusEnum}
*/
private String bodyExerciseEvaluationStatus;
/**
* 分娩日期 / yyyy-MM-dd
*/
private String deliveryDate;
/**
* 用户选择的教练性别 1、男 2、女
*/
private String coachGender;
/**
* 运动配置信息 (运动v2.4新增,之前的数据没有该字段信息,用到时需做兼容或特殊处理)
*/
private ExerciseConfigInfo exerciseConfigInfo;
/**
* 动作时间信息
*/
private ExerciseCourseProjectConfigResult2.ActionTimeInfo actionTimeInfo;
/**
* 梅脱限制信息
*/
private ActionGroupConfigResult2.MetLimitInfo metLimitInfo;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/5 5:30 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class WarmupAction {
/**
* 热身动作组合 当 热身动作BMI 条件 为空时 有值
*/
private WarmupActonGroup warmupActonGroup;
/**
* 热身动作BMI 条件
*/
private List<WarmupActonBmiCondition> warmupActonBmiConditions;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author :wangyalei
* @date :Created in 2021/7/5 5:36 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class WarmupActonBmiCondition {
/**
* 开始值
*/
@Builder.Default
private Double startValue = 0.0;
/**
* 结束值
*/
@Builder.Default
private Double endValue = 0.0;
/**
* 热身动作组合
*/
private WarmupActonGroup warmupActonGroup;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/5 5:31 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class WarmupActonGroup {
/**
* 动作难度 /训练强度
*/
private List<String> actionDifficulties;
/**
* 动作视频规格
*/
private List<String> actionVideoSizes;
/**
* 动作体位
*/
private List<String> actionPositions;
/**
* 动作分类
*/
private List<String> actionClassifications;
/**
* 动作锻炼肌群
*/
private List<String> trainPositions;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 动作配置
*
* @author :wangyalei
* @date :2022/4/28 1:19 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ActionConfig {
/**
* 视频合成规则 TIME : 以时间 、 COUNT : 以条数
*/
public static final String TIME = "TIME";
public static final String COUNT = "COUNT";
/**
* 配置详情
*/
private List<ConfigDetail> configDetails;
/**
* BMI 条件配置
*/
private List<BmiConditionConfig> bmiConditionConfigs;
/**
* BMI 条件配置
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class BmiConditionConfig {
/**
* 开始值
*/
private Double startValue;
/**
* 是否包含开始值
*/
private Boolean includeStartValue;
/**
* 结束值
*/
private Double endValue;
/**
* 是否包含结束值
*/
private Boolean includeEndValue;
/**
* 配置详情
*/
private List<ConfigDetail> configDetails;
}
/**
* 配置详情
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class ConfigDetail {
/**
* 运动能力
*/
private Integer exerciseLevel;
/**
* 规则信息
*/
private List<RuleInfo> ruleInfoList;
}
/**
* 规则信息
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class RuleInfo {
/**
* 当前规则编号 (训练日 1 、2 类似于此类的编号)
*/
private String currentRuleNum;
/**
* 下一条规则编号
*/
private String nextRuleNum;
/**
* 热身计划编号
*/
private String warmupPlanNum;
/**
* 热身规则类型 分为:时间、次数
*/
private String warmupRuleType;
/**
* 热身规则值 规则类型以时间的话,该值单位是秒,以次数的话,单位是个
*/
private Integer warmupRuleValue;
/**
* 训练计划编号
*/
private String trainingPlanNum;
/**
* 训练规则类型 分为:时间、次数
*/
private String trainingRuleType;
/**
* 训练规则值 规则类型以时间的话,该值单位是秒,以次数的话,单位是个
*/
private Integer trainingRuleValue;
/**
* 训练动作循环次数
*/
private Integer trainingCirculationCount;
/**
* 拉伸计划编号
*/
private String stretchPlanNum;
/**
* 拉伸规则类型 分为:时间、次数
*/
private String stretchRuleType;
/**
* 拉伸规则值 规则类型以时间的话,该值单位是秒,以次数的话,单位是个
*/
private Integer stretchRuleValue;
/**
* 系统课程运动类型
*/
private List<String> systemExerciseTypes;
}
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 动作难度配置
* @author :wangyalei
* @date :2022/4/27 3:28 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ActionDifficultyConfig {
/**
* 等级
*/
private Integer grade;
/**
* 难度列表
*/
private List<String> difficultyList;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/9 3:24 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ActionTimeConfig {
/**
* 训练时间配置
*/
private List<TrainTimeConfig> trainTimeConfigs;
/**
* 热身拉伸时间配置
*/
private List<WarmupStretchTimeConfig> warmupStretchTimeConfigs;
/**
* 训练时间配置
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class TrainTimeConfig {
/**
* 等级
*/
private Integer grade;
/**
* 最小时长 /分
*/
private Integer minTime;
/**
* 最大时长 /分
*/
private Integer maxTime;
}
/**
* 热身拉伸时间配置
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class WarmupStretchTimeConfig {
/**
* 规则
*/
private WarmupStretchRule rule;
/**
* 热身时间占比 (此处占比指:训练时间下限的占比)
*/
private Double warmupTimeProportion;
/**
* 拉身时间占比 (此处占比指:训练时间下限的占比)
*/
private Double stretchTimeProportion;
}
/**
* 热身拉伸时间规则
*/
public enum WarmupStretchRule {
ONE,
TWO,
THREE,
FOUR,
}
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.jiankangyouyi.cloud.core.util.json.serialize.QiniuKeyToUrlJsonSerialize;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/20 9:39 上午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ActionVideoDetailInfo {
/**
* 动作编号
*/
private String actionId;
/**
* ts * 1080 格式视频
*/
@JsonSerialize(using = QiniuKeyToUrlJsonSerialize.class)
private String videoTs1080;
/**
* ts * 720 格式视频
*/
@JsonSerialize(using = QiniuKeyToUrlJsonSerialize.class)
private String videoTs720;
/**
* ts * 480 格式视频
*/
@JsonSerialize(using = QiniuKeyToUrlJsonSerialize.class)
private String videoTs480;
/**
* 梅脱值
*/
private Double met;
/**
* 动作难度
*/
private String actionDifficulty;
/**
* 动作特点
*/
private List<String> actionFeatures;
/**
* 动作分类
*/
private String actionClassification;
/**
* 动作体位
*/
private String actionPosition;
/**
* 训练肌群
*/
private List<String> trainPositions;
/**
* 视频资源标签
*/
private List<String> videoSourceLabels;
/**
* 视频资源类型
*/
private String videoSourceType;
/**
* 动作视频产生的热量
*/
private Double heat;
/**
* 动作名称
*/
private String actionName;
/**
* 视频时长 /s
*/
private Long timeSeconds;
/**
* 视频时长 /ms
*/
private Long timeMilliSeconds;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 注意事项详情
* @author :wangyalei
* @date :2022/4/1 4:53 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AttentionItemConfig {
/**
* 级别
*/
private Integer level;
/**
* 内容
*/
private String content;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 课程视频详情
* @author :fengxuanjun
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class CourseVideoDetailInfo {
/**
* 开始时间 /ms
*/
private Long startTime;
/**
* 结束时间 /ms
*/
private Long endTime;
/**
* 产生热量
*/
private Double heat;
/**
* 动作视频信息 当前视频信息是动作视频时有值
*/
private ActionVideoInfo actionVideoInfo;
/**
* 动作视频信息
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class ActionVideoInfo {
/**
* 动作编号
*/
private String actionId;
/**
* 动作分类
*/
private String actionClassification;
/**
* 视频时长 /ms
*/
private Long videoMilliseconds;
/**
* 视频资源类型
*/
private String videoSourceType;
}
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 运动配置信息
* @author :wangyalei
* @date :2022/5/9 1:54 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ExerciseConfigInfo {
/**
* 方案配置编号
*/
private String projectNum;
/**
* 运动水平 1、低 2、中 3、高
*/
private Integer exerciseLevel;
/**
* 训练时间等级
*/
private Integer trainTimeGrade;
/**
* 运动频率等级
*/
private Integer exerciseFrequencyGrade;
/**
* 有氧类型梅脱视频约束等级
*/
private Integer aerobicTypeMetVideoGrade;
/**
* 有氧类型梅脱时长约束等级
*/
private Integer aerobicTypeMetTimeGrade;
/**
* 抗阻类型梅脱视频约束等级
*/
private Integer resistanceTypeMetVideoGrade;
/**
* 抗阻类型梅脱时长约束等级
*/
private Integer resistanceTypeMetTimeGrade;
/**
* 有氧类型休息规则等级
*/
private Integer aerobicTypeRestRuleGrade;
/**
* 抗阻类型休息规则等级
*/
private Integer resistanceTypeRestRuleGrade;
/**
* 动作难度等级
*/
private Integer actionDifficultyGrade;
/**
* 当前规则编号
*/
private String currentRuleNum;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* 运动课程方案配置
* @author :wangyalei
* @date :2022/4/26 4:16 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ExerciseCourseProjectConfig implements Serializable {
/**
* 方案编号
*/
private String projectNum;
/**
* 描述信息
*/
private String description;
/**
* 疾病类型
*/
private String diseaseType;
/**
* 健康/亚健康人群 true 是 false 否
*/
private Boolean healthyPerson;
/**
* 风险等级
*/
private List<Integer> riskLevels;
/**
* 其他等级 (特殊疾病标签处理)
*/
private List<String> otherLevels;
/**
* 管理目标配置
*/
private ManagementGoalConfig managementGoalConfig;
/**
* 时间-频率-难度配置
*/
private TFDConfig tfdConfig;
/**
* 梅脱和休息配置
*/
private MetRestConfig metRestConfig;
/**
* 动作配置
*/
private ActionConfig actionConfig;
/**
* 禁止动作标签 (视频课程)
*/
private VideoForbidActionLabelConfig videoForbidActionLabelConfig;
/**
* 注意事项 (视频课程)
*/
private VideoAttentionItemConfig videoAttentionItemConfig;
/**
* 禁止动作标签 (系统课程)
*/
private SystemForbidActionLabelConfig systemForbidActionLabelConfig;
/**
* 注意事项 (系统课程)
*/
private SystemAttentionItemConfig systemAttentionItemConfig;
/**
* 系统运动提示话术
*/
private SystemRemindDescriptionConfig systemRemindDescriptionConfig;
public static final String FIELD_PROJECTNUM = "projectNum";
public static final String FIELD_DISEASETYPE = "diseaseType";
public static final String FIELD_HEALTHYPERSON = "healthyPerson";
public static final String FIELD_RISKLEVELS = "riskLevels";
public static final String FIELD_OTHERLEVELS = "otherLevels";
public static final String FIELD_MANAGEMENTGOALCONFIG = "managementGoalConfig";
public static final String FIELD_MANAGEMENTGOALCONFIG_CONFIGDETAILS = "managementGoalConfig.configDetails";
public static final String FIELD_MANAGEMENTGOALCONFIG_BMICONDITIONCONFIGS = "managementGoalConfig.bmiConditionConfigs";
public static final String FIELD_MANAGEMENTGOALCONFIG_BMICONDITIONCONFIGS_STARTVALUE = "managementGoalConfig.bmiConditionConfigs.startValue";
public static final String FIELD_MANAGEMENTGOALCONFIG_BMICONDITIONCONFIGS_INCLUDESTARTVALUE = "managementGoalConfig.bmiConditionConfigs.includeStartValue";
public static final String FIELD_MANAGEMENTGOALCONFIG_BMICONDITIONCONFIGS_ENDVALUE = "managementGoalConfig.bmiConditionConfigs.endValue";
public static final String FIELD_MANAGEMENTGOALCONFIG_BMICONDITIONCONFIGS_INCLUDEENDVALUE = "managementGoalConfig.bmiConditionConfigs.includeEndValue";
public static final String FIELD_MANAGEMENTGOALCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS = "managementGoalConfig.bmiConditionConfigs.configDetails";
public static final String FIELD_TFDCONFIG = "tfdConfig";
public static final String FIELD_TFDCONFIG_CONFIGDETAIL = "tfdConfig.configDetail";
public static final String FIELD_TFDCONFIG_CONFIGDETAIL_TIMECONFIGS = "tfdConfig.configDetail.timeConfigs";
public static final String FIELD_TFDCONFIG_CONFIGDETAIL_TIMECONFIGS_EXERCISELEVEL = "tfdConfig.configDetail.timeConfigs.exerciseLevel";
public static final String FIELD_TFDCONFIG_CONFIGDETAIL_TIMECONFIGS_MINGRADE = "tfdConfig.configDetail.timeConfigs.minGrade";
public static final String FIELD_TFDCONFIG_CONFIGDETAIL_TIMECONFIGS_MAXGRADE = "tfdConfig.configDetail.timeConfigs.maxGrade";
public static final String FIELD_TFDCONFIG_CONFIGDETAIL_TIMECONFIGS_WARMUPSTRETCHRULE = "tfdConfig.configDetail.timeConfigs.warmupStretchRule";
public static final String FIELD_TFDCONFIG_CONFIGDETAIL_FREQUENCYCONFIGS = "tfdConfig.configDetail.frequencyConfigs";
public static final String FIELD_TFDCONFIG_CONFIGDETAIL_FREQUENCYCONFIGS_EXERCISELEVEL = "tfdConfig.configDetail.frequencyConfigs.exerciseLevel";
public static final String FIELD_TFDCONFIG_CONFIGDETAIL_FREQUENCYCONFIGS_MINGRADE = "tfdConfig.configDetail.frequencyConfigs.minGrade";
public static final String FIELD_TFDCONFIG_CONFIGDETAIL_FREQUENCYCONFIGS_MAXGRADE = "tfdConfig.configDetail.frequencyConfigs.maxGrade";
public static final String FIELD_TFDCONFIG_CONFIGDETAIL_DIFFICULTYCONFIGS = "tfdConfig.configDetail.difficultyConfigs";
public static final String FIELD_TFDCONFIG_CONFIGDETAIL_DIFFICULTYCONFIGS_EXERCISELEVEL = "tfdConfig.configDetail.difficultyConfigs.exerciseLevel";
public static final String FIELD_TFDCONFIG_CONFIGDETAIL_DIFFICULTYCONFIGS_MINGRADE = "tfdConfig.configDetail.difficultyConfigs.minGrade";
public static final String FIELD_TFDCONFIG_CONFIGDETAIL_DIFFICULTYCONFIGS_MAXGRADE = "tfdConfig.configDetail.difficultyConfigs.maxGrade";
public static final String FIELD_TFDCONFIG_BMICONDITIONCONFIGS = "tfdConfig.bmiConditionConfigs";
public static final String FIELD_TFDCONFIG_BMICONDITIONCONFIGS_STARTVALUE = "tfdConfig.bmiConditionConfigs.startValue";
public static final String FIELD_TFDCONFIG_BMICONDITIONCONFIGS_INCLUDESTARTVALUE = "tfdConfig.bmiConditionConfigs.includeStartValue";
public static final String FIELD_TFDCONFIG_BMICONDITIONCONFIGS_ENDVALUE = "tfdConfig.bmiConditionConfigs.endValue";
public static final String FIELD_TFDCONFIG_BMICONDITIONCONFIGS_INCLUDEENDVALUE = "tfdConfig.bmiConditionConfigs.includeEndValue";
public static final String FIELD_TFDCONFIG_BMICONDITIONCONFIGS_CONFIGDETAIL = "tfdConfig.bmiConditionConfigs.configDetail";
public static final String FIELD_TFDCONFIG_BMICONDITIONCONFIGS_CONFIGDETAIL_TIMECONFIGS = "tfdConfig.bmiConditionConfigs.configDetail.timeConfigs";
public static final String FIELD_TFDCONFIG_BMICONDITIONCONFIGS_CONFIGDETAIL_TIMECONFIGS_EXERCISELEVEL = "tfdConfig.bmiConditionConfigs.configDetail.timeConfigs.exerciseLevel";
public static final String FIELD_TFDCONFIG_BMICONDITIONCONFIGS_CONFIGDETAIL_TIMECONFIGS_MINGRADE = "tfdConfig.bmiConditionConfigs.configDetail.timeConfigs.minGrade";
public static final String FIELD_TFDCONFIG_BMICONDITIONCONFIGS_CONFIGDETAIL_TIMECONFIGS_MAXGRADE = "tfdConfig.bmiConditionConfigs.configDetail.timeConfigs.maxGrade";
public static final String FIELD_TFDCONFIG_BMICONDITIONCONFIGS_CONFIGDETAIL_TIMECONFIGS_WARMUPSTRETCHRULE = "tfdConfig.bmiConditionConfigs.configDetail.timeConfigs.warmupStretchRule";
public static final String FIELD_TFDCONFIG_BMICONDITIONCONFIGS_CONFIGDETAIL_FREQUENCYCONFIGS = "tfdConfig.bmiConditionConfigs.configDetail.frequencyConfigs";
public static final String FIELD_TFDCONFIG_BMICONDITIONCONFIGS_CONFIGDETAIL_FREQUENCYCONFIGS_EXERCISELEVEL = "tfdConfig.bmiConditionConfigs.configDetail.frequencyConfigs.exerciseLevel";
public static final String FIELD_TFDCONFIG_BMICONDITIONCONFIGS_CONFIGDETAIL_FREQUENCYCONFIGS_MINGRADE = "tfdConfig.bmiConditionConfigs.configDetail.frequencyConfigs.minGrade";
public static final String FIELD_TFDCONFIG_BMICONDITIONCONFIGS_CONFIGDETAIL_FREQUENCYCONFIGS_MAXGRADE = "tfdConfig.bmiConditionConfigs.configDetail.frequencyConfigs.maxGrade";
public static final String FIELD_TFDCONFIG_BMICONDITIONCONFIGS_CONFIGDETAIL_DIFFICULTYCONFIGS = "tfdConfig.bmiConditionConfigs.configDetail.difficultyConfigs";
public static final String FIELD_TFDCONFIG_BMICONDITIONCONFIGS_CONFIGDETAIL_DIFFICULTYCONFIGS_EXERCISELEVEL = "tfdConfig.bmiConditionConfigs.configDetail.difficultyConfigs.exerciseLevel";
public static final String FIELD_TFDCONFIG_BMICONDITIONCONFIGS_CONFIGDETAIL_DIFFICULTYCONFIGS_MINGRADE = "tfdConfig.bmiConditionConfigs.configDetail.difficultyConfigs.minGrade";
public static final String FIELD_TFDCONFIG_BMICONDITIONCONFIGS_CONFIGDETAIL_DIFFICULTYCONFIGS_MAXGRADE = "tfdConfig.bmiConditionConfigs.configDetail.difficultyConfigs.maxGrade";
public static final String FIELD_METCONFIG = "metConfig";
public static final String FIELD_METCONFIG_CONFIGDETAILS = "metConfig.configDetails";
public static final String FIELD_METCONFIG_CONFIGDETAILS_EXERCISELEVEL = "metConfig.configDetails.exerciseLevel";
public static final String FIELD_METCONFIG_CONFIGDETAILS_METINFOLIST = "metConfig.configDetails.metInfoList";
public static final String FIELD_METCONFIG_CONFIGDETAILS_METINFOLIST_EXERCISETYPE = "metConfig.configDetails.metInfoList.exerciseType";
public static final String FIELD_METCONFIG_CONFIGDETAILS_METINFOLIST_MINMETVIDEOLIMITGRADE = "metConfig.configDetails.metInfoList.minMetVideoLimitGrade";
public static final String FIELD_METCONFIG_CONFIGDETAILS_METINFOLIST_MAXMETVIDEOLIMITGRADE = "metConfig.configDetails.metInfoList.maxMetVideoLimitGrade";
public static final String FIELD_METCONFIG_CONFIGDETAILS_METINFOLIST_MINMETTIMELIMITGRADE = "metConfig.configDetails.metInfoList.minMetTimeLimitGrade";
public static final String FIELD_METCONFIG_CONFIGDETAILS_METINFOLIST_MAXMETTIMELIMITGRADE = "metConfig.configDetails.metInfoList.maxMetTimeLimitGrade";
public static final String FIELD_METCONFIG_BMICONDITIONCONFIGS = "metConfig.bmiConditionConfigs";
public static final String FIELD_METCONFIG_BMICONDITIONCONFIGS_STARTVALUE = "metConfig.bmiConditionConfigs.startValue";
public static final String FIELD_METCONFIG_BMICONDITIONCONFIGS_INCLUDESTARTVALUE = "metConfig.bmiConditionConfigs.includeStartValue";
public static final String FIELD_METCONFIG_BMICONDITIONCONFIGS_ENDVALUE = "metConfig.bmiConditionConfigs.endValue";
public static final String FIELD_METCONFIG_BMICONDITIONCONFIGS_INCLUDEENDVALUE = "metConfig.bmiConditionConfigs.includeEndValue";
public static final String FIELD_METCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS = "metConfig.bmiConditionConfigs.configDetails";
public static final String FIELD_METCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_EXERCISELEVEL = "metConfig.bmiConditionConfigs.configDetails.exerciseLevel";
public static final String FIELD_METCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_METINFOLIST = "metConfig.bmiConditionConfigs.configDetails.metInfoList";
public static final String FIELD_METCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_METINFOLIST_EXERCISETYPE = "metConfig.bmiConditionConfigs.configDetails.metInfoList.exerciseType";
public static final String FIELD_METCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_METINFOLIST_MINMETVIDEOLIMITGRADE = "metConfig.bmiConditionConfigs.configDetails.metInfoList.minMetVideoLimitGrade";
public static final String FIELD_METCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_METINFOLIST_MAXMETVIDEOLIMITGRADE = "metConfig.bmiConditionConfigs.configDetails.metInfoList.maxMetVideoLimitGrade";
public static final String FIELD_METCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_METINFOLIST_MINMETTIMELIMITGRADE = "metConfig.bmiConditionConfigs.configDetails.metInfoList.minMetTimeLimitGrade";
public static final String FIELD_METCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_METINFOLIST_MAXMETTIMELIMITGRADE = "metConfig.bmiConditionConfigs.configDetails.metInfoList.maxMetTimeLimitGrade";
public static final String FIELD_ACTIONCONFIG = "actionConfig";
public static final String FIELD_ACTIONCONFIG_CONFIGDETAILS = "actionConfig.configDetails";
public static final String FIELD_ACTIONCONFIG_CONFIGDETAILS_EXERCISELEVEL = "actionConfig.configDetails.exerciseLevel";
public static final String FIELD_ACTIONCONFIG_CONFIGDETAILS_RULEINFOLIST = "actionConfig.configDetails.ruleInfoList";
public static final String FIELD_ACTIONCONFIG_CONFIGDETAILS_RULEINFOLIST_CURRENTRULENUM = "actionConfig.configDetails.ruleInfoList.currentRuleNum";
public static final String FIELD_ACTIONCONFIG_CONFIGDETAILS_RULEINFOLIST_NEXTRULENUM = "actionConfig.configDetails.ruleInfoList.nextRuleNum";
public static final String FIELD_ACTIONCONFIG_CONFIGDETAILS_RULEINFOLIST_WARMUPPLANNUM = "actionConfig.configDetails.ruleInfoList.warmupPlanNum";
public static final String FIELD_ACTIONCONFIG_CONFIGDETAILS_RULEINFOLIST_WARMUPRULETYPE = "actionConfig.configDetails.ruleInfoList.warmupRuleType";
public static final String FIELD_ACTIONCONFIG_CONFIGDETAILS_RULEINFOLIST_WARMUPRULEVALUE = "actionConfig.configDetails.ruleInfoList.warmupRuleValue";
public static final String FIELD_ACTIONCONFIG_CONFIGDETAILS_RULEINFOLIST_TRAININGPLANNUM = "actionConfig.configDetails.ruleInfoList.trainingPlanNum";
public static final String FIELD_ACTIONCONFIG_CONFIGDETAILS_RULEINFOLIST_TRAININGRULETYPE = "actionConfig.configDetails.ruleInfoList.trainingRuleType";
public static final String FIELD_ACTIONCONFIG_CONFIGDETAILS_RULEINFOLIST_TRAININGRULEVALUE = "actionConfig.configDetails.ruleInfoList.trainingRuleValue";
public static final String FIELD_ACTIONCONFIG_CONFIGDETAILS_RULEINFOLIST_TRAININGCIRCULATIONCOUNT = "actionConfig.configDetails.ruleInfoList.trainingCirculationCount";
public static final String FIELD_ACTIONCONFIG_CONFIGDETAILS_RULEINFOLIST_RESTMINGRADE = "actionConfig.configDetails.ruleInfoList.restMinGrade";
public static final String FIELD_ACTIONCONFIG_CONFIGDETAILS_RULEINFOLIST_RESTMAXGRADE = "actionConfig.configDetails.ruleInfoList.restMaxGrade";
public static final String FIELD_ACTIONCONFIG_CONFIGDETAILS_RULEINFOLIST_STRETCHPLANNUM = "actionConfig.configDetails.ruleInfoList.stretchPlanNum";
public static final String FIELD_ACTIONCONFIG_CONFIGDETAILS_RULEINFOLIST_STRETCHRULETYPE = "actionConfig.configDetails.ruleInfoList.stretchRuleType";
public static final String FIELD_ACTIONCONFIG_CONFIGDETAILS_RULEINFOLIST_STRETCHRULEVALUE = "actionConfig.configDetails.ruleInfoList.stretchRuleValue";
public static final String FIELD_ACTIONCONFIG_CONFIGDETAILS_RULEINFOLIST_SYSTEMEXERCISETYPES = "actionConfig.configDetails.ruleInfoList.systemExerciseTypes";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS = "actionConfig.bmiConditionConfigs";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS_STARTVALUE = "actionConfig.bmiConditionConfigs.startValue";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS_INCLUDESTARTVALUE = "actionConfig.bmiConditionConfigs.includeStartValue";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS_ENDVALUE = "actionConfig.bmiConditionConfigs.endValue";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS_INCLUDEENDVALUE = "actionConfig.bmiConditionConfigs.includeEndValue";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS = "actionConfig.bmiConditionConfigs.configDetails";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_EXERCISELEVEL = "actionConfig.bmiConditionConfigs.configDetails.exerciseLevel";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_RULEINFOLIST = "actionConfig.bmiConditionConfigs.configDetails.ruleInfoList";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_RULEINFOLIST_CURRENTRULENUM = "actionConfig.bmiConditionConfigs.configDetails.ruleInfoList.currentRuleNum";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_RULEINFOLIST_NEXTRULENUM = "actionConfig.bmiConditionConfigs.configDetails.ruleInfoList.nextRuleNum";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_RULEINFOLIST_WARMUPPLANNUM = "actionConfig.bmiConditionConfigs.configDetails.ruleInfoList.warmupPlanNum";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_RULEINFOLIST_WARMUPRULETYPE = "actionConfig.bmiConditionConfigs.configDetails.ruleInfoList.warmupRuleType";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_RULEINFOLIST_WARMUPRULEVALUE = "actionConfig.bmiConditionConfigs.configDetails.ruleInfoList.warmupRuleValue";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_RULEINFOLIST_TRAININGPLANNUM = "actionConfig.bmiConditionConfigs.configDetails.ruleInfoList.trainingPlanNum";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_RULEINFOLIST_TRAININGRULETYPE = "actionConfig.bmiConditionConfigs.configDetails.ruleInfoList.trainingRuleType";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_RULEINFOLIST_TRAININGRULEVALUE = "actionConfig.bmiConditionConfigs.configDetails.ruleInfoList.trainingRuleValue";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_RULEINFOLIST_TRAININGCIRCULATIONCOUNT = "actionConfig.bmiConditionConfigs.configDetails.ruleInfoList.trainingCirculationCount";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_RULEINFOLIST_RESTMINGRADE = "actionConfig.bmiConditionConfigs.configDetails.ruleInfoList.restMinGrade";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_RULEINFOLIST_RESTMAXGRADE = "actionConfig.bmiConditionConfigs.configDetails.ruleInfoList.restMaxGrade";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_RULEINFOLIST_STRETCHPLANNUM = "actionConfig.bmiConditionConfigs.configDetails.ruleInfoList.stretchPlanNum";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_RULEINFOLIST_STRETCHRULETYPE = "actionConfig.bmiConditionConfigs.configDetails.ruleInfoList.stretchRuleType";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_RULEINFOLIST_STRETCHRULEVALUE = "actionConfig.bmiConditionConfigs.configDetails.ruleInfoList.stretchRuleValue";
public static final String FIELD_ACTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_RULEINFOLIST_SYSTEMEXERCISETYPES = "actionConfig.bmiConditionConfigs.configDetails.ruleInfoList.systemExerciseTypes";
public static final String FIELD_VIDEOFORBIDACTIONLABELCONFIG = "videoForbidActionLabelConfig";
public static final String FIELD_VIDEOFORBIDACTIONLABELCONFIG_CONFIGDETAIL = "videoForbidActionLabelConfig.configDetail";
public static final String FIELD_VIDEOFORBIDACTIONLABELCONFIG_BMICONDITIONCONFIGS = "videoForbidActionLabelConfig.bmiConditionConfigs";
public static final String FIELD_VIDEOFORBIDACTIONLABELCONFIG_BMICONDITIONCONFIGS_STARTVALUE = "videoForbidActionLabelConfig.bmiConditionConfigs.startValue";
public static final String FIELD_VIDEOFORBIDACTIONLABELCONFIG_BMICONDITIONCONFIGS_INCLUDESTARTVALUE = "videoForbidActionLabelConfig.bmiConditionConfigs.includeStartValue";
public static final String FIELD_VIDEOFORBIDACTIONLABELCONFIG_BMICONDITIONCONFIGS_ENDVALUE = "videoForbidActionLabelConfig.bmiConditionConfigs.endValue";
public static final String FIELD_VIDEOFORBIDACTIONLABELCONFIG_BMICONDITIONCONFIGS_INCLUDEENDVALUE = "videoForbidActionLabelConfig.bmiConditionConfigs.includeEndValue";
public static final String FIELD_VIDEOFORBIDACTIONLABELCONFIG_BMICONDITIONCONFIGS_CONFIGDETAIL = "videoForbidActionLabelConfig.bmiConditionConfigs.configDetail";
public static final String FIELD_VIDEOATTENTIONITEMCONFIG = "videoAttentionItemConfig";
public static final String FIELD_VIDEOATTENTIONITEMCONFIG_CONFIGDETAILS = "videoAttentionItemConfig.configDetails";
public static final String FIELD_VIDEOATTENTIONITEMCONFIG_CONFIGDETAILS_LEVEL = "videoAttentionItemConfig.configDetails.level";
public static final String FIELD_VIDEOATTENTIONITEMCONFIG_CONFIGDETAILS_CONTENT = "videoAttentionItemConfig.configDetails.content";
public static final String FIELD_VIDEOATTENTIONITEMCONFIG_BMICONDITIONCONFIGS = "videoAttentionItemConfig.bmiConditionConfigs";
public static final String FIELD_VIDEOATTENTIONITEMCONFIG_BMICONDITIONCONFIGS_STARTVALUE = "videoAttentionItemConfig.bmiConditionConfigs.startValue";
public static final String FIELD_VIDEOATTENTIONITEMCONFIG_BMICONDITIONCONFIGS_INCLUDESTARTVALUE = "videoAttentionItemConfig.bmiConditionConfigs.includeStartValue";
public static final String FIELD_VIDEOATTENTIONITEMCONFIG_BMICONDITIONCONFIGS_ENDVALUE = "videoAttentionItemConfig.bmiConditionConfigs.endValue";
public static final String FIELD_VIDEOATTENTIONITEMCONFIG_BMICONDITIONCONFIGS_INCLUDEENDVALUE = "videoAttentionItemConfig.bmiConditionConfigs.includeEndValue";
public static final String FIELD_VIDEOATTENTIONITEMCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS = "videoAttentionItemConfig.bmiConditionConfigs.configDetails";
public static final String FIELD_VIDEOATTENTIONITEMCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_LEVEL = "videoAttentionItemConfig.bmiConditionConfigs.configDetails.level";
public static final String FIELD_VIDEOATTENTIONITEMCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_CONTENT = "videoAttentionItemConfig.bmiConditionConfigs.configDetails.content";
public static final String FIELD_SYSTEMFORBIDACTIONLABELCONFIG = "systemForbidActionLabelConfig";
public static final String FIELD_SYSTEMFORBIDACTIONLABELCONFIG_CONFIGDETAIL = "systemForbidActionLabelConfig.configDetail";
public static final String FIELD_SYSTEMFORBIDACTIONLABELCONFIG_BMICONDITIONCONFIGS = "systemForbidActionLabelConfig.bmiConditionConfigs";
public static final String FIELD_SYSTEMFORBIDACTIONLABELCONFIG_BMICONDITIONCONFIGS_STARTVALUE = "systemForbidActionLabelConfig.bmiConditionConfigs.startValue";
public static final String FIELD_SYSTEMFORBIDACTIONLABELCONFIG_BMICONDITIONCONFIGS_INCLUDESTARTVALUE = "systemForbidActionLabelConfig.bmiConditionConfigs.includeStartValue";
public static final String FIELD_SYSTEMFORBIDACTIONLABELCONFIG_BMICONDITIONCONFIGS_ENDVALUE = "systemForbidActionLabelConfig.bmiConditionConfigs.endValue";
public static final String FIELD_SYSTEMFORBIDACTIONLABELCONFIG_BMICONDITIONCONFIGS_INCLUDEENDVALUE = "systemForbidActionLabelConfig.bmiConditionConfigs.includeEndValue";
public static final String FIELD_SYSTEMFORBIDACTIONLABELCONFIG_BMICONDITIONCONFIGS_CONFIGDETAIL = "systemForbidActionLabelConfig.bmiConditionConfigs.configDetail";
public static final String FIELD_SYSTEMATTENTIONITEMCONFIG = "systemAttentionItemConfig";
public static final String FIELD_SYSTEMATTENTIONITEMCONFIG_CONFIGDETAILS = "systemAttentionItemConfig.configDetails";
public static final String FIELD_SYSTEMATTENTIONITEMCONFIG_CONFIGDETAILS_LEVEL = "systemAttentionItemConfig.configDetails.level";
public static final String FIELD_SYSTEMATTENTIONITEMCONFIG_CONFIGDETAILS_CONTENT = "systemAttentionItemConfig.configDetails.content";
public static final String FIELD_SYSTEMATTENTIONITEMCONFIG_BMICONDITIONCONFIGS = "systemAttentionItemConfig.bmiConditionConfigs";
public static final String FIELD_SYSTEMATTENTIONITEMCONFIG_BMICONDITIONCONFIGS_STARTVALUE = "systemAttentionItemConfig.bmiConditionConfigs.startValue";
public static final String FIELD_SYSTEMATTENTIONITEMCONFIG_BMICONDITIONCONFIGS_INCLUDESTARTVALUE = "systemAttentionItemConfig.bmiConditionConfigs.includeStartValue";
public static final String FIELD_SYSTEMATTENTIONITEMCONFIG_BMICONDITIONCONFIGS_ENDVALUE = "systemAttentionItemConfig.bmiConditionConfigs.endValue";
public static final String FIELD_SYSTEMATTENTIONITEMCONFIG_BMICONDITIONCONFIGS_INCLUDEENDVALUE = "systemAttentionItemConfig.bmiConditionConfigs.includeEndValue";
public static final String FIELD_SYSTEMATTENTIONITEMCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS = "systemAttentionItemConfig.bmiConditionConfigs.configDetails";
public static final String FIELD_SYSTEMATTENTIONITEMCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_LEVEL = "systemAttentionItemConfig.bmiConditionConfigs.configDetails.level";
public static final String FIELD_SYSTEMATTENTIONITEMCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_CONTENT = "systemAttentionItemConfig.bmiConditionConfigs.configDetails.content";
public static final String FIELD_SYSTEMREMINDDESCRIPTIONCONFIG = "systemRemindDescriptionConfig";
public static final String FIELD_SYSTEMREMINDDESCRIPTIONCONFIG_CONFIGDETAILS = "systemRemindDescriptionConfig.configDetails";
public static final String FIELD_SYSTEMREMINDDESCRIPTIONCONFIG_CONFIGDETAILS_ATHLETICABILITY = "systemRemindDescriptionConfig.configDetails.athleticAbility";
public static final String FIELD_SYSTEMREMINDDESCRIPTIONCONFIG_CONFIGDETAILS_EXERCISETYPE = "systemRemindDescriptionConfig.configDetails.exerciseType";
public static final String FIELD_SYSTEMREMINDDESCRIPTIONCONFIG_CONFIGDETAILS_DESCRIPTION = "systemRemindDescriptionConfig.configDetails.description";
public static final String FIELD_SYSTEMREMINDDESCRIPTIONCONFIG_CONFIGDETAILS_HEARTSTART = "systemRemindDescriptionConfig.configDetails.heartStart";
public static final String FIELD_SYSTEMREMINDDESCRIPTIONCONFIG_CONFIGDETAILS_HEARTEND = "systemRemindDescriptionConfig.configDetails.heartEnd";
public static final String FIELD_SYSTEMREMINDDESCRIPTIONCONFIG_BMICONDITIONCONFIGS = "systemRemindDescriptionConfig.bmiConditionConfigs";
public static final String FIELD_SYSTEMREMINDDESCRIPTIONCONFIG_BMICONDITIONCONFIGS_STARTVALUE = "systemRemindDescriptionConfig.bmiConditionConfigs.startValue";
public static final String FIELD_SYSTEMREMINDDESCRIPTIONCONFIG_BMICONDITIONCONFIGS_INCLUDESTARTVALUE = "systemRemindDescriptionConfig.bmiConditionConfigs.includeStartValue";
public static final String FIELD_SYSTEMREMINDDESCRIPTIONCONFIG_BMICONDITIONCONFIGS_ENDVALUE = "systemRemindDescriptionConfig.bmiConditionConfigs.endValue";
public static final String FIELD_SYSTEMREMINDDESCRIPTIONCONFIG_BMICONDITIONCONFIGS_INCLUDEENDVALUE = "systemRemindDescriptionConfig.bmiConditionConfigs.includeEndValue";
public static final String FIELD_SYSTEMREMINDDESCRIPTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS = "systemRemindDescriptionConfig.bmiConditionConfigs.configDetails";
public static final String FIELD_SYSTEMREMINDDESCRIPTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_ATHLETICABILITY = "systemRemindDescriptionConfig.bmiConditionConfigs.configDetails.athleticAbility";
public static final String FIELD_SYSTEMREMINDDESCRIPTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_EXERCISETYPE = "systemRemindDescriptionConfig.bmiConditionConfigs.configDetails.exerciseType";
public static final String FIELD_SYSTEMREMINDDESCRIPTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_DESCRIPTION = "systemRemindDescriptionConfig.bmiConditionConfigs.configDetails.description";
public static final String FIELD_SYSTEMREMINDDESCRIPTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_HEARTSTART = "systemRemindDescriptionConfig.bmiConditionConfigs.configDetails.heartStart";
public static final String FIELD_SYSTEMREMINDDESCRIPTIONCONFIG_BMICONDITIONCONFIGS_CONFIGDETAILS_HEARTEND = "systemRemindDescriptionConfig.bmiConditionConfigs.configDetails.heartEnd";
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import com.jiankangyouyi.cloud.motorplan.enums.ConditionGradeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 运动频率配置
* @author :wangyalei
* @date :2022/4/27 1:42 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ExerciseFrequencyConfig {
/**
* 等级
*/
private Integer grade;
/**
* 天数
*/
private Integer days;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 全局梅脱配置
* @author :wangyalei
* @date :2022/4/27 3:02 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class GlobalMetConfig {
/**
* 限制视频配置
*/
private List<LimitVideoConfig> limitVideoConfigs;
/**
* 时间占比配置
*/
private List<TimeProportionConfig> timeProportionConfigs;
/**
* 限制视频配置
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class LimitVideoConfig{
/**
* 等级
*/
private Integer grade;
/**
* 最小值
*/
private Double minValue;
/**
* 最大值因数1
*/
private Double maxValueFactor1;
/**
* 因数2 条件配置
*/
private List<FactorCondition> factor2Conditions;
/**
* 因数条件
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class FactorCondition {
/**
* 因数值
*/
private Double factor;
/**
* 年龄最小值
*/
private Integer minAge;
/**
* 年龄最大值
*/
private Integer maxAge;
}
}
/**
* 时间占比配置
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class TimeProportionConfig{
/**
* 等级
*/
private Integer grade;
/**
* 最小值
*/
private Double minValue;
/**
* 最大值
*/
private Double maxValue;
/**
* 占比
*/
private Double proportion;
}
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 管理目标配置
* @author :wangyalei
* @date :2022/5/7 4:25 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ManagementGoalConfig {
/**
* 管理目标
*/
private List<String> configDetails;
/**
* BMI 条件配置
*/
private List<BmiConditionConfig> bmiConditionConfigs;
/**
* BMI 条件配置
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class BmiConditionConfig {
/**
* 开始值
*/
private Double startValue;
/**
* 是否包含开始值
*/
private Boolean includeStartValue;
/**
* 结束值
*/
private Double endValue;
/**
* 是否包含结束值
*/
private Boolean includeEndValue;
/**
* 管理目标
*/
private List<String> configDetails;
}
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 梅脱和休息条件配置
* @author :wangyalei
* @date :2022/4/28 11:28 上午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class MetRestConfig {
/**
* 配置详情
*/
private List<ConfigDetail> configDetails;
/**
* BMI 条件配置
*/
private List<BmiConditionConfig> bmiConditionConfigs;
/**
* BMI 条件配置
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class BmiConditionConfig{
/**
* 开始值
*/
private Double startValue;
/**
* 是否包含开始值
*/
private Boolean includeStartValue;
/**
* 结束值
*/
private Double endValue;
/**
* 是否包含结束值
*/
private Boolean includeEndValue;
/**
* 配置详情
*/
private List<ConfigDetail> configDetails;
}
/**
* 梅脱和休息条件信息
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class MetRestInfo {
/**
* 运动类型
*/
private String exerciseType;
/**
* 最小梅脱视频约束等级
*/
private Integer minMetVideoLimitGrade;
/**
* 最大梅脱视频约束等级
*/
private Integer maxMetVideoLimitGrade;
/**
* 最小梅脱时间约束等级
*/
private Integer minMetTimeLimitGrade;
/**
* 最大梅脱时间约束等级
*/
private Integer maxMetTimeLimitGrade;
/**
* 最小休息规则等级
*/
private Integer minRestRuleGrade;
/**
* 最大休息规则等级
*/
private Integer maxRestRuleGrade;
}
/**
* 配置详情
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class ConfigDetail {
/**
* 运动能力
*/
private Integer athleticAbility;
/**
* 梅脱信息
*/
private List<MetRestInfo> metRestInfos;
}
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 休息视频配置
*
* @author :wangyalei
* @date :Created in 2021/7/5 5:45 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class RestVideoConfig {
/**
* 等级
*/
private Integer grade;
/**
* 动作个数
*/
private Integer actionCount;
/**
* 视频规格
*/
private String videoSize;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.jiankangyouyi.cloud.core.util.json.serialize.QiniuKeyToUrlJsonSerialize;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author :wangyalei
* @date :2022/5/21 9:19 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class RestVideoDetailInfo {
/**
* 视频id
*/
private String videoId;
/**
* 休息视频类型 1、现代类型 2、传统类型
*/
private String restVideoType;
/**
* 教练性别 1、男 2、女
*/
private String coachGender;
/**
* 视频规格
*/
private String videoSize;
/**
* 视频时长 /ms
*/
private Long videoMilliseconds;
/**
* m3u8 * 1080 格式视频key
*/
@JsonSerialize(using = QiniuKeyToUrlJsonSerialize.class)
private String videoTs1080;
/**
* m3u8 * 720 格式视频key
*/
@JsonSerialize(using = QiniuKeyToUrlJsonSerialize.class)
private String videoTs720;
/**
* m3u8 * 480 格式视频
*/
@JsonSerialize(using = QiniuKeyToUrlJsonSerialize.class)
private String videoTs480;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 拉伸动作组合
* @author :wangyalei
* @date :2022/4/27 5:16 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class StretchActionGroup {
/**
* 计划编号
*/
private String planNum;
/**
* 运动类型 (1、有氧 2、抗阻)
*/
private String exerciseType;
/**
* 动作分类
*/
private List<String> actionClassifications;
/**
* 动作体位
*/
private List<String> actionPositions;
/**
* 训练肌群
*/
private List<String> trainPositions;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 注意事项配置 (系统课程)
* @author :wangyalei
* @date :2022/4/28 3:46 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SystemAttentionItemConfig {
/**
* 配置详情
*/
private List<AttentionItemConfig> configDetails;
/**
* 注意事项
*/
private List<BmiConditionConfig> bmiConditionConfigs;
/**
* BMI 条件配置
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class BmiConditionConfig{
/**
* 开始值
*/
private Double startValue;
/**
* 是否包含开始值
*/
private Boolean includeStartValue;
/**
* 结束值
*/
private Double endValue;
/**
* 是否包含结束值
*/
private Boolean includeEndValue;
/**
* 配置详情
*/
private List<AttentionItemConfig> configDetails;
}
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 禁忌动作标签 (系统课程)
*
* @author :wangyalei
* @date :Created in 2021/7/9 3:15 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SystemForbidActionLabelConfig {
/**
* 禁止动作标签
*/
private List<String> configDetail;
/**
* BMI 条件配置
*/
private List<BmiConditionConfig> bmiConditionConfigs;
/**
* BMI 条件配置
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class BmiConditionConfig {
/**
* 开始值
*/
private Double startValue;
/**
* 是否包含开始值
*/
private Boolean includeStartValue;
/**
* 结束值
*/
private Double endValue;
/**
* 是否包含结束值
*/
private Boolean includeEndValue;
/**
* 禁止动作标签
*/
private List<String> configDetail;
}
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 系统运动提示话术
* @author :wangyalei
* @date :2022/4/28 3:55 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SystemRemindDescriptionConfig {
/**
* 配置详情
*/
private List<ConfigDetail> configDetails;
/**
* BMI 条件配置
*/
private List<BmiConditionConfig> bmiConditionConfigs;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class ConfigDetail {
/**
* 运动能力 1、低 2、中 3、高
*/
private Integer athleticAbility;
/**
* 运动类型
*/
private String exerciseType;
/**
* 描述
*/
private String description;
/**
* 心率范围计算 开始值 百分数 例如 58% 存 0.58
*/
private Double heartStart;
/**
* 心率范围计算 结束值 百分数 例如 58% 存 0.58
*/
private Double heartEnd;
}
/**
* BMI 条件配置
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class BmiConditionConfig {
/**
* 开始值
*/
private Double startValue;
/**
* 是否包含开始值
*/
private Boolean includeStartValue;
/**
* 结束值
*/
private Double endValue;
/**
* 是否包含结束值
*/
private Boolean includeEndValue;
/**
* 配置详情
*/
private List<ConfigDetail> configDetails;
}
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 时间-频率-难度配置
* @author :wangyalei
* @date :2022/4/28 10:44 上午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TFDConfig {
/**
* 配置详情
*/
private ConfigDetail configDetail;
/**
* BMI 条件配置
*/
private List<BmiConditionConfig> bmiConditionConfigs;
/**
* 配置详情
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class ConfigDetail {
/**
* 时间配置
*/
private List<TimeConfig> timeConfigs;
/**
* 频率配置
*/
private List<FrequencyConfig> frequencyConfigs;
/**
* 难度配置
*/
private List<DifficultyConfig> difficultyConfigs;
}
/**
* BMI 条件配置
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class BmiConditionConfig{
/**
* 开始值
*/
private Double startValue;
/**
* 是否包含开始值
*/
private Boolean includeStartValue;
/**
* 结束值
*/
private Double endValue;
/**
* 是否包含结束值
*/
private Boolean includeEndValue;
/**
* 配置详情
*/
private ConfigDetail configDetail;
}
/**
* 时间配置
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class TimeConfig{
/**
* 运动水平
*/
private Integer exerciseLevel;
/**
* 最小等级
*/
private Integer minGrade;
/**
* 最大等级
*/
private Integer maxGrade;
/**
* 热身拉伸规则
*/
private ActionTimeConfig.WarmupStretchRule warmupStretchRule;
}
/**
* 频率配置
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class FrequencyConfig{
/**
* 运动水平
*/
private Integer exerciseLevel;
/**
* 最小等级
*/
private Integer minGrade;
/**
* 最大等级
*/
private Integer maxGrade;
}
/**
* 难度配置
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class DifficultyConfig{
/**
* 运动水平
*/
private Integer exerciseLevel;
/**
* 最小等级
*/
private Integer minGrade;
/**
* 最大等级
*/
private Integer maxGrade;
}
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 训练动作组合
* @author :wangyalei
* @date :Created in 2021/7/5 5:45 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TrainingActionGroup {
/**
* 运动类型 1、有氧 2、抗阻
*/
public static final String AEROBIC = "1";
public static final String RESISTANCE = "2";
/**
* 计划编号
*/
private String planNum;
/**
* 运动类型 (1、有氧 2、抗阻)
*/
private String exerciseType;
/**
* 动作体位
*/
private List<String> actionPositions;
/**
* 动作分类
*/
private List<String> actionClassifications;
/**
* 训练肌群
*/
private List<String> trainPositions;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.jiankangyouyi.cloud.core.util.json.serialize.QiniuKeyToUrlJsonSerialize;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/20 9:39 上午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TrainingAndRestVideoInfo {
/**
* 休息视频信息
*/
private RestVideoDetailInfo restVideoDetailInfo;
/**
* 训练视频信息
*/
private ActionVideoDetailInfo trainingVideoDetailInfo;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 注意事项配置 (视频课程)
*
* @author :wangyalei
* @date :2022/5/7 4:16 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class VideoAttentionItemConfig {
/**
* 配置详情
*/
private List<AttentionItemConfig> configDetails;
/**
* BMI 条件配置
*/
private List<BmiConditionConfig> bmiConditionConfigs;
/**
* BMI 条件配置
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class BmiConditionConfig {
/**
* 开始值
*/
private Double startValue;
/**
* 是否包含开始值
*/
private Boolean includeStartValue;
/**
* 结束值
*/
private Double endValue;
/**
* 是否包含结束值
*/
private Boolean includeEndValue;
/**
* 配置详情
*/
private List<AttentionItemConfig> configDetails;
}
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 禁忌动作标签配置 (视频课程)
* @author :wangyalei
* @date :2022/5/7 4:10 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class VideoForbidActionLabelConfig {
/**
* 配置详情
*/
private List<String> configDetail;
/**
* BMI 条件配置
*/
private List<BmiConditionConfig> bmiConditionConfigs;
/**
* BMI 条件配置
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class BmiConditionConfig{
/**
* 开始值
*/
private Double startValue;
/**
* 是否包含开始值
*/
private Boolean includeStartValue;
/**
* 结束值
*/
private Double endValue;
/**
* 是否包含结束值
*/
private Boolean includeEndValue;
/**
* 配置详情
*/
private List<String> configDetail;
}
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 热身动作组合
* @author :wangyalei
* @date :2022/4/27 5:16 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class WarmupActionGroup {
/**
* 计划编号
*/
private String planNum;
/**
* 运动类型 (1、有氧 2、抗阻)
*/
private String exerciseType;
/**
* 动作分类
*/
private List<String> actionClassifications;
/**
* 动作体位
*/
private List<String> actionPositions;
/**
* 训练肌群
*/
private List<String> trainPositions;
}
package com.jiankangyouyi.cloud.motorplan.model.entity.mysql;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.sql.Timestamp;
/**
* <p>
* 参数表
* </p>
*
* @author yangsongbo
* @since 2020-11-07
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("base_param")
public class BaseParamDO extends Model<BaseParamDO> {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 更新时间
*/
@TableField("update_time")
private Timestamp updateTime;
/**
* 创建时间
*/
@TableField("create_time")
private Timestamp createTime;
/**
* 参数组
*/
@TableField("param_group")
private String paramGroup;
@TableField("param_key")
private String paramKey;
/**
* 参数值
*/
@TableField("param_value")
private String paramValue;
/**
* 参数名称
*/
@TableField("param_name")
private String paramName;
/**
* 备注
*/
@TableField("remark")
private String remark;
/**
* 排序
*/
@TableField("row_order")
private Integer rowOrder;
/**
* 有效标识 1 有效 2 无效
*/
@TableField("valid_status")
private String validStatus;
public static final String ID = "id";
public static final String UPDATE_TIME = "update_time";
public static final String CREATE_TIME = "create_time";
public static final String PARAM_GROUP = "param_group";
public static final String PARAM_KEY = "param_key";
public static final String PARAM_VALUE = "param_value";
public static final String PARAM_NAME = "param_name";
public static final String REMARK = "remark";
public static final String ROW_ORDER = "row_order";
public static final String VALID_STATUS = "valid_status";
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.jiankangyouyi.cloud.motorplan.model.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :2022/1/27 5:53 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class BatchAcquireCoursePlanVO {
/**
* 课程方案列表
*/
private List<ExerciseCoursePlanInfoVO2> coursePlanList;
}
package com.jiankangyouyi.cloud.motorplan.model.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 课程视频片段时长统计
*
* @author lvqidong
* @date 2021/11/16 16:19
**/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CourseClassifySumVO {
/**
* 课程ID
*/
private String courseId;
/**
* 课程分类详情
*/
private List<CourseClassify> CourseClassifyDetail;
@Data
public static class CourseClassify {
/**
* 1 有氧 2 力量 3 柔韧
*/
private String classifyType;
/**
* 运动时长 秒
*/
private Long sportTimeCount;
}
}
package com.jiankangyouyi.cloud.motorplan.model.vo;
import com.jiankangyouyi.cloud.motorplan.model.vo.component.ReplaceInfo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/2 3:24 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ExerciseCourseActionReplaceListVO {
/**
* 课程信息
*/
private List<ReplaceInfo> replaceList;
}
package com.jiankangyouyi.cloud.motorplan.model.vo;
import com.jiankangyouyi.cloud.motorplan.model.vo.component.ReplaceInfo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/2 3:24 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ExerciseCourseActionReplaceSaveVO {
/**
* 课程信息
*/
private List<ReplaceInfo> replaceList;
}
package com.jiankangyouyi.cloud.motorplan.model.vo;
import com.jiankangyouyi.cloud.motorplan.model.vo.component.ReplaceInfo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/2 3:24 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ExerciseCourseActionReplaceSearchVO {
/**
* 课程信息
*/
private List<ReplaceInfo> replaceList;
}
package com.jiankangyouyi.cloud.motorplan.model.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.jiankangyouyi.cloud.core.util.json.serialize.QiniuKeyToUrlJsonSerialize;
import com.jiankangyouyi.cloud.motorplan.api.model.dto.response.component.SystemExerciseInfo;
import com.jiankangyouyi.cloud.motorplan.api.model.dto.response.component.ActionExplainInfo;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3.ActionVideoDetailInfo;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3.ExerciseConfigInfo;
import com.jiankangyouyi.cloud.motorplan.model.entity.mongo.component.v3.TrainingAndRestVideoInfo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/20 2:11 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ExerciseCoursePlanCreateTestToolVO {
/**
* 课程Id
*/
private String courseId;
/**
* 用户BMI
*/
private Double bmi;
/**
* 健康/亚健康人群 true 是 false 否
*/
private Boolean healthyPerson;
/**
* 疾病类型
*/
private String diseaseType;
/**
* 风险等级
*/
private String riskLevel;
/**
* 用户信息
*/
private UserInfo userInfo;
/**
* 当前方案热身时间值 /分
*/
private Integer projectWarmupTime;
/**
* 当前方案拉伸时间值 /分
*/
private Integer projectStretchTime;
/**
* 当前方案最小训练时间 /分
*/
private Integer projectMinTrainTime;
/**
* 当前方案最大训练时间 /分
*/
private Integer projectMaxTrainTime;
/**
* 动作个数
*/
private Integer actionCount;
/**
* 课程时长 /分
*/
private Integer courseDurationMinute;
/**
* 课程时长 /秒
*/
private Integer courseDurationSecond;
/**
* 课程热量
*/
private Double courseHeat;
/**
* 运动频率描述
*/
private String exerciseFrequencyDesc;
/**
* 课程使用的运动器材
*/
private String exerciseEquipment;
/**
* 视频课程禁忌动作
*/
private String forbidActionProperty;
/**
* 系统课程禁忌动作属性
*/
private String systemForbidActionProperty;
/**
* 注意事项
*/
private List<String> attentionItems;
/**
* 运动目标
*/
private List<String> exerciseAims;
/**
* 动作讲解
*/
private List<ActionExplainInfo> actionExplains;
/**
* 热身动作总时间 /ms
*/
private Long warmupTotalTime;
/**
* 热身动作产生总热量
*/
private Double warmupTotalHeat;
/**
* 热身动作视频列表
*/
private List<ActionVideoDetailInfo> warmupVideos;
/**
* 训练动作总时间 /ms
*/
private Long trainingTotalTime;
/**
* 训练动作产生总热量
*/
private Double trainingTotalHeat;
/**
* 训练动作视频+休息视频列表
*/
private List<TrainingAndRestVideoInfo> trainingAndRestVideos;
/**
* 拉伸动作总时间 /ms
*/
private Long stretchTotalTime;
/**
* 拉伸动作产生总热量
*/
private Double stretchTotalHeat;
/**
* 拉伸动作视频列表
*/
private List<ActionVideoDetailInfo> stretchVideos;
/**
* 休息视频总时间 /ms
*/
private Long restVideoTotalTime;
/**
* 休息视频个数
*/
private Integer restVideoCount;
/**
* 课程封面图
*/
@JsonSerialize(using = QiniuKeyToUrlJsonSerialize.class)
private String courseImage;
/**
* 课程视频 1080 分辨率 m3u8 文件地址
*/
private String courseVideoM3u8P1080;
/**
* 课程视频 720 分辨率 m3u8 文件地址
*/
private String courseVideoM3u8P720;
/**
* 课程视频 480 分辨率 m3u8 文件地址
*/
private String courseVideoM3u8P480;
/**
* 系统运动信息(非视频课程方案)
*/
private SystemExerciseInfo systemExerciseInfo;
/**
* 用户信息
*/
@Data
@Builder
public static class UserInfo {
/**
* 身高 /cm
*/
private Integer height;
/**
* 体重 /kg
*/
private Double weight;
/**
* 出生日期 yyyy-MM-dd
*/
private String birthday;
/**
* 性别 0、未知 1、男 2、女
*/
private String gender;
/**
* 运动能力 低 中 高
*/
private String athleticAbility;
/**
* 健康/亚健康人群 true 是 、 false 否
*/
private Boolean healthyPerson;
/**
* 疾病信息
*/
private List<DiseaseInfo> diseaseInfos;
/**
* 用户选择的动作禁忌
*/
private String actionTaboos;
/**
* 用户身体运动评估状态 {@link com.jiankangyouyi.cloud.motorplan.enums.BodyExerciseEvaluationStatusEnum}
*/
private String bodyExerciseEvaluationStatus;
/**
* 分娩日期 / yyyy-MM-dd
*/
private String deliveryDate;
/**
* 用户选择的教练性别 1、男 2、女
*/
private String coachGender;
/**
* 运动配置信息 (运动v2.4新增,之前的数据没有该字段信息,用到时需做兼容或特殊处理)
*/
private ExerciseConfigInfo exerciseConfigInfo;
}
/**
* 疾病信息
*/
@Data
@Builder
public static class DiseaseInfo {
/**
* 疾病类型
*/
private String diseaseType;
/**
* 风险等级
*/
private String riskLevel;
}
}
package com.jiankangyouyi.cloud.motorplan.model.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.jiankangyouyi.cloud.core.util.json.serialize.QiniuKeyToUrlJsonSerialize;
import com.jiankangyouyi.cloud.motorplan.api.model.dto.response.component.ActionExplainInfo;
import com.jiankangyouyi.cloud.motorplan.api.model.dto.response.component.CourseFinishDetail;
import com.jiankangyouyi.cloud.motorplan.api.model.dto.response.component.CourseVideoDetailInfo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/2 3:24 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ExerciseCoursePlanInfoVO {
/**
* 课程Id
*/
private String courseId;
/**
* 课程日期 / yyyy-MM-dd
*/
private String courseDate;
/**
* 动作个数
*/
private Integer actionCount;
/**
* 课程时长 /分
*/
private Integer courseDurationMinute;
/**
* 课程时长 /秒
*/
private Integer courseDurationSecond;
/**
* 课程热量
*/
private Double courseHeat;
/**
* 运动频率描述
*/
private String exerciseFrequencyDesc;
/**
* 运动设备
*/
private List<String> exerciseEquipments;
/**
* 注意事项
*/
private List<String> attentionItems;
/**
* 运动目标
*/
private List<String> exerciseAims;
/**
* 课程封面图
*/
@JsonSerialize(using = QiniuKeyToUrlJsonSerialize.class)
private String courseImageUrl;
/**
* 课程视频 1080 分辨率 m3u8 文件地址
*/
private String courseVideoM3u8P1080Url;
/**
* 课程视频 720 分辨率 m3u8 文件地址
*/
private String courseVideoM3u8P720Url;
/**
* 课程视频 480 分辨率 m3u8 文件地址key
*/
private String courseVideoM3u8P480Url;
/**
* 课程视频详情
*/
private List<CourseVideoDetailInfo> courseVideoDetailInfos;
/**
* 动作讲解
*/
private List<ActionExplainInfo> actionExplains;
/**
* 课程完成总热量
*/
private Integer courseFinishTotalHeat;
/**
* 课程完成总时长 /s
*/
private Integer courseFinishTotalDuration;
/**
* 课程完成详情信息
*/
private List<CourseFinishDetail> courseFinishDetails;
}
package com.jiankangyouyi.cloud.motorplan.model.vo;
import com.jiankangyouyi.cloud.motorplan.api.model.dto.response.component.SystemExerciseInfo;
import com.jiankangyouyi.cloud.motorplan.api.model.dto.response.component.VideoExerciseInfo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CompletableFuture;
/**
* @author :wangyalei
* @date :Created in 2021/7/2 3:24 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ExerciseCoursePlanInfoVO2 {
/**
* 课程Id
*/
private String courseId;
/**
* 课程日期 / yyyy-MM-dd
*/
private String courseDate;
/**
* 运动频率描述
*/
private String exerciseFrequencyDesc;
/**
* 注意事项
*/
private List<String> attentionItems;
/**
* 运动目标
*/
private List<String> exerciseAims;
/**
* 视频运动信息
*/
private VideoExerciseInfo videoExerciseInfo;
/**
* 系统运动信息(非视频课程方案)
*/
private SystemExerciseInfo systemExerciseInfo;
}
package com.jiankangyouyi.cloud.motorplan.model.vo;
import com.jiankangyouyi.cloud.core.entity.page.PageResult;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/2 3:24 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ExerciseCoursePlanListVO2 {
/**
* 分页信息
*/
private PageResult.PageInfo pageInfo;
/**
* 课程信息
*/
private List<ExerciseCoursePlanInfoVO2> exerciseCoursePlanList;
/**
* 首次生成课程日期
*/
private String firstCreateCoursePlanDate;
}
package com.jiankangyouyi.cloud.motorplan.model.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :2021/11/3 2:31 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ExerciseDiseaseLimitVO {
/**
* 疾病权限列表
*/
private List<String> diseaseLimits;
}
package com.jiankangyouyi.cloud.motorplan.model.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/7 6:43 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class LatestCourseParamVO2 {
/**
* 身高 /cm
*/
private Integer height;
/**
* 体重 /kg
*/
private Double weight;
/**
* 出生日期 yyyy-MM-dd
*/
private String birthday;
/**
* 性别 0、未知 1、男 2、女
*/
private String gender;
/**
* 用户选择的运动器材
*/
private List<String> userChoiceExerciseEquipments;
/**
* 运动能力 1、低 2、中 3、高
*/
private Integer athleticAbility;
/**
* 疾病信息
*
*/
private List<com.jiankangyouyi.cloud.motorplan.model.vo.component.DiseaseInfo> diseaseInfoList;
/**
* 动作禁忌类型 {@link com.jiankangyouyi.cloud.basedata.api.enums.action.ActionFeatureEnum}
*/
private List<String> actionTaboos;
/**
* 用户身体运动评估状态 {@link com.jiankangyouyi.cloud.motorplan.enums.BodyExerciseEvaluationStatusEnum}
*/
private String bodyExerciseEvaluationStatus;
/**
* 分娩日期 / yyyy-MM-dd
*/
private String deliveryDate;
/**
* 教练性别 1、男 2、女
*/
private String coachGender;
/**
* 运动水平 1、低 2、中 3、高
*/
private Integer exerciseLevel;
}
package com.jiankangyouyi.cloud.motorplan.model.vo;
import com.jiankangyouyi.cloud.core.entity.page.PageResult;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 康复课程分页信息
*
* @author : june
* @date: 2022/12/13 10:24
**/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageRecoveryCourseVO {
/**
* 分页信息
*/
private PageResult.PageInfo pageInfo;
/**
* 课程信息
*/
private List<RecoveryCourseDetailVO> courseList;
}
package com.jiankangyouyi.cloud.motorplan.model.vo;
import lombok.Data;
/**
* 康复课程信息
*
* @author : june
* @date: 2022/12/13 10:24
**/
@Data
public class RecoveryCourseDetailVO {
private String id;
private String courseId;
/**
* 疾病代码
*/
private String diseaseType;
/**
* 课程名称
*/
private String courseName;
/**
* 教练性别
*/
private String coachGender;
/**
* 课程地址
*/
private String courseM3u81080Url;
/**
* 课程秒数
*/
private Integer courseTimeSeconds;
/**
* 课程热量
*/
private Integer courseEnergy;
/**
* 运动能力
*/
private Integer athleticAbility;
/**
* 课程难度
*/
private Integer courseDifficulties;
/**
* 课程强度
*/
private Integer courseIntensity;
/**
* 运动水平
*/
private Integer exerciseLevel;
/**
* 视频封面地址
*/
private String courseImageUrl;
}
package com.jiankangyouyi.cloud.motorplan.model.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author :wangyalei
* @date :Created in 2021/7/16 4:28 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UserExerciseAdviceVO {
/**
* 运动建议
*/
private String advice;
}
package com.jiankangyouyi.cloud.motorplan.model.vo;
import com.jiankangyouyi.cloud.data.center.api.model.entity.component.HealthProblemInfo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author :wangyalei
* @date :Created in 2021/7/13 4:02 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UserRecordInfoVO2 {
/**
* NULl 出生日期 yyyy-MM-dd
*/
private String birthday;
/**
* NULL 性别 0 未知 1 男 2 女
*/
private String gender;
/**
* NULL 身高,单位cm,大于等于30,小于等于230
*/
private Integer height;
/**
* NULL 体重,单位kg,保留1位小数,大于等于20,小于等于200
*/
private Double weight;
/**
* NULL 用户通过健康评估问卷评估的健康问题
*/
private List<HealthProblemInfo> healthProblemInfos;
/**
* 运动能力等级
* {@link com.jiankangyouyi.cloud.data.center.api.enums.ExerciseLevelEnum}
*/
private Integer exerciseRiskLevel;
/**
* 运动水平等级
* {@link com.jiankangyouyi.cloud.data.center.api.enums.ExerciseLevelEnum}
*/
private Integer exerciseLevel;
/**
* 动作禁忌类型 {@link com.jiankangyouyi.cloud.basedata.api.enums.action.ActionFeatureEnum}
*/
private List<String> actionTaboos;
/**
* 用户身体运动评估状态 {@link com.jiankangyouyi.cloud.motorplan.enums.BodyExerciseEvaluationStatusEnum}
*/
private String bodyExerciseEvaluationStatus;
/**
* 分娩日期 / yyyy-MM-dd
*/
private String deliveryDate;
}
package com.jiankangyouyi.cloud.motorplan.model.vo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* TODO:功能描述
*
* @author : lvhaoran
* @date Date : 2022年12月09日
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ByReplaceActionInfo {
@NotBlank(message = "请求参数 byReplaceActionId 不能为空")
@Size(max = 32, message = "请求参数 byReplaceActionId 超过最大有效长度 32")
private String byReplaceActionId;
@NotBlank(message = "请求参数 replaceActionId 不能为空")
@Size(max = 32, message = "请求参数 replaceActionId 超过最大有效长度 32")
private String replaceActionId;
}
package com.jiankangyouyi.cloud.motorplan.model.vo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author :wangyalei
* @date :Created in 2021/7/7 7:25 下午
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class DiseaseInfo {
/**
* 疾病类型
*/
private String diseaseType;
/**
* 风险等级
*/
private Integer riskLevel;
}
package com.jiankangyouyi.cloud.motorplan.model.vo.component;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 替换信息
*
* @author : lvhaoran
* @date Date : 2022年12月09日
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ReplaceInfo {
private String replaceActionId;
private String replaceActionName;
private Integer byReplaceactionCount;
private List<ByReplaceActionInfo> byReplaceActionList;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment