package com.rongyichuang.activity.entity;
|
|
import com.rongyichuang.rating.entity.RatingScheme;
|
import jakarta.persistence.*;
|
import org.hibernate.annotations.CreationTimestamp;
|
import org.hibernate.annotations.UpdateTimestamp;
|
|
import java.time.LocalDateTime;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
@Entity
|
@Table(name = "t_activity")
|
public class Activity {
|
|
@Id
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
private Long id;
|
|
@Column(name = "pid", nullable = false)
|
private Long pid = 0L;
|
|
@Column(name = "path", nullable = false)
|
private String path = "";
|
|
@Column(name = "name", nullable = false, length = 128)
|
private String name;
|
|
@Column(name = "description", columnDefinition = "TEXT")
|
private String description;
|
|
@Column(name = "signup_deadline", nullable = false)
|
private LocalDateTime signupDeadline;
|
|
@Column(name = "match_time")
|
private LocalDateTime matchTime;
|
|
@Column(name = "address")
|
private String address;
|
|
@Column(name = "rating_scheme_id", nullable = false)
|
private Long ratingSchemeId;
|
|
@Column(name = "player_max")
|
private Integer playerMax;
|
|
@Column(name = "state", nullable = false)
|
private Integer state = 1;
|
|
@Column(name = "create_time", nullable = false, updatable = false)
|
@CreationTimestamp
|
private LocalDateTime createTime;
|
|
@Column(name = "create_user_id")
|
private Long createUserId;
|
|
@Column(name = "update_time", nullable = false)
|
@UpdateTimestamp
|
private LocalDateTime updateTime;
|
|
@Column(name = "update_user_id")
|
private Long updateUserId;
|
|
@Version
|
@Column(name = "version", nullable = false)
|
private Long version = 0L;
|
|
// 关联评分模板
|
@ManyToOne(fetch = FetchType.LAZY)
|
@JoinColumn(name = "rating_scheme_id", insertable = false, updatable = false)
|
private RatingScheme ratingScheme;
|
|
// 比赛阶段(子活动)
|
@OneToMany(fetch = FetchType.LAZY)
|
@JoinColumn(name = "pid")
|
private List<Activity> stages = new ArrayList<>();
|
|
// 父比赛 - 只有当 pid > 0 时才关联父记录
|
@ManyToOne(fetch = FetchType.LAZY)
|
@JoinColumn(name = "pid", insertable = false, updatable = false)
|
@org.hibernate.annotations.Where(clause = "pid > 0")
|
private Activity parent;
|
|
// 构造函数
|
public Activity() {}
|
|
public Activity(String name, String description, LocalDateTime signupDeadline,
|
LocalDateTime matchTime, String address, Long ratingSchemeId, Integer playerMax) {
|
this.name = name;
|
this.description = description;
|
this.signupDeadline = signupDeadline;
|
this.matchTime = matchTime;
|
this.address = address;
|
this.ratingSchemeId = ratingSchemeId;
|
this.playerMax = playerMax;
|
}
|
|
// Getters and Setters
|
public Long getId() {
|
return id;
|
}
|
|
public void setId(Long id) {
|
this.id = id;
|
}
|
|
public Long getPid() {
|
return pid;
|
}
|
|
public void setPid(Long pid) {
|
this.pid = pid;
|
}
|
|
public String getPath() {
|
return path;
|
}
|
|
public void setPath(String path) {
|
this.path = path;
|
}
|
|
public String getName() {
|
return name;
|
}
|
|
public void setName(String name) {
|
this.name = name;
|
}
|
|
public String getDescription() {
|
return description;
|
}
|
|
public void setDescription(String description) {
|
this.description = description;
|
}
|
|
public LocalDateTime getSignupDeadline() {
|
return signupDeadline;
|
}
|
|
public void setSignupDeadline(LocalDateTime signupDeadline) {
|
this.signupDeadline = signupDeadline;
|
}
|
|
public LocalDateTime getMatchTime() {
|
return matchTime;
|
}
|
|
public void setMatchTime(LocalDateTime matchTime) {
|
this.matchTime = matchTime;
|
}
|
|
public String getAddress() {
|
return address;
|
}
|
|
public void setAddress(String address) {
|
this.address = address;
|
}
|
|
public Long getRatingSchemeId() {
|
return ratingSchemeId;
|
}
|
|
public void setRatingSchemeId(Long ratingSchemeId) {
|
this.ratingSchemeId = ratingSchemeId;
|
}
|
|
public Integer getPlayerMax() {
|
return playerMax;
|
}
|
|
public void setPlayerMax(Integer playerMax) {
|
this.playerMax = playerMax;
|
}
|
|
public Integer getState() {
|
return state;
|
}
|
|
public void setState(Integer state) {
|
this.state = state;
|
}
|
|
public LocalDateTime getCreateTime() {
|
return createTime;
|
}
|
|
public void setCreateTime(LocalDateTime createTime) {
|
this.createTime = createTime;
|
}
|
|
public Long getCreateUserId() {
|
return createUserId;
|
}
|
|
public void setCreateUserId(Long createUserId) {
|
this.createUserId = createUserId;
|
}
|
|
public LocalDateTime getUpdateTime() {
|
return updateTime;
|
}
|
|
public void setUpdateTime(LocalDateTime updateTime) {
|
this.updateTime = updateTime;
|
}
|
|
public Long getUpdateUserId() {
|
return updateUserId;
|
}
|
|
public void setUpdateUserId(Long updateUserId) {
|
this.updateUserId = updateUserId;
|
}
|
|
public Long getVersion() {
|
return version;
|
}
|
|
public void setVersion(Long version) {
|
this.version = version;
|
}
|
|
public RatingScheme getRatingScheme() {
|
return ratingScheme;
|
}
|
|
public void setRatingScheme(RatingScheme ratingScheme) {
|
this.ratingScheme = ratingScheme;
|
}
|
|
public List<Activity> getStages() {
|
return stages;
|
}
|
|
public void setStages(List<Activity> stages) {
|
this.stages = stages;
|
}
|
|
public Activity getParent() {
|
return parent;
|
}
|
|
public void setParent(Activity parent) {
|
this.parent = parent;
|
}
|
|
// 业务方法
|
public boolean isCompetition() {
|
return pid == 0;
|
}
|
|
public boolean isStage() {
|
return pid > 0;
|
}
|
}
|