|
|
|
@ -1,340 +1,266 @@
|
|
|
|
|
// 包声明:实体类包,存放所有与数据库表映射的JavaBean对象
|
|
|
|
|
package com.entity;
|
|
|
|
|
|
|
|
|
|
// 字段描述注解:自定义数据库字段元数据
|
|
|
|
|
import com.annotation.ColumnInfo;
|
|
|
|
|
// 数据校验注解:提供非空、范围等验证规则
|
|
|
|
|
import javax.validation.constraints.*;
|
|
|
|
|
// JSON序列化配置:忽略未定义属性
|
|
|
|
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|
|
|
|
// 反射异常类:处理属性拷贝时的异常
|
|
|
|
|
import java.lang.reflect.InvocationTargetException;
|
|
|
|
|
// 序列化接口标识
|
|
|
|
|
import java.io.Serializable;
|
|
|
|
|
// 集合工具类
|
|
|
|
|
import java.util.*;
|
|
|
|
|
// Apache Ant日期工具(代码中未使用,建议移除)
|
|
|
|
|
import org.apache.tools.ant.util.DateUtils;
|
|
|
|
|
// Spring日期参数绑定注解
|
|
|
|
|
import org.springframework.format.annotation.DateTimeFormat;
|
|
|
|
|
// Jackson日期格式化注解
|
|
|
|
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
|
|
|
// Bean属性拷贝工具
|
|
|
|
|
import org.apache.commons.beanutils.BeanUtils;
|
|
|
|
|
// MyBatis Plus字段注解
|
|
|
|
|
import com.baomidou.mybatisplus.annotations.TableField;
|
|
|
|
|
// MyBatis Plus主键注解
|
|
|
|
|
import com.baomidou.mybatisplus.annotations.TableId;
|
|
|
|
|
// MyBatis Plus表名注解
|
|
|
|
|
import com.baomidou.mybatisplus.annotations.TableName;
|
|
|
|
|
// MyBatis Plus主键策略枚举
|
|
|
|
|
import com.baomidou.mybatisplus.enums.IdType;
|
|
|
|
|
// MyBatis Plus字段填充策略
|
|
|
|
|
import com.baomidou.mybatisplus.enums.FieldFill;
|
|
|
|
|
// 自定义日期格式化工具
|
|
|
|
|
import com.utils.DateUtil;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 健身课程
|
|
|
|
|
*
|
|
|
|
|
* @author
|
|
|
|
|
* @email
|
|
|
|
|
*/
|
|
|
|
|
@TableName("jianshenkecheng")
|
|
|
|
|
// 健身课程实体
|
|
|
|
|
//映射数据库表 jianshenkecheng
|
|
|
|
|
//存储健身课程基本信息、统计数据和关联信息
|
|
|
|
|
|
|
|
|
|
@TableName("jianshenkecheng") // 指定关联数据库表名
|
|
|
|
|
public class JianshenkechengEntity<T> implements Serializable {
|
|
|
|
|
// 序列化版本标识(类版本控制)
|
|
|
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 空构造器(持久层框架需要)
|
|
|
|
|
public JianshenkechengEntity() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 泛型构造器:通过反射进行属性拷贝
|
|
|
|
|
public JianshenkechengEntity(T t) {
|
|
|
|
|
try {
|
|
|
|
|
BeanUtils.copyProperties(this, t);
|
|
|
|
|
BeanUtils.copyProperties(this, t); // 使用Apache工具类拷贝属性
|
|
|
|
|
} catch (IllegalAccessException | InvocationTargetException e) {
|
|
|
|
|
// TODO Auto-generated catch block
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
e.printStackTrace(); // 生产环境建议改为日志记录
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 主键
|
|
|
|
|
*/
|
|
|
|
|
@TableId(type = IdType.AUTO)
|
|
|
|
|
@ColumnInfo(comment="主键",type="int(11)")
|
|
|
|
|
@TableField(value = "id")
|
|
|
|
|
|
|
|
|
|
// 主键字段(自增策略)
|
|
|
|
|
@TableId(type = IdType.AUTO) // 主键生成策略:数据库自增
|
|
|
|
|
@ColumnInfo(comment="主键",type="int(11)") // 字段注释:主键,数据库类型int(11)
|
|
|
|
|
@TableField("id") // 映射数据库字段名(可省略)
|
|
|
|
|
private Integer id;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 教练
|
|
|
|
|
*/
|
|
|
|
|
@ColumnInfo(comment="教练",type="int(11)")
|
|
|
|
|
@TableField(value = "jiaolian_id")
|
|
|
|
|
|
|
|
|
|
// 关联教练ID(外键)
|
|
|
|
|
@ColumnInfo(comment="教练",type="int(11)") // 关联jiaolian表主键
|
|
|
|
|
@TableField("jiaolian_id")
|
|
|
|
|
private Integer jiaolianId;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 健身课程名称
|
|
|
|
|
*/
|
|
|
|
|
@ColumnInfo(comment="健身课程名称",type="varchar(200)")
|
|
|
|
|
@TableField(value = "jianshenkecheng_name")
|
|
|
|
|
|
|
|
|
|
// 课程名称(需考虑唯一性约束)
|
|
|
|
|
@ColumnInfo(comment="健身课程名称",type="varchar(200)") // 数据库类型varchar(200)
|
|
|
|
|
@TableField("jianshenkecheng_name")
|
|
|
|
|
private String jianshenkechengName;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 健身课程照片
|
|
|
|
|
*/
|
|
|
|
|
@ColumnInfo(comment="健身课程照片",type="varchar(200)")
|
|
|
|
|
@TableField(value = "jianshenkecheng_photo")
|
|
|
|
|
|
|
|
|
|
// 课程封面图URL(建议添加OSS存储注释)
|
|
|
|
|
@ColumnInfo(comment="健身课程照片",type="varchar(200)") // 存储图片路径
|
|
|
|
|
@TableField("jianshenkecheng_photo")
|
|
|
|
|
private String jianshenkechengPhoto;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 课程视频
|
|
|
|
|
*/
|
|
|
|
|
@ColumnInfo(comment="课程视频",type="varchar(200)")
|
|
|
|
|
@TableField(value = "jianshenkecheng_video")
|
|
|
|
|
|
|
|
|
|
// 课程视频地址(建议标注支持的格式)
|
|
|
|
|
@ColumnInfo(comment="课程视频",type="varchar(200)") // 存储视频文件路径或URL
|
|
|
|
|
@TableField("jianshenkecheng_video")
|
|
|
|
|
private String jianshenkechengVideo;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 赞
|
|
|
|
|
*/
|
|
|
|
|
@ColumnInfo(comment="赞",type="int(11)")
|
|
|
|
|
@TableField(value = "zan_number")
|
|
|
|
|
|
|
|
|
|
// 点赞计数器(建议添加并发控制)
|
|
|
|
|
@ColumnInfo(comment="赞",type="int(11)") // 默认值建议设置为0
|
|
|
|
|
@TableField("zan_number")
|
|
|
|
|
private Integer zanNumber;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 踩
|
|
|
|
|
*/
|
|
|
|
|
// 点踩计数器(考虑是否需要负值限制)
|
|
|
|
|
@ColumnInfo(comment="踩",type="int(11)")
|
|
|
|
|
@TableField(value = "cai_number")
|
|
|
|
|
|
|
|
|
|
@TableField("cai_number")
|
|
|
|
|
private Integer caiNumber;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 健身课程类型
|
|
|
|
|
*/
|
|
|
|
|
@ColumnInfo(comment="健身课程类型",type="int(11)")
|
|
|
|
|
@TableField(value = "jianshenkecheng_types")
|
|
|
|
|
|
|
|
|
|
// 课程分类(应关联字典表或使用枚举类)
|
|
|
|
|
@ColumnInfo(comment="健身课程类型",type="int(11)") // 例:1-有氧 2-力量 3-柔韧
|
|
|
|
|
@TableField("jianshenkecheng_types")
|
|
|
|
|
private Integer jianshenkechengTypes;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 健身课程热度
|
|
|
|
|
*/
|
|
|
|
|
@ColumnInfo(comment="健身课程热度",type="int(11)")
|
|
|
|
|
@TableField(value = "jianshenkecheng_clicknum")
|
|
|
|
|
|
|
|
|
|
// 点击量统计(可考虑每日统计优化)
|
|
|
|
|
@ColumnInfo(comment="健身课程热度",type="int(11)") // 记录课程查看次数
|
|
|
|
|
@TableField("jianshenkecheng_clicknum")
|
|
|
|
|
private Integer jianshenkechengClicknum;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 健身课程介绍
|
|
|
|
|
*/
|
|
|
|
|
@ColumnInfo(comment="健身课程介绍",type="longtext")
|
|
|
|
|
@TableField(value = "jianshenkecheng_content")
|
|
|
|
|
|
|
|
|
|
// 富文本课程介绍(需考虑XSS防护)
|
|
|
|
|
@ColumnInfo(comment="健身课程介绍",type="longtext") // 存储HTML格式内容
|
|
|
|
|
@TableField("jianshenkecheng_content")
|
|
|
|
|
private String jianshenkechengContent;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 逻辑删除
|
|
|
|
|
*/
|
|
|
|
|
@ColumnInfo(comment="逻辑删除",type="int(11)")
|
|
|
|
|
@TableField(value = "data_delete")
|
|
|
|
|
|
|
|
|
|
// 逻辑删除标志(0-未删除 1-已删除)
|
|
|
|
|
@ColumnInfo(comment="逻辑删除",type="int(11)") // 替代物理删除
|
|
|
|
|
@TableField("data_delete")
|
|
|
|
|
private Integer dataDelete;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 录入时间
|
|
|
|
|
*/
|
|
|
|
|
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
|
|
|
|
|
@DateTimeFormat
|
|
|
|
|
@ColumnInfo(comment="录入时间",type="timestamp")
|
|
|
|
|
@TableField(value = "insert_time",fill = FieldFill.INSERT)
|
|
|
|
|
|
|
|
|
|
// 数据录入时间(管理后台操作时间)
|
|
|
|
|
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss") // 响应格式
|
|
|
|
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") // 请求参数格式
|
|
|
|
|
@ColumnInfo(comment="录入时间",type="timestamp") // 数据库类型timestamp
|
|
|
|
|
@TableField(value = "insert_time", fill = FieldFill.INSERT) // 新增时自动填充
|
|
|
|
|
private Date insertTime;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 创建时间 homeMain
|
|
|
|
|
*/
|
|
|
|
|
// 课程创建时间(业务时间,可能与insert_time重复)
|
|
|
|
|
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
|
|
|
|
|
@DateTimeFormat
|
|
|
|
|
@ColumnInfo(comment="创建时间",type="timestamp")
|
|
|
|
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
|
|
|
|
@ColumnInfo(comment="创建时间",type="timestamp") // 建议确认与insert_time的区别
|
|
|
|
|
@TableField(value = "create_time", fill = FieldFill.INSERT)
|
|
|
|
|
|
|
|
|
|
private Date createTime;
|
|
|
|
|
|
|
|
|
|
// ----------------------------- Getter/Setter方法 -----------------------------
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取:主键
|
|
|
|
|
*/
|
|
|
|
|
// 主键访问器
|
|
|
|
|
public Integer getId() {
|
|
|
|
|
return id;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 设置:主键
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 主键修改器
|
|
|
|
|
public void setId(Integer id) {
|
|
|
|
|
this.id = id;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 获取:教练
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 教练ID访问器
|
|
|
|
|
public Integer getJiaolianId() {
|
|
|
|
|
return jiaolianId;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 设置:教练
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 教练ID修改器(应校验教练存在性)
|
|
|
|
|
public void setJiaolianId(Integer jiaolianId) {
|
|
|
|
|
this.jiaolianId = jiaolianId;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 获取:健身课程名称
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 课程名称访问器
|
|
|
|
|
public String getJianshenkechengName() {
|
|
|
|
|
return jianshenkechengName;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 设置:健身课程名称
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 课程名称修改器(建议添加唯一性校验)
|
|
|
|
|
public void setJianshenkechengName(String jianshenkechengName) {
|
|
|
|
|
this.jianshenkechengName = jianshenkechengName;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 获取:健身课程照片
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 课程图片访问器
|
|
|
|
|
public String getJianshenkechengPhoto() {
|
|
|
|
|
return jianshenkechengPhoto;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 设置:健身课程照片
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 课程图片修改器(建议添加格式校验)
|
|
|
|
|
public void setJianshenkechengPhoto(String jianshenkechengPhoto) {
|
|
|
|
|
this.jianshenkechengPhoto = jianshenkechengPhoto;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 获取:课程视频
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 课程视频访问器
|
|
|
|
|
public String getJianshenkechengVideo() {
|
|
|
|
|
return jianshenkechengVideo;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 设置:课程视频
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 课程视频修改器(建议添加视频格式校验)
|
|
|
|
|
public void setJianshenkechengVideo(String jianshenkechengVideo) {
|
|
|
|
|
this.jianshenkechengVideo = jianshenkechengVideo;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 获取:赞
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 点赞数访问器
|
|
|
|
|
public Integer getZanNumber() {
|
|
|
|
|
return zanNumber;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 设置:赞
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 点赞数修改器(建议添加非负校验)
|
|
|
|
|
public void setZanNumber(Integer zanNumber) {
|
|
|
|
|
this.zanNumber = zanNumber;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 获取:踩
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 点踩数访问器
|
|
|
|
|
public Integer getCaiNumber() {
|
|
|
|
|
return caiNumber;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 设置:踩
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 点踩数修改器(建议添加非负校验)
|
|
|
|
|
public void setCaiNumber(Integer caiNumber) {
|
|
|
|
|
this.caiNumber = caiNumber;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 获取:健身课程类型
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 课程类型访问器
|
|
|
|
|
public Integer getJianshenkechengTypes() {
|
|
|
|
|
return jianshenkechengTypes;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 设置:健身课程类型
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 课程类型修改器(应限制有效值范围)
|
|
|
|
|
public void setJianshenkechengTypes(Integer jianshenkechengTypes) {
|
|
|
|
|
this.jianshenkechengTypes = jianshenkechengTypes;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 获取:健身课程热度
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 点击量访问器
|
|
|
|
|
public Integer getJianshenkechengClicknum() {
|
|
|
|
|
return jianshenkechengClicknum;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 设置:健身课程热度
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 点击量修改器(建议只允许递增)
|
|
|
|
|
public void setJianshenkechengClicknum(Integer jianshenkechengClicknum) {
|
|
|
|
|
this.jianshenkechengClicknum = jianshenkechengClicknum;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 获取:健身课程介绍
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 课程详情访问器
|
|
|
|
|
public String getJianshenkechengContent() {
|
|
|
|
|
return jianshenkechengContent;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 设置:健身课程介绍
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 课程详情修改器(建议添加HTML过滤)
|
|
|
|
|
public void setJianshenkechengContent(String jianshenkechengContent) {
|
|
|
|
|
this.jianshenkechengContent = jianshenkechengContent;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 获取:逻辑删除
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 逻辑删除标志访问器
|
|
|
|
|
public Integer getDataDelete() {
|
|
|
|
|
return dataDelete;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 设置:逻辑删除
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 逻辑删除标志修改器(应限制0/1取值)
|
|
|
|
|
public void setDataDelete(Integer dataDelete) {
|
|
|
|
|
this.dataDelete = dataDelete;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 获取:录入时间
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 录入时间访问器(通常自动生成)
|
|
|
|
|
public Date getInsertTime() {
|
|
|
|
|
return insertTime;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 设置:录入时间
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 录入时间修改器(通常无需手动设置)
|
|
|
|
|
public void setInsertTime(Date insertTime) {
|
|
|
|
|
this.insertTime = insertTime;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 获取:创建时间 homeMain
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 创建时间访问器(注意与insert_time区别)
|
|
|
|
|
public Date getCreateTime() {
|
|
|
|
|
return createTime;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 设置:创建时间 homeMain
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 创建时间修改器(需确认业务场景)
|
|
|
|
|
public void setCreateTime(Date createTime) {
|
|
|
|
|
this.createTime = createTime;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 对象字符串表示(调试用)
|
|
|
|
|
@Override
|
|
|
|
|
public String toString() {
|
|
|
|
|
return "Jianshenkecheng{" +
|
|
|
|
@ -349,7 +275,7 @@ public class JianshenkechengEntity<T> implements Serializable {
|
|
|
|
|
", jianshenkechengClicknum=" + jianshenkechengClicknum +
|
|
|
|
|
", jianshenkechengContent=" + jianshenkechengContent +
|
|
|
|
|
", dataDelete=" + dataDelete +
|
|
|
|
|
", insertTime=" + DateUtil.convertString(insertTime,"yyyy-MM-dd") +
|
|
|
|
|
", insertTime=" + DateUtil.convertString(insertTime,"yyyy-MM-dd") + // 格式化丢失时间精度
|
|
|
|
|
", createTime=" + DateUtil.convertString(createTime,"yyyy-MM-dd") +
|
|
|
|
|
"}";
|
|
|
|
|
}
|
|
|
|
|