package com.xuqm.im.entity; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.xuqm.im.json.EpochMillisLocalDateTimeSerializer; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.Index; import jakarta.persistence.Table; import java.time.LocalDateTime; @Entity @Table( name = "im_group_join_request", indexes = @Index(name = "idx_group_join_request_app_group", columnList = "appId,groupId") ) public class ImGroupJoinRequestEntity extends BaseIdEntity { public enum Status { PENDING, ACCEPTED, REJECTED } @Column(nullable = false, length = 64) private String appId; @Column(nullable = false, length = 64) private String groupId; @Column(nullable = false, length = 128) private String requesterId; @Column(length = 256) private String remark; @Column(nullable = false, length = 16) private String status; @Column(nullable = false) private LocalDateTime createdAt; private LocalDateTime reviewedAt; public String getAppId() { return appId; } public void setAppId(String appId) { this.appId = appId; } public String getGroupId() { return groupId; } public void setGroupId(String groupId) { this.groupId = groupId; } public String getRequesterId() { return requesterId; } public void setRequesterId(String requesterId) { this.requesterId = requesterId; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } @JsonSerialize(using = EpochMillisLocalDateTimeSerializer.class) public LocalDateTime getCreatedAt() { return createdAt; } public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; } @JsonSerialize(using = EpochMillisLocalDateTimeSerializer.class) public LocalDateTime getReviewedAt() { return reviewedAt; } public void setReviewedAt(LocalDateTime reviewedAt) { this.reviewedAt = reviewedAt; } }