You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.9 KiB
64 lines
1.9 KiB
package com.mydreamjob.offer;
|
|
|
|
import jakarta.persistence.*;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.Builder;
|
|
import lombok.Data;
|
|
import lombok.NoArgsConstructor;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
/**
|
|
* Offer 提醒记录
|
|
*
|
|
* <p>reminder_type:EXPIRING_3_DAYS / EXPIRING_1_DAY(定时任务)、MANUAL(企业手动)。
|
|
* status:SCHEDULED / SENT / SKIPPED。
|
|
* 唯一约束 (offer_id, reminder_type) 保证同一类型提醒只创建一次。
|
|
*/
|
|
@Data
|
|
@Builder
|
|
@NoArgsConstructor
|
|
@AllArgsConstructor
|
|
@Entity
|
|
@Table(name = "offer_reminders",
|
|
uniqueConstraints = @UniqueConstraint(name = "uk_offer_reminders",
|
|
columnNames = {"offer_id", "reminder_type"}))
|
|
public class OfferReminder {
|
|
|
|
public static final String TYPE_EXPIRING_3_DAYS = "EXPIRING_3_DAYS";
|
|
public static final String TYPE_EXPIRING_1_DAY = "EXPIRING_1_DAY";
|
|
public static final String TYPE_MANUAL = "MANUAL";
|
|
|
|
public static final String STATUS_SCHEDULED = "SCHEDULED";
|
|
public static final String STATUS_SENT = "SENT";
|
|
public static final String STATUS_SKIPPED = "SKIPPED";
|
|
|
|
@Id
|
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
private Long id;
|
|
|
|
@Column(name = "offer_id", nullable = false)
|
|
private Long offerId;
|
|
|
|
@Column(name = "reminder_type", nullable = false, length = 20)
|
|
private String reminderType;
|
|
|
|
@Column(name = "remind_at", nullable = false)
|
|
private LocalDateTime remindAt;
|
|
|
|
@Column(name = "sent_at")
|
|
private LocalDateTime sentAt;
|
|
|
|
@Column(name = "status", nullable = false, length = 20)
|
|
@Builder.Default
|
|
private String status = "SCHEDULED";
|
|
|
|
@Column(name = "created_at", nullable = false, updatable = false)
|
|
private LocalDateTime createdAt;
|
|
|
|
@PrePersist
|
|
void prePersist() {
|
|
if (createdAt == null) createdAt = LocalDateTime.now();
|
|
if (status == null) status = STATUS_SCHEDULED;
|
|
}
|
|
}
|
|
|