- 实现了本地IM缓存功能,支持会话、消息历史和草稿的存储 - 开发了聊天界面UI组件,包含消息列表、输入框和搜索功能 - 创建了聊天相关的ViewModel,处理消息收发和状态管理 - 构建了会话列表界面,支持置顶、免打扰和删除操作 - 集成了群组功能,实现群聊管理和群设置界面 - 添加了实时消息推送和会话状态同步机制
74 行
2.3 KiB
Java
74 行
2.3 KiB
Java
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.EnumType;
|
|
import jakarta.persistence.Enumerated;
|
|
import jakarta.persistence.Id;
|
|
import jakarta.persistence.Table;
|
|
import jakarta.persistence.UniqueConstraint;
|
|
import java.time.LocalDateTime;
|
|
|
|
@Entity
|
|
@Table(name = "im_account",
|
|
uniqueConstraints = @UniqueConstraint(columnNames = {"appId", "userId"}))
|
|
public class ImAccountEntity {
|
|
|
|
public enum Gender { UNKNOWN, MALE, FEMALE }
|
|
public enum Status { ACTIVE, BANNED }
|
|
|
|
@Id
|
|
private String id;
|
|
|
|
@Column(nullable = false, length = 64)
|
|
private String appId;
|
|
|
|
@Column(nullable = false, length = 128)
|
|
private String userId;
|
|
|
|
@Column(length = 64)
|
|
private String nickname;
|
|
|
|
@Enumerated(EnumType.STRING)
|
|
@Column(length = 16)
|
|
private Gender gender;
|
|
|
|
@Column(length = 512)
|
|
private String avatar;
|
|
|
|
@Enumerated(EnumType.STRING)
|
|
@Column(nullable = false, length = 16)
|
|
private Status status;
|
|
|
|
@Column(nullable = false)
|
|
@JsonSerialize(using = EpochMillisLocalDateTimeSerializer.class)
|
|
private LocalDateTime createdAt;
|
|
|
|
public String getId() { return id; }
|
|
public void setId(String id) { this.id = id; }
|
|
|
|
public String getAppId() { return appId; }
|
|
public void setAppId(String appId) { this.appId = appId; }
|
|
|
|
public String getUserId() { return userId; }
|
|
public void setUserId(String userId) { this.userId = userId; }
|
|
|
|
public String getNickname() { return nickname; }
|
|
public void setNickname(String nickname) { this.nickname = nickname; }
|
|
|
|
public Gender getGender() { return gender; }
|
|
public void setGender(Gender gender) { this.gender = gender; }
|
|
|
|
public String getAvatar() { return avatar; }
|
|
public void setAvatar(String avatar) { this.avatar = avatar; }
|
|
|
|
public Status getStatus() { return status; }
|
|
public void setStatus(Status status) { this.status = status; }
|
|
|
|
@JsonSerialize(using = EpochMillisLocalDateTimeSerializer.class)
|
|
public LocalDateTime getCreatedAt() { return createdAt; }
|
|
public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; }
|
|
}
|