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.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.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.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 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;
}
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