72 lines
1.9 KiB
Java
72 lines
1.9 KiB
Java
package com.yunhai.campusnotice.entity;
|
||
|
||
import lombok.Data;
|
||
import lombok.EqualsAndHashCode;
|
||
import lombok.NoArgsConstructor;
|
||
|
||
import javax.persistence.*;
|
||
import java.time.LocalDateTime;
|
||
|
||
/**
|
||
* 通知阅读记录(懒标记)。对应原 .NET Notify_ReceiveList 的「逐用户阅读状态」语义,
|
||
* 但仅在读者首次查看时落库,避免发通知时预插全员。
|
||
* <p>
|
||
* 唯一约束 (notice_id, reader_account):同一用户对同一通知只记一条已读。
|
||
*/
|
||
@NoArgsConstructor
|
||
@Data
|
||
@Entity
|
||
@Table(name = "notice_read",
|
||
uniqueConstraints = @UniqueConstraint(
|
||
name = "uk_notice_reader",
|
||
columnNames = {"notice_id", "reader_account"}))
|
||
@EqualsAndHashCode(onlyExplicitlyIncluded = true, callSuper = false)
|
||
public class NoticeRead extends BaseEntity {
|
||
|
||
/**
|
||
* 通知ID(关联 notice.id)
|
||
*/
|
||
@Column(name = "notice_id", nullable = false)
|
||
private Integer noticeId;
|
||
|
||
/**
|
||
* 读者登录账号
|
||
*/
|
||
@Column(name = "reader_account", nullable = false, length = 64)
|
||
private String readerAccount;
|
||
|
||
/**
|
||
* 读者姓名
|
||
*/
|
||
@Column(name = "reader_name", length = 64)
|
||
private String readerName;
|
||
|
||
/**
|
||
* 阅读时间
|
||
*/
|
||
@Column(name = "read_time")
|
||
private LocalDateTime readTime;
|
||
|
||
// ==================== 阅读身份快照(改造方案 2.3,学员阅读时带出) ====================
|
||
|
||
/** 学校ID(取通知 sch_id) */
|
||
@Column(name = "sch_id")
|
||
private Integer schId;
|
||
|
||
/** 年级ID快照 */
|
||
@Column(name = "grade_id")
|
||
private Integer gradeId;
|
||
|
||
/** 年级名称快照 */
|
||
@Column(name = "grade_name", length = 128)
|
||
private String gradeName;
|
||
|
||
/** 班级ID快照 */
|
||
@Column(name = "class_id")
|
||
private Integer classId;
|
||
|
||
/** 班级名称快照 */
|
||
@Column(name = "class_name", length = 128)
|
||
private String className;
|
||
}
|