package com.yunhai.acaclassassign.entity; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Table; import javax.persistence.UniqueConstraint; import java.time.LocalDateTime; /** * 分班结果推送记录:每项目一条(提交分班结果 → 推送班级管理)。 *
推送与提交解耦:推送异常不回滚提交锁定,只影响本表状态; * 状态机 0未推送 → 4推送中 → 1已推送 / 2部分失败 / 3失败(推送中拒绝重复 Push)。 * 重推幂等依赖被推方按 code/account 查重,本表只收敛状态与失败明细。
*/ @Getter @Setter @NoArgsConstructor @Entity @Table(name = "aca_assign_push", uniqueConstraints = @UniqueConstraint(name = "uk_apush_project", columnNames = "project_id")) public class AssignPush extends BaseEntity { public static final int STATUS_NONE = 0; public static final int STATUS_OK = 1; public static final int STATUS_PARTIAL = 2; public static final int STATUS_FAIL = 3; public static final int STATUS_PUSHING = 4; /** 所属分班项目(唯一) */ @Column(name = "project_id", nullable = false) private Integer projectId; /** 状态:0未推送 1已推送 2部分失败 3失败 4推送中 */ @Column(name = "status", nullable = false, columnDefinition = "TINYINT DEFAULT 0") private Integer status; /** 最近一次推送完成时间 */ @Column(name = "push_time") private LocalDateTime pushTime; /** 本地班级id → 平台班级id(班级组id)映射 JSON:{"12":9901,...} */ @Column(name = "class_map_json", columnDefinition = "TEXT") private String classMapJson; /** 未成功学生明细 JSON:[{"studentId":1,"name":"张三","reason":"..."}](跨多次推送合并收敛) */ @Column(name = "fail_json", columnDefinition = "TEXT") private String failJson; /** 摘要信息(成功 N 班 M 人 / 失败原因) */ @Column(name = "msg", length = 512) private String msg; }