package com.talentcard.server.talentcard; import java.time.LocalDate; import java.time.LocalDateTime; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.PrePersist; import jakarta.persistence.PreUpdate; import jakarta.persistence.Table; @Entity @Table(name = "talent_card") public class TalentCard { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "talent_id", nullable = false) private Long talentId; @Column(name = "card_no", nullable = false, unique = true, length = 64) private String cardNo; @Column(name = "card_type", length = 32) private String cardType = "PERSONAL"; @Column(name = "card_level", length = 64) private String cardLevel; @Column(name = "valid_start") private LocalDate validStart; @Column(name = "valid_end") private LocalDate validEnd; @Column(name = "qr_code", length = 512) private String qrCode; @Column(name = "issue_time") private LocalDateTime issueTime; @Column(name = "status") private Byte status = 1; @Column(name = "remark", length = 512) private String remark; @Column(name = "created_at") private LocalDateTime createdAt; @Column(name = "updated_at") private LocalDateTime updatedAt; @Column(name = "deleted") private Byte deleted = 0; @Column(name = "expire_time") private LocalDateTime expireTime; @Column(name = "is_family_card_enabled", nullable = false) private Byte familyCardEnabled = 0; @Column(name = "family_card_limit", nullable = false) private Integer familyCardLimit = 0; protected TalentCard() { } public TalentCard(Long talentId, String cardNo, String cardType, String cardLevel) { this.talentId = talentId; this.cardNo = cardNo; this.cardType = cardType; this.cardLevel = cardLevel; } @PrePersist void onCreate() { LocalDateTime now = LocalDateTime.now(); if (createdAt == null) { createdAt = now; } updatedAt = now; } @PreUpdate void onUpdate() { updatedAt = LocalDateTime.now(); } public Long getId() { return id; } public Long getTalentId() { return talentId; } public String getCardNo() { return cardNo; } public String getCardType() { return cardType; } public String getCardLevel() { return cardLevel; } public LocalDate getValidStart() { return validStart; } public LocalDate getValidEnd() { return validEnd; } public String getQrCode() { return qrCode; } public LocalDateTime getIssueTime() { return issueTime; } public Byte getStatus() { return status; } public String getRemark() { return remark; } public LocalDateTime getCreatedAt() { return createdAt; } public LocalDateTime getUpdatedAt() { return updatedAt; } public Byte getDeleted() { return deleted; } public LocalDateTime getExpireTime() { return expireTime; } public Byte getFamilyCardEnabled() { return familyCardEnabled; } public Integer getFamilyCardLimit() { return familyCardLimit; } }